/*
* 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
}
}
}