UNPKG

@manojadams/metaforms

Version:
1,260 lines (1,250 loc) 195 kB
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var React = require('react'); var React__default = _interopDefault(React); var EventEmitter = require('eventemitter3'); var EventEmitter__default = _interopDefault(EventEmitter); var material = require('@mui/material'); var MFormControl = _interopDefault(require('@mui/material/FormControl')); var FormControlLabel = _interopDefault(require('@mui/material/FormControlLabel')); var FormLabel = _interopDefault(require('@mui/material/FormLabel')); var InputLabel = _interopDefault(require('@mui/material/InputLabel')); var MenuItem = _interopDefault(require('@mui/material/MenuItem')); var Radio = _interopDefault(require('@mui/material/Radio')); var RadioGroup = _interopDefault(require('@mui/material/RadioGroup')); var Select = _interopDefault(require('@mui/material/Select')); var TextField = _interopDefault(require('@mui/material/TextField')); var AdapterDateFns = require('@mui/x-date-pickers/AdapterDateFns'); var DatePicker = require('@mui/x-date-pickers/DatePicker'); var LocalizationProvider = require('@mui/x-date-pickers/LocalizationProvider'); var enLocale = _interopDefault(require('date-fns/locale/en-US')); var PhoneInput = _interopDefault(require('react-phone-input-2')); var reactNumberFormat = require('react-number-format'); var VirtualScroll = _interopDefault(require('react-dynamic-virtual-scroll')); var Tabs$1 = _interopDefault(require('@mui/material/Tabs')); var Tab$1 = _interopDefault(require('@mui/material/Tab')); var Stepper = _interopDefault(require('@mui/material/Stepper')); var Step = _interopDefault(require('@mui/material/Step')); var StepLabel = _interopDefault(require('@mui/material/StepLabel')); function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } var MSGS = { ERROR_MSG: { REQUIRED: "Is a required field", PATTERN: "Pattern is invalid", MIN: "Is not a valid value", MIN_TEXT: "Minimum length is {CHARS} chars.", MAX: "Out of range", MAX_TEXT: "Maximum length is {CHARS} chars.", DATE_INVALID: "Date is not valid", EMAIL_INVALID: "Email is not valid" } }; var EMAIL_PATTERN = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$"; var FORM_CONSTANTS = { DEPENDENCY_KEY: "dependencies", INTERNAL_VALUES: { INPUT: "$input", NOT_EMPTY: "$notempty", VALUE_FN: "$valueFn", CONDITION: "$condition", DEFAULT: "$default" } }; var DEFAULT_DATE_FORMAT = "dd/MM/yyyy"; var NEXT_RESPONSE_MODE = { PAGE_DATA: "page-data", FORM_DATA: "form-data" }; var FIELD_DISPLAY_TYPES = { TEXT: "text", SELECT: "select" }; var Page = /*#__PURE__*/function () { function Page(isGrouped, pages) { this.pages = pages; this.isGrouped = isGrouped; this.pageNumber = 1; this.totalPages = pages; } var _proto = Page.prototype; _proto.update = function update(pageNumber) { if (pageNumber <= this.totalPages) { this.pageNumber = pageNumber; } else { this.pageNumber = this.totalPages; } }; _proto.setEndOfPage = function setEndOfPage(pageNumber) { if (pageNumber !== undefined && pageNumber < this.totalPages) { this.totalPages = pageNumber; } }; _proto.resetEndOfPage = function resetEndOfPage() { this.totalPages = this.pages; }; _proto.showPrev = function showPrev() { return this.isGrouped && this.pageNumber !== 1; }; _proto.showNext = function showNext() { return this.isGrouped && this.pageNumber < this.totalPages; }; _proto.showSave = function showSave() { if (this.isGrouped) { return this.pageNumber >= this.totalPages; } else { return true; } }; return Page; }(); var Rest = /*#__PURE__*/function () { function Rest(rest) { var _this$config, _this$config2; this.config = rest !== null && rest !== void 0 && rest.config ? rest.config : {}; var apihost = ((_this$config = this.config) === null || _this$config === void 0 ? void 0 : _this$config.apihost) || ""; var basepath = ((_this$config2 = this.config) === null || _this$config2 === void 0 ? void 0 : _this$config2.basepath) || ""; this.baseurl = apihost + basepath; } var _proto2 = Rest.prototype; _proto2.get = function get(url, params, isRemote) { var finalUrl = isRemote ? url : this.baseurl + url; return fetch(finalUrl).then(function (res) { return res.json(); }); }; _proto2.post = function post() {}; _proto2.put = function put() {}; _proto2["delete"] = function _delete() {}; return Rest; }(); var ValidationUtil = /*#__PURE__*/function () { function ValidationUtil() {} ValidationUtil.updateMaxError = function updateMaxError(meta, value, setError) { var _meta$validation; var hasError = false; if (!(meta !== null && meta !== void 0 && (_meta$validation = meta.validation) !== null && _meta$validation !== void 0 && _meta$validation.max)) { return hasError; } switch (meta.displayType) { case "text": case "text_field": if (value) { var strValue = value; var maxLength = parseInt(meta.validation.max); if (strValue.length > maxLength) { var _meta$validation2, _meta$validation2$max, _meta$validation3, _meta$validation3$max; var errorMsg = ((_meta$validation2 = meta.validation) === null || _meta$validation2 === void 0 ? void 0 : (_meta$validation2$max = _meta$validation2.max_detail) === null || _meta$validation2$max === void 0 ? void 0 : _meta$validation2$max.errorMsg) || ((_meta$validation3 = meta.validation) === null || _meta$validation3 === void 0 ? void 0 : (_meta$validation3$max = _meta$validation3.maxDetail) === null || _meta$validation3$max === void 0 ? void 0 : _meta$validation3$max.errorMsg) || MSGS.ERROR_MSG.MAX_TEXT.replace("{CHARS}", maxLength.toString()); setError(true, errorMsg); hasError = true; return hasError; } } break; case "number": case "currency": if (value) { var _strValue = value ? value + "" : ""; var val = parseInt(_strValue); if (val > meta.validation.max) { var _meta$validation4, _meta$validation4$max, _meta$validation5, _meta$validation5$max; var _errorMsg = ((_meta$validation4 = meta.validation) === null || _meta$validation4 === void 0 ? void 0 : (_meta$validation4$max = _meta$validation4.max_detail) === null || _meta$validation4$max === void 0 ? void 0 : _meta$validation4$max.errorMsg) || ((_meta$validation5 = meta.validation) === null || _meta$validation5 === void 0 ? void 0 : (_meta$validation5$max = _meta$validation5.maxDetail) === null || _meta$validation5$max === void 0 ? void 0 : _meta$validation5$max.errorMsg) || MSGS.ERROR_MSG.MAX; setError(true, _errorMsg); hasError = true; return hasError; } } break; case "month": case "date": if (value) { var _strValue2 = value ? value + "" : ""; var valDate = new Date(_strValue2); var maxDate = new Date(meta.validation.max); if (valDate.getTime() > maxDate.getTime()) { var _meta$validation6, _meta$validation6$max, _meta$validation7, _meta$validation7$max; var _errorMsg2 = ((_meta$validation6 = meta.validation) === null || _meta$validation6 === void 0 ? void 0 : (_meta$validation6$max = _meta$validation6.max_detail) === null || _meta$validation6$max === void 0 ? void 0 : _meta$validation6$max.errorMsg) || ((_meta$validation7 = meta.validation) === null || _meta$validation7 === void 0 ? void 0 : (_meta$validation7$max = _meta$validation7.maxDetail) === null || _meta$validation7$max === void 0 ? void 0 : _meta$validation7$max.errorMsg) || MSGS.ERROR_MSG.MAX; setError(true, _errorMsg2); hasError = true; return hasError; } } } return hasError; }; ValidationUtil.updateMinError = function updateMinError(meta, value, setError) { var _meta$validation8; var hasError = false; if (!(meta !== null && meta !== void 0 && (_meta$validation8 = meta.validation) !== null && _meta$validation8 !== void 0 && _meta$validation8.min)) { return hasError; } switch (meta.displayType) { case "text": case "text_field": if (value) { var strValue = value; var minLength = parseInt(meta.validation.min); if (strValue.length < minLength) { var _meta$validation9, _meta$validation9$min, _meta$validation10, _meta$validation10$mi; var errorMsg = ((_meta$validation9 = meta.validation) === null || _meta$validation9 === void 0 ? void 0 : (_meta$validation9$min = _meta$validation9.min_detail) === null || _meta$validation9$min === void 0 ? void 0 : _meta$validation9$min.errorMsg) || ((_meta$validation10 = meta.validation) === null || _meta$validation10 === void 0 ? void 0 : (_meta$validation10$mi = _meta$validation10.minDetail) === null || _meta$validation10$mi === void 0 ? void 0 : _meta$validation10$mi.errorMsg) || MSGS.ERROR_MSG.MIN_TEXT.replace("{CHARS}", minLength.toString()); setError(true, errorMsg); hasError = true; return hasError; } } break; case "number": case "currency": if (value) { var _strValue3 = value ? value + "" : ""; var val = parseInt(_strValue3); if (val < meta.validation.min) { var _meta$validation11, _meta$validation11$mi, _meta$validation12, _meta$validation12$mi; var _errorMsg3 = ((_meta$validation11 = meta.validation) === null || _meta$validation11 === void 0 ? void 0 : (_meta$validation11$mi = _meta$validation11.min_detail) === null || _meta$validation11$mi === void 0 ? void 0 : _meta$validation11$mi.errorMsg) || ((_meta$validation12 = meta.validation) === null || _meta$validation12 === void 0 ? void 0 : (_meta$validation12$mi = _meta$validation12.minDetail) === null || _meta$validation12$mi === void 0 ? void 0 : _meta$validation12$mi.errorMsg) || MSGS.ERROR_MSG.MIN; setError(true, _errorMsg3); hasError = true; return hasError; } } break; case "month": case "date": if (value) { var _meta$validation13; var _strValue4 = value ? value + "" : ""; var valDate = new Date(_strValue4); var minDate = new Date((_meta$validation13 = meta.validation) === null || _meta$validation13 === void 0 ? void 0 : _meta$validation13.min); if (valDate.getTime() < minDate.getTime()) { var _meta$validation14, _meta$validation14$mi, _meta$validation15, _meta$validation15$mi; var _errorMsg4 = ((_meta$validation14 = meta.validation) === null || _meta$validation14 === void 0 ? void 0 : (_meta$validation14$mi = _meta$validation14.min_detail) === null || _meta$validation14$mi === void 0 ? void 0 : _meta$validation14$mi.errorMsg) || ((_meta$validation15 = meta.validation) === null || _meta$validation15 === void 0 ? void 0 : (_meta$validation15$mi = _meta$validation15.minDetail) === null || _meta$validation15$mi === void 0 ? void 0 : _meta$validation15$mi.errorMsg) || MSGS.ERROR_MSG.MIN; setError(true, _errorMsg4); hasError = true; return hasError; } } } return hasError; }; ValidationUtil.isEmptyField = function isEmptyField(value) { if (value === "" || value === undefined || value === null) { return true; } return false; }; ValidationUtil.validateFormSection = function validateFormSection(form, sectionName) { var _this = this; var hasErrors = false; if (form && form[sectionName]) { Object.keys(form[sectionName]).forEach(function (field) { var formField = form[sectionName][field]; if (formField.display) { if (formField.isDisabled) { formField.error.hasError = false; formField.error.errorMsg = ""; } else { if (formField.value !== false && formField.value !== 0) { var _formField$validation, _formField$validation6; if ((_formField$validation = formField.validation) !== null && _formField$validation !== void 0 && _formField$validation.required && !formField.value) { var _formField$validation2, _formField$validation3, _formField$validation4, _formField$validation5; formField.error.hasError = true; formField.error.errorMsg = ((_formField$validation2 = formField.validation) === null || _formField$validation2 === void 0 ? void 0 : (_formField$validation3 = _formField$validation2.required_detail) === null || _formField$validation3 === void 0 ? void 0 : _formField$validation3.errorMsg) || ((_formField$validation4 = formField.validation) === null || _formField$validation4 === void 0 ? void 0 : (_formField$validation5 = _formField$validation4.requiredDetail) === null || _formField$validation5 === void 0 ? void 0 : _formField$validation5.errorMsg) || MSGS.ERROR_MSG.REQUIRED; hasErrors = true; } if (formField.value && (_formField$validation6 = formField.validation) !== null && _formField$validation6 !== void 0 && _formField$validation6.pattern) { var regexp = new RegExp(formField.validation.pattern); if (!regexp.test(formField.value)) { var _formField$validation7, _formField$validation8; formField.error.hasError = true; formField.error.errorMsg = ((_formField$validation7 = formField.validation.pattern_detail) === null || _formField$validation7 === void 0 ? void 0 : _formField$validation7.errorMsg) || ((_formField$validation8 = formField.validation.patternDetail) === null || _formField$validation8 === void 0 ? void 0 : _formField$validation8.errorMsg) || MSGS.ERROR_MSG.PATTERN; hasErrors = true; } } if (formField.value !== undefined) { var _formField$validation9, _formField$validation10; if (((_formField$validation9 = formField.validation) === null || _formField$validation9 === void 0 ? void 0 : _formField$validation9.min) !== undefined) { _this.updateMinError(formField, formField.value, function (hasError, errorMsg) { formField.error.hasError = hasError; formField.error.errorMsg = errorMsg; hasErrors = true; }); } if (((_formField$validation10 = formField.validation) === null || _formField$validation10 === void 0 ? void 0 : _formField$validation10.max) !== undefined) { _this.updateMaxError(formField, formField.value, function (hasError, errorMsg) { formField.error.hasError = hasError; formField.error.errorMsg = errorMsg; hasErrors = true; }); } } } } } }); } return hasErrors; }; ValidationUtil.parseCondition = function parseCondition(form, condition, section) { var _this2 = this; var parsedCondition = ""; condition.forEach(function (c) { var leftOperand = c[0], operator = c[1], rightOperand = c[2], nextCondition = c[3]; var lSection = (leftOperand === null || leftOperand === void 0 ? void 0 : leftOperand.section) || section; var lField = _this2.getField(form, lSection, leftOperand.ref); var lValue = lField.value === "" ? '""' : lField.value; var rValue; if (typeof rightOperand === "object" && "ref" in rightOperand) { var rSection = (rightOperand === null || rightOperand === void 0 ? void 0 : rightOperand.section) || section; var rField = _this2.getField(form, rSection, rightOperand.ref); rValue = rField.value; } else { rValue = rightOperand; } rValue = rValue === "" ? '""' : rValue; parsedCondition += "(" + lValue + operator + rValue + ")" + (nextCondition || ""); }); var evalCondition = parsedCondition ? Function("return " + parsedCondition) : function () { return false; }; return evalCondition(parsedCondition); }; ValidationUtil.getField = function getField(form, section, field) { return form[section][field]; }; return ValidationUtil; }(); var DependencyUtil = /*#__PURE__*/function () { function DependencyUtil() {} DependencyUtil.initDependencies = function initDependencies(form, section, fields) { var _this = this; fields && fields.forEach(function (field) { var _field$meta; if (field && field !== null && field !== void 0 && (_field$meta = field.meta) !== null && _field$meta !== void 0 && _field$meta.dependencies) { var _field$meta2; _this.setDependencies(form, section, field.name, field === null || field === void 0 ? void 0 : (_field$meta2 = field.meta) === null || _field$meta2 === void 0 ? void 0 : _field$meta2.dependencies); } if (field.fields && field.fields.length > 0) { _this.initDependencies(form, field.name, field.fields); } }); }; DependencyUtil.getDependencies = function getDependencies(form, section, field) { return form[section][field]["dependencies"]; }; DependencyUtil.setDependencies = function setDependencies(form, section, field, dependencies) { var _this2 = this; if (!dependencies) return; Object.keys(dependencies).forEach(function (type) { if (dependencies[type] instanceof Array) { dependencies[type].forEach(function (dependency) { _this2.setDependency(form, dependency, section, type, field); }); } else { _this2.setDependency(form, dependencies[type], section, type, field); } }); }; DependencyUtil.setDependency = function setDependency(form, dependency, section, type, field) { var ref = dependency.ref || ""; var formSection = (dependency === null || dependency === void 0 ? void 0 : dependency.section) || section; var value = dependency === null || dependency === void 0 ? void 0 : dependency.value; var valueFn = dependency === null || dependency === void 0 ? void 0 : dependency.valueFn; var D_KEY = FORM_CONSTANTS.DEPENDENCY_KEY; if (ref && !form[formSection][ref][D_KEY]) { form[formSection][ref][D_KEY] = []; } var extraParams = {}; switch (type) { case "patternMatchUrlLoader": case "pattern_match_url_loader": extraParams = { pattern: dependency.pattern, changeType: dependency.type, url_type: dependency.url_type, defaultValue: dependency.defaultValue }; case "load": { var url = dependency.url; var labelKey = dependency === null || dependency === void 0 ? void 0 : dependency.labelKey; var valueKey = dependency === null || dependency === void 0 ? void 0 : dependency.valueKey; var responseKey = dependency.responseKey; var queryParams = dependency.queryParams; var pathParams = dependency.pathParams; form[formSection][ref][D_KEY].push(_extends({ section: section, type: type, field: field, url: url, valueKey: valueKey, labelKey: labelKey, responseKey: responseKey, queryParams: queryParams, pathParams: pathParams }, extraParams)); } break; case "loadOptions": case "load_options": { var valueMap = dependency.valueMap; form[formSection][ref][D_KEY].push({ section: section, type: type, field: field, valueMap: valueMap }); } break; case "equals": { form[formSection][ref][D_KEY].push({ section: section, type: type, field: field, value: value, currentValue: dependency.currentValue, resetValue: dependency.resetValue }); } break; case "validation": case "change": { var changeType = dependency.type; var _valueMap = dependency.valueMap; form[formSection][ref][D_KEY].push({ section: section, type: type, field: field, value: value, valueMap: _valueMap, changeType: changeType }); } break; case "prop_update": { var propValue = dependency.propValue; var propName = dependency.propName; var _valueMap2 = dependency.valueMap; form[formSection][ref][D_KEY].push({ section: section, type: type, field: field, value: value, valueMap: _valueMap2, propName: propName, propValue: propValue }); } break; case "exists": extraParams = { condition: dependency.condition }; form[formSection][ref][D_KEY].push(_extends({ section: section, type: type, field: field, value: value, valueFn: valueFn }, extraParams)); break; default: form[formSection][ref][D_KEY].push({ section: section, type: type, field: field, value: value, valueFn: valueFn }); } }; DependencyUtil.handleDependencies = function handleDependencies(metaform, section, fieldName, value, fieldDisplayed) { var _this3 = this; return new Promise(function (sucessCallback) { var deps = _this3.getDependencies(metaform.form, section, fieldName); var totalDeps = deps && deps.length > 0 ? deps.length : 0; if (totalDeps === 0) { sucessCallback(true); return; } var resolvedDepCount = 0; var resolved = { next: function next() { resolvedDepCount++; if (resolvedDepCount === totalDeps) { sucessCallback(); } } }; deps && deps.forEach(function (dep) { var type = dep.type; switch (type) { case "exists": { var depValue = dep.value; var field = dep.field; if (fieldDisplayed) { if (value !== undefined) { var _fieldDisplayed; if (depValue === undefined) { _fieldDisplayed = true; metaform.setFieldDisplay(dep.section, field, _fieldDisplayed); } else { var conditionMatch = false; if (Array.isArray(depValue)) { if (depValue.indexOf(value) >= 0) { conditionMatch = true; } } else { switch (depValue) { case FORM_CONSTANTS.INTERNAL_VALUES.NOT_EMPTY: conditionMatch = value !== ""; break; case FORM_CONSTANTS.INTERNAL_VALUES.VALUE_FN: { var valueFn = dep.valueFn; if (valueFn) { var fn = metaform.getFn(valueFn); if (fn) { conditionMatch = fn(value); } } } break; case "$condition": if (dep.condition) { conditionMatch = ValidationUtil.parseCondition(metaform.form, dep.condition, dep.section || section); } break; default: conditionMatch = value === depValue; } } _fieldDisplayed = conditionMatch; metaform.setFieldDisplay(dep.section, field, conditionMatch); } var subfield = metaform.getField(dep.section, field); _this3.handleDependencies(metaform, dep.section, field, subfield.value, _fieldDisplayed).then(function () { return resolved.next(); }); } else { resolved.next(); } } else { metaform.setFieldDisplay(dep.section, field, false); var _subfield = metaform.getField(dep.section, field); _this3.handleDependencies(metaform, dep.section, field, _subfield.value, false).then(function () { return resolved.next(); }); } } break; case "load": { if (value && dep.url) { var _field2 = dep.field; var queryParams = dep.queryParams || []; metaform.setFieldOptions(dep.section, _field2, []); metaform.api("get", dep.url, queryParams, value, section).then(function (response) { var results = dep.responseKey ? response[dep.responseKey] : response; var newResults = []; if (dep.labelKey && dep.valueKey) { newResults = results.map(function (r) { return { label: r[dep.labelKey], value: r[dep.valueKey], ref: r }; }); } else { newResults = results; } metaform.setFieldOptions(dep.section, _field2, newResults); resolved.next(); })["catch"](function () { resolved.next(); }); } else { resolved.next(); } } break; case "loadOptions": case "load_options": { var _field3 = dep.field; var valueMap = dep.valueMap; if (valueMap !== undefined) { if (valueMap[value]) { metaform.setFieldOptions(dep.section, _field3, valueMap[value]); } } resolved.next(); } break; case "enabled": { var _field4 = dep.field; metaform.setFieldDisabled(dep.section, _field4, value !== dep.value); resolved.next(); } break; case "equals": { var _field5 = dep.field; if (value === dep.value) { metaform.setField(dep.section, _field5, dep.currentValue); } else if (dep.resetValue !== undefined) { metaform.setField(dep.section, _field5, dep.resetValue); } resolved.next(); } break; case "change": { var changeType = dep.changeType; if (changeType) { switch (changeType) { case "setter": if (dep.valueMap !== undefined && dep.valueMap[value] !== undefined) { metaform.setField(dep.section, dep.field, dep.valueMap[value]); var _field6 = metaform.getField(dep.section, dep.field); _this3.handleDependencies(metaform, dep.section, dep.field, dep.valueMap[value], _field6.display).then(function () { return resolved.next(); }); } else { resolved.next(); } break; default: resolved.next(); } } else { resolved.next(); } } break; case "validation": { var fieldProp = metaform.getFieldProp(dep.section, dep.field, dep.type); fieldProp[dep.changeType] = dep.valueMap[value]; metaform.setFieldProp(dep.section, dep.field, dep.type, fieldProp); resolved.next(); } break; case "patternMatchUrlLoader": case "pattern_match_url_loader": { var _changeType = dep.changeType; if (dep.pattern) { var pattern = new RegExp(dep.pattern); if (pattern.test(value)) { if (_changeType) { switch (_changeType) { case "url_loader": { var itemConfig = { type: "url_loader", url: dep.url, url_type: dep.url_type, labelKey: dep.labelKey, valueKey: dep.valueKey, queryParams: dep.queryParams, pathParams: dep.pathParams }; metaform.getData(itemConfig, value, dep.section, FORM_CONSTANTS.INTERNAL_VALUES.INPUT).then(function (results) { if (results && results.length > 0) { var fieldDisplayType = metaform.getFieldProp(dep.section, dep.field, "displayType"); metaform.setDisplayTypeFieldProp(fieldDisplayType, dep.section, dep.field, results, dep); } resolved.next(); })["catch"](function (err) { metaform.handleError(err, dep.section, dep.field); resolved.next(); }); } break; default: resolved.next(); } } else { resolved.next(); } } else { resolved.next(); } } else { resolved.next(); } } break; case "prop_update": if (dep.value !== undefined) { if (value === dep.value) { metaform.setFieldProp(dep.section, dep.field, dep.propName, dep.propValue); resolved.next(); } else { resolved.next(); } } else if (dep.valueMap !== undefined) { _this3.handleValueMap(metaform, value, dep, resolved); } break; default: resolved.next(); } }); }); }; DependencyUtil.handleValueMap = function handleValueMap(metaform, value, dep, resolved) { if (dep.valueMap !== undefined) { var mappedValue = dep.valueMap[value]; var defaultMappedValue = dep.valueMap[FORM_CONSTANTS.INTERNAL_VALUES.DEFAULT]; var actualMappedValue = mappedValue != null ? mappedValue : defaultMappedValue; if (actualMappedValue !== undefined) { if (typeof actualMappedValue === "object") { this.handleValueMapObject(metaform, value, dep, resolved, actualMappedValue); } else { metaform.setFieldProp(dep.section, dep.field, dep.propName, actualMappedValue); resolved.next(); } } else { resolved.next(); } } }; DependencyUtil.handleValueMapObject = function handleValueMapObject(metaform, value, dep, resolved, mappedValue) { var type = mappedValue.type; if (type !== undefined) { switch (type) { case "fieldValue": { var ref = mappedValue.ref; var fieldValue = metaform.getFieldProp(mappedValue.section || dep.section, ref, "value"); metaform.setFieldProp(dep.section, dep.field, dep.propName, fieldValue); resolved.next(); } break; case "fieldProp": { var _ref = mappedValue.ref; var prop = mappedValue.propName; var _fieldValue = metaform.getFieldProp(mappedValue.section || dep.section, _ref, prop); metaform.setFieldProp(dep.section, dep.field, dep.propName, _fieldValue); resolved.next(); } break; default: resolved.next(); } } else { resolved.next(); } }; return DependencyUtil; }(); var cssClassMap = { md: "col-md-", lg: "col-lg-", sm: "col-sm-", xs: "col-", offset: "offset-", "default": "col-md" }; var FormUtils = /*#__PURE__*/function () { function FormUtils() {} FormUtils.getCssClassName = function getCssClassName(prop) { if (!prop) { return ""; } var md = prop.md ? cssClassMap["md"] + prop.md : ""; var lg = prop.lg ? cssClassMap["lg"] + prop.lg : ""; var sm = prop.sm ? cssClassMap["sm"] + prop.sm : ""; var xs = prop.xs ? cssClassMap["xs"] + prop.xs : ""; var offset = prop.offset ? cssClassMap["offset"] + prop.offset : ""; return (offset + " " + xs + " " + sm + " " + md + " " + lg).trim(); }; FormUtils.isFormControl = function isFormControl(prop) { if (prop.type === "section" || prop.type === "group") { return false; } return true; }; FormUtils.getVerticalSpacing = function getVerticalSpacing(theme) { if (theme) { switch (theme) { case "mui": return "my-2 my-md-3"; } } return ""; }; FormUtils.getAlignment = function getAlignment(align) { return align ? "wrow-" + align : ""; }; FormUtils.getPadding = function getPadding(theme) { if (theme) { switch (theme) { case "bootstrap": return "py-md-3"; case "mui": return "py-md-3"; } } return ""; }; FormUtils.getUUID = function getUUID(prefix) { if (prefix === void 0) { prefix = ""; } var randomNum = Math.floor(Math.random() * 100 + Date.now()); return prefix + "_" + randomNum; }; FormUtils.hasSections = function hasSections(fields) { return fields.find(function (field) { return field.meta.type === "section"; }) ? true : false; }; FormUtils.getFormDefaultButtons = function getFormDefaultButtons() { return [{ name: "submit", meta: { type: "submit", displayName: "Save", displayType: "button", url: "", displayProps: { xs: 12, md: 2 }, className: "btn-primary my-4 d-block w-100" } }]; }; FormUtils.getThemeProp = function getThemeProp(themeName, theme, prop) { var _theme$mui, _theme$mui2; if ((_theme$mui = theme.mui) !== null && _theme$mui !== void 0 && _theme$mui.tabs && (_theme$mui2 = theme.mui) !== null && _theme$mui2 !== void 0 && _theme$mui2.tabs[prop]) { return theme.mui.tabs[prop]; } return ""; }; FormUtils.getNormalizedFormData = function getNormalizedFormData(formData) { var newFormData = {}; Object.keys(formData).forEach(function (key) { newFormData[key] = {}; Object.keys(formData[key]).forEach(function (key2) { newFormData[key][key2] = formData[key][key2].value; }); }); return newFormData; }; FormUtils.updateFormData = function updateFormData(formData, newFormData, formatter) { Object.keys(formData).forEach(function (key) { Object.keys(formData[key]).forEach(function (key2) { var prop = formData[key][key2].prop; if (prop) { if (!newFormData[prop]) { newFormData[prop] = {}; } if (formatter[key2]) { newFormData[prop][key2] = formatter[key2](formData[key][key2].value); } else { newFormData[prop][key2] = formData[key][key2].value; } } else { if (prop !== null) { if (formatter[key2]) { newFormData[key2] = formatter[key2](formData[key][key2].value); } else { newFormData[key2] = formData[key][key2].value; } } } }); }); this.updateNestedFormData(newFormData); return newFormData; }; FormUtils.updateSectionFormData = function updateSectionFormData(formData, newFormData, formatter) { Object.keys(formData).forEach(function (key) { var prop = formData[key].prop; if (prop) { if (!newFormData[prop]) { newFormData[prop] = {}; } if (formatter[key]) { newFormData[prop][key] = formatter[key](formData[key].value); } else { newFormData[prop][key] = formData[key].value; } } else { if (prop !== null) { if (formatter[key]) { newFormData[key] = formatter[key](formData[key].value); } else { var displayType = formData[key].displayType || "default"; switch (displayType) { case "file": var files = formData[key].files; if (files && files.length > 0) { newFormData[key] = files; } else { newFormData[key] = formData[key].value; } break; default: newFormData[key] = formData[key].value; } } } } }); this.updateNestedFormData(newFormData); return newFormData; }; FormUtils.updateNestedFormData = function updateNestedFormData(formData) { var _this = this; Object.keys(formData).forEach(function (key) { if (typeof formData[key] === "object") { var props = key.split("#"); if (props.length > 1) { if (!formData[props[0]]) { formData[props[0]] = {}; } _this.updateNestedProp(formData[props[0]], props.slice(1), formData[key]); delete formData[key]; } } }); }; FormUtils.updateNestedProp = function updateNestedProp(formData, props, value) { if (props.length > 0) { if (props.length === 1) { formData[props[0]] = value; } else { if (!formData[props[0]]) { formData[props[0]] = {}; } this.updateNestedProp(formData[props[0]], props.slice(1), value); } } }; FormUtils.getSearchValue = function getSearchValue(options, value) { if (value !== undefined && options && options.length > 0) { return options.find(function (option) { return option.value === value; }); } return value; }; FormUtils.getDataFromValueKey = function getDataFromValueKey(data, props) { var values = props.split("#"); var nestedData = data; if (values) { values.forEach(function (val) { nestedData = nestedData[val]; }); return nestedData; } return data; }; FormUtils.updateParams = function updateParams(queryParams, eventType, currentValue) { if (queryParams && eventType) { var updatedQueryParams = []; queryParams.forEach(function (param) { var key = param[0], val = param[1]; var actualVal = val; if (val) { switch (val) { case "$input": case "$initial": actualVal = val === eventType ? currentValue : ""; break; } } updatedQueryParams.push([key, actualVal]); }); return updatedQueryParams; } return queryParams; }; FormUtils.updateFieldProp = function updateFieldProp(field, prop, value) { var props = prop.split("#"); if (props.length > 1) { var newProp = props.reduce(function (acc, item, index) { if (index === props.length - 1) { acc[item] = value; } else { if (!acc[item]) { acc[item] = {}; } } return acc[item]; }, field); } else { if (!field[prop]) { field[prop] = {}; } field[prop] = value; } }; FormUtils.getDateString = function getDateString(date) { var offset = date.getTimezoneOffset() * 60000; var dateWithOffset = new Date(date.getTime() - offset); return dateWithOffset.toISOString().substring(0, 10); }; FormUtils.getLocalDateStringFormat = function getLocalDateStringFormat(inputDateString, inputFormat) { if (inputDateString && inputFormat === DEFAULT_DATE_FORMAT) { try { var parts = inputDateString.split("/"); var mm = parts[0]; var dd = parts[1]; var yy = parts[2]; return dd + "/" + mm + "/" + yy; } catch (error) { return inputDateString; } } return inputDateString; }; FormUtils.cleanupSchema = function cleanupSchema(schema) { var newFields = []; schema.fields && schema.fields.forEach(function (field) { if (field) { newFields.push(field); } }); schema.fields = newFields; return schema; }; FormUtils.createFileInput = function createFileInput(fileWidthClass, fieldName, accept, displayLabel, onChangeCallback) { var ele = document.createElement("input"); ele.setAttribute("type", "file"); ele.className = "position-absolute opacity-0 " + fileWidthClass + " h-100"; ele.setAttribute("name", fieldName); ele.setAttribute("accept", accept || ""); ele.setAttribute("title", displayLabel || ""); ele.addEventListener("change", onChangeCallback); return ele; }; FormUtils.resolveButtonDependencies = function resolveButtonDependencies(deps, page) { if (deps && deps.exists) { var ref = deps.exists.ref; if (!ref) { return true; } switch (ref) { case "page_number": var pageNumber = page.pageNumber; var pageNumberFromDependency = parseInt(deps.exists.value); if (pageNumberFromDependency === pageNumber) { return true; } return false; } } return true; }; FormUtils.getIconNameByPosition = function getIconNameByPosition(positionType, allIcons) { if (allIcons) { var allIconKeys = Object.keys(allIcons); var iconMatch = allIconKeys.find(function (name) { return allIcons[name].type === positionType; }); return iconMatch; } return ""; }; return FormUtils; }(); var MetaformUtil = /*#__PURE__*/function () { function MetaformUtil() {} MetaformUtil.getDefaultValidation = function getDefaultValidation(displayType, validation) { if (displayType) { switch (displayType) { case "email": { var _emailValidation, _emailValidation2, _emailValidation2$pat; var emailValidation = validation; if (!emailValidation) { emailValidation = {}; } emailValidation.pattern = ((_emailValidation = emailValidation) === null || _emailValidation === void 0 ? void 0 : _emailValidation.pattern) || EMAIL_PATTERN; if (!emailValidation.pattern_detail) { emailValidation.pattern_detail = {}; } emailValidation.pattern_detail.errorMsg = ((_emailValidation2 = emailValidation) === null || _emailValidation2 === void 0 ? void 0 : (_emailValidation2$pat = _emailValidation2.pattern_detail) === null || _emailValidation2$pat === void 0 ? void 0 : _emailValidation2$pat.errorMsg) || MSGS.ERROR_MSG.EMAIL_INVALID; return emailValidation; } } } return validation; }; return MetaformUtil; }(); var MetaformError = /*#__PURE__*/function (_Error) { _inheritsLoose(MetaformError, _Error); function MetaformError(msg, details) { var _this; _this = _Error.call(this, msg) || this; _this.details = details; return _this; } return MetaformError; }( /*#__PURE__*/_wrapNativeSuper(Error)); var Theme = function Theme(theme) { this.type = theme.type; this.sectionLayout = theme.sectionLayout; this.mui = theme.mui; this.bootstrap = theme.bootstrap; }; var MetaForm = /*#__PURE__*/function () { function MetaForm(schema, eventEmitter) { var _schema$theme, _schema$theme2, _schema$theme3, _schema$theme4; this.schema = schema; this.eventEmitter = eventEmitter; this.form = {}; this.rest = new Rest(schema.rest); var themeType = (schema === null || schema === void 0 ? void 0 : (_schema$theme = schema.theme) === null || _schema$theme === void 0 ? void 0 : _schema$theme.type) || "default"; var sectionLayout = (schema === null || schema === void 0 ? void 0 : (_schema$theme2 = schema.theme) === null || _schema$theme2 === void 0 ? void 0 : _schema$theme2.sectionLayout) || "default"; this.theme = new Theme({ type: themeType, sectionLayout: sectionLayout, mui: schema === null || schema === void 0 ? void 0 : (_schema$theme3 = schema.theme) === null || _schema$theme3 === void 0 ? void 0 : _schema$theme3.mui, bootstrap: schema === null || schema === void 0 ? void 0 : (_schema$theme4 = schema.theme) === null || _schema$theme4 === void 0 ? void 0 : _schema$theme4.bootstrap }); this.page = new Page(false, 1); } var _proto = MetaForm.prototype; _proto.init = function init() { var _this = this; var schema = this.schema; var totalSections = 0; if (schema.fields) { var hasSections = FormUtils.hasSections(schema.fields); if (hasSections) { schema.fields.forEach(function (section) { _this.setSection(section.name); section.fields && section.fields.forEach(function (field) { _this.initField(section.name, field); }); totalSections++; }); DependencyUtil.initDependencies(this.form, "", schema.fields); this.applyDependencies("", schema.fields); } else { var section = "default"; this.setSection(section); schema.fields && schema.fields.forEach(function (field) { _this.initField(section, field); }); DependencyUtil.initDependencies(this.form, section, schema.fields); this.applyDepende