/* * 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'; import { SpCheckDesBox } from '../../trace/component/setting/SpCheckDesBox.js'; @element('lit-check-text') export class LitCheckBoxWithText extends BaseElement { private _checkBox: SpCheckDesBox | undefined; private _lowerLimit: HTMLInputElement | undefined; private _upLimit: HTMLInputElement | undefined; static get observedAttributes() { return ['text', 'lowerLimit', 'upLimit', 'checked']; } get text(): string { return this.getAttribute('text') || ''; } set text(text: string) { this.setAttribute('text', text); } get lowerLimit(): string { return this.getAttribute('lowerLimit') || '0'; } set lowerLimit(lower: string) { this.setAttribute('lowerLimit', lower); } get upLimit(): string { return this.getAttribute('upLimit') || '∞'; } set upLimit(upLimit: string) { this.setAttribute('upLimit', upLimit); } get checked() { return this.getAttribute('checked') != null; } set checked(checked: boolean) { if (checked) { this.setAttribute('checked', ''); } else { this.removeAttribute('checked'); } } initElements(): void { this._checkBox = this.shadowRoot?.getElementById('checkbox') as SpCheckDesBox; this._lowerLimit = this.shadowRoot?.getElementById('textLowerLimit') as HTMLInputElement; this._upLimit = this.shadowRoot?.getElementById('_upLimit') as HTMLInputElement; } initHtml(): string { return ` `; } attributeChangedCallback(name: string, oldValue: string, newValue: string) { if (name == 'checked') { this._checkBox!.checked = newValue !== null; } if (name == 'text') { this._checkBox?.setAttribute('value', newValue); } if (name == 'lowerLimit') { this._lowerLimit!.textContent = newValue; } if (name == 'upLimit') { this._upLimit!.textContent = newValue; } } }