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_ci 18fb726d48Sopenharmony_ci@element('lit-pop-content') 19fb726d48Sopenharmony_ciexport class LitPopContent extends BaseElement { 20fb726d48Sopenharmony_ci static get observedAttributes(): string[] { 21fb726d48Sopenharmony_ci return ['open']; 22fb726d48Sopenharmony_ci } 23fb726d48Sopenharmony_ci 24fb726d48Sopenharmony_ci get open(): boolean { 25fb726d48Sopenharmony_ci return this.hasAttribute('open'); 26fb726d48Sopenharmony_ci } 27fb726d48Sopenharmony_ci 28fb726d48Sopenharmony_ci set open(value: boolean) { 29fb726d48Sopenharmony_ci if (value === null || !value) { 30fb726d48Sopenharmony_ci this.removeAttribute('open'); 31fb726d48Sopenharmony_ci let parentElement = this.parentNode as Element; 32fb726d48Sopenharmony_ci parentElement?.removeAttribute('open'); 33fb726d48Sopenharmony_ci } else { 34fb726d48Sopenharmony_ci this.setAttribute('open', ''); 35fb726d48Sopenharmony_ci let parentElement = this.parentNode as Element; 36fb726d48Sopenharmony_ci parentElement?.setAttribute('open', ''); 37fb726d48Sopenharmony_ci } 38fb726d48Sopenharmony_ci } 39fb726d48Sopenharmony_ci 40fb726d48Sopenharmony_ci initElements(): void {} 41fb726d48Sopenharmony_ci 42fb726d48Sopenharmony_ci initHtml(): string { 43fb726d48Sopenharmony_ci return ` 44fb726d48Sopenharmony_ci <style> 45fb726d48Sopenharmony_ci :host{ 46fb726d48Sopenharmony_ci font-family: Helvetica,serif; 47fb726d48Sopenharmony_ci position:absolute; 48fb726d48Sopenharmony_ci display:flex; 49fb726d48Sopenharmony_ci background:#ffffff; 50fb726d48Sopenharmony_ci box-shadow: -2px 0 3px -1px white, 0 -2px 3px -1px white, 0 2px 3px -1px white, 2px 0 3px -1px white; 51fb726d48Sopenharmony_ci box-sizing: border-box; 52fb726d48Sopenharmony_ci border-radius: 5px; 53fb726d48Sopenharmony_ci transition:0.3s cubic-bezier(0.645, 0.045, 0.355, 1); 54fb726d48Sopenharmony_ci transform:scale(0); 55fb726d48Sopenharmony_ci transform-origin:inherit; 56fb726d48Sopenharmony_ci visibility:hidden; 57fb726d48Sopenharmony_ci z-index:10; 58fb726d48Sopenharmony_ci 59fb726d48Sopenharmony_ci } 60fb726d48Sopenharmony_ci .pop-content-body{ 61fb726d48Sopenharmony_ci display:flex; 62fb726d48Sopenharmony_ci flex:1; 63fb726d48Sopenharmony_ci padding: 20px; 64fb726d48Sopenharmony_ci flex-direction:column; 65fb726d48Sopenharmony_ci width: max-content; 66fb726d48Sopenharmony_ci box-sizing: border-box; 67fb726d48Sopenharmony_ci border: 1px solid #000000; 68fb726d48Sopenharmony_ci } 69fb726d48Sopenharmony_ci </style> 70fb726d48Sopenharmony_ci <div class="pop-content-body" > 71fb726d48Sopenharmony_ci <slot></slot> 72fb726d48Sopenharmony_ci </div> 73fb726d48Sopenharmony_ci `; 74fb726d48Sopenharmony_ci } 75fb726d48Sopenharmony_ci 76fb726d48Sopenharmony_ci attributeChangedCallback(name: string, oldValue: string, newValue: string): void { 77fb726d48Sopenharmony_ci switch (name) { 78fb726d48Sopenharmony_ci case 'open': 79fb726d48Sopenharmony_ci if (newValue === null || newValue === 'false') { 80fb726d48Sopenharmony_ci let parentElement = this.parentNode as Element; 81fb726d48Sopenharmony_ci parentElement?.removeAttribute('open'); 82fb726d48Sopenharmony_ci } else { 83fb726d48Sopenharmony_ci let parentElement = this.parentNode as Element; 84fb726d48Sopenharmony_ci parentElement?.setAttribute('open', ''); 85fb726d48Sopenharmony_ci } 86fb726d48Sopenharmony_ci break; 87fb726d48Sopenharmony_ci default: 88fb726d48Sopenharmony_ci break; 89fb726d48Sopenharmony_ci } 90fb726d48Sopenharmony_ci } 91fb726d48Sopenharmony_ci} 92