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 '../../../base-ui/BaseElement'; 17fb726d48Sopenharmony_ci 18fb726d48Sopenharmony_ci@element('table-no-data') 19fb726d48Sopenharmony_ciexport class TableNoData extends BaseElement { 20fb726d48Sopenharmony_ci static get observedAttributes(): string[] { 21fb726d48Sopenharmony_ci return ['noData', 'contentWidth', 'height']; 22fb726d48Sopenharmony_ci } 23fb726d48Sopenharmony_ci 24fb726d48Sopenharmony_ci private dataSlot: HTMLDivElement | null | undefined; 25fb726d48Sopenharmony_ci private noDataIcon: HTMLDivElement | null | undefined; 26fb726d48Sopenharmony_ci 27fb726d48Sopenharmony_ci initElements(): void { 28fb726d48Sopenharmony_ci this.dataSlot = this.shadowRoot!.querySelector<HTMLDivElement>('.no-data'); 29fb726d48Sopenharmony_ci this.noDataIcon = this.shadowRoot!.querySelector<HTMLDivElement>('.d-box'); 30fb726d48Sopenharmony_ci } 31fb726d48Sopenharmony_ci 32fb726d48Sopenharmony_ci get noData(): boolean { 33fb726d48Sopenharmony_ci return this.hasAttribute('noData'); 34fb726d48Sopenharmony_ci } 35fb726d48Sopenharmony_ci 36fb726d48Sopenharmony_ci set noData(value: boolean) { 37fb726d48Sopenharmony_ci if (value) { 38fb726d48Sopenharmony_ci this.setAttribute('noData', ''); 39fb726d48Sopenharmony_ci } else { 40fb726d48Sopenharmony_ci this.removeAttribute('noData'); 41fb726d48Sopenharmony_ci } 42fb726d48Sopenharmony_ci } 43fb726d48Sopenharmony_ci 44fb726d48Sopenharmony_ci get contentWidth(): string { 45fb726d48Sopenharmony_ci return this.getAttribute('contentWidth') || '100%'; 46fb726d48Sopenharmony_ci } 47fb726d48Sopenharmony_ci set contentWidth(value) { 48fb726d48Sopenharmony_ci this.shadowRoot!.querySelector<HTMLDivElement>('.d-box')!.style.width = value; 49fb726d48Sopenharmony_ci this.setAttribute('contentWidth', value); 50fb726d48Sopenharmony_ci } 51fb726d48Sopenharmony_ci get contentHeight(): string { 52fb726d48Sopenharmony_ci return this.getAttribute('contentHeight') || '80%'; 53fb726d48Sopenharmony_ci } 54fb726d48Sopenharmony_ci set contentHeight(value) { 55fb726d48Sopenharmony_ci this.shadowRoot!.querySelector<HTMLDivElement>('.d-box')!.style.height = value; 56fb726d48Sopenharmony_ci this.setAttribute('contentHeight', value); 57fb726d48Sopenharmony_ci } 58fb726d48Sopenharmony_ci 59fb726d48Sopenharmony_ci initHtml(): string { 60fb726d48Sopenharmony_ci return ` 61fb726d48Sopenharmony_ci <style> 62fb726d48Sopenharmony_ci :host { 63fb726d48Sopenharmony_ci width: 100%; 64fb726d48Sopenharmony_ci height: 100%; 65fb726d48Sopenharmony_ci display: block; 66fb726d48Sopenharmony_ci } 67fb726d48Sopenharmony_ci :host(:not([noData])) .no-data{ 68fb726d48Sopenharmony_ci display: block; 69fb726d48Sopenharmony_ci height: 100%; 70fb726d48Sopenharmony_ci width: 100%; 71fb726d48Sopenharmony_ci } 72fb726d48Sopenharmony_ci :host([noData]) .no-data{ 73fb726d48Sopenharmony_ci display: none; 74fb726d48Sopenharmony_ci } 75fb726d48Sopenharmony_ci :host(:not([noData])) .d-box{ 76fb726d48Sopenharmony_ci display: none; 77fb726d48Sopenharmony_ci } 78fb726d48Sopenharmony_ci :host([noData]) .d-box{ 79fb726d48Sopenharmony_ci width: ${this.contentWidth}; 80fb726d48Sopenharmony_ci height: ${this.contentHeight}; 81fb726d48Sopenharmony_ci display: flex; 82fb726d48Sopenharmony_ci align-items: center; 83fb726d48Sopenharmony_ci justify-content: center; 84fb726d48Sopenharmony_ci flex-direction: column; 85fb726d48Sopenharmony_ci } 86fb726d48Sopenharmony_ci .no-data-icon{ 87fb726d48Sopenharmony_ci background-image: url("img/table_no_data.svg"); 88fb726d48Sopenharmony_ci width: 60%; 89fb726d48Sopenharmony_ci height: 60%; 90fb726d48Sopenharmony_ci min-height: 200px; 91fb726d48Sopenharmony_ci min-width: 200px; 92fb726d48Sopenharmony_ci background-size: 100% 100%; 93fb726d48Sopenharmony_ci } 94fb726d48Sopenharmony_ci .no-data-text{ 95fb726d48Sopenharmony_ci color: var(--dark-color1,#252525); 96fb726d48Sopenharmony_ci opacity: 0.6; 97fb726d48Sopenharmony_ci font-weight: 400; 98fb726d48Sopenharmony_ci } 99fb726d48Sopenharmony_ci </style> 100fb726d48Sopenharmony_ci <slot class="no-data"></slot> 101fb726d48Sopenharmony_ci <div class="d-box"> 102fb726d48Sopenharmony_ci <div class="no-data-icon"></div> 103fb726d48Sopenharmony_ci <div class="no-data-text">Sorry, no data</div> 104fb726d48Sopenharmony_ci </div> 105fb726d48Sopenharmony_ci `; 106fb726d48Sopenharmony_ci } 107fb726d48Sopenharmony_ci} 108