UNPKG

@vaadin/checkbox

Version:
65 lines (58 loc) 2.11 kB
/** * @license * Copyright (c) 2017 - 2025 Vaadin Ltd. * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/ */ import { html, LitElement } from 'lit'; import { defineCustomElement } from '@vaadin/component-base/src/define.js'; import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js'; import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js'; import { TooltipController } from '@vaadin/component-base/src/tooltip-controller.js'; import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js'; import { CheckboxMixin } from './vaadin-checkbox-mixin.js'; import { checkboxStyles } from './vaadin-checkbox-styles.js'; /** * LitElement based version of `<vaadin-checkbox>` web component. * * ## Disclaimer * * This component is an experiment and not yet a part of Vaadin platform. * There is no ETA regarding specific Vaadin version where it'll land. * Feel free to try this code in your apps as per Apache 2.0 license. */ export class Checkbox extends CheckboxMixin(ElementMixin(ThemableMixin(PolylitMixin(LitElement)))) { static get is() { return 'vaadin-checkbox'; } static get styles() { return checkboxStyles; } /** @protected */ render() { return html` <div class="vaadin-checkbox-container"> <div part="checkbox" aria-hidden="true"></div> <slot name="input"></slot> <div part="label"> <slot name="label"></slot> <div part="required-indicator" @click="${this._onRequiredIndicatorClick}"></div> </div> <div part="helper-text"> <slot name="helper"></slot> </div> <div part="error-message"> <slot name="error-message"></slot> </div> </div> <slot name="tooltip"></slot> `; } /** @protected */ ready() { super.ready(); this._tooltipController = new TooltipController(this); this._tooltipController.setAriaTarget(this.inputElement); this.addController(this._tooltipController); } } defineCustomElement(Checkbox);