// @ts-nocheck /* * Copyright (C) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import {BaseElement, element} from "../BaseElement.js"; @element('lit-main-menu-item') export class LitMainMenuItem extends BaseElement { private titleEl: HTMLElement | null | undefined; private rootEL: HTMLElement | null | undefined; private iconEl: HTMLElement | null | undefined; private fileEL: HTMLInputElement | undefined | null; static get observedAttributes() { return ['title', 'icon', 'file', 'disabled'] } get title(): string { return this.getAttribute("title") || "" } set title(val: string) { this.setAttribute("title", val); } get disabled(): boolean { return this.hasAttribute("disabled") } set disabled(val: boolean) { if (val) { this.setAttribute("disabled", val.toString()); this.fileEL?.setAttribute("disabled", val.toString()); } else { this.removeAttribute("disabled"); this.fileEL?.removeAttribute("disabled"); } } initElements(): void { this.rootEL = this.shadowRoot?.querySelector('.root'); this.titleEl = this.shadowRoot?.querySelector('.name'); this.iconEl = this.shadowRoot?.querySelector('.icon'); this.fileEL = this.shadowRoot?.querySelector('.file'); } isFile(): boolean { if (this.hasAttribute("file")) { if (this.fileEL) { return true } } return false } connectedCallback() { if (this.hasAttribute("file")) { if (this.fileEL) { this.fileEL.addEventListener('change', () => { let files = this.fileEL!.files; if (files && files.length > 0) { this.dispatchEvent(new CustomEvent('file-change', {target: this, detail: files[0]})) if (this.fileEL) this.fileEL.value = '' } }); } } this.addEventListener('click', e => { e.stopPropagation(); }) } initHtml(): string { return ` `; } attributeChangedCallback(name: string, oldValue: string, newValue: string) { switch (name) { case "title": if (this.titleEl) this.titleEl.textContent = newValue; break; case "icon": if (this.iconEl) this.iconEl.setAttribute("name", newValue) break; } } }