UNPKG

@public-ui/components

Version:

Contains all web components that belong to KoliBri - The accessible HTML-Standard.

59 lines (58 loc) 2.3 kB
/*! * KoliBri - The accessible HTML-Standard */ import { validateOptions, validatePlaceholder, validateRequired, watchBoolean, watchNumber, watchValidator } from "../../schema"; import { InputIconController } from "../@deprecated/input/controller-icon"; import { fillKeyOptionMap } from "../input-radio/controller"; export class SingleSelectController extends InputIconController { constructor(component, name, host) { super(component, name, host); this.keyOptionMap = new Map(); this.afterPatchOptions = (value, _state, _component, key) => { if (key === '_value') { this.setFormAssociatedValue(value); } }; this.beforePatchOptions = (_value, nextState) => { const options = nextState.has('_options') ? nextState.get('_options') : this.component.state._options; if (Array.isArray(options) && options.length > 0) { this.keyOptionMap.clear(); fillKeyOptionMap(this.keyOptionMap, options); } }; this.component = component; } validateOptions(value) { validateOptions(this.component, value, { hooks: { afterPatch: this.afterPatchOptions, beforePatch: this.beforePatchOptions, }, }); } validateRequired(value) { validateRequired(this.component, value); } validateValue(value) { watchValidator(this.component, '_value', (v) => v !== undefined, new Set([`StencilUnknown`]), value); } validatePlaceholder(value) { validatePlaceholder(this.component, value); } validateHasClearButton(value) { watchBoolean(this.component, '_hasClearButton', value); } validateRows(value) { watchNumber(this.component, '_rows', value); } componentWillLoad() { super.componentWillLoad(); this.validateOptions(this.component._options); this.validateRequired(this.component._required); this.validateValue(this.component._value); this.validatePlaceholder(this.component._placeholder); this.validateHasClearButton(this.component._hasClearButton); this.validateRows(this.component._rows); } } //# sourceMappingURL=controller.js.map