1/* 2 * Copyright (C) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { element } from '../BaseElement'; 17 18@element('lit-table-column') 19export class LitTableColumn extends HTMLElement { 20 template: Element | undefined | null; 21 private st: HTMLSlotElement | undefined | null; 22 23 constructor() { 24 super(); 25 const shadowRoot = this.attachShadow({ mode: 'open' }); 26 shadowRoot.innerHTML = ` 27 <style> 28 :host{ 29 overflow: auto; 30 width: 100%; 31 } 32 </style> 33 <slot id="slot"></slot> 34 `; 35 } 36 37 static get observedAttributes(): string[] { 38 return ['name', 'order']; 39 } 40 41 connectedCallback(): void { 42 this.template = null; 43 this.st = this.shadowRoot?.querySelector('#slot'); 44 this.st?.addEventListener('slotchange', () => { 45 const elements = this.st!.assignedElements({ flatten: false }); 46 if (elements!.length > 0) { 47 this.template = elements[0]; 48 } 49 }); 50 } 51 52 disconnectedCallback(): void {} 53 54 adoptedCallback(): void {} 55 56 attributeChangedCallback(name: string, oldValue: string, newValue: string): void {} 57} 58