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_ciimport { LitCheckBox, LitCheckBoxChangeEvent } from '../../../base-ui/checkbox/LitCheckBox'; 18fb726d48Sopenharmony_ci 19fb726d48Sopenharmony_ci@element('check-des-box') 20fb726d48Sopenharmony_ciexport class SpCheckDesBox extends BaseElement { 21fb726d48Sopenharmony_ci private _checkBox: LitCheckBox | undefined; 22fb726d48Sopenharmony_ci private _des: HTMLSpanElement | undefined; 23fb726d48Sopenharmony_ci 24fb726d48Sopenharmony_ci static get observedAttributes(): string[] { 25fb726d48Sopenharmony_ci return ['checked', 'value', 'des', 'disabled']; 26fb726d48Sopenharmony_ci } 27fb726d48Sopenharmony_ci 28fb726d48Sopenharmony_ci get disabled(): boolean { 29fb726d48Sopenharmony_ci return this.getAttribute('disabled') !== null; 30fb726d48Sopenharmony_ci } 31fb726d48Sopenharmony_ci 32fb726d48Sopenharmony_ci set disabled(value) { 33fb726d48Sopenharmony_ci if (value === null || !value) { 34fb726d48Sopenharmony_ci this.removeAttribute('disabled'); 35fb726d48Sopenharmony_ci } else { 36fb726d48Sopenharmony_ci this.setAttribute('disabled', ''); 37fb726d48Sopenharmony_ci } 38fb726d48Sopenharmony_ci } 39fb726d48Sopenharmony_ci 40fb726d48Sopenharmony_ci set des(des: string) { 41fb726d48Sopenharmony_ci this.setAttribute('des', des); 42fb726d48Sopenharmony_ci } 43fb726d48Sopenharmony_ci 44fb726d48Sopenharmony_ci get value(): string { 45fb726d48Sopenharmony_ci return this.getAttribute('value') || ''; 46fb726d48Sopenharmony_ci } 47fb726d48Sopenharmony_ci 48fb726d48Sopenharmony_ci set value(value: string) { 49fb726d48Sopenharmony_ci this.setAttribute('value', value); 50fb726d48Sopenharmony_ci this._checkBox!.value = value; 51fb726d48Sopenharmony_ci } 52fb726d48Sopenharmony_ci 53fb726d48Sopenharmony_ci get checked(): boolean { 54fb726d48Sopenharmony_ci return this.getAttribute('checked') !== null; 55fb726d48Sopenharmony_ci } 56fb726d48Sopenharmony_ci 57fb726d48Sopenharmony_ci set checked(checked: boolean) { 58fb726d48Sopenharmony_ci if (checked) { 59fb726d48Sopenharmony_ci this.setAttribute('checked', 'true'); 60fb726d48Sopenharmony_ci this._checkBox!.checked = true; 61fb726d48Sopenharmony_ci } else { 62fb726d48Sopenharmony_ci this.removeAttribute('checked'); 63fb726d48Sopenharmony_ci this._checkBox!.checked = false; 64fb726d48Sopenharmony_ci } 65fb726d48Sopenharmony_ci } 66fb726d48Sopenharmony_ci 67fb726d48Sopenharmony_ci initElements(): void { 68fb726d48Sopenharmony_ci this._checkBox = this.shadowRoot?.getElementById('checkBox') as LitCheckBox; 69fb726d48Sopenharmony_ci this._des = this.shadowRoot?.getElementById('des') as HTMLSpanElement; 70fb726d48Sopenharmony_ci } 71fb726d48Sopenharmony_ci 72fb726d48Sopenharmony_ci initHtml(): string { 73fb726d48Sopenharmony_ci return ` 74fb726d48Sopenharmony_ci<style> 75fb726d48Sopenharmony_ci.check-des{ 76fb726d48Sopenharmony_ci opacity: 0.6; 77fb726d48Sopenharmony_ci font-family: Helvetica; 78fb726d48Sopenharmony_ci font-size: 1em; 79fb726d48Sopenharmony_ci color: var(--dark-color,#000000); 80fb726d48Sopenharmony_ci text-align: left; 81fb726d48Sopenharmony_ci line-height: 20px; 82fb726d48Sopenharmony_ci font-weight: 400; 83fb726d48Sopenharmony_ci} 84fb726d48Sopenharmony_cilit-check-box { 85fb726d48Sopenharmony_ci margin-bottom: 10px; 86fb726d48Sopenharmony_ci} 87fb726d48Sopenharmony_ci#des-con{ 88fb726d48Sopenharmony_ci margin-left: 30px; 89fb726d48Sopenharmony_ci} 90fb726d48Sopenharmony_ci:host([disabled]){ 91fb726d48Sopenharmony_ci pointer-events: none; 92fb726d48Sopenharmony_ci} 93fb726d48Sopenharmony_ci</style> 94fb726d48Sopenharmony_ci<lit-check-box id="checkBox"></lit-check-box> 95fb726d48Sopenharmony_ci<div id="des-con"> 96fb726d48Sopenharmony_ci <span id="des" class="check-des"></span> 97fb726d48Sopenharmony_ci</div>`; 98fb726d48Sopenharmony_ci } 99fb726d48Sopenharmony_ci 100fb726d48Sopenharmony_ci public connectedCallback(): void { 101fb726d48Sopenharmony_ci this._checkBox?.addEventListener('change', (ev: CustomEventInit<LitCheckBoxChangeEvent>): void => { 102fb726d48Sopenharmony_ci let detail = ev.detail; 103fb726d48Sopenharmony_ci this.checked = detail!.checked; 104fb726d48Sopenharmony_ci this.dispatchEvent(new CustomEvent('onchange', { detail })); 105fb726d48Sopenharmony_ci }); 106fb726d48Sopenharmony_ci } 107fb726d48Sopenharmony_ci 108fb726d48Sopenharmony_ci attributeChangedCallback(name: string, oldValue: string, newValue: string): void { 109fb726d48Sopenharmony_ci if (name === 'checked') { 110fb726d48Sopenharmony_ci this._checkBox!.checked = newValue !== null; 111fb726d48Sopenharmony_ci } 112fb726d48Sopenharmony_ci if (name === 'value') { 113fb726d48Sopenharmony_ci this._checkBox!.value = newValue; 114fb726d48Sopenharmony_ci } 115fb726d48Sopenharmony_ci if (name === 'des') { 116fb726d48Sopenharmony_ci this._des!.textContent = newValue; 117fb726d48Sopenharmony_ci } 118fb726d48Sopenharmony_ci } 119fb726d48Sopenharmony_ci} 120fb726d48Sopenharmony_ci 121fb726d48Sopenharmony_ciexport interface checkDesBean { 122fb726d48Sopenharmony_ci value: string; 123fb726d48Sopenharmony_ci isSelect: boolean; 124fb726d48Sopenharmony_ci des: string; 125fb726d48Sopenharmony_ci} 126