@claromentis/design-system
Version:
Claromentis Design System Component Library
104 lines (103 loc) • 2.53 kB
JavaScript
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
}];
}
}