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, element } from '../BaseElement';
17fb726d48Sopenharmony_ciimport { replacePlaceholders } from '../utils/Template';
18fb726d48Sopenharmony_cilet css = `
19fb726d48Sopenharmony_ci<style>
20fb726d48Sopenharmony_ci    :host{ 
21fb726d48Sopenharmony_ci        outline: none;
22fb726d48Sopenharmony_ci        display:inline-block;
23fb726d48Sopenharmony_ci        position: relative;
24fb726d48Sopenharmony_ci        overflow: visible;
25fb726d48Sopenharmony_ci    }
26fb726d48Sopenharmony_ci    
27fb726d48Sopenharmony_ci    .title{
28fb726d48Sopenharmony_ci        padding: 6px 15px;
29fb726d48Sopenharmony_ci        font-weight: bold;
30fb726d48Sopenharmony_ci        font-size: 0.9rem;
31fb726d48Sopenharmony_ci        border-bottom: 1px solid #f0f0f0;
32fb726d48Sopenharmony_ci    }
33fb726d48Sopenharmony_ci    .content{
34fb726d48Sopenharmony_ci        padding: 10px;
35fb726d48Sopenharmony_ci    }
36fb726d48Sopenharmony_ci   .trigger-click {
37fb726d48Sopenharmony_ci        position: absolute;
38fb726d48Sopenharmony_ci        visibility: hidden;
39fb726d48Sopenharmony_ci        z-index: -100;
40fb726d48Sopenharmony_ci        width: 100%;
41fb726d48Sopenharmony_ci        height: 100%;
42fb726d48Sopenharmony_ci    }
43fb726d48Sopenharmony_ci    /*通用*/
44fb726d48Sopenharmony_ci    .popover{
45fb726d48Sopenharmony_ci        width: {1};
46fb726d48Sopenharmony_ci        min-width: 160px;
47fb726d48Sopenharmony_ci        display: flex;
48fb726d48Sopenharmony_ci        flex-direction: column;
49fb726d48Sopenharmony_ci        visibility: hidden;
50fb726d48Sopenharmony_ci        opacity: 0;
51fb726d48Sopenharmony_ci        transition: all 0.3s;
52fb726d48Sopenharmony_ci        z-index: 1;
53fb726d48Sopenharmony_ci        position: absolute;
54fb726d48Sopenharmony_ci        border-radius: 2px;
55fb726d48Sopenharmony_ci        background-color: var(--dark-background3,#fff);
56fb726d48Sopenharmony_ci        box-shadow: 0 0 20px #00000044;
57fb726d48Sopenharmony_ci    }
58fb726d48Sopenharmony_ci    .popover:after{
59fb726d48Sopenharmony_ci        content: '';
60fb726d48Sopenharmony_ci        display: flex;
61fb726d48Sopenharmony_ci        position: absolute;
62fb726d48Sopenharmony_ci        width: 12px;
63fb726d48Sopenharmony_ci        height: 12px;
64fb726d48Sopenharmony_ci        background: linear-gradient(45deg, var(--dark-background3,#FFFFFF),
65fb726d48Sopenharmony_ci        var(--dark-background3,#FFFFFF) 50%, transparent 50%, transparent 100%);
66fb726d48Sopenharmony_ci    }
67fb726d48Sopenharmony_ci    :host(:not([placement])) .popover,
68fb726d48Sopenharmony_ci    :host([placement='top']) .popover{
69fb726d48Sopenharmony_ci        top: 0;
70fb726d48Sopenharmony_ci        left: 50%;
71fb726d48Sopenharmony_ci        right: 0;
72fb726d48Sopenharmony_ci        transform: translate(-50%,calc(-100% - 12px)) scale(0.5);
73fb726d48Sopenharmony_ci        transform-origin: bottom;
74fb726d48Sopenharmony_ci    }
75fb726d48Sopenharmony_ci    :host(:not([placement])) .popover:after,
76fb726d48Sopenharmony_ci    :host([placement='top']) .popover:after{
77fb726d48Sopenharmony_ci        border-top: 6px solid #fff;
78fb726d48Sopenharmony_ci        left: 0;
79fb726d48Sopenharmony_ci        top: calc(100%);
80fb726d48Sopenharmony_ci        transform: translate(-50%,0%);
81fb726d48Sopenharmony_ci        left: 50%;
82fb726d48Sopenharmony_ci    }
83fb726d48Sopenharmony_ci    :host(:not([placement])[trigger='hover']:hover)  .popover,
84fb726d48Sopenharmony_ci    :host(:not([placement]):not([trigger]):hover)  .popover,
85fb726d48Sopenharmony_ci    :host([placement='top'][trigger='hover']:hover)  .popover, 
86fb726d48Sopenharmony_ci    :host([placement='top']:not([trigger]):hover)  .popover { 
87fb726d48Sopenharmony_ci        visibility: visible;
88fb726d48Sopenharmony_ci        opacity: 1;
89fb726d48Sopenharmony_ci        transform: translate(-50%,calc(-100% - 12px)) scale(1);
90fb726d48Sopenharmony_ci    }
91fb726d48Sopenharmony_ci    :host(:not([placement])[trigger='click']) input[type=checkbox]:checked ~ .popover,
92fb726d48Sopenharmony_ci    :host([placement='top'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
93fb726d48Sopenharmony_ci        visibility: visible;
94fb726d48Sopenharmony_ci        opacity: 1;
95fb726d48Sopenharmony_ci        transform: translate(-50%,calc(-100% - 12px)) scale(1);
96fb726d48Sopenharmony_ci    }
97fb726d48Sopenharmony_ci    :host([placement='topLeft']) .popover{
98fb726d48Sopenharmony_ci        top: 0;
99fb726d48Sopenharmony_ci        left: 50%;
100fb726d48Sopenharmony_ci        right: 0;
101fb726d48Sopenharmony_ci        transform: translate(0,calc(-100% - 12px)) scale(0.5);
102fb726d48Sopenharmony_ci        transform-origin: left bottom;
103fb726d48Sopenharmony_ci    }
104fb726d48Sopenharmony_ci    :host([placement='topLeft']) .popover:after{
105fb726d48Sopenharmony_ci        top: 99%;
106fb726d48Sopenharmony_ci        transform: rotateX(180deg);
107fb726d48Sopenharmony_ci    }
108fb726d48Sopenharmony_ci    :host([placement='topLeft']:not([trigger]):hover)  .popover, 
109fb726d48Sopenharmony_ci    :host([placement='topLeft'][trigger='hover']:hover)  .popover { 
110fb726d48Sopenharmony_ci        visibility: visible;
111fb726d48Sopenharmony_ci        opacity: 1;
112fb726d48Sopenharmony_ci        transform: translate(0%,calc(-100% - 12px)) scale(1);
113fb726d48Sopenharmony_ci    }
114fb726d48Sopenharmony_ci    :host([placement='topLeft'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
115fb726d48Sopenharmony_ci        visibility: visible;
116fb726d48Sopenharmony_ci        opacity: 1;
117fb726d48Sopenharmony_ci        transform: translate(0%,calc(-100% - 12px)) scale(1);
118fb726d48Sopenharmony_ci    }
119fb726d48Sopenharmony_ci    :host([placement='topRight']) .popover{
120fb726d48Sopenharmony_ci        top: 0;
121fb726d48Sopenharmony_ci        right: 0;
122fb726d48Sopenharmony_ci        transform: translate(0,calc(-100% - 12px)) scale(0.5);
123fb726d48Sopenharmony_ci        transform-origin: right bottom;
124fb726d48Sopenharmony_ci    }
125fb726d48Sopenharmony_ci    :host([placement='topRight']) .popover:after{
126fb726d48Sopenharmony_ci        border-top: 6px solid #fff;
127fb726d48Sopenharmony_ci        top: calc(100%);
128fb726d48Sopenharmony_ci        transform: translate(0%,0%);
129fb726d48Sopenharmony_ci        right: 20px;
130fb726d48Sopenharmony_ci    }
131fb726d48Sopenharmony_ci    :host([placement='topRight']:not([trigger]):hover)  .popover, 
132fb726d48Sopenharmony_ci    :host([placement='topRight'][trigger='hover']:hover)  .popover { 
133fb726d48Sopenharmony_ci        visibility: visible;
134fb726d48Sopenharmony_ci        opacity: 1;
135fb726d48Sopenharmony_ci        transform: translate(0%,calc(-100% - 12px)) scale(1);
136fb726d48Sopenharmony_ci    }
137fb726d48Sopenharmony_ci    :host([placement='topRight'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
138fb726d48Sopenharmony_ci        visibility: visible;
139fb726d48Sopenharmony_ci        opacity: 1;
140fb726d48Sopenharmony_ci        transform: translate(0%,calc(-100% - 12px)) scale(1);
141fb726d48Sopenharmony_ci    }
142fb726d48Sopenharmony_ci    :host([placement='leftTop']) .popover{
143fb726d48Sopenharmony_ci        top: 0;
144fb726d48Sopenharmony_ci        right: 100%;
145fb726d48Sopenharmony_ci        transform: translate(-12px,0) scale(0.5);
146fb726d48Sopenharmony_ci        transform-origin: right top;
147fb726d48Sopenharmony_ci    }
148fb726d48Sopenharmony_ci    :host([placement='leftTop']) .popover:after{
149fb726d48Sopenharmony_ci        border-left: 6px solid #fff;
150fb726d48Sopenharmony_ci        top: 10px;
151fb726d48Sopenharmony_ci        right: -12px;
152fb726d48Sopenharmony_ci        transform: translate(0px,0%);
153fb726d48Sopenharmony_ci    }
154fb726d48Sopenharmony_ci    :host([placement='leftTop']:not([trigger]):hover)  .popover, 
155fb726d48Sopenharmony_ci    :host([placement='leftTop'][trigger='hover']:hover)  .popover { 
156fb726d48Sopenharmony_ci        visibility: visible;
157fb726d48Sopenharmony_ci        opacity: 1;
158fb726d48Sopenharmony_ci        right: 100%;
159fb726d48Sopenharmony_ci        transform: translate(-12px,0) scale(1);
160fb726d48Sopenharmony_ci    }
161fb726d48Sopenharmony_ci    :host([placement='leftTop'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
162fb726d48Sopenharmony_ci        visibility: visible;
163fb726d48Sopenharmony_ci        opacity: 1;
164fb726d48Sopenharmony_ci        transform: translate(-12px,0) scale(1);
165fb726d48Sopenharmony_ci    }
166fb726d48Sopenharmony_ci    :host([placement='left']) .popover{
167fb726d48Sopenharmony_ci        right: 100%;
168fb726d48Sopenharmony_ci        top: 50%;
169fb726d48Sopenharmony_ci        transform: translate(-12px,-50%) scale(0.5);
170fb726d48Sopenharmony_ci        transform-origin: right center;
171fb726d48Sopenharmony_ci    }
172fb726d48Sopenharmony_ci    :host([placement='left']) .popover:after{
173fb726d48Sopenharmony_ci        border-left: 6px solid #fff;
174fb726d48Sopenharmony_ci        top: 50%;
175fb726d48Sopenharmony_ci        right: -12px;
176fb726d48Sopenharmony_ci        transform: translate(0px,-50%);
177fb726d48Sopenharmony_ci    }
178fb726d48Sopenharmony_ci    :host([placement='left']:not([trigger]):hover)  .popover, 
179fb726d48Sopenharmony_ci    :host([placement='left'][trigger='hover']:hover)  .popover { 
180fb726d48Sopenharmony_ci        visibility: visible;
181fb726d48Sopenharmony_ci        opacity: 1;
182fb726d48Sopenharmony_ci        right: 100%;
183fb726d48Sopenharmony_ci        transform: translate(-12px,-50%) scale(1);
184fb726d48Sopenharmony_ci    }
185fb726d48Sopenharmony_ci    :host([placement='left'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
186fb726d48Sopenharmony_ci        visibility: visible;
187fb726d48Sopenharmony_ci        opacity: 1;
188fb726d48Sopenharmony_ci        transform: translate(-12px,-50%) scale(1);
189fb726d48Sopenharmony_ci    }
190fb726d48Sopenharmony_ci    :host([placement='leftBottom']) .popover{
191fb726d48Sopenharmony_ci        right: 100%;
192fb726d48Sopenharmony_ci        bottom: 0;
193fb726d48Sopenharmony_ci        transform: translate(-12px,0%) scale(0.5);
194fb726d48Sopenharmony_ci        transform-origin: right bottom;
195fb726d48Sopenharmony_ci    }
196fb726d48Sopenharmony_ci    :host([placement='leftBottom']) .popover:after{
197fb726d48Sopenharmony_ci        border-left: 6px solid #fff;
198fb726d48Sopenharmony_ci        bottom: 10px;
199fb726d48Sopenharmony_ci        right: -12px;
200fb726d48Sopenharmony_ci        transform: translate(0px,-50%);
201fb726d48Sopenharmony_ci    }
202fb726d48Sopenharmony_ci    :host([placement='leftBottom']:not([trigger]):hover)  .popover, 
203fb726d48Sopenharmony_ci    :host([placement='leftBottom'][trigger='hover']:hover)  .popover { 
204fb726d48Sopenharmony_ci        visibility: visible;
205fb726d48Sopenharmony_ci        opacity: 1;
206fb726d48Sopenharmony_ci        right: 100%;
207fb726d48Sopenharmony_ci        transform: translate(-12px,0%) scale(1);
208fb726d48Sopenharmony_ci    }
209fb726d48Sopenharmony_ci    :host([placement='leftBottom'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
210fb726d48Sopenharmony_ci        visibility: visible;
211fb726d48Sopenharmony_ci        opacity: 1;
212fb726d48Sopenharmony_ci        transform: translate(-12px,0%) scale(1);
213fb726d48Sopenharmony_ci    }
214fb726d48Sopenharmony_ci    :host([placement='rightTop']) .popover{
215fb726d48Sopenharmony_ci        top: 0;
216fb726d48Sopenharmony_ci        left: 100%;
217fb726d48Sopenharmony_ci        transform: translate(12px,0) scale(0.5);
218fb726d48Sopenharmony_ci        transform-origin: left top;
219fb726d48Sopenharmony_ci    }
220fb726d48Sopenharmony_ci    :host([placement='rightTop']) .popover:after{
221fb726d48Sopenharmony_ci        border-right: 6px solid #fff;
222fb726d48Sopenharmony_ci        top: 10px;
223fb726d48Sopenharmony_ci        left: -12px;
224fb726d48Sopenharmony_ci        transform: translate(0px,0%);
225fb726d48Sopenharmony_ci    }
226fb726d48Sopenharmony_ci    :host([placement='rightTop']:not([trigger]):hover)  .popover, 
227fb726d48Sopenharmony_ci    :host([placement='rightTop'][trigger='hover']:hover)  .popover { 
228fb726d48Sopenharmony_ci        visibility: visible;
229fb726d48Sopenharmony_ci        opacity: 1;
230fb726d48Sopenharmony_ci        left: 100%;
231fb726d48Sopenharmony_ci        transform: translate(12px,0) scale(1);
232fb726d48Sopenharmony_ci    }
233fb726d48Sopenharmony_ci    :host([placement='rightTop'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
234fb726d48Sopenharmony_ci        visibility: visible;
235fb726d48Sopenharmony_ci        opacity: 1;
236fb726d48Sopenharmony_ci        transform: translate(12px,0) scale(1);
237fb726d48Sopenharmony_ci    }
238fb726d48Sopenharmony_ci    :host([placement='right']) .popover{
239fb726d48Sopenharmony_ci        top: 50%;
240fb726d48Sopenharmony_ci        left: 100%;
241fb726d48Sopenharmony_ci        transform: translate(12px,-50%) scale(0.5);
242fb726d48Sopenharmony_ci        transform-origin: left center;
243fb726d48Sopenharmony_ci    }
244fb726d48Sopenharmony_ci    :host([placement='right']) .popover:after{
245fb726d48Sopenharmony_ci        border-right: 6px solid #fff;
246fb726d48Sopenharmony_ci        top: 50%;
247fb726d48Sopenharmony_ci        left: -12px;
248fb726d48Sopenharmony_ci        transform: translate(0px,-50%);
249fb726d48Sopenharmony_ci    }
250fb726d48Sopenharmony_ci    :host([placement='right']:not([trigger]):hover)  .popover, 
251fb726d48Sopenharmony_ci    :host([placement='right'][trigger='hover']:hover)  .popover { 
252fb726d48Sopenharmony_ci        visibility: visible;
253fb726d48Sopenharmony_ci        opacity: 1;
254fb726d48Sopenharmony_ci        left: 100%;
255fb726d48Sopenharmony_ci        transform: translate(12px,-50%) scale(1);
256fb726d48Sopenharmony_ci    }
257fb726d48Sopenharmony_ci    :host([placement='right'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
258fb726d48Sopenharmony_ci        visibility: visible;
259fb726d48Sopenharmony_ci        opacity: 1;
260fb726d48Sopenharmony_ci        transform: translate(12px,-50%) scale(1);
261fb726d48Sopenharmony_ci    }
262fb726d48Sopenharmony_ci    :host([placement='rightBottom']) .popover{
263fb726d48Sopenharmony_ci        bottom: 0;
264fb726d48Sopenharmony_ci        left: 100%;
265fb726d48Sopenharmony_ci        transform: translate(12px,0%) scale(0.5);
266fb726d48Sopenharmony_ci        transform-origin: left bottom;
267fb726d48Sopenharmony_ci    }
268fb726d48Sopenharmony_ci    :host([placement='rightBottom']) .popover:after{
269fb726d48Sopenharmony_ci        border-right: 6px solid #fff;
270fb726d48Sopenharmony_ci        left: -12px;
271fb726d48Sopenharmony_ci        bottom: 10px;
272fb726d48Sopenharmony_ci        transform: translate(0px,0);
273fb726d48Sopenharmony_ci    }
274fb726d48Sopenharmony_ci    :host([placement='rightBottom']:not([trigger]):hover)  .popover, 
275fb726d48Sopenharmony_ci    :host([placement='rightBottom'][trigger='hover']:hover)  .popover { 
276fb726d48Sopenharmony_ci        visibility: visible;
277fb726d48Sopenharmony_ci        opacity: 1;
278fb726d48Sopenharmony_ci        bottom: 0;
279fb726d48Sopenharmony_ci        transform: translate(12px,0%) scale(1);
280fb726d48Sopenharmony_ci    }
281fb726d48Sopenharmony_ci    :host([placement='rightBottom'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
282fb726d48Sopenharmony_ci        visibility: visible;
283fb726d48Sopenharmony_ci        opacity: 1;
284fb726d48Sopenharmony_ci        transform: translate(12px,0%) scale(1);
285fb726d48Sopenharmony_ci    }
286fb726d48Sopenharmony_ci    
287fb726d48Sopenharmony_ci    :host([placement='bottomLeft']) .popover{
288fb726d48Sopenharmony_ci        bottom: 0;
289fb726d48Sopenharmony_ci        /*left: 0;*/
290fb726d48Sopenharmony_ci        left: 8px;
291fb726d48Sopenharmony_ci        right: 0;
292fb726d48Sopenharmony_ci        transform: translate(0,calc(100% + 12px)) scale(0.5);
293fb726d48Sopenharmony_ci        transform-origin: top left;
294fb726d48Sopenharmony_ci    }
295fb726d48Sopenharmony_ci    :host([placement='bottomLeft']) .popover:after{
296fb726d48Sopenharmony_ci        bottom: calc(100%);
297fb726d48Sopenharmony_ci        transform: translate(0%,0%);
298fb726d48Sopenharmony_ci        left: 0;
299fb726d48Sopenharmony_ci    }
300fb726d48Sopenharmony_ci    :host([placement='bottomLeft']:not([trigger]):hover)  .popover, 
301fb726d48Sopenharmony_ci    :host([placement='bottomLeft'][trigger='hover']:hover)  .popover { 
302fb726d48Sopenharmony_ci        visibility: visible;
303fb726d48Sopenharmony_ci        opacity: 1;
304fb726d48Sopenharmony_ci        transform: translate(0%,calc(100% + 12px)) scale(1);
305fb726d48Sopenharmony_ci    }
306fb726d48Sopenharmony_ci    :host([placement='bottomLeft'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
307fb726d48Sopenharmony_ci        visibility: visible;
308fb726d48Sopenharmony_ci        opacity: 1;
309fb726d48Sopenharmony_ci        transform: translate(0%,calc(100% + 12px)) scale(1);
310fb726d48Sopenharmony_ci    }
311fb726d48Sopenharmony_ci    :host([placement='bottom']) .popover{
312fb726d48Sopenharmony_ci        bottom: 0;
313fb726d48Sopenharmony_ci        left: 50%;
314fb726d48Sopenharmony_ci        right: 0;
315fb726d48Sopenharmony_ci        transform: translate(-50%,calc(100% + 12px)) scale(0.5);
316fb726d48Sopenharmony_ci        transform-origin: top center;
317fb726d48Sopenharmony_ci    }
318fb726d48Sopenharmony_ci    :host([placement='bottom']) .popover:after{
319fb726d48Sopenharmony_ci        border-bottom: 6px solid #fff;
320fb726d48Sopenharmony_ci        bottom: calc(100%);
321fb726d48Sopenharmony_ci        transform: translate(-50%,0%);
322fb726d48Sopenharmony_ci        left: 50%;
323fb726d48Sopenharmony_ci    }
324fb726d48Sopenharmony_ci    :host([placement='bottom']:not([trigger]):hover)  .popover, 
325fb726d48Sopenharmony_ci    :host([placement='bottom'][trigger='hover']:hover)  .popover { 
326fb726d48Sopenharmony_ci        visibility: visible;
327fb726d48Sopenharmony_ci        opacity: 1;
328fb726d48Sopenharmony_ci        transform: translate(-50%,calc(100% + 12px)) scale(1);
329fb726d48Sopenharmony_ci    }
330fb726d48Sopenharmony_ci    :host([placement='bottom'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
331fb726d48Sopenharmony_ci        visibility: visible;
332fb726d48Sopenharmony_ci        opacity: 1;
333fb726d48Sopenharmony_ci        transform: translate(-50%,calc(100% + 12px)) scale(1);
334fb726d48Sopenharmony_ci    }
335fb726d48Sopenharmony_ci    /*bottomRight*/
336fb726d48Sopenharmony_ci    :host([placement='bottomRight']) .popover{
337fb726d48Sopenharmony_ci        bottom: 0;
338fb726d48Sopenharmony_ci        right: 0;
339fb726d48Sopenharmony_ci        transform: translate(0%,calc(100% + 12px)) scale(0.5);
340fb726d48Sopenharmony_ci        transform-origin: top right;
341fb726d48Sopenharmony_ci    }
342fb726d48Sopenharmony_ci    :host([placement='bottomRight']) .popover:after{
343fb726d48Sopenharmony_ci        border-bottom: 6px solid #fff;
344fb726d48Sopenharmony_ci        bottom: calc(100%);
345fb726d48Sopenharmony_ci        transform: translate(-50%,0%);
346fb726d48Sopenharmony_ci        right: 10px;
347fb726d48Sopenharmony_ci    }
348fb726d48Sopenharmony_ci    :host([placement='bottomRight']:not([trigger]):hover)  .popover, 
349fb726d48Sopenharmony_ci    :host([placement='bottomRight'][trigger='hover']:hover)  .popover { 
350fb726d48Sopenharmony_ci        visibility: visible;
351fb726d48Sopenharmony_ci        opacity: 1;
352fb726d48Sopenharmony_ci        transform: translate(0,calc(100% + 12px)) scale(1);
353fb726d48Sopenharmony_ci    }
354fb726d48Sopenharmony_ci    :host([placement='bottomRight'][trigger='click']) input[type=checkbox]:checked ~ .popover { 
355fb726d48Sopenharmony_ci        visibility: visible;
356fb726d48Sopenharmony_ci        opacity: 1;
357fb726d48Sopenharmony_ci        transform: translate(0%,calc(100% + 12px)) scale(1);
358fb726d48Sopenharmony_ci    }
359fb726d48Sopenharmony_ci    :host(:not([title])) .title{
360fb726d48Sopenharmony_ci        display: none;
361fb726d48Sopenharmony_ci    }
362fb726d48Sopenharmony_ci    </style>
363fb726d48Sopenharmony_ci`;
364fb726d48Sopenharmony_ciconst initHtmlStyle = (wid: string): string => {
365fb726d48Sopenharmony_ci  return replacePlaceholders(css, wid);
366fb726d48Sopenharmony_ci};
367fb726d48Sopenharmony_ci
368fb726d48Sopenharmony_ci@element('lit-popover')
369fb726d48Sopenharmony_ciexport class LitPopover extends BaseElement {
370fb726d48Sopenharmony_ci  static get observedAttributes(): string[] {
371fb726d48Sopenharmony_ci    return ['title', 'trigger', 'width', 'placement', 'visible'];
372fb726d48Sopenharmony_ci  }
373fb726d48Sopenharmony_ci
374fb726d48Sopenharmony_ci  get visible(): string {
375fb726d48Sopenharmony_ci    return this.getAttribute('visible') || 'false';
376fb726d48Sopenharmony_ci  }
377fb726d48Sopenharmony_ci
378fb726d48Sopenharmony_ci  set visible(value) {
379fb726d48Sopenharmony_ci    if (value) {
380fb726d48Sopenharmony_ci      this.setAttribute('visible', 'true');
381fb726d48Sopenharmony_ci    } else {
382fb726d48Sopenharmony_ci      this.setAttribute('visible', 'false');
383fb726d48Sopenharmony_ci    }
384fb726d48Sopenharmony_ci  }
385fb726d48Sopenharmony_ci
386fb726d48Sopenharmony_ci  set placement(value) {
387fb726d48Sopenharmony_ci    this.setAttribute('placement', value || 'bottomLeft');
388fb726d48Sopenharmony_ci  }
389fb726d48Sopenharmony_ci
390fb726d48Sopenharmony_ci  get placement(): string | null {
391fb726d48Sopenharmony_ci    return this.getAttribute('placement');
392fb726d48Sopenharmony_ci  }
393fb726d48Sopenharmony_ci
394fb726d48Sopenharmony_ci  get trigger(): string {
395fb726d48Sopenharmony_ci    return this.getAttribute('trigger') || 'hover';
396fb726d48Sopenharmony_ci  }
397fb726d48Sopenharmony_ci
398fb726d48Sopenharmony_ci  set trigger(value) {
399fb726d48Sopenharmony_ci    this.setAttribute('trigger', value);
400fb726d48Sopenharmony_ci  }
401fb726d48Sopenharmony_ci
402fb726d48Sopenharmony_ci  get title(): string {
403fb726d48Sopenharmony_ci    return this.getAttribute('title') || '';
404fb726d48Sopenharmony_ci  }
405fb726d48Sopenharmony_ci
406fb726d48Sopenharmony_ci  set title(value: string) {
407fb726d48Sopenharmony_ci    this.setAttribute('title', value);
408fb726d48Sopenharmony_ci  }
409fb726d48Sopenharmony_ci
410fb726d48Sopenharmony_ci  get width(): string {
411fb726d48Sopenharmony_ci    return this.getAttribute('width') || 'max-content';
412fb726d48Sopenharmony_ci  }
413fb726d48Sopenharmony_ci
414fb726d48Sopenharmony_ci  set width(value) {
415fb726d48Sopenharmony_ci    this.setAttribute('width', value);
416fb726d48Sopenharmony_ci  }
417fb726d48Sopenharmony_ci
418fb726d48Sopenharmony_ci  get haveRadio(): string | null {
419fb726d48Sopenharmony_ci    return this.getAttribute('haveRadio');
420fb726d48Sopenharmony_ci  }
421fb726d48Sopenharmony_ci
422fb726d48Sopenharmony_ci  initElements(): void {}
423fb726d48Sopenharmony_ci
424fb726d48Sopenharmony_ci  initHtml(): string {
425fb726d48Sopenharmony_ci    return `
426fb726d48Sopenharmony_ci        ${initHtmlStyle(this.width)}
427fb726d48Sopenharmony_ci        <input class="trigger-click" type="checkbox">
428fb726d48Sopenharmony_ci        <div class="popover" title="">
429fb726d48Sopenharmony_ci            <div class="title">${this.title}</div>
430fb726d48Sopenharmony_ci            <div class="content"><slot name="content" ></slot></div>
431fb726d48Sopenharmony_ci        </div>
432fb726d48Sopenharmony_ci        <slot></slot>
433fb726d48Sopenharmony_ci        `;
434fb726d48Sopenharmony_ci  }
435fb726d48Sopenharmony_ci
436fb726d48Sopenharmony_ci  connectedCallback(): void {
437fb726d48Sopenharmony_ci    let popover: unknown = this.shadowRoot!.querySelector('.popover');
438fb726d48Sopenharmony_ci    let checkbox: unknown = this.shadowRoot!.querySelector('.trigger-click');
439fb726d48Sopenharmony_ci    this.setAttribute('tabindex', '1'); // @ts-ignore
440fb726d48Sopenharmony_ci    popover.onclick = (e: unknown): void => {
441fb726d48Sopenharmony_ci      // @ts-ignore
442fb726d48Sopenharmony_ci      e.stopPropagation();
443fb726d48Sopenharmony_ci    }; // @ts-ignore
444fb726d48Sopenharmony_ci    popover.addEventListener('mousemove', (e: unknown) => {
445fb726d48Sopenharmony_ci      // @ts-ignore
446fb726d48Sopenharmony_ci      e.stopPropagation();
447fb726d48Sopenharmony_ci    });
448fb726d48Sopenharmony_ci    this.onclick = (e: unknown): void => {
449fb726d48Sopenharmony_ci      // @ts-ignore
450fb726d48Sopenharmony_ci      e.stopPropagation(); // @ts-ignore
451fb726d48Sopenharmony_ci      if (e.relatedTarget?.hasAttribute('not-close')) {
452fb726d48Sopenharmony_ci        this.focus();
453fb726d48Sopenharmony_ci      } // @ts-ignore
454fb726d48Sopenharmony_ci      checkbox.checked = !checkbox.checked; // @ts-ignore
455fb726d48Sopenharmony_ci      this.visible = checkbox.checked;
456fb726d48Sopenharmony_ci    }; // @ts-ignore
457fb726d48Sopenharmony_ci    popover.onmouseleave = (): void => {
458fb726d48Sopenharmony_ci      this.focus();
459fb726d48Sopenharmony_ci    };
460fb726d48Sopenharmony_ci    this.onblur = (ev: unknown): void => {
461fb726d48Sopenharmony_ci      // @ts-ignore
462fb726d48Sopenharmony_ci      if (ev.relatedTarget && this.haveRadio) {
463fb726d48Sopenharmony_ci        // @ts-ignore
464fb726d48Sopenharmony_ci        if (ev.relatedTarget.hasAttribute('not-close')) {
465fb726d48Sopenharmony_ci          // @ts-ignore
466fb726d48Sopenharmony_ci        } else if (ev.relatedTarget.type === 'radio') {
467fb726d48Sopenharmony_ci          this.focus();
468fb726d48Sopenharmony_ci        } else {
469fb726d48Sopenharmony_ci          // @ts-ignore
470fb726d48Sopenharmony_ci          this.visible = false;
471fb726d48Sopenharmony_ci        }
472fb726d48Sopenharmony_ci      } else {
473fb726d48Sopenharmony_ci        // @ts-ignore
474fb726d48Sopenharmony_ci        this.visible = false;
475fb726d48Sopenharmony_ci      }
476fb726d48Sopenharmony_ci    };
477fb726d48Sopenharmony_ci  }
478fb726d48Sopenharmony_ci
479fb726d48Sopenharmony_ci  disconnectedCallback(): void {}
480fb726d48Sopenharmony_ci
481fb726d48Sopenharmony_ci  adoptedCallback(): void {}
482fb726d48Sopenharmony_ci
483fb726d48Sopenharmony_ci  attributeChangedCallback(name: unknown, oldValue: unknown, newValue: unknown): void {
484fb726d48Sopenharmony_ci    if (name === 'visible') {
485fb726d48Sopenharmony_ci      if (newValue === 'false') {
486fb726d48Sopenharmony_ci        // @ts-ignore
487fb726d48Sopenharmony_ci        this.shadowRoot!.querySelector('.trigger-click')!.checked = false;
488fb726d48Sopenharmony_ci      } else {
489fb726d48Sopenharmony_ci        // @ts-ignore
490fb726d48Sopenharmony_ci        this.shadowRoot!.querySelector('.trigger-click')!.checked = true;
491fb726d48Sopenharmony_ci      }
492fb726d48Sopenharmony_ci    }
493fb726d48Sopenharmony_ci  }
494fb726d48Sopenharmony_ci}
495