@mysetup/hooks 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +17 -0
  4. package/dist/src/index.d.ts +8 -0
  5. package/dist/src/index.d.ts.map +1 -0
  6. package/dist/src/index.js +23 -0
  7. package/dist/src/useBreakpoint/index.d.ts +2 -0
  8. package/dist/src/useBreakpoint/index.d.ts.map +1 -0
  9. package/dist/src/useBreakpoint/index.js +17 -0
  10. package/dist/src/useBreakpoint/useBreakpoint.d.ts +2 -0
  11. package/dist/src/useBreakpoint/useBreakpoint.d.ts.map +1 -0
  12. package/dist/src/useBreakpoint/useBreakpoint.js +41 -0
  13. package/dist/src/useDebounce/index.d.ts +2 -0
  14. package/dist/src/useDebounce/index.d.ts.map +1 -0
  15. package/dist/src/useDebounce/index.js +17 -0
  16. package/dist/src/useDebounce/useDebounce.d.ts +2 -0
  17. package/dist/src/useDebounce/useDebounce.d.ts.map +1 -0
  18. package/dist/src/useDebounce/useDebounce.js +16 -0
  19. package/dist/src/useForm/helpers.d.ts +12 -0
  20. package/dist/src/useForm/helpers.d.ts.map +1 -0
  21. package/dist/src/useForm/helpers.js +84 -0
  22. package/dist/src/useForm/index.d.ts +3 -0
  23. package/dist/src/useForm/index.d.ts.map +1 -0
  24. package/dist/src/useForm/index.js +18 -0
  25. package/dist/src/useForm/rulesList.d.ts +3 -0
  26. package/dist/src/useForm/rulesList.d.ts.map +1 -0
  27. package/dist/src/useForm/rulesList.js +102 -0
  28. package/dist/src/useForm/types.d.ts +45 -0
  29. package/dist/src/useForm/types.d.ts.map +1 -0
  30. package/dist/src/useForm/types.js +15 -0
  31. package/dist/src/useForm/useForm.d.ts +28 -0
  32. package/dist/src/useForm/useForm.d.ts.map +1 -0
  33. package/dist/src/useForm/useForm.js +301 -0
  34. package/dist/src/useForm/useFormArray.d.ts +28 -0
  35. package/dist/src/useForm/useFormArray.d.ts.map +1 -0
  36. package/dist/src/useForm/useFormArray.js +329 -0
  37. package/dist/src/useFormatPhoneNumber/index.d.ts +2 -0
  38. package/dist/src/useFormatPhoneNumber/index.d.ts.map +1 -0
  39. package/dist/src/useFormatPhoneNumber/index.js +17 -0
  40. package/dist/src/useFormatPhoneNumber/useFormatPhoneNumber.d.ts +2 -0
  41. package/dist/src/useFormatPhoneNumber/useFormatPhoneNumber.d.ts.map +1 -0
  42. package/dist/src/useFormatPhoneNumber/useFormatPhoneNumber.js +18 -0
  43. package/dist/src/useIsBreakpoint/index.d.ts +2 -0
  44. package/dist/src/useIsBreakpoint/index.d.ts.map +1 -0
  45. package/dist/src/useIsBreakpoint/index.js +17 -0
  46. package/dist/src/useIsBreakpoint/useIsBreakpoint.d.ts +3 -0
  47. package/dist/src/useIsBreakpoint/useIsBreakpoint.d.ts.map +1 -0
  48. package/dist/src/useIsBreakpoint/useIsBreakpoint.js +15 -0
  49. package/dist/src/useModal/index.d.ts +2 -0
  50. package/dist/src/useModal/index.d.ts.map +1 -0
  51. package/dist/src/useModal/index.js +17 -0
  52. package/dist/src/useModal/useModal.d.ts +6 -0
  53. package/dist/src/useModal/useModal.d.ts.map +1 -0
  54. package/dist/src/useModal/useModal.js +19 -0
  55. package/dist/src/useTouchEndFix/index.d.ts +2 -0
  56. package/dist/src/useTouchEndFix/index.d.ts.map +1 -0
  57. package/dist/src/useTouchEndFix/index.js +17 -0
  58. package/dist/src/useTouchEndFix/useTouchEndFix.d.ts +2 -0
  59. package/dist/src/useTouchEndFix/useTouchEndFix.d.ts.map +1 -0
  60. package/dist/src/useTouchEndFix/useTouchEndFix.js +34 -0
  61. package/package.json +54 -0
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.useForm = void 0;
51
+ var react_1 = require("react");
52
+ var helpers_1 = require("./helpers");
53
+ var rulesList_1 = require("./rulesList");
54
+ var useForm = function (options) {
55
+ var _a = (0, react_1.useState)(((options === null || options === void 0 ? void 0 : options.initialValues) || {})), data = _a[0], setData = _a[1];
56
+ var _b = (0, react_1.useState)({}), errors = _b[0], setErrors = _b[1];
57
+ var _c = (0, react_1.useState)({}), passed = _c[0], setPassed = _c[1];
58
+ var _d = (0, react_1.useState)(false), isSubmitted = _d[0], setIsSubmitted = _d[1];
59
+ var newErrors = {};
60
+ var newPassed = {};
61
+ var handleChange = function (key, value, showError) {
62
+ if (showError === void 0) { showError = false; }
63
+ setData(function (prev) {
64
+ var _a;
65
+ return (__assign(__assign({}, prev), (_a = {}, _a[key] = value, _a)));
66
+ });
67
+ var isValid = checkFieldValidation(key, value, showError).isValid;
68
+ if (isValid) {
69
+ clearError(key);
70
+ }
71
+ };
72
+ var handleValidation = function (key, showError) {
73
+ if (showError === void 0) { showError = true; }
74
+ var value = data[key];
75
+ if (typeof value === "string" && value.length !== value.trim().length) {
76
+ handleChange(key, value.trim(), showError);
77
+ return;
78
+ }
79
+ var isValid = checkFieldValidation(key, data[key], showError).isValid;
80
+ if (isValid) {
81
+ clearError(key);
82
+ }
83
+ };
84
+ var clearError = function (field) {
85
+ setErrors(function (prev) {
86
+ var _a;
87
+ return (__assign(__assign({}, prev), (_a = {}, _a[field] = undefined, _a)));
88
+ });
89
+ };
90
+ var checkFieldValidation = function (key, inputValue, showError) {
91
+ var _a, _b;
92
+ if (showError === void 0) { showError = false; }
93
+ var isValid = true;
94
+ var validations = options === null || options === void 0 ? void 0 : options.validations;
95
+ if (validations) {
96
+ var validationRules = (_a = validations[key]) === null || _a === void 0 ? void 0 : _a.rules;
97
+ var customValidation = (_b = validations[key]) === null || _b === void 0 ? void 0 : _b.customValidation;
98
+ var _loop_1 = function (rule) {
99
+ var _d = normalizeValues(inputValue, rule), value = _d[0], ruleName = _d[1], params = _d[2];
100
+ var normalizeValue = value;
101
+ var normalizeRuleName = ruleName;
102
+ var normalizeParams = params;
103
+ var ruleValue = rulesList_1.rulesList[normalizeRuleName];
104
+ if (!passes(normalizeRuleName, normalizeValue, normalizeParams)) {
105
+ isValid = false;
106
+ var msg_1 = (0, helpers_1.message)(normalizeRuleName, key, rulesList_1.rulesList, validations);
107
+ if (normalizeParams.length > 0 &&
108
+ Object.prototype.hasOwnProperty.call(rulesList_1.rulesList[normalizeRuleName], "messageReplace")) {
109
+ msg_1 = ruleValue.messageReplace
110
+ ? ruleValue.messageReplace(msg_1, normalizeParams)
111
+ : "";
112
+ }
113
+ if (showError) {
114
+ setErrors(function (prev) {
115
+ var _a;
116
+ return (__assign(__assign({}, prev), (_a = {}, _a[key] = {
117
+ type: "error",
118
+ message: msg_1,
119
+ types: ruleName,
120
+ }, _a)));
121
+ });
122
+ }
123
+ }
124
+ else {
125
+ setPassed(function (prev) {
126
+ var _a;
127
+ return (__assign(__assign({}, prev), (_a = {}, _a[key] = {
128
+ type: "success",
129
+ types: ruleName,
130
+ }, _a)));
131
+ });
132
+ }
133
+ };
134
+ for (var _i = 0, _c = validationRules || []; _i < _c.length; _i++) {
135
+ var rule = _c[_i];
136
+ _loop_1(rule);
137
+ }
138
+ if (customValidation) {
139
+ var result_1 = customValidation(inputValue, data);
140
+ if (!result_1.isValid) {
141
+ isValid = false;
142
+ if (showError) {
143
+ setErrors(function (prev) {
144
+ var _a;
145
+ return (__assign(__assign({}, prev), (_a = {}, _a[key] = {
146
+ type: "error",
147
+ message: result_1.message,
148
+ }, _a)));
149
+ });
150
+ }
151
+ }
152
+ else {
153
+ setPassed(function (prev) {
154
+ var _a;
155
+ return (__assign(__assign({}, prev), (_a = {}, _a[key] = {
156
+ type: "success",
157
+ }, _a)));
158
+ });
159
+ }
160
+ }
161
+ }
162
+ return {
163
+ isValid: isValid,
164
+ };
165
+ };
166
+ var handleSubmit = function (e) { return __awaiter(void 0, void 0, void 0, function () {
167
+ var isValid, validations, key, inputValue, validationRules, _i, _a, rule, _b, value, ruleName, params, normalizeValue, normalizeRuleName, normalizeParams, ruleValue, msg;
168
+ var _c;
169
+ return __generator(this, function (_d) {
170
+ e === null || e === void 0 ? void 0 : e.preventDefault();
171
+ setIsSubmitted(true);
172
+ isValid = true;
173
+ validations = options === null || options === void 0 ? void 0 : options.validations;
174
+ if (validations) {
175
+ for (key in validations) {
176
+ inputValue = data[key];
177
+ validationRules = (_c = validations[key]) === null || _c === void 0 ? void 0 : _c.rules;
178
+ for (_i = 0, _a = validationRules || []; _i < _a.length; _i++) {
179
+ rule = _a[_i];
180
+ _b = normalizeValues(inputValue, rule), value = _b[0], ruleName = _b[1], params = _b[2];
181
+ normalizeValue = value;
182
+ normalizeRuleName = ruleName;
183
+ normalizeParams = params;
184
+ ruleValue = rulesList_1.rulesList[normalizeRuleName];
185
+ if (!passes(normalizeRuleName, normalizeValue, normalizeParams)) {
186
+ isValid = false;
187
+ msg = (0, helpers_1.message)(normalizeRuleName, key, rulesList_1.rulesList, validations);
188
+ if (normalizeParams.length > 0 &&
189
+ Object.prototype.hasOwnProperty.call(rulesList_1.rulesList[normalizeRuleName], "messageReplace")) {
190
+ msg = ruleValue.messageReplace
191
+ ? ruleValue.messageReplace(msg, normalizeParams)
192
+ : "";
193
+ }
194
+ newErrors[key] = {
195
+ type: "error",
196
+ message: msg,
197
+ };
198
+ }
199
+ else {
200
+ newPassed[key] = {
201
+ type: "success",
202
+ message: "",
203
+ };
204
+ setPassed(newPassed);
205
+ }
206
+ }
207
+ }
208
+ if (!isValid) {
209
+ setErrors(newErrors);
210
+ return [2 /*return*/];
211
+ }
212
+ }
213
+ setErrors({});
214
+ if (options === null || options === void 0 ? void 0 : options.onSubmit) {
215
+ options.onSubmit();
216
+ }
217
+ return [2 /*return*/];
218
+ });
219
+ }); };
220
+ var normalizeValues = function (value, validation) {
221
+ return [
222
+ (0, helpers_1.valueOrEmptyString)(value),
223
+ getValidation(validation),
224
+ getOptions(validation),
225
+ ];
226
+ };
227
+ var getValidation = function (validation) {
228
+ if (validation === Object(validation) &&
229
+ Boolean(Object.keys(validation).length)) {
230
+ return Object.keys(validation)[0];
231
+ }
232
+ return validation.split(":")[0];
233
+ };
234
+ var getOptions = function (validation) {
235
+ if (validation === Object(validation) &&
236
+ Boolean(Object.values(validation).length)) {
237
+ var params_1 = Object.values(validation)[0];
238
+ return Array.isArray(params_1) ? params_1 : [params_1];
239
+ }
240
+ var params = validation.split(":");
241
+ return params.length > 1 ? params[1].split(",") : [];
242
+ };
243
+ var passes = function (rule, value, params) {
244
+ if (!Object.prototype.hasOwnProperty.call(rulesList_1.rulesList, rule)) {
245
+ // eslint-disable-next-line no-console
246
+ console.error("Rule Not Found: There is no rule with the name ".concat(rule, "."));
247
+ return true;
248
+ }
249
+ if (!isRequired(rule) && (0, helpers_1.isBlank)(value)) {
250
+ return true;
251
+ }
252
+ if (rule === "match") {
253
+ return rulesList_1.rulesList[rule].rule(value, [
254
+ Object.values(data)[Object.keys(data).indexOf(params[0])],
255
+ ]);
256
+ }
257
+ return rulesList_1.rulesList[rule].rule(value, params);
258
+ };
259
+ var isRequired = function (rule) {
260
+ return Boolean(Object.prototype.hasOwnProperty.call(rulesList_1.rulesList[rule], "required") &&
261
+ rulesList_1.rulesList[rule].required);
262
+ };
263
+ var addInputHandlers = function (name) {
264
+ return {
265
+ onBlur: function () {
266
+ handleValidation(name);
267
+ },
268
+ onChange: function (value) {
269
+ handleChange(name, value);
270
+ },
271
+ onFocus: function () {
272
+ clearError(name);
273
+ },
274
+ state: errors[name] ? errors[name] : passed[name],
275
+ value: data[name],
276
+ name: name,
277
+ };
278
+ };
279
+ var reset = function (initialValues) {
280
+ setData((initialValues || (options === null || options === void 0 ? void 0 : options.initialValues) || {}));
281
+ setIsSubmitted(false);
282
+ if (options === null || options === void 0 ? void 0 : options.onReset) {
283
+ options.onReset();
284
+ }
285
+ setErrors({});
286
+ setPassed({});
287
+ };
288
+ return {
289
+ addInputHandlers: addInputHandlers,
290
+ clearError: clearError,
291
+ data: data,
292
+ handleChange: handleChange,
293
+ handleSubmit: handleSubmit,
294
+ handleValidation: handleValidation,
295
+ isSubmitted: isSubmitted,
296
+ errors: errors,
297
+ passed: passed,
298
+ reset: reset,
299
+ };
300
+ };
301
+ exports.useForm = useForm;
@@ -0,0 +1,28 @@
1
+ import type { FormEvent } from "react";
2
+ import type { AlertState } from "@mysetup/types";
3
+ import type { FormValue, Validations } from "./types";
4
+ export declare const useFormArray: <T extends Record<keyof T, unknown> = object[]>(options?: {
5
+ validations: Validations<T>;
6
+ initialValues?: Partial<T>;
7
+ onReset?: () => void;
8
+ onSubmit?: () => void;
9
+ }) => {
10
+ addInputHandlers: (name: string, index: string | number) => {
11
+ onBlur: () => void;
12
+ onChange: (value: FormValue) => void;
13
+ onFocus: () => void;
14
+ state: any;
15
+ value: any;
16
+ name: string;
17
+ };
18
+ data: T;
19
+ handleChange: (key: string, value: FormValue, index: number | string, showError?: boolean) => void;
20
+ handleSubmit: (e?: FormEvent<HTMLFormElement>) => Promise<void>;
21
+ handleValidation: (key: keyof T, index: number | string, showError?: boolean) => void;
22
+ isSubmitted: boolean;
23
+ errors: Partial<Record<keyof T, AlertState>>[];
24
+ passed: Partial<Record<keyof T, AlertState>>[];
25
+ reset: (initialValues?: Partial<T>) => void;
26
+ checkCurrentValidation: () => boolean;
27
+ };
28
+ //# sourceMappingURL=useFormArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormArray.d.ts","sourceRoot":"","sources":["../../../src/useForm/useFormArray.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,SAAS,EAAY,WAAW,EAAE,MAAM,SAAS,CAAC;AAKhE,eAAO,MAAM,YAAY,GACrB,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,uBAC1B;IACR,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;6BAyTmC,MAAM,SAAS,MAAM,GAAG,MAAM;;0BASpC,SAAS;;;;;;;wBA3T1B,MAAM,SACJ,SAAS,SACT,MAAM,GAAG,MAAM;uBAkNM,SAAS,CAAC,eAAe,CAAC;4BAtLjD,MAAM,CAAC,SACL,MAAM,GAAG,MAAM;;;;4BA+SK,OAAO,CAAC,CAAC,CAAC;;CAsB5C,CAAC"}
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.useFormArray = void 0;
49
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
50
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
51
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
52
+ // @ts-nocheck
53
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
54
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
55
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
56
+ var react_1 = require("react");
57
+ var helpers_1 = require("./helpers");
58
+ var rulesList_1 = require("./rulesList");
59
+ var useFormArray = function (options) {
60
+ var _a = (0, react_1.useState)(((options === null || options === void 0 ? void 0 : options.initialValues) || [{}])), data = _a[0], setData = _a[1];
61
+ var _b = (0, react_1.useState)([{}]), errors = _b[0], setErrors = _b[1];
62
+ var _c = (0, react_1.useState)([{}]), passed = _c[0], setPassed = _c[1];
63
+ var _d = (0, react_1.useState)(false), isSubmitted = _d[0], setIsSubmitted = _d[1];
64
+ var handleChange = function (key, value, index, showError) {
65
+ if (showError === void 0) { showError = false; }
66
+ setData(function (prev) {
67
+ var dataItems = __spreadArray([], prev, true);
68
+ if (String(index).includes("-")) {
69
+ var indexSplit = String(index).split("-");
70
+ dataItems[indexSplit[0]][indexSplit[1]][indexSplit[2]][key] =
71
+ value;
72
+ }
73
+ else {
74
+ dataItems[index][key] = value;
75
+ }
76
+ return dataItems;
77
+ });
78
+ var isValid = checkFieldValidation(key, value, index, showError).isValid;
79
+ if (isValid) {
80
+ handleFieldErrorPassed(errors, key, index);
81
+ }
82
+ };
83
+ var handleValidation = function (key, index, showError) {
84
+ if (showError === void 0) { showError = true; }
85
+ var value = getIndexedValue(data, index, key);
86
+ if (typeof value === "string" && value.length !== value.trim().length) {
87
+ handleChange(String(key), value.trim(), index);
88
+ return;
89
+ }
90
+ var isValid = checkFieldValidation(key, value, index, showError).isValid;
91
+ if (isValid) {
92
+ handleFieldErrorPassed(errors, key, index);
93
+ }
94
+ };
95
+ var handleFieldErrorPassed = function (items, field, index, value) {
96
+ var _a, _b;
97
+ var indexSplit = String(index).split("-");
98
+ if (String(index).includes("-")) {
99
+ while (!((_a = items[indexSplit[0]]) === null || _a === void 0 ? void 0 : _a[indexSplit[1]])) {
100
+ items[indexSplit[0]][indexSplit[1]] = [{}];
101
+ }
102
+ while (((_b = items[indexSplit[0]]) === null || _b === void 0 ? void 0 : _b[indexSplit[1]].length) <= indexSplit[2]) {
103
+ items[indexSplit[0]][indexSplit[1]].push({});
104
+ }
105
+ }
106
+ else {
107
+ while (items.length <= Number(index)) {
108
+ items.push({});
109
+ }
110
+ }
111
+ if (String(index).includes("-")) {
112
+ items[indexSplit[0]][indexSplit[1]][indexSplit[2]][field] = value;
113
+ }
114
+ else {
115
+ items[index][field] = value;
116
+ }
117
+ return items;
118
+ };
119
+ var checkFieldValidation = function (key, inputValue, index, showError) {
120
+ var _a, _b;
121
+ if (showError === void 0) { showError = false; }
122
+ var isValid = true;
123
+ var validations = options === null || options === void 0 ? void 0 : options.validations;
124
+ if (validations) {
125
+ var validationRules = (_a = validations[key]) === null || _a === void 0 ? void 0 : _a.rules;
126
+ var customValidation = (_b = validations[key]) === null || _b === void 0 ? void 0 : _b.customValidation;
127
+ var _loop_1 = function (rule) {
128
+ var _d = normalizeValues(inputValue, rule), value = _d[0], ruleName = _d[1], params = _d[2];
129
+ var normalizeValue = value;
130
+ var normalizeRuleName = ruleName;
131
+ var normalizeParams = params;
132
+ var ruleValue = rulesList_1.rulesList[normalizeRuleName];
133
+ if (!passes(normalizeRuleName, normalizeValue, normalizeParams)) {
134
+ isValid = false;
135
+ var msg_1 = (0, helpers_1.message)(normalizeRuleName, key, rulesList_1.rulesList, validations);
136
+ if (normalizeParams.length > 0 &&
137
+ Object.prototype.hasOwnProperty.call(rulesList_1.rulesList[normalizeRuleName], "messageReplace")) {
138
+ msg_1 = ruleValue.messageReplace
139
+ ? ruleValue.messageReplace(msg_1, normalizeParams)
140
+ : "";
141
+ }
142
+ if (showError) {
143
+ setErrors(function (prev) {
144
+ var errorItems = __spreadArray([], prev, true);
145
+ return handleFieldErrorPassed(errorItems, key, index, {
146
+ type: "error",
147
+ message: msg_1,
148
+ types: ruleName,
149
+ });
150
+ });
151
+ }
152
+ }
153
+ else {
154
+ setPassed(function (prev) {
155
+ var passedItems = __spreadArray([], prev, true);
156
+ return handleFieldErrorPassed(passedItems, key, index, {
157
+ type: "success",
158
+ types: ruleName,
159
+ });
160
+ });
161
+ }
162
+ };
163
+ for (var _i = 0, _c = validationRules || []; _i < _c.length; _i++) {
164
+ var rule = _c[_i];
165
+ _loop_1(rule);
166
+ }
167
+ if (customValidation) {
168
+ var result_1 = customValidation(inputValue, data);
169
+ if (!result_1.isValid) {
170
+ isValid = false;
171
+ if (showError) {
172
+ setErrors(function (prev) {
173
+ var errorItems = __spreadArray([], prev, true);
174
+ return handleFieldErrorPassed(errorItems, key, index, {
175
+ type: "error",
176
+ message: result_1.message,
177
+ });
178
+ });
179
+ }
180
+ }
181
+ else {
182
+ setPassed(function (prev) {
183
+ var passedItems = __spreadArray([], prev, true);
184
+ return handleFieldErrorPassed(passedItems, key, index, {
185
+ type: "success",
186
+ });
187
+ });
188
+ }
189
+ }
190
+ }
191
+ return {
192
+ isValid: isValid,
193
+ };
194
+ };
195
+ var checkAllFieldValidation = function (isFormValid) {
196
+ data.forEach(function (item, index) {
197
+ Object.keys(item).forEach(function (key) {
198
+ if (Array.isArray(item[key])) {
199
+ item[key].forEach(function (subItem, subIndex) {
200
+ Object.keys(subItem).forEach(function (subKey) {
201
+ var isValid = checkFieldValidation(subKey, subItem[subKey], "".concat(index, "-").concat(key, "-").concat(subIndex), true).isValid;
202
+ isFormValid.push(isValid);
203
+ });
204
+ });
205
+ }
206
+ else {
207
+ var isValid = checkFieldValidation(key, item[key], index, true).isValid;
208
+ isFormValid.push(isValid);
209
+ }
210
+ });
211
+ });
212
+ return isFormValid;
213
+ };
214
+ var handleSubmit = function (e) { return __awaiter(void 0, void 0, void 0, function () {
215
+ var isFormValid;
216
+ return __generator(this, function (_a) {
217
+ e === null || e === void 0 ? void 0 : e.preventDefault();
218
+ setIsSubmitted(true);
219
+ isFormValid = [];
220
+ if (!checkAllFieldValidation(isFormValid).every(Boolean)) {
221
+ return [2 /*return*/];
222
+ }
223
+ setErrors([]);
224
+ if (options === null || options === void 0 ? void 0 : options.onSubmit) {
225
+ options.onSubmit();
226
+ }
227
+ return [2 /*return*/];
228
+ });
229
+ }); };
230
+ var checkCurrentValidation = function () {
231
+ var isFormValid = [];
232
+ return checkAllFieldValidation(isFormValid).every(Boolean);
233
+ };
234
+ var normalizeValues = function (value, validation) {
235
+ return [
236
+ (0, helpers_1.valueOrEmptyString)(value),
237
+ getValidation(validation),
238
+ getOptions(validation),
239
+ ];
240
+ };
241
+ var getValidation = function (validation) {
242
+ if (validation === Object(validation) &&
243
+ Boolean(Object.keys(validation).length)) {
244
+ return Object.keys(validation)[0];
245
+ }
246
+ return validation.split(":")[0];
247
+ };
248
+ var getOptions = function (validation) {
249
+ if (validation === Object(validation) &&
250
+ Boolean(Object.values(validation).length)) {
251
+ var params_1 = Object.values(validation)[0];
252
+ return Array.isArray(params_1) ? params_1 : [params_1];
253
+ }
254
+ var params = validation.split(":");
255
+ return params.length > 1 ? params[1].split(",") : [];
256
+ };
257
+ var passes = function (rule, value, params) {
258
+ if (!Object.prototype.hasOwnProperty.call(rulesList_1.rulesList, rule)) {
259
+ // eslint-disable-next-line no-console
260
+ console.error("Rule Not Found: There is no rule with the name ".concat(rule, "."));
261
+ return true;
262
+ }
263
+ if (!isRequired(rule) && (0, helpers_1.isBlank)(value)) {
264
+ return true;
265
+ }
266
+ if (rule === "match") {
267
+ return rulesList_1.rulesList[rule].rule(value, [
268
+ Object.values(data)[Object.keys(data).indexOf(params[0])],
269
+ ]);
270
+ }
271
+ return rulesList_1.rulesList[rule].rule(value, params);
272
+ };
273
+ var isRequired = function (rule) {
274
+ return Boolean(Object.prototype.hasOwnProperty.call(rulesList_1.rulesList[rule], "required") &&
275
+ rulesList_1.rulesList[rule].required);
276
+ };
277
+ var getIndexedValue = function (state, index, key) {
278
+ var _a, _b, _c, _d;
279
+ if (String(index).includes("-")) {
280
+ var indexSplit = String(index).split("-");
281
+ return (_c = (_b = (_a = state[Number(indexSplit[0])]) === null || _a === void 0 ? void 0 : _a[indexSplit[1]]) === null || _b === void 0 ? void 0 : _b[indexSplit[2]]) === null || _c === void 0 ? void 0 : _c[key];
282
+ }
283
+ return (_d = state[index]) === null || _d === void 0 ? void 0 : _d[key];
284
+ };
285
+ var addInputHandlers = function (name, index) {
286
+ var errorIndex = getIndexedValue(errors, index, name);
287
+ var passedIndex = getIndexedValue(passed, index, name);
288
+ var dataIndex = getIndexedValue(data, index, name);
289
+ return {
290
+ onBlur: function () {
291
+ handleValidation(name, index);
292
+ },
293
+ onChange: function (value) {
294
+ handleChange(name, value, index);
295
+ },
296
+ onFocus: function () {
297
+ setErrors(function (prev) {
298
+ var errorItems = __spreadArray([], prev, true);
299
+ return handleFieldErrorPassed(errorItems, name, index);
300
+ });
301
+ },
302
+ state: errorIndex ? errorIndex : passedIndex,
303
+ value: dataIndex,
304
+ name: name,
305
+ };
306
+ };
307
+ var reset = function (initialValues) {
308
+ setData((initialValues || (options === null || options === void 0 ? void 0 : options.initialValues) || [{}]));
309
+ setIsSubmitted(false);
310
+ if (options === null || options === void 0 ? void 0 : options.onReset) {
311
+ options.onReset();
312
+ }
313
+ setErrors([{}]);
314
+ setPassed([{}]);
315
+ };
316
+ return {
317
+ addInputHandlers: addInputHandlers,
318
+ data: data,
319
+ handleChange: handleChange,
320
+ handleSubmit: handleSubmit,
321
+ handleValidation: handleValidation,
322
+ isSubmitted: isSubmitted,
323
+ errors: errors,
324
+ passed: passed,
325
+ reset: reset,
326
+ checkCurrentValidation: checkCurrentValidation,
327
+ };
328
+ };
329
+ exports.useFormArray = useFormArray;
@@ -0,0 +1,2 @@
1
+ export * from "./useFormatPhoneNumber";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/useFormatPhoneNumber/index.tsx"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}