@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
67 lines • 10 kB
JavaScript
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=