1import {css, html, LitElement} from 'lit'; 2import {customElement, property} from 'lit/decorators.js'; 3 4@customElement('ns-customize-button') 5export class CustomizeButton extends LitElement { 6 @property() disabled: boolean = false; 7 8 @property() eventName: string = ''; 9 10 static styles = css` 11 :host { 12 display: var(--lit-button-display, inline-block); 13 box-sizing: inherit; 14 } 15 16 :host(.block) { 17 --lit-button-display: block; 18 --lit-button-width: 100%; 19 } 20 21 .lit-button { 22 background-color: var(--lit-button-bg-color, transparent); 23 border: none; 24 border-radius: 0.25rem; 25 color: var(--lit-button-color, var(--white, #ffffff)); 26 cursor: pointer; 27 font-weight: 400; 28 font-size: 1.2rem; 29 height: 2.5rem; 30 line-height: 1.5; 31 min-width: var(--lit-button-min-width, 10rem); 32 outline: 0; 33 padding: 0 var(--lit-button-padding-horizontal, 1rem); 34 position: relative; 35 transition: background-color 0.15s ease-in-out 0s; 36 text-align: center; 37 text-decoration: none; 38 text-transform: none; 39 user-select: none; 40 vertical-align: middle; 41 width: var(--lit-button-width, auto); 42 } 43 .lit-button-icon { 44 --lit-button-min-width: 5rem; 45 --lit-button-padding-horizontal: 0; 46 } 47 48 button[disabled], 49 button[disabled]:hover { 50 opacity: 0.65; 51 pointer-events: none; 52 } 53 54 button:focus::before { 55 content: ''; 56 border-radius: 0.25rem; 57 border: 1px solid var(--white, #fff); 58 box-sizing: inherit; 59 display: block; 60 position: absolute; 61 height: calc(100% - 0.8rem); 62 top: 0.4rem; 63 left: 0.4rem; 64 visibility: visible; 65 width: calc(100% - 0.8rem); 66 } 67 68 :host(.primary) { 69 --lit-button-bg-color: var(--primary, #903d57); 70 } 71 72 :host(.primary) button:active, 73 :host(.primary) button:hover { 74 --lit-button-bg-color: var(--primary-active, #0062cc); 75 } 76 77 :host(.icon) { 78 --lit-button-min-width: 5rem; 79 --lit-button-padding-horizontal: 0; 80 } 81 `; 82 83 render() { 84 return html` 85 <button 86 @click="${() => { 87 window.dispatchEvent(new CustomEvent(this.eventName)); 88 }}" 89 class="lit-button" 90 ?disabled=${this.disabled} 91 > 92 <slot></slot> 93 </button> 94 `; 95 } 96} 97