UNPKG

@vendasta/store

Version:

Components and data for Store

45 lines 7.21 kB
import { FieldBase } from './field-base'; export class DropdownField extends FieldBase { constructor(options) { super(options); this.controlType = 'dropdown'; this.options = []; if (!!options.options && options.options.length > 0) { // Because this typeof guard is on the element and not the array as a whole typescript doesn't recognize it as a valid type assertion // The ts-ignore's are required because of this if (typeof options.options[0] === 'string') { if (options.allowMultiples) { // @ts-ignore this.options = options.options.map((o) => ({ value: o, name: o })); } else { // @ts-ignore this.options = options.options.map((o) => ({ value: o, label: o })); } } else { if (options.allowMultiples) { // @ts-ignore this.options = options.options.map((o) => ({ value: o.value, name: o.label })); } else { // @ts-ignore this.options = options.options; } } } this.allowMultiples = !!options.allowMultiples; this.allowDuplicates = !!options.allowDuplicates; this.maxChoices = options.maxChoices ? options.maxChoices : 1; this.validator = this.validatorBuilder(); } validatorBuilder() { const maxChoices = this.maxChoices; return (control) => { if (Array.isArray(control.value) && maxChoices && control.value.length > maxChoices) { return { overMaxChoices: true }; } }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3N0b3JlL3NyYy9saWIvb3JkZXItZm9ybS9maWVsZHMvZmllbGQtZHJvcGRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFNBQVMsRUFBb0IsTUFBTSxjQUFjLENBQUM7QUFpQnhFLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBNEI7SUFPN0QsWUFBWSxPQUE2QjtRQUN2QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFQUixnQkFBVyxHQUFnQixVQUFVLENBQUM7UUFRN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkQscUlBQXFJO1lBQ3JJLCtDQUErQztZQUMvQyxJQUFJLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQzFDLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRTtvQkFDMUIsYUFBYTtvQkFDYixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUM1RTtxQkFBTTtvQkFDTCxhQUFhO29CQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzdFO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFO29CQUMxQixhQUFhO29CQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDeEY7cUJBQU07b0JBQ0wsYUFBYTtvQkFDYixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7aUJBQ2hDO2FBQ0Y7U0FDRjtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDL0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxPQUFPLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUMxRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUU7Z0JBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250cm9sVHlwZSwgRmllbGRCYXNlLCBGaWVsZEJhc2VPcHRpb25zIH0gZnJvbSAnLi9maWVsZC1iYXNlJztcbmltcG9ydCB7IE9wdGlvbiBhcyBJbnB1dE9wdGlvbiB9IGZyb20gJ0B2ZW5kYXN0YS9mb3Jtcyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbiB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEcm9wRG93bkZpZWxkT3B0aW9ucyBleHRlbmRzIEZpZWxkQmFzZU9wdGlvbnMge1xuICBvcHRpb25zOiBPcHRpb25bXSB8IElucHV0T3B0aW9uW10gfCBzdHJpbmdbXTtcbiAgYWxsb3dNdWx0aXBsZXM/OiBib29sZWFuO1xuICBhbGxvd0R1cGxpY2F0ZXM/OiBib29sZWFuO1xuICBtYXhDaG9pY2VzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgRHJvcGRvd25GaWVsZCBleHRlbmRzIEZpZWxkQmFzZTxzdHJpbmcgfCBzdHJpbmdbXT4ge1xuICByZWFkb25seSBjb250cm9sVHlwZTogQ29udHJvbFR5cGUgPSAnZHJvcGRvd24nO1xuICBvcHRpb25zOiBPcHRpb25bXSB8IElucHV0T3B0aW9uW107XG4gIGFsbG93TXVsdGlwbGVzOiBib29sZWFuO1xuICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gIG1heENob2ljZXM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEcm9wRG93bkZpZWxkT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgIGlmICghIW9wdGlvbnMub3B0aW9ucyAmJiBvcHRpb25zLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQmVjYXVzZSB0aGlzIHR5cGVvZiBndWFyZCBpcyBvbiB0aGUgZWxlbWVudCBhbmQgbm90IHRoZSBhcnJheSBhcyBhIHdob2xlIHR5cGVzY3JpcHQgZG9lc24ndCByZWNvZ25pemUgaXQgYXMgYSB2YWxpZCB0eXBlIGFzc2VydGlvblxuICAgICAgLy8gVGhlIHRzLWlnbm9yZSdzIGFyZSByZXF1aXJlZCBiZWNhdXNlIG9mIHRoaXNcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5vcHRpb25zWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAob3B0aW9ucy5hbGxvd011bHRpcGxlcykge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnMubWFwKChvOiBzdHJpbmcpID0+ICh7IHZhbHVlOiBvLCBuYW1lOiBvIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zLm1hcCgobzogc3RyaW5nKSA9PiAoeyB2YWx1ZTogbywgbGFiZWw6IG8gfSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3B0aW9ucy5hbGxvd011bHRpcGxlcykge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnMubWFwKChvOiBzdHJpbmcpID0+ICh7IHZhbHVlOiBvLnZhbHVlLCBuYW1lOiBvLmxhYmVsIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hbGxvd011bHRpcGxlcyA9ICEhb3B0aW9ucy5hbGxvd011bHRpcGxlcztcbiAgICB0aGlzLmFsbG93RHVwbGljYXRlcyA9ICEhb3B0aW9ucy5hbGxvd0R1cGxpY2F0ZXM7XG4gICAgdGhpcy5tYXhDaG9pY2VzID0gb3B0aW9ucy5tYXhDaG9pY2VzID8gb3B0aW9ucy5tYXhDaG9pY2VzIDogMTtcblxuICAgIHRoaXMudmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JCdWlsZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdG9yQnVpbGRlcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgbWF4Q2hvaWNlcyA9IHRoaXMubWF4Q2hvaWNlcztcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJvbC52YWx1ZSkgJiYgbWF4Q2hvaWNlcyAmJiBjb250cm9sLnZhbHVlLmxlbmd0aCA+IG1heENob2ljZXMpIHtcbiAgICAgICAgcmV0dXJuIHsgb3Zlck1heENob2ljZXM6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iXX0=