UNPKG

vdr-react-form-manager

Version:
131 lines (130 loc) 6.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const FormManager_constant_1 = require("../constant/FormManager.constant"); const array_utils_1 = require("./array.utils"); const formInputProperties_utils_1 = require("./formInputProperties.utils"); const formInputs_utils_1 = require("./formInputs.utils"); const formInputsValidator_utils_1 = require("./formInputsValidator.utils"); const formValidator_utils_1 = require("./formValidator.utils"); const object_utils_1 = require("./object.utils"); const getCheckBoxValue = (checked, value, formInputProps) => { const hasMultipleValues = formInputProps.availableValues.length > 0; if (!hasMultipleValues) { /* on -> default value for checkbox */ if (value !== '' && value !== 'on') { return checked ? value : ''; } return checked; } const checkBoxValue = formInputProps.value .split(',') .filter((x) => x !== '' && x !== value) .map((x) => x); if (checked) { checkBoxValue.push(value); } return checkBoxValue.length ? checkBoxValue.join(',') : ''; }; const isInvalidFormPropertiesMutation = (formPropertiesMutation) => !formPropertiesMutation.formValidators && typeof formPropertiesMutation.isFormDisabled !== FormManager_constant_1.typeBoolean && !formPropertiesMutation.formCustomsProps && !array_utils_1.isValidArray(formPropertiesMutation.formClasseNames); const getFormPropertiesMutation = (formPropertiesMutation) => { const { isFormDisabled, formValidators, formCustomsProps, formClasseNames } = formPropertiesMutation; return { mutIsFormDisabled: !!isFormDisabled, mutFormValidators: formValidators, mutFormCustomsProps: formCustomsProps, mutFormClassNames: formClasseNames, }; }; const getAuthorizedFormValidators = (formValidators) => { return array_utils_1.isValidArray(formValidators) ? formValidators.filter((x) => typeof x.validateForm === 'function') : []; }; exports.getIsFormPristine = (formInputs) => { return Object.keys(formInputs).every(x => formInputs[x].isPristine); }; exports.getIsFormTouched = (formInputs) => { return Object.keys(formInputs).some(x => formInputs[x].isTouched); }; exports.getFormValidity = (formInputs, formValidators) => { const hasInvalidInputs = Object.keys(formInputs).some(x => !formInputs[x].isValid); const formErrors = hasInvalidInputs ? [] : formValidator_utils_1.validateForm(formInputs, formValidators); return { formErrors, isFormValid: !hasInvalidInputs && !formErrors.length }; }; exports.handleInputChange = ({ name, value, type, tagName, checked, emitLastFieldUpdatedStatus }, currentState) => { const { formInputs } = currentState; const formInputData = formInputs[name]; if (!formInputData) { return currentState; } let _inputValue; switch (type) { case FormManager_constant_1.typeCheckbox: _inputValue = getCheckBoxValue(checked, value, formInputData); break; default: _inputValue = value; } const currentFormInputData = formInputs[name]; const errors = formInputsValidator_utils_1.validateFormInput(_inputValue, currentFormInputData.validators); const formInputDataUpdated = Object.assign(Object.assign({}, currentFormInputData), { value: _inputValue, isValid: errors.length === 0, isTouched: true, isPristine: formInputs_utils_1.inputValueAreEquals(_inputValue, currentFormInputData.originalValue), errors, updateId: formInputProperties_utils_1.createUpdateId(_inputValue) }); const _formInputs = Object.assign(Object.assign({}, formInputs), { [name]: Object.assign({}, formInputDataUpdated) }); const { formProperties } = currentState; return { formInputs: _formInputs, formProperties: Object.assign(Object.assign(Object.assign({}, formProperties), { isFormTouched: true, isFormPristine: exports.getIsFormPristine(_formInputs) }), exports.getFormValidity(_formInputs, formProperties.formValidators)), lastFieldUpdated: emitLastFieldUpdatedStatus ? { inputName: name } : null, }; }; exports.resetState = ({ formInputs, formValidators, formCustomsProps, formClassNames, }) => { const authorizedFormValidators = getAuthorizedFormValidators(formValidators || []); const { isFormValid } = exports.getFormValidity(formInputs, authorizedFormValidators); return { formInputs, formProperties: { formValidators: authorizedFormValidators, isFormDisabled: false, isFormValid, isFormTouched: false, isFormPristine: true, formErrors: [], formCustomsProps: formCustomsProps || {}, formClasseNames: array_utils_1.isValidArray(formClassNames) ? formClassNames : [], }, lastFieldUpdated: null, }; }; exports.setFormProperties = (formPropertiesMutation, currentState) => { if (isInvalidFormPropertiesMutation(formPropertiesMutation || {})) { return currentState; } const { mutIsFormDisabled, mutFormValidators, mutFormCustomsProps, mutFormClassNames } = getFormPropertiesMutation(formPropertiesMutation); const { formInputs, formProperties } = currentState; const { isFormDisabled, formValidators, formCustomsProps, formClasseNames } = currentState.formProperties; let _formValidators = formValidators; if (array_utils_1.isValidArray(mutFormValidators)) { _formValidators = getAuthorizedFormValidators(mutFormValidators); } let _formClasseNames = formClasseNames; if (array_utils_1.isValidArray(mutFormClassNames)) { _formClasseNames = mutFormClassNames; } let _formInputs = formInputs; let _isFormDisabled = !!isFormDisabled; if (mutIsFormDisabled === !isFormDisabled) { _isFormDisabled = mutIsFormDisabled; _formInputs = formInputProperties_utils_1.updateFormInputDisabledValue(_formInputs, _isFormDisabled); } let _formCustomsProps = formCustomsProps; if (object_utils_1.isValidObject(mutFormCustomsProps)) { _formCustomsProps = mutFormCustomsProps; } return { formInputs: _formInputs, formProperties: Object.assign(Object.assign(Object.assign({}, formProperties), { formValidators: _formValidators, isFormDisabled: _isFormDisabled, formCustomsProps: _formCustomsProps, formClasseNames: _formClasseNames }), exports.getFormValidity(_formInputs, _formValidators)), lastFieldUpdated: null, }; };