UNPKG

@data-driven-forms/react-form-renderer

Version:

React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.

75 lines 2.62 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var isEmpty_1 = __importDefault(require("lodash/isEmpty")); var convert_type_1 = __importDefault(require("./convert-type")); /** * Pick a value from event object and returns it * @param {Object|Any} event event value returned from form field */ var sanitizeValue = function (event) { if (typeof event === 'object' && event !== null && event.target) { if (event.target.type === 'checkbox') { return event; } if (event.target.type === 'file') { return { inputValue: event.target.value, inputFiles: event.target.files, }; } return event.target.value; } return event; }; /** * Checks the value and returns undefined if its empty. Converst epmtry strings, arrays and objects. * If value is empty its overriden to undefined for further processing. * @param {Any} value Any JS variable to be check if is empty */ var checkEmpty = function (value) { if (typeof value === 'number') { return false; } if (typeof value === 'boolean') { return false; } if (typeof value === 'string' && value.length > 0) { return false; } if (value instanceof Date) { return false; } if (!(0, isEmpty_1.default)(value)) { return false; } return true; }; /** * Casts input value into selected data type */ var enhancedOnChange = function (_a, value) { var dataType = _a.dataType, onChange = _a.onChange, initial = _a.initial, clearedValue = _a.clearedValue, dirty = _a.dirty; var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } var sanitizedValue = sanitizeValue(value); var result; if (typeof sanitizedValue == 'object' && sanitizedValue !== null && sanitizedValue.target && sanitizedValue.target.type === 'checkbox') { result = sanitizedValue; } else { result = Array.isArray(sanitizedValue) ? sanitizedValue.map(function (item) { return (0, convert_type_1.default)(dataType, sanitizeValue(item)); }) : (0, convert_type_1.default)(dataType, sanitizedValue); } if (checkEmpty(result) && typeof initial !== 'undefined') { return onChange(clearedValue); } return onChange(result); }; exports.default = enhancedOnChange; //# sourceMappingURL=enhanced-on-change.js.map