ez-formbecauseican
Version:
Forms made Ez
143 lines • 6.14 kB
JavaScript
;
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 = "visibleIf" in schemaValue ? schemaValue.visibleIf(values[index]) : true;
var featureFlagCheck = featureFlags && "featureFlag" in schemaValue
? 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: formProps.errorClass + " ez-form-error" }, 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 },
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 },
label,
react_1.default.createElement("div", { className: schemaValue.viewModeClass }, 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 },
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