1fb726d48Sopenharmony_ci/*
2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb726d48Sopenharmony_ci * You may obtain a copy of the License at
6fb726d48Sopenharmony_ci *
7fb726d48Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fb726d48Sopenharmony_ci *
9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and
13fb726d48Sopenharmony_ci * limitations under the License.
14fb726d48Sopenharmony_ci */
15fb726d48Sopenharmony_ci
16fb726d48Sopenharmony_ciimport { BaseElement } from '../BaseElement';
17fb726d48Sopenharmony_ciimport '../icon/LitIcon';
18fb726d48Sopenharmony_ci
19fb726d48Sopenharmony_ciconst initHtmlStyle: string = `
20fb726d48Sopenharmony_ci    <style>
21fb726d48Sopenharmony_ci        :host{ 
22fb726d48Sopenharmony_ci            display: flex;
23fb726d48Sopenharmony_ci            padding: 8px 10px;
24fb726d48Sopenharmony_ci            transition: all .3s;
25fb726d48Sopenharmony_ci            color: var(--dark-color2,#333);
26fb726d48Sopenharmony_ci            tab-index: -1;
27fb726d48Sopenharmony_ci            align-items: center;
28fb726d48Sopenharmony_ci            width: max-content;
29fb726d48Sopenharmony_ci            min-width: 100%;
30fb726d48Sopenharmony_ci            max-lines: 1;
31fb726d48Sopenharmony_ci            white-space: nowrap;
32fb726d48Sopenharmony_ci            font-size: 0.8rem;
33fb726d48Sopenharmony_ci        }
34fb726d48Sopenharmony_ci        :host(:not([disabled])[selected]){
35fb726d48Sopenharmony_ci            background-color: #0A59F7;
36fb726d48Sopenharmony_ci            color: #ffffff;
37fb726d48Sopenharmony_ci            font-weight: bold;
38fb726d48Sopenharmony_ci        }
39fb726d48Sopenharmony_ci        :host(:not([disabled]):not([selected]):hover){
40fb726d48Sopenharmony_ci            background-color: var(--dark-background7,#f5f5f5);
41fb726d48Sopenharmony_ci        }
42fb726d48Sopenharmony_ci        :host([disabled]){
43fb726d48Sopenharmony_ci            cursor: not-allowed;
44fb726d48Sopenharmony_ci            color: var(--dark-color,#bfbfbf);
45fb726d48Sopenharmony_ci        }
46fb726d48Sopenharmony_ci        :host([selected][check]) .check{
47fb726d48Sopenharmony_ci             display: flex;
48fb726d48Sopenharmony_ci        }
49fb726d48Sopenharmony_ci        :host(:not([selected])) .check{
50fb726d48Sopenharmony_ci             display: none;
51fb726d48Sopenharmony_ci        }
52fb726d48Sopenharmony_ci        :host(:not([check])) .check{
53fb726d48Sopenharmony_ci            display: none;
54fb726d48Sopenharmony_ci        }
55fb726d48Sopenharmony_ci        
56fb726d48Sopenharmony_ci        :host([disabled]) .selected-box{
57fb726d48Sopenharmony_ci             display: none;
58fb726d48Sopenharmony_ci        }
59fb726d48Sopenharmony_ci        :host([selected]) .selected{
60fb726d48Sopenharmony_ci            display: flex;
61fb726d48Sopenharmony_ci            color: #FFFFFF;
62fb726d48Sopenharmony_ci        }
63fb726d48Sopenharmony_ci        :host(:not([selected])) .selected{
64fb726d48Sopenharmony_ci            display: none;
65fb726d48Sopenharmony_ci        }
66fb726d48Sopenharmony_ci        </style>
67fb726d48Sopenharmony_ci    `;
68fb726d48Sopenharmony_ci
69fb726d48Sopenharmony_ciexport class LitSelectOption extends BaseElement {
70fb726d48Sopenharmony_ci  static get observedAttributes(): string[] {
71fb726d48Sopenharmony_ci    return ['selected', 'disabled', 'check'];
72fb726d48Sopenharmony_ci  }
73fb726d48Sopenharmony_ci
74fb726d48Sopenharmony_ci  initHtml(): string {
75fb726d48Sopenharmony_ci    return `
76fb726d48Sopenharmony_ci        ${initHtmlStyle}
77fb726d48Sopenharmony_ci        <div class="selected-box">
78fb726d48Sopenharmony_ci            <lit-icon class="selected" name="check" size="20"></lit-icon>
79fb726d48Sopenharmony_ci        </div>
80fb726d48Sopenharmony_ci        <slot></slot>
81fb726d48Sopenharmony_ci<!--        <lit-icon class="check" name="check"></lit-icon>-->
82fb726d48Sopenharmony_ci        `;
83fb726d48Sopenharmony_ci  }
84fb726d48Sopenharmony_ci
85fb726d48Sopenharmony_ci  initElements(): void {}
86fb726d48Sopenharmony_ci
87fb726d48Sopenharmony_ci  //当 custom element首次被插入文档DOM时,被调用。
88fb726d48Sopenharmony_ci  connectedCallback(): void {
89fb726d48Sopenharmony_ci    if (!this.hasAttribute('disabled')) {
90fb726d48Sopenharmony_ci      this.onclick = (ev): void => {
91fb726d48Sopenharmony_ci        this.dispatchEvent(
92fb726d48Sopenharmony_ci          new CustomEvent('onSelected', {
93fb726d48Sopenharmony_ci            detail: {
94fb726d48Sopenharmony_ci              selected: true,
95fb726d48Sopenharmony_ci              value: this.getAttribute('value'),
96fb726d48Sopenharmony_ci              text: this.textContent,
97fb726d48Sopenharmony_ci            },
98fb726d48Sopenharmony_ci          })
99fb726d48Sopenharmony_ci        );
100fb726d48Sopenharmony_ci        ev.stopPropagation();
101fb726d48Sopenharmony_ci      };
102fb726d48Sopenharmony_ci    }
103fb726d48Sopenharmony_ci  }
104fb726d48Sopenharmony_ci
105fb726d48Sopenharmony_ci  //当 custom element从文档DOM中删除时,被调用。
106fb726d48Sopenharmony_ci  disconnectedCallback(): void {}
107fb726d48Sopenharmony_ci
108fb726d48Sopenharmony_ci  //当 custom element被移动到新的文档时,被调用。
109fb726d48Sopenharmony_ci  adoptedCallback(): void {}
110fb726d48Sopenharmony_ci
111fb726d48Sopenharmony_ci  //当 custom element增加、删除、修改自身属性时,被调用。
112fb726d48Sopenharmony_ci  attributeChangedCallback(name: unknown, oldValue: unknown, newValue: unknown): void {}
113fb726d48Sopenharmony_ci}
114fb726d48Sopenharmony_ci
115fb726d48Sopenharmony_ciif (!customElements.get('lit-select-option')) {
116fb726d48Sopenharmony_ci  customElements.define('lit-select-option', LitSelectOption);
117fb726d48Sopenharmony_ci}
118