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