UNPKG

@claromentis/design-system

Version:

Claromentis Design System Component Library

104 lines (103 loc) 2.53 kB
import { h } from '@stencil/core'; export class ClaPickerButtonGroup { constructor() { this.pickers = []; this.multiselectable = false; } onPickerSelect(ev) { const selectedPicker = ev.target; if (selectedPicker.disabled) return; if (this.multiselectable === false) { for (const picker of this.pickers) { picker.checked = false; selectedPicker.checked = true; } } else { selectedPicker.checked === true ? selectedPicker.checked = false : selectedPicker.checked = true; } } onPickerDeselect(ev) { const selectedPicker = ev.target; if (selectedPicker.disabled) return; if (this.multiselectable === false && selectedPicker.checked === true) { return; } if (selectedPicker) { selectedPicker.checked = false; } } onSelectDidLoad(ev) { const pickerInput = ev.target; // add select to internal list this.pickers.push(pickerInput); } hostData() { return { 'role': this.multiselectable ? "group" : "radiogroup", }; } render() { return ([ h("slot", null) ]); } static get is() { return "cla-picker-group"; } static get encapsulation() { return "shadow"; } static get originalStyleUrls() { return { "$": ["cla-picker-group.scss"] }; } static get styleUrls() { return { "$": ["cla-picker-group.css"] }; } static get properties() { return { "multiselectable": { "type": "boolean", "mutable": false, "complexType": { "original": "boolean", "resolved": "boolean", "references": {} }, "required": false, "optional": false, "docs": { "tags": [], "text": "Can more than one picker option be selected?" }, "attribute": "multiselectable", "reflect": false, "defaultValue": "false" } }; } static get elementRef() { return "el"; } static get listeners() { return [{ "name": "claPickerSelect", "method": "onPickerSelect", "target": undefined, "capture": false, "passive": false }, { "name": "claPickerDeselect", "method": "onPickerDeselect", "target": undefined, "capture": false, "passive": false }, { "name": "claPickerDidLoad", "method": "onSelectDidLoad", "target": undefined, "capture": false, "passive": false }]; } }