xref: /aosp_15_r20/tools/netsim/ui/ts/customize-map-button.ts (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
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