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