UNPKG

ez-formbecauseican

Version:

Forms made Ez

143 lines 6.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = tslib_1.__importDefault(require("react")); var Field_1 = require("./Field"); var removeKeys = function (obj, removeKeysArray) { var clonedObject = tslib_1.__assign({}, obj); for (var _i = 0, removeKeysArray_1 = removeKeysArray; _i < removeKeysArray_1.length; _i++) { var key = removeKeysArray_1[_i]; delete clonedObject[key]; } return clonedObject; }; var omitArray = [ "customComponent", "prependHtml", "appendHtml", "validate", "initialValue", "visibleIf", "tracked", "groupClassName", "label", "initialValue", "onChange", "onBlur", "onSubmit", "featureFlag", "required", "viewModeComponent" ]; var createInput = function (formProps, schemaValue, keyName, track, validateField, onBlurEvent, onChangeEvent, values, errors, disabled, index, initialValues, featureFlags, viewMode, viewModeDefaultText) { var required = typeof schemaValue.required === "function" ? schemaValue.required(values[index]) : schemaValue.required; var componentVisibleIf = function (component) { var jsx = component; if (!isVisible()) { jsx = null; } return jsx; }; var isVisible = function () { var visibleIfCheck = schemaValue.visibleIf ? schemaValue.visibleIf(values[index]) : true; var featureFlagCheck = featureFlags && schemaValue.featureFlag ? featureFlags[schemaValue.featureFlag] : true; if (visibleIfCheck && featureFlagCheck) { return true; } return false; }; var label = react_1.default.isValidElement(schemaValue.label) ? (schemaValue.label) : (react_1.default.createElement("label", { htmlFor: keyName }, schemaValue.label, required && " *")); var error = (react_1.default.createElement("div", { className: (errors[index][keyName] && "ez-form-error") + " " + (formProps.errorClass ? formProps.errorClass : "") + " " }, errors[index][keyName])); var input; if (schemaValue.functionalComponent) { var params = { submit: function (obj) { track(keyName, obj, index); return null; }, keyName: keyName, initialValues: initialValues, index: index }; input = schemaValue.functionalComponent(params); } else { var omitArrayBlocked = omitArray.slice(); var InputFieldComponent = schemaValue.customComponent || Field_1.Field; if (schemaValue.customComponent) { InputFieldComponent = schemaValue.customComponent; } if (disabled) { omitArrayBlocked.push("disabled"); } input = (react_1.default.createElement(InputFieldComponent, tslib_1.__assign({ key: keyName + "-" + index, name: keyName + "-" + index, id: keyName + "-" + index, error: errors[index][keyName], value: values[index][keyName], onChange: function (e) { if (schemaValue.tracked === false) return false; var value; try { value = e.target.value; } catch (_a) { value = e; } track(keyName, value, index); onChangeEvent(e, keyName, index); return null; }, onBlur: function (e) { onBlurEvent(e, keyName, index); schemaValue.onBlur && onBlurEvent(e, keyName, index); schemaValue["validate"] && validateField(keyName, index); return null; }, disabled: disabled, required: required }, removeKeys(schemaValue, omitArrayBlocked)))); } var getString = function () { if (values[index][keyName] || values[index][keyName] === false) { return String(values[index][keyName]); } return String(viewModeDefaultText); }; var viewModeComponent = function () { return componentVisibleIf(schemaValue.viewModeComponent ? (react_1.default.createElement("div", { className: schemaValue.groupClassName ? schemaValue.groupClassName : "" }, label, schemaValue.viewModeComponent(values[index][keyName], values[index]))) : (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: schemaValue.groupClassName ? schemaValue.groupClassName : "" }, label, react_1.default.createElement("div", { className: schemaValue.viewModeClass ? schemaValue.groupClassName : "" }, getString()))))); }; return { index: index, label: componentVisibleIf(label), input: componentVisibleIf(input), error: componentVisibleIf(error), prependHtml: componentVisibleIf(schemaValue.prependHtml), appendHtml: componentVisibleIf(schemaValue.appendHtml), visible: isVisible(), html: viewMode ? viewModeComponent() : componentVisibleIf(react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: schemaValue.groupClassName ? schemaValue.groupClassName : "" }, label, react_1.default.createElement("div", null, schemaValue.prependHtml, input, schemaValue.appendHtml), error))), viewMode: viewModeComponent() }; }; exports.InputGenerator = function (formProps, schema, track, validateField, onBlurEvent, onChangeEvent, initialValues, values, errors, disabled, index, featureFlags, viewMode, viewModeDefaultText) { if (disabled === void 0) { disabled = false; } var inputs = {}; for (var _i = 0, _a = Object.keys(schema); _i < _a.length; _i++) { var key = _a[_i]; inputs[key] = createInput(formProps, schema[key], key, track, validateField, onBlurEvent, onChangeEvent, values, errors, disabled, index, initialValues, featureFlags, viewMode, viewModeDefaultText); } return inputs; }; //# sourceMappingURL=InputGenerator.js.map