UNPKG

react-magic-form

Version:

Boilerplate for Resact with Typescript with rollup.js (not webpack)

693 lines (672 loc) 65.7 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var reactHookForm = require('react-hook-form'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } // Import custom var InputCheckbox = function (props) { // const [invalid, setInvalid] = useState<boolean>(true); var _a, _b, _c; var _d = reactHookForm.useFormContext(), register = _d.register, errors = _d.errors, setValue = _d.setValue, trigger = _d.trigger; // retrieve all hook methods var _e = __read(React.useState({}), 2), validation = _e[0], setValidation = _e[1]; var _f = __read(React.useState(false), 2), checkboxValue = _f[0], setCheckboxValue = _f[1]; // Build Validation Object React.useEffect(function () { // Copy reference props var rawValidation = props.validation; // Add regex for validate email pattern setValidation(rawValidation); }, []); var handleCheckboxValue = function () { // console.log('!checkboxValue', !checkboxValue); setValue(props.name, !checkboxValue); setCheckboxValue(!checkboxValue); trigger(); }; return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("div", { className: "fg__checkbox-wrapper" }, React__default['default'].createElement("input", { id: props.id, type: "checkbox", className: 'form-control ' + (errors[props.name] ? 'is-invalid ' : ' '), name: props.name, checked: checkboxValue, onChange: function (_value) { // console.log('Checkbox onChange value:', value); }, autoComplete: props.autocomplete ? props.autocomplete : 'off', ref: register(validation) }), React__default['default'].createElement("span", { className: "checkmark", onClick: handleCheckboxValue }), React__default['default'].createElement("div", { className: "fg__checkbox-text", dangerouslySetInnerHTML: { __html: props.placeholder } })), React__default['default'].createElement("div", { className: "invalid-feedback" }, ((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'required' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_b = errors[props.name]) === null || _b === void 0 ? void 0 : _b.message) === '' ? (React__default['default'].createElement("span", null, "Il campo \u00E8 richiesto")) : (React__default['default'].createElement("span", null, (_c = errors[props.name]) === null || _c === void 0 ? void 0 : _c.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null))))); }; // Ract.FC<InputEmailProps> var InputEmail = function (props) { // const [invalid, setInvalid] = useState<boolean>(true); var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t; var _u = reactHookForm.useFormContext(), register = _u.register, errors = _u.errors, watch = _u.watch, setError = _u.setError, clearErrors = _u.clearErrors; // retrieve all hook methods var _v = __read(React.useState({}), 2), validation = _v[0], setValidation = _v[1]; var _w = __read(React.useState(0), 2), minLength = _w[0], setMinLength = _w[1]; var _x = __read(React.useState(0), 2), maxLength = _x[0], setMaxLength = _x[1]; // Build Validation Object React.useEffect(function () { // Copy reference props var rawValidation = props.validation; // If exists set minLength state for error message if (props.validation.minLength) { if (props.validation.minLength.value) { setMinLength(parseInt(props.validation.minLength .value)); } else { setMinLength(parseInt(props.validation.minLength)); } } // If exists set maxLength state for error message if (props.validation.maxLength) { if (props.validation.maxLength.value) { setMaxLength(parseInt(props.validation.maxLength .value)); } else { setMaxLength(parseInt(props.validation.maxLength)); } } // Normalize equalTo validation with validate method if (props.validation.equalTo !== undefined && props.validation.equalTo.value) { var equalToField_1 = props.validation.equalTo .value; rawValidation.validate = function (value) { return value === watch(equalToField_1); }; } // Add regex for validate email pattern setValidation(__assign(__assign({}, rawValidation), { pattern: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ })); }, []); // Update error object message for equalTo React.useEffect(function () { var _a; // console.log('useEFfect errors: ', errors); if (((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'validate' && props.validation.equalTo.value) { // console.log('useEFfect errors: ', errors); setError('repeatEmail', { type: 'equalTo', message: 'I due indirizzi email devono coincidere', }); clearErrors('validate'); } }, [errors]); return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("input", { id: props.id, type: "email", className: 'form-control ' + (errors[props.name] ? 'is-invalid ' : ' '), placeholder: props.placeholder, name: props.name, autoComplete: props.autocomplete ? props.autocomplete : 'off', ref: register(validation) }), React__default['default'].createElement("div", { className: "invalid-feedback" }, ((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'required' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_b = errors[props.name]) === null || _b === void 0 ? void 0 : _b.message) === '' ? (React__default['default'].createElement("span", null, "Il campo email \u00E8 richiesto")) : (React__default['default'].createElement("span", null, (_c = errors[props.name]) === null || _c === void 0 ? void 0 : _c.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_d = errors[props.name]) === null || _d === void 0 ? void 0 : _d.type) == 'minLength' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_e = errors[props.name]) === null || _e === void 0 ? void 0 : _e.message) === '' ? (React__default['default'].createElement("span", null, "La lunghezza minima \u00E8 ", minLength, " caratteri")) : (React__default['default'].createElement("span", null, (_f = errors[props.name]) === null || _f === void 0 ? void 0 : _f.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_g = errors[props.name]) === null || _g === void 0 ? void 0 : _g.type) == 'maxLength' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_h = errors[props.name]) === null || _h === void 0 ? void 0 : _h.message) === '' ? (React__default['default'].createElement("span", null, "La lunghezza massima \u00E8 ", maxLength, " caratteri")) : (React__default['default'].createElement("span", null, (_j = errors[props.name]) === null || _j === void 0 ? void 0 : _j.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_k = errors[props.name]) === null || _k === void 0 ? void 0 : _k.type) == 'pattern' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_l = errors[props.name]) === null || _l === void 0 ? void 0 : _l.message) === '' ? (React__default['default'].createElement("span", null, "Inserire un&aposindirizzo email valido")) : (React__default['default'].createElement("span", null, (_m = errors[props.name]) === null || _m === void 0 ? void 0 : _m.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_o = errors[props.name]) === null || _o === void 0 ? void 0 : _o.type) == 'validate' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_p = errors[props.name]) === null || _p === void 0 ? void 0 : _p.message) === '' ? (React__default['default'].createElement("span", null, "Rispettare le regole di validazione")) : (React__default['default'].createElement("span", null, (_q = errors[props.name]) === null || _q === void 0 ? void 0 : _q.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_r = errors[props.name]) === null || _r === void 0 ? void 0 : _r.type) == 'equalTo' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_s = errors[props.name]) === null || _s === void 0 ? void 0 : _s.message) === '' ? (React__default['default'].createElement("span", null, "I due campi devono essere uguali")) : (React__default['default'].createElement("span", null, (_t = errors[props.name]) === null || _t === void 0 ? void 0 : _t.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null))))); }; var InputPassword = function (props) { // const [invalid, setInvalid] = useState<boolean>(true); var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t; var _u = reactHookForm.useFormContext(), register = _u.register, errors = _u.errors, watch = _u.watch; // retrieve all hook methods var _v = __read(React.useState({}), 2), validation = _v[0], setValidation = _v[1]; var _w = __read(React.useState(0), 2), minLength = _w[0], setMinLength = _w[1]; var _x = __read(React.useState(0), 2), maxLength = _x[0], setMaxLength = _x[1]; // Build Validation Object // TODO Fare un custom hook per uesta serie di operazioni? React.useEffect(function () { // Copy reference props var rawValidation = props.validation; // If exists set minLength state for error message if (props.validation.minLength) { if (props.validation.minLength.value) { setMinLength(parseInt(props.validation.minLength .value)); } else { setMinLength(parseInt(props.validation.minLength)); } } // If exists set maxLength state for error message if (props.validation.maxLength) { if (props.validation.maxLength.value) { setMaxLength(parseInt(props.validation.maxLength .value)); } else { setMaxLength(parseInt(props.validation.maxLength)); } } // Normalize equalTo validation with validate method if (props.validation.equalTo !== undefined && props.validation.equalTo.value) { var equalToField_1 = props.validation.equalTo .value; rawValidation.validate = function (value) { return value === watch(equalToField_1); }; } // Add regex for validate email pattern setValidation(__assign({}, rawValidation)); }, []); return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("input", { id: props.id, type: "password", className: 'form-control ' + (errors[props.name] ? 'is-invalid ' : ' '), placeholder: props.placeholder, name: props.name, autoComplete: props.autocomplete ? props.autocomplete : 'off', ref: register(validation) }), React__default['default'].createElement("div", { className: "invalid-feedback" }, ((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'required' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_b = errors[props.name]) === null || _b === void 0 ? void 0 : _b.message) === '' ? (React__default['default'].createElement("span", null, "Il campo password \u00E8 richiesto")) : (React__default['default'].createElement("span", null, (_c = errors[props.name]) === null || _c === void 0 ? void 0 : _c.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_d = errors[props.name]) === null || _d === void 0 ? void 0 : _d.type) == 'minLength' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_e = errors[props.name]) === null || _e === void 0 ? void 0 : _e.message) === '' ? (React__default['default'].createElement("span", null, "La lunghezza minima \u00E8 ", minLength, " caratteri")) : (React__default['default'].createElement("span", null, (_f = errors[props.name]) === null || _f === void 0 ? void 0 : _f.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_g = errors[props.name]) === null || _g === void 0 ? void 0 : _g.type) == 'maxLength' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_h = errors[props.name]) === null || _h === void 0 ? void 0 : _h.message) === '' ? (React__default['default'].createElement("span", null, "La lunghezza massima \u00E8 ", maxLength, " caratteri")) : (React__default['default'].createElement("span", null, (_j = errors[props.name]) === null || _j === void 0 ? void 0 : _j.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_k = errors[props.name]) === null || _k === void 0 ? void 0 : _k.type) == 'pattern' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_l = errors[props.name]) === null || _l === void 0 ? void 0 : _l.message) === '' ? (React__default['default'].createElement("span", null, "Rispettare le regole di formattazione")) : (React__default['default'].createElement("span", null, (_m = errors[props.name]) === null || _m === void 0 ? void 0 : _m.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_o = errors[props.name]) === null || _o === void 0 ? void 0 : _o.type) == 'validate' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_p = errors[props.name]) === null || _p === void 0 ? void 0 : _p.message) === '' ? (React__default['default'].createElement("span", null, "Rispettare le regole di validazione")) : (React__default['default'].createElement("span", null, (_q = errors[props.name]) === null || _q === void 0 ? void 0 : _q.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_r = errors[props.name]) === null || _r === void 0 ? void 0 : _r.type) == 'equalTo' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_s = errors[props.name]) === null || _s === void 0 ? void 0 : _s.message) === '' ? (React__default['default'].createElement("span", null, "I due campi devono essere uguali")) : (React__default['default'].createElement("span", null, (_t = errors[props.name]) === null || _t === void 0 ? void 0 : _t.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null))))); }; // Get layout class by props var getLayoutValue = function (layout) { switch (layout) { case '1': return 1; case '1/2': return 0.5; case '1/3': return 0.33; case '1/4': return 0.25; default: return 1; } }; var getLayoutColClass = function (layout) { switch (layout) { case '1': return 'fg__col-full'; case '1/2': return 'fg__col-half'; case '1/3': return 'fg__col-third'; case '1/4': return 'fg__col-fourth'; default: return 'fg__col-full'; } }; // Get default value from Select option list and return value var getSelectDefaultValue = function (_data) { return 'CO'; }; var fetchData = function (url) { return __awaiter(void 0, void 0, void 0, function () { var options, response, result, res, response; return __generator(this, function (_a) { switch (_a.label) { case 0: options = {}; _a.label = 1; case 1: _a.trys.push([1, 4, , 5]); return [4 /*yield*/, fetch(url, options)]; case 2: response = _a.sent(); return [4 /*yield*/, response.json()]; case 3: result = _a.sent(); res = { status: true, data: result, }; return [2 /*return*/, res]; case 4: _a.sent(); response = { status: false, data: [], }; return [2 /*return*/, response]; case 5: return [2 /*return*/]; } }); }); }; var onSubmitBackendCall = function (url, method, data) { return __awaiter(void 0, void 0, void 0, function () { var getParams, options, response, result, res, response; return __generator(this, function (_a) { switch (_a.label) { case 0: getParams = new URLSearchParams(data); options = {}; if (method == 'GET') { options = { method: method, }; } else { options = { method: method, body: data, }; } _a.label = 1; case 1: _a.trys.push([1, 4, , 5]); return [4 /*yield*/, fetch(url + '?' + getParams, options)]; case 2: response = _a.sent(); return [4 /*yield*/, response.json()]; case 3: result = _a.sent(); res = { status: true, data: result, }; return [2 /*return*/, res]; case 4: _a.sent(); response = { status: false, data: [], }; return [2 /*return*/, response]; case 5: return [2 /*return*/]; } }); }); }; var InputSelect = function (props) { // Get <Select> data var _a, _b, _c, _d, _e; // Form core var _f = reactHookForm.useFormContext(), register = _f.register, errors = _f.errors; // retrieve all hook methods // State var _g = __read(React.useState({}), 2), validation = _g[0], setValidation = _g[1]; var _h = __read(React.useState(true), 2), loading = _h[0], setLoading = _h[1]; var _j = __read(React.useState([]), 2), optionData = _j[0], setOptionData = _j[1]; var _k = __read(React.useState(''), 2), defaultValue = _k[0], setDefaultValue = _k[1]; React.useEffect(function () { var flag = false; // console.log('props.validation.required', props.validation.required); if (props.validation.required.value) { flag = true; } if (props.validation.required === true) { flag = true; } if (flag) { // console.log('Here select Name: ', props.name); setValidation({ validate: function (value) { if (value) { return true; } else { return false; } }, }); } }, [props.validation]); React.useEffect(function () { var _a, _b; // No data: infinite loading if (((_a = props.data) === null || _a === void 0 ? void 0 : _a.length) === 0 && !props.fetchDataFromUrl) { // console.warn('MagicFormGenerator: nessuna opzione fornita per il Select'); return; } // Static data if (props.data && ((_b = props.data) === null || _b === void 0 ? void 0 : _b.length) > 0 && !props.fetchDataFromUrl) { setOptionData(props.data); setLoading(false); return; } // Fetch data from url if (props.fetchDataFromUrl) { var fetchEffectData = function () { return __awaiter(void 0, void 0, void 0, function () { var res; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fetchData(props.fetchDataFromUrl)]; case 1: res = _a.sent(); if (res.status) { setOptionData(res.data); setLoading(false); } return [2 /*return*/, res]; } }); }); }; fetchEffectData(); } // NB: If both data and url are set. Merge arrays: // Dynamic data with fetch // NB: setOptionData(props.data); var getDefaultValue = getSelectDefaultValue(props.data); // console.log('getDefaultValue', getDefaultValue); setDefaultValue(getDefaultValue); }, [props.data]); return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("div", { className: "fg__select-wrapper" }, React__default['default'].createElement("select", { id: props.id, className: 'form-control ' + 'fg__input-select ' + (errors[props.name] ? 'is-invalid ' : ' '), name: props.name, ref: register(validation), autoComplete: props.autocomplete ? props.autocomplete : 'off', disabled: loading, defaultValue: defaultValue }, props.placeholder ? (React__default['default'].createElement("option", { value: "" }, props.placeholder)) : (React__default['default'].createElement(React__default['default'].Fragment, null)), optionData.map(function (option, index) { return (React__default['default'].createElement("option", { key: index, value: option.value, disabled: option.disabled ? true : false }, option.label)); })), React__default['default'].createElement("div", { className: 'loader ' + 'fg__input-select ' + (loading ? 'loader-active ' : ' ') }, React__default['default'].createElement("span", null))), React__default['default'].createElement("div", { className: "invalid-feedback" }, ((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'validate' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_c = (_b = props === null || props === void 0 ? void 0 : props.validation) === null || _b === void 0 ? void 0 : _b.required) === null || _c === void 0 ? void 0 : _c.message) === '' ? (React__default['default'].createElement("span", null, "Selezionare un opzione")) : (React__default['default'].createElement("span", null, (_e = (_d = props === null || props === void 0 ? void 0 : props.validation) === null || _d === void 0 ? void 0 : _d.required) === null || _e === void 0 ? void 0 : _e.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null))))); }; var InputText = function (props) { // const [invalid, setInvalid] = useState<boolean>(true); var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t; var _u = reactHookForm.useFormContext(), register = _u.register, errors = _u.errors, watch = _u.watch, setError = _u.setError, clearErrors = _u.clearErrors; // retrieve all hook methods var _v = __read(React.useState({}), 2), validation = _v[0], setValidation = _v[1]; var _w = __read(React.useState(0), 2), minLength = _w[0], setMinLength = _w[1]; var _x = __read(React.useState(0), 2), maxLength = _x[0], setMaxLength = _x[1]; // Build Validation Object React.useEffect(function () { // Copy reference props var rawValidation = props.validation; // If exists set minLength state for error message if (props.validation.minLength) { if (props.validation.minLength.value) { setMinLength(parseInt(props.validation.minLength .value)); } else { setMinLength(parseInt(props.validation.minLength)); } } // If exists set maxLength state for error message if (props.validation.maxLength) { if (props.validation.maxLength.value) { setMaxLength(parseInt(props.validation.maxLength .value)); } else { setMaxLength(parseInt(props.validation.maxLength)); } } // Normalize equalTo validation with validate method if (props.validation.equalTo !== undefined && props.validation.equalTo.value) { var equalToField_1 = props.validation.equalTo .value; rawValidation.validate = function (value) { return value === watch(equalToField_1); }; } // Add regex for validate email pattern setValidation(rawValidation); }, []); // Update error object message for equalTo React.useEffect(function () { var _a; if (((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'validate' && props.validation.equalTo.value) { setError('repeatEmail', { type: 'equalTo', message: 'I due indirizzi email devono coincidere', }); clearErrors('validate'); } }, [errors]); return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("input", { id: props.id, type: "text", className: 'form-control ' + (errors[props.name] ? 'is-invalid ' : ' '), placeholder: props.placeholder, name: props.name, autoComplete: props.autocomplete ? props.autocomplete : 'off', ref: register(validation) }), React__default['default'].createElement("div", { className: "invalid-feedback" }, ((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'required' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_b = errors[props.name]) === null || _b === void 0 ? void 0 : _b.message) === '' ? (React__default['default'].createElement("span", null, "Il campo \u00E8 richiesto")) : (React__default['default'].createElement("span", null, (_c = errors[props.name]) === null || _c === void 0 ? void 0 : _c.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_d = errors[props.name]) === null || _d === void 0 ? void 0 : _d.type) == 'minLength' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_e = errors[props.name]) === null || _e === void 0 ? void 0 : _e.message) === '' ? (React__default['default'].createElement("span", null, "La lunghezza minima \u00E8 ", minLength, " caratteri")) : (React__default['default'].createElement("span", null, (_f = errors[props.name]) === null || _f === void 0 ? void 0 : _f.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_g = errors[props.name]) === null || _g === void 0 ? void 0 : _g.type) == 'maxLength' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_h = errors[props.name]) === null || _h === void 0 ? void 0 : _h.message) === '' ? (React__default['default'].createElement("span", null, "La lunghezza massima \u00E8 ", maxLength, " caratteri")) : (React__default['default'].createElement("span", null, (_j = errors[props.name]) === null || _j === void 0 ? void 0 : _j.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_k = errors[props.name]) === null || _k === void 0 ? void 0 : _k.type) == 'pattern' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_l = errors[props.name]) === null || _l === void 0 ? void 0 : _l.message) === '' ? (React__default['default'].createElement("span", null, "Rispettare le regole di formattazione")) : (React__default['default'].createElement("span", null, (_m = errors[props.name]) === null || _m === void 0 ? void 0 : _m.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_o = errors[props.name]) === null || _o === void 0 ? void 0 : _o.type) == 'validate' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_p = errors[props.name]) === null || _p === void 0 ? void 0 : _p.message) === '' ? (React__default['default'].createElement("span", null, "Rispettare le regole di validazione")) : (React__default['default'].createElement("span", null, (_q = errors[props.name]) === null || _q === void 0 ? void 0 : _q.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_r = errors[props.name]) === null || _r === void 0 ? void 0 : _r.type) == 'equalTo' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_s = errors[props.name]) === null || _s === void 0 ? void 0 : _s.message) === '' ? (React__default['default'].createElement("span", null, "I due campi devono essere uguali")) : (React__default['default'].createElement("span", null, (_t = errors[props.name]) === null || _t === void 0 ? void 0 : _t.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null))))); }; var InputTextarea = function (props) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t; var _u = reactHookForm.useFormContext(), register = _u.register, errors = _u.errors, watch = _u.watch, setError = _u.setError, clearErrors = _u.clearErrors; // retrieve all hook methods var _v = __read(React.useState({}), 2), validation = _v[0], setValidation = _v[1]; var _w = __read(React.useState(0), 2), minLength = _w[0], setMinLength = _w[1]; var _x = __read(React.useState(0), 2), maxLength = _x[0], setMaxLength = _x[1]; // Build Validation Object React.useEffect(function () { // Copy reference props var rawValidation = props.validation; // If exists set minLength state for error message if (props.validation.minLength) { if (props.validation.minLength.value) { setMinLength(parseInt(props.validation.minLength .value)); } else { setMinLength(parseInt(props.validation.minLength)); } } // If exists set maxLength state for error message if (props.validation.maxLength) { if (props.validation.maxLength.value) { setMaxLength(parseInt(props.validation.maxLength .value)); } else { setMaxLength(parseInt(props.validation.maxLength)); } } // Normalize equalTo validation with validate method if (props.validation.equalTo !== undefined && props.validation.equalTo.value) { var equalToField_1 = props.validation.equalTo .value; rawValidation.validate = function (value) { return value === watch(equalToField_1); }; } // Add regex for validate email pattern setValidation(rawValidation); }, []); // Update error object message for equalTo React.useEffect(function () { var _a; if (((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'validate' && props.validation.equalTo.value) { setError('repeatEmail', { type: 'equalTo', message: 'I due campi devono coincidere', }); clearErrors('validate'); } }, [errors]); return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("textarea", { id: props.id, className: 'form-control ' + (errors[props.name] ? 'is-invalid ' : ' '), placeholder: props.placeholder, name: props.name, autoComplete: props.autocomplete ? props.autocomplete : 'off', ref: register(validation) }), React__default['default'].createElement("div", { className: "invalid-feedback" }, ((_a = errors[props.name]) === null || _a === void 0 ? void 0 : _a.type) == 'required' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_b = errors[props.name]) === null || _b === void 0 ? void 0 : _b.message) === '' ? (React__default['default'].createElement("span", null, "Il campo \u00E8 richiesto")) : (React__default['default'].createElement("span", null, (_c = errors[props.name]) === null || _c === void 0 ? void 0 : _c.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_d = errors[props.name]) === null || _d === void 0 ? void 0 : _d.type) == 'minLength' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_e = errors[props.name]) === null || _e === void 0 ? void 0 : _e.message) === '' ? (React__default['default'].createElement("span", null, "La lunghezza minima \u00E8 ", minLength, " caratteri")) : (React__default['default'].createElement("span", null, (_f = errors[props.name]) === null || _f === void 0 ? void 0 : _f.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_g = errors[props.name]) === null || _g === void 0 ? void 0 : _g.type) == 'maxLength' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_h = errors[props.name]) === null || _h === void 0 ? void 0 : _h.message) === '' ? (React__default['default'].createElement("span", null, "La lunghezza massima \u00E8 ", maxLength, " caratteri")) : (React__default['default'].createElement("span", null, (_j = errors[props.name]) === null || _j === void 0 ? void 0 : _j.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_k = errors[props.name]) === null || _k === void 0 ? void 0 : _k.type) == 'pattern' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_l = errors[props.name]) === null || _l === void 0 ? void 0 : _l.message) === '' ? (React__default['default'].createElement("span", null, "Rispettare le regole di formattazione")) : (React__default['default'].createElement("span", null, (_m = errors[props.name]) === null || _m === void 0 ? void 0 : _m.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_o = errors[props.name]) === null || _o === void 0 ? void 0 : _o.type) == 'validate' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_p = errors[props.name]) === null || _p === void 0 ? void 0 : _p.message) === '' ? (React__default['default'].createElement("span", null, "Rispettare le regole di validazione")) : (React__default['default'].createElement("span", null, (_q = errors[props.name]) === null || _q === void 0 ? void 0 : _q.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), ((_r = errors[props.name]) === null || _r === void 0 ? void 0 : _r.type) == 'equalTo' ? (React__default['default'].createElement(React__default['default'].Fragment, null, ((_s = errors[props.name]) === null || _s === void 0 ? void 0 : _s.message) === '' ? (React__default['default'].createElement("span", null, "I due campi devono essere uguali")) : (React__default['default'].createElement("span", null, (_t = errors[props.name]) === null || _t === void 0 ? void 0 : _t.message)))) : (React__default['default'].createElement(React__default['default'].Fragment, null))))); }; var FormFields = function (props) { var fields = props.fields; var _a = __read(React.useState(null), 2), rowFields = _a[0], setRowFields = _a[1]; React.useEffect(function () { var row = []; var val = 0; var fieldsTemp = []; fields.map(function (field, index) { var fieldLayout = ''; if (!field.layout) { fieldLayout = '1/2'; } else { fieldLayout = field.layout; } var currentVal = getLayoutValue(fieldLayout); val = val + currentVal; fieldsTemp.push(field); if (index > 0) { var nextFieldVal = getLayoutValue(fields[index - 1].layout); if (val < 1 && val + nextFieldVal > 1) { val = val + 1; } } if (val >= 1) { row.push(fieldsTemp); fieldsTemp = []; val = 0; } if (index === fields.length - 1) { row.push(fieldsTemp); } }); setRowFields(row); }, []); return (React__default['default'].createElement("div", { className: "fg__fields fg__body" }, rowFields && rowFields.map(function (fields, index) { return (React__default['default'].createElement("div", { className: "row", key: index }, fields.map(function (field, index) { var colName = getLayoutColClass(field.layout); return (React__default['default'].createElement("div", { className: colName, key: index }, React__default['default'].createElement("div", { className: "fg__fields-field" }, React__default['default'].createElement(React__default['default'].Fragment, null, field.type == 'text' ? (React__default['default'].createElement(InputText, { name: field.name, id: field.id, placeholder: field.placeholder, validation: field.validation, autocomplete: field.autocomplete, label: field.label })) : (React__default['default'].createElement(React__default['default'].Fragment, null)), field.type == 'email' ? (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("label", null, field.label), React__default['default'].createElement(InputEmail, { name: field.name, id: field.id, placeholder: field.placeholder, validation: field.validation, autocomplete: field.autocomplete }))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), field.type == 'password' ? (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("label", null, field.label), React__default['default'].createElement(InputPassword, { name: field.name, id: field.id, placeholder: field.placeholder, validation: field.validation, autocomplete: field.autocomplete }))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), field.type == 'select' ? (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("label", null, field.label), React__default['default'].createElement(InputSelect, { name: field.name, id: field.id, placeholder: field.placeholder, validation: field.validation, autocomplete: field.autocomplete, data: field.data, fetchDataFromUrl: field.fetchDataFromUrl }))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), field.type == 'textarea' ? (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("label", null, field.label), React__default['default'].createElement(InputTextarea, { name: field.name, id: field.id, placeholder: field.placeholder, validation: field.validation, autocomplete: field.autocomplete }))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), field.type == 'checkbox' ? (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement("label", null, field.label), React__default['default'].createElement(InputCheckbox, { name: field.name, id: field.id, placeholder: field.placeholder, validation: field.validation, autocomplete: field.autocomplete }))) : (React__default['default'].createElement(React__default['default'].Fragment, null)))))); }))); }))); }; var FormHeading = function (props) { var title = props.title, subTitle = props.subTitle; var newLine = function (string) { if (!string) { return [React__default['default'].createElement(React__default['default'].Fragment, null)]; } var ret = string .split('\n') .map(function (str, index) { return React__default['default'].createElement("p", { key: index }, str); }); return ret; }; if (title === '' && subTitle === '') { return React__default['default'].createElement(React__default['default'].Fragment, null); } if (title === '') { return (React__default['default'].createElement("div", { className: "row" }, React__default['default'].createElement("h3", { className: "fg__subtitle" }, newLine(subTitle)))); } if (subTitle === '') { return (React__default['default'].createElement("div", { className: "row" }, React__default['default'].createElement("h3", { className: "fg__title" }, title))); } return (React__default['default'].createElement("header", null, React__default['default'].createElement("h3", { className: "fg__title" }, title), React__default['default'].createElement("p", { className: "fg__subtitle" }, subTitle))); }; var FormButonSubmit = function (props) { var _a = __read(React.useState(true), 2), loading = _a[0], setLoading = _a[1]; React.useEffect(function () { setLoading(true); }, [loading]); var rowClass = getLayoutColClass((props === null || props === void 0 ? void 0 : props.layout) ? props.layout : '1/4'); var btnText = (props === null || props === void 0 ? void 0 : props.text) ? props.text : 'Invia'; var btnClasses = 'fg__button-submit ' + (props === null || props === void 0 ? void 0 : props.class) ? props.class : ' '; var btnId = (props === null || props === void 0 ? void 0 : props.id) ? props.id : ''; return (React__default['default'].createElement("div", { className: "row" }, React__default['default'].createElement("div", { className: rowClass }, React__default['default'].createElement("div", { className: 'fg__button-submit-wrapper ' + (loading ? 'with-loader ' : ' ') }, !(props === null || props === void 0 ? void 0 : props.dom) ? (React__default['default'].createElement("input", { type: "submit", id: btnId, className: btnClasses, value: btnText })) : (React__default['default'].createElement(React__default['default'].Fragment, null)), (props === null || props === void 0 ? void 0 : props.dom) && props.dom == 'input' ? (React__default['default'].createElement("input", { type: "submit", id: btnId, className: btnClasses, value: btnText })) : (React__default['default'].createElement(React__default['default'].Fragment, null)), (props === null || props === void 0 ? void 0 : props.dom) && props.dom == 'button' ? (React__default['default'].createElement("button", { type: "submit", id: btnId, className: btnClasses }, btnText)) : (React__default['default'].createElement(React__default['default'].Fragment, null)), (props ==