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