UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

67 lines 10 kB
import { DataField } from '../../models/abstract-data-field'; import { Validators } from '@angular/forms'; import { FieldTypeResource } from '../../../task-content/model/field-type-resource'; import { ComponentPrefixes } from '../../models/component'; import { Subject } from "rxjs"; import { debounceTime } from "rxjs/operators"; import { UpdateStrategy } from "../../models/update-strategy"; export var EnumerationFieldValidation; (function (EnumerationFieldValidation) { EnumerationFieldValidation["WRONG_VALUE"] = "wrongValue"; EnumerationFieldValidation["REQUIRED"] = "required"; })(EnumerationFieldValidation || (EnumerationFieldValidation = {})); export class EnumerationField extends DataField { _choices; _fieldType; REQUEST_DEBOUNCE_TIME = 600; _updatedChoices; constructor(stringId, title, value, _choices, behavior, placeholder, description, layout, _fieldType = FieldTypeResource.ENUMERATION, validations, component, parentTaskId) { super(stringId, title, value, behavior, placeholder, description, layout, validations, component, parentTaskId); this._choices = _choices; this._fieldType = _fieldType; this._updatedChoices = new Subject(); } set choices(choices) { this._choices = choices; } get choices() { return this._choices; } get fieldType() { return this._fieldType; } getUpdateOnStrategy() { return UpdateStrategy.CHANGE; } valueChanges() { return this._value.pipe(debounceTime(this.REQUEST_DEBOUNCE_TIME)); } getTypedComponentType() { return ComponentPrefixes.ENUMERATION + this.getComponentType(); } get updatedChoices() { return this._updatedChoices.asObservable(); } updateChoice() { this._updatedChoices.next(); } destroy() { super.destroy(); this._updatedChoices.complete(); } resolveFormControlValidators() { const result = []; if (this.behavior.required) { result.push(Validators.required); } result.push((control) => this.checkKey(control)); return result; } checkKey(control) { if (this._choices === undefined || this._choices.length === 0 || control.value === '' || control.value === undefined) { return null; } return this._choices.find(choice => choice.key === control.value || control.value === null) ? null : { wrongValue: true }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bWVyYXRpb24tZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RhdGEtZmllbGRzL2VudW1lcmF0aW9uLWZpZWxkL21vZGVscy9lbnVtZXJhdGlvbi1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHM0QsT0FBTyxFQUFpRCxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUNsRixPQUFPLEVBQVksaUJBQWlCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQW1CLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBTzlFLE1BQU0sQ0FBTixJQUFZLDBCQUdYO0FBSEQsV0FBWSwwQkFBMEI7SUFDbEMsd0RBQTBCLENBQUE7SUFDMUIsbURBQXFCLENBQUE7QUFDekIsQ0FBQyxFQUhXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFHckM7QUFFRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBaUI7SUFLN0I7SUFDMEI7SUFMdEMscUJBQXFCLEdBQUcsR0FBRyxDQUFDO0lBQzVCLGVBQWUsQ0FBZ0I7SUFFekMsWUFBWSxRQUFnQixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQ3BDLFFBQXNDLEVBQUUsUUFBa0IsRUFBRSxXQUFvQixFQUFFLFdBQW9CLEVBQ2hILE1BQWUsRUFBcUIsYUFBYSxpQkFBaUIsQ0FBQyxXQUFXLEVBQzlFLFdBQStCLEVBQUUsU0FBcUIsRUFBRSxZQUFxQjtRQUNyRixLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFIOUYsYUFBUSxHQUFSLFFBQVEsQ0FBOEI7UUFDWixlQUFVLEdBQVYsVUFBVSxDQUFnQztRQUd0RixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQXFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRU0sbUJBQW1CO1FBQ3RCLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRU0sWUFBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLHFCQUFxQjtRQUN4QixPQUFPLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sT0FBTztRQUNWLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFUyw0QkFBNEI7UUFDbEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBd0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWxFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxRQUFRLENBQUMsT0FBd0I7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDbEgsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUM1SCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGFGaWVsZH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuaW1wb3J0IHtCZWhhdmlvcn0gZnJvbSAnLi4vLi4vbW9kZWxzL2JlaGF2aW9yJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuLi8uLi9tb2RlbHMvbGF5b3V0JztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtGaWVsZFR5cGVSZXNvdXJjZX0gZnJvbSAnLi4vLi4vLi4vdGFzay1jb250ZW50L21vZGVsL2ZpZWxkLXR5cGUtcmVzb3VyY2UnO1xuaW1wb3J0IHtDb21wb25lbnQsIENvbXBvbmVudFByZWZpeGVzfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50JztcbmltcG9ydCB7VmFsaWRhdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtVcGRhdGVPblN0cmF0ZWd5LCBVcGRhdGVTdHJhdGVneX0gZnJvbSBcIi4uLy4uL21vZGVscy91cGRhdGUtc3RyYXRlZ3lcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbnVtZXJhdGlvbkZpZWxkVmFsdWUge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEVudW1lcmF0aW9uRmllbGRWYWxpZGF0aW9uIHtcbiAgICBXUk9OR19WQUxVRSA9ICd3cm9uZ1ZhbHVlJyxcbiAgICBSRVFVSVJFRCA9ICdyZXF1aXJlZCdcbn1cblxuZXhwb3J0IGNsYXNzIEVudW1lcmF0aW9uRmllbGQgZXh0ZW5kcyBEYXRhRmllbGQ8c3RyaW5nPiB7XG4gICAgcHJvdGVjdGVkIFJFUVVFU1RfREVCT1VOQ0VfVElNRSA9IDYwMDtcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZWRDaG9pY2VzOiBTdWJqZWN0PHZvaWQ+O1xuXG4gICAgY29uc3RydWN0b3Ioc3RyaW5nSWQ6IHN0cmluZywgdGl0bGU6IHN0cmluZywgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Nob2ljZXM6IEFycmF5PEVudW1lcmF0aW9uRmllbGRWYWx1ZT4sIGJlaGF2aW9yOiBCZWhhdmlvciwgcGxhY2Vob2xkZXI/OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgICAgICAgICAgICAgIGxheW91dD86IExheW91dCwgcHJvdGVjdGVkIHJlYWRvbmx5IF9maWVsZFR5cGUgPSBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTixcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucz86IEFycmF5PFZhbGlkYXRpb24+LCBjb21wb25lbnQ/OiBDb21wb25lbnQsIHBhcmVudFRhc2tJZD86IHN0cmluZykge1xuICAgICAgICBzdXBlcihzdHJpbmdJZCwgdGl0bGUsIHZhbHVlLCBiZWhhdmlvciwgcGxhY2Vob2xkZXIsIGRlc2NyaXB0aW9uLCBsYXlvdXQsIHZhbGlkYXRpb25zLCBjb21wb25lbnQsIHBhcmVudFRhc2tJZCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZWRDaG9pY2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB9XG5cbiAgICBzZXQgY2hvaWNlcyhjaG9pY2VzOiBBcnJheTxFbnVtZXJhdGlvbkZpZWxkVmFsdWU+KSB7XG4gICAgICAgIHRoaXMuX2Nob2ljZXMgPSBjaG9pY2VzO1xuICAgIH1cblxuICAgIGdldCBjaG9pY2VzKCk6IEFycmF5PEVudW1lcmF0aW9uRmllbGRWYWx1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hvaWNlcztcbiAgICB9XG5cbiAgICBnZXQgZmllbGRUeXBlKCk6IEZpZWxkVHlwZVJlc291cmNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VXBkYXRlT25TdHJhdGVneSgpOiBVcGRhdGVPblN0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIFVwZGF0ZVN0cmF0ZWd5LkNIQU5HRTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2VzKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZS5waXBlKGRlYm91bmNlVGltZSh0aGlzLlJFUVVFU1RfREVCT1VOQ0VfVElNRSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUeXBlZENvbXBvbmVudFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIENvbXBvbmVudFByZWZpeGVzLkVOVU1FUkFUSU9OICsgdGhpcy5nZXRDb21wb25lbnRUeXBlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZWRDaG9pY2VzKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlZENob2ljZXMuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUNob2ljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlZENob2ljZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZWRDaG9pY2VzLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVGb3JtQ29udHJvbFZhbGlkYXRvcnMoKTogQXJyYXk8VmFsaWRhdG9yRm4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgaWYgKHRoaXMuYmVoYXZpb3IucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5wdXNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHRoaXMuY2hlY2tLZXkoY29udHJvbCkpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0tleShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLl9jaG9pY2VzID09PSB1bmRlZmluZWQgfHwgdGhpcy5fY2hvaWNlcy5sZW5ndGggPT09IDAgfHwgY29udHJvbC52YWx1ZSA9PT0gJycgfHwgY29udHJvbC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fY2hvaWNlcy5maW5kKGNob2ljZSA9PiBjaG9pY2Uua2V5ID09PSBjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWUgPT09IG51bGwpID8gbnVsbCA6IHt3cm9uZ1ZhbHVlOiB0cnVlfTtcbiAgICB9XG59XG4iXX0=