UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

99 lines 14.7 kB
import { Validators } from '@angular/forms'; import { ComponentPrefixes } from '../../models/component'; import { DataField } from '../../models/abstract-data-field'; export var TextFieldView; (function (TextFieldView) { TextFieldView["DEFAULT"] = "default"; TextFieldView["TEXTAREA"] = "textarea"; TextFieldView["RICHTEXTAREA"] = "richtextarea"; TextFieldView["HTMLTEXTAREA"] = "htmltextarea"; })(TextFieldView || (TextFieldView = {})); /** * A collection of Text field component names supported by the application engine. */ export var TextFieldComponent; (function (TextFieldComponent) { TextFieldComponent["PASSWORD"] = "password"; TextFieldComponent["TEXT_AREA"] = "textarea"; TextFieldComponent["RICH_TEXT_AREA"] = "richtextarea"; TextFieldComponent["HTML_TEXT_AREA"] = "htmltextarea"; TextFieldComponent["DASHBOARD_LINE_CHART"] = "dashboard_line_chart"; TextFieldComponent["DASHBOARD_PIE_CHART"] = "dashboard_pie_chart"; TextFieldComponent["DASHBOARD_BAR_CHART"] = "dashboard_bar_chart"; TextFieldComponent["DASHBOARD_IFRAME"] = "dashboard_iframe"; TextFieldComponent["DASHBOARD_PORTAL"] = "dashboard_portal"; })(TextFieldComponent || (TextFieldComponent = {})); export var TextAreaHeight; (function (TextAreaHeight) { TextAreaHeight[TextAreaHeight["OUTLINE"] = 20] = "OUTLINE"; TextAreaHeight[TextAreaHeight["FILL_STANDARD"] = 22] = "FILL_STANDARD"; })(TextAreaHeight || (TextAreaHeight = {})); export var TextFieldValidation; (function (TextFieldValidation) { TextFieldValidation["REQUIRED"] = "required"; TextFieldValidation["MIN_LENGTH"] = "minLength"; TextFieldValidation["MAX_LENGTH"] = "maxLength"; TextFieldValidation["VALID_MIN_LENGTH"] = "minlength"; TextFieldValidation["VALID_MAX_LENGTH"] = "maxlength"; TextFieldValidation["PATTERN"] = "pattern"; TextFieldValidation["REGEX"] = "regex"; TextFieldValidation["VALID_TEL_NUMBER"] = "validTelNumber"; TextFieldValidation["TEL_NUMBER"] = "telNumber"; TextFieldValidation["EMAIL"] = "email"; })(TextFieldValidation || (TextFieldValidation = {})); export class TextField extends DataField { static FIELD_HEIGHT = 67; constructor(stringId, title, value, behavior, placeholder, description, layout, validations, _component, parentTaskId) { super(stringId, title, value, behavior, placeholder, description, layout, validations, _component, parentTaskId); } getTypedComponentType() { return ComponentPrefixes.TEXT + this.getComponentType(); } resolveValidations() { const result = []; this.validations.forEach(item => { if (item.validationRule.includes(TextFieldValidation.MIN_LENGTH)) { const tmp = item.validationRule.split(' '); if (tmp[1] !== undefined) { const length = parseInt(tmp[1], 10); if (!isNaN(length)) { result.push(Validators.minLength(length)); } } } else if (item.validationRule.includes(TextFieldValidation.MAX_LENGTH)) { const tmp = item.validationRule.split(' '); if (tmp[1] !== undefined) { const length = parseInt(tmp[1], 10); if (!isNaN(length)) { result.push(Validators.maxLength(length)); } } } else if (item.validationRule.includes(TextFieldValidation.REGEX)) { if (item.validationRule.startsWith('regex ')) { result.push(Validators.pattern(new RegExp(item.validationRule.substring(6, item.validationRule.length)))); } else if (item.validationRule.startsWith('regex("')) { result.push(Validators.pattern(new RegExp(item.validationRule.substring(7, item.validationRule.length - 2)))); } } else if (item.validationRule.includes(TextFieldValidation.EMAIL)) { result.push(Validators.email); } else if (item.validationRule.includes(TextFieldValidation.TEL_NUMBER)) { result.push(this.validTelNumber); } }); return result; } validTelNumber(fc) { if (!(new RegExp(/^(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)$/).test(fc.value))) { return ({ validTelNumber: true }); } else { return null; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvdGV4dC1maWVsZC9tb2RlbHMvdGV4dC1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTJCLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3BFLE9BQU8sRUFBWSxpQkFBaUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUUzRCxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3JCLG9DQUFtQixDQUFBO0lBQ25CLHNDQUFxQixDQUFBO0lBQ3JCLDhDQUE2QixDQUFBO0lBQzdCLDhDQUE2QixDQUFBO0FBQ2pDLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksa0JBVVg7QUFWRCxXQUFZLGtCQUFrQjtJQUMxQiwyQ0FBcUIsQ0FBQTtJQUNyQiw0Q0FBc0IsQ0FBQTtJQUN0QixxREFBK0IsQ0FBQTtJQUMvQixxREFBK0IsQ0FBQTtJQUMvQixtRUFBNkMsQ0FBQTtJQUM3QyxpRUFBMkMsQ0FBQTtJQUMzQyxpRUFBMkMsQ0FBQTtJQUMzQywyREFBcUMsQ0FBQTtJQUNyQywyREFBcUMsQ0FBQTtBQUN6QyxDQUFDLEVBVlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQVU3QjtBQUVELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsMERBQVksQ0FBQTtJQUNaLHNFQUFrQixDQUFBO0FBQ3RCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVdYO0FBWEQsV0FBWSxtQkFBbUI7SUFDM0IsNENBQXFC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b0JBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pIO2FBQ0o7aUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakM7aUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDckUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxjQUFjLENBQUMsRUFBZTtRQUNsQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxzRkFBc0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN0SCxPQUFPLENBQUMsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JlaGF2aW9yfSBmcm9tICcuLi8uLi9tb2RlbHMvYmVoYXZpb3InO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuLi8uLi9tb2RlbHMvbGF5b3V0JztcbmltcG9ydCB7VmFsaWRhdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIENvbXBvbmVudFByZWZpeGVzfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50JztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5cbmV4cG9ydCBlbnVtIFRleHRGaWVsZFZpZXcge1xuICAgIERFRkFVTFQgPSAnZGVmYXVsdCcsXG4gICAgVEVYVEFSRUEgPSAndGV4dGFyZWEnLFxuICAgIFJJQ0hURVhUQVJFQSA9ICdyaWNodGV4dGFyZWEnLFxuICAgIEhUTUxURVhUQVJFQSA9ICdodG1sdGV4dGFyZWEnXG59XG5cbi8qKlxuICogQSBjb2xsZWN0aW9uIG9mIFRleHQgZmllbGQgY29tcG9uZW50IG5hbWVzIHN1cHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24gZW5naW5lLlxuICovXG5leHBvcnQgZW51bSBUZXh0RmllbGRDb21wb25lbnQge1xuICAgIFBBU1NXT1JEID0gJ3Bhc3N3b3JkJyxcbiAgICBURVhUX0FSRUEgPSAndGV4dGFyZWEnLFxuICAgIFJJQ0hfVEVYVF9BUkVBID0gJ3JpY2h0ZXh0YXJlYScsXG4gICAgSFRNTF9URVhUX0FSRUEgPSAnaHRtbHRleHRhcmVhJyxcbiAgICBEQVNIQk9BUkRfTElORV9DSEFSVCA9ICdkYXNoYm9hcmRfbGluZV9jaGFydCcsXG4gICAgREFTSEJPQVJEX1BJRV9DSEFSVCA9ICdkYXNoYm9hcmRfcGllX2NoYXJ0JyxcbiAgICBEQVNIQk9BUkRfQkFSX0NIQVJUID0gJ2Rhc2hib2FyZF9iYXJfY2hhcnQnLFxuICAgIERBU0hCT0FSRF9JRlJBTUUgPSAnZGFzaGJvYXJkX2lmcmFtZScsXG4gICAgREFTSEJPQVJEX1BPUlRBTCA9ICdkYXNoYm9hcmRfcG9ydGFsJyxcbn1cblxuZXhwb3J0IGVudW0gVGV4dEFyZWFIZWlnaHQge1xuICAgIE9VVExJTkUgPSAyMCxcbiAgICBGSUxMX1NUQU5EQVJEID0gMjJcbn1cblxuZXhwb3J0IGVudW0gVGV4dEZpZWxkVmFsaWRhdGlvbiB7XG4gICAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxuICAgIE1JTl9MRU5HVEggPSAnbWluTGVuZ3RoJyxcbiAgICBNQVhfTEVOR1RIID0gJ21heExlbmd0aCcsXG4gICAgVkFMSURfTUlOX0xFTkdUSCA9ICdtaW5sZW5ndGgnLFxuICAgIFZBTElEX01BWF9MRU5HVEggPSAnbWF4bGVuZ3RoJyxcbiAgICBQQVRURVJOID0gJ3BhdHRlcm4nLFxuICAgIFJFR0VYID0gJ3JlZ2V4JyxcbiAgICBWQUxJRF9URUxfTlVNQkVSID0gJ3ZhbGlkVGVsTnVtYmVyJyxcbiAgICBURUxfTlVNQkVSID0gJ3RlbE51bWJlcicsXG4gICAgRU1BSUwgPSAnZW1haWwnXG59XG5cbmV4cG9ydCBjbGFzcyBUZXh0RmllbGQgZXh0ZW5kcyBEYXRhRmllbGQ8c3RyaW5nPiB7XG4gICAgcHVibGljIHN0YXRpYyBGSUVMRF9IRUlHSFQgPSA2NztcblxuICAgIGNvbnN0cnVjdG9yKHN0cmluZ0lkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGJlaGF2aW9yOiBCZWhhdmlvciwgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsIGxheW91dD86IExheW91dCwgdmFsaWRhdGlvbnM/OiBBcnJheTxWYWxpZGF0aW9uPiwgX2NvbXBvbmVudD86IENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBwYXJlbnRUYXNrSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc3RyaW5nSWQsIHRpdGxlLCB2YWx1ZSwgYmVoYXZpb3IsIHBsYWNlaG9sZGVyLCBkZXNjcmlwdGlvbiwgbGF5b3V0LCB2YWxpZGF0aW9ucywgX2NvbXBvbmVudCwgcGFyZW50VGFza0lkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VHlwZWRDb21wb25lbnRUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBDb21wb25lbnRQcmVmaXhlcy5URVhUICsgdGhpcy5nZXRDb21wb25lbnRUeXBlKCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCByZXNvbHZlVmFsaWRhdGlvbnMoKTogQXJyYXk8VmFsaWRhdG9yRm4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoVGV4dEZpZWxkVmFsaWRhdGlvbi5NSU5fTEVOR1RIKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRtcCA9IGl0ZW0udmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICBpZiAodG1wWzFdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gcGFyc2VJbnQodG1wWzFdLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4obGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgobGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoVGV4dEZpZWxkVmFsaWRhdGlvbi5NQVhfTEVOR1RIKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRtcCA9IGl0ZW0udmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICBpZiAodG1wWzFdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gcGFyc2VJbnQodG1wWzFdLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4obGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgobGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoVGV4dEZpZWxkVmFsaWRhdGlvbi5SRUdFWCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS52YWxpZGF0aW9uUnVsZS5zdGFydHNXaXRoKCdyZWdleCAnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4obmV3IFJlZ0V4cChpdGVtLnZhbGlkYXRpb25SdWxlLnN1YnN0cmluZyg2LCBpdGVtLnZhbGlkYXRpb25SdWxlLmxlbmd0aCApKSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS52YWxpZGF0aW9uUnVsZS5zdGFydHNXaXRoKCdyZWdleChcIicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKGl0ZW0udmFsaWRhdGlvblJ1bGUuc3Vic3RyaW5nKDcsIGl0ZW0udmFsaWRhdGlvblJ1bGUubGVuZ3RoIC0gMikpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnZhbGlkYXRpb25SdWxlLmluY2x1ZGVzKFRleHRGaWVsZFZhbGlkYXRpb24uRU1BSUwpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoVGV4dEZpZWxkVmFsaWRhdGlvbi5URUxfTlVNQkVSKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMudmFsaWRUZWxOdW1iZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRUZWxOdW1iZXIoZmM6IEZvcm1Db250cm9sKSB7XG4gICAgICAgIGlmICghKG5ldyBSZWdFeHAoL14oPzpcXCs/KFxcZHsxLDN9KSk/KFstLiAoXSooXFxkezN9KVstLiApXSopPygoXFxkezN9KVstLiBdKihcXGR7Miw0fSkoPzpbLS54IF0qKFxcZCspKT8pJC8pLnRlc3QoZmMudmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuICh7dmFsaWRUZWxOdW1iZXI6IHRydWV9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19