@rolster/react-forms 19.4.3 → 19.4.7

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.
@@ -29,29 +29,22 @@ function refactorForControls(action, state, groups) {
29
29
  }
30
30
  export function useFormArray(options, validators) {
31
31
  const formArray = createFormArrayOptions(options, validators);
32
- const defaultValue = useRef(formArray.groups || []);
33
- const formGroups = useRef(new Map());
32
+ const refArrayValue = useRef(formArray.groups || []);
33
+ const refArrayGroups = useRef(new Map());
34
34
  const [state, setState] = useState(() => {
35
35
  return {
36
- ...refactorForValid(defaultValue.current, formArray.validators),
37
- controls: defaultValue.current.map(({ controls }) => controls),
36
+ ...refactorForValid(refArrayValue.current, formArray.validators),
37
+ controls: refArrayValue.current.map(({ controls }) => controls),
38
38
  dirty: false,
39
39
  dirties: false,
40
40
  disabled: false,
41
- groups: defaultValue.current,
41
+ groups: refArrayValue.current,
42
42
  touched: false,
43
43
  toucheds: false,
44
- value: defaultValue.current.map(({ controls }) => controlsToValue(controls)),
44
+ value: refArrayValue.current.map(({ controls }) => controlsToValue(controls)),
45
45
  validators: formArray.validators
46
46
  };
47
47
  });
48
- useEffect(() => {
49
- formGroups.current.clear();
50
- state.groups.forEach((group) => {
51
- formGroups.current.set(group.uuid, group);
52
- group.subscribe(subscriber);
53
- });
54
- }, [state.groups]);
55
48
  const subscriber = useCallback((action, group) => {
56
49
  setState((state) => {
57
50
  const groups = state.groups.map((currentGroup) => {
@@ -63,6 +56,17 @@ export function useFormArray(options, validators) {
63
56
  };
64
57
  });
65
58
  }, []);
59
+ useEffect(() => {
60
+ const previousGroups = refArrayGroups.current;
61
+ const currentGroups = new Map();
62
+ state.groups.forEach((group) => {
63
+ currentGroups.set(group.uuid, group);
64
+ if (previousGroups.get(group.uuid) !== group) {
65
+ group.subscribe(subscriber);
66
+ }
67
+ });
68
+ refArrayGroups.current = currentGroups;
69
+ }, [state.groups]);
66
70
  const disable = useCallback(() => {
67
71
  setState((state) => ({ ...state, disabled: true }));
68
72
  }, []);
@@ -86,29 +90,36 @@ export function useFormArray(options, validators) {
86
90
  ...state,
87
91
  ...refactorForGroups(groups, state.validators)
88
92
  }));
89
- defaultValue.current = groups;
93
+ refArrayValue.current = groups;
90
94
  }, []);
91
95
  const push = useCallback((group) => {
96
+ refArrayGroups.current.set(group.uuid, group);
97
+ group.subscribe(subscriber);
92
98
  setState((state) => ({
93
99
  ...state,
94
100
  ...refactorForGroups([...state.groups, group], state.validators)
95
101
  }));
96
102
  }, []);
97
103
  const merge = useCallback((groups) => {
104
+ groups.forEach((group) => {
105
+ group.subscribe(subscriber);
106
+ refArrayGroups.current.set(group.uuid, group);
107
+ });
98
108
  setState((state) => ({
99
109
  ...state,
100
110
  ...refactorForGroups([...state.groups, ...groups], state.validators)
101
111
  }));
102
112
  }, []);
103
113
  const remove = useCallback(({ uuid }) => {
114
+ refArrayGroups.current.delete(uuid);
104
115
  setState((state) => ({
105
116
  ...state,
106
117
  ...refactorForGroups(state.groups.filter((group) => group.uuid !== uuid), state.validators)
107
118
  }));
108
119
  }, []);
109
120
  const findByUuid = useCallback((uuid) => {
110
- return formGroups.current.get(uuid);
111
- }, [state.groups]);
121
+ return refArrayGroups.current.get(uuid);
122
+ }, []);
112
123
  const setValidators = useCallback((validators) => {
113
124
  setState((state) => ({
114
125
  ...state,
@@ -123,9 +134,10 @@ export function useFormArray(options, validators) {
123
134
  return someErrors(state.errors, keys);
124
135
  }, [state.errors]);
125
136
  const reset = useCallback(() => {
137
+ refArrayValue.current.forEach((group) => group.reset());
126
138
  setState((state) => ({
127
139
  ...state,
128
- ...refactorForGroups(defaultValue.current, state.validators)
140
+ ...refactorForGroups(refArrayValue.current, state.validators)
129
141
  }));
130
142
  }, []);
131
143
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"form-array.js","sourceRoot":"","sources":["../../../src/form-array/form-array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-array.js","sourceRoot":"","sources":["../../../src/form-array/form-array.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,6 @@ export type ReactFormVoid<E extends HTMLElement = HTMLElement, T = any> = ReactF
10
10
  export type ReactHtmlControl<T = any> = ReactFormControl<HTMLElement, T>;
11
11
  export type ReactHtmlVoid<T = any> = ReactFormVoid<HTMLElement, T>;
12
12
  export type ReactInputControl<T = any> = ReactFormControl<HTMLInputElement, T>;
13
+ export type ReactAreaControl = ReactFormControl<HTMLTextAreaElement, string>;
13
14
  export type ReactInputVoid<T = any> = ReactFormVoid<HTMLInputElement, T>;
15
+ export type ReactAreaVoid = ReactFormVoid<HTMLTextAreaElement, string>;
@@ -8,42 +8,53 @@ function refactorForValid(controls, validators) {
8
8
  };
9
9
  }
10
10
  function checkAllSuccess(status) {
11
- return status.reduce((success, status) => success && status, true);
11
+ return status.every((value) => value);
12
12
  }
13
13
  function checkPartialSuccess(status) {
14
- return status.reduce((success, status) => success || status, false);
14
+ return status.some((value) => value);
15
+ }
16
+ function arraysShallowEqual(a, b) {
17
+ if (a === b) {
18
+ return true;
19
+ }
20
+ if (a.length !== b.length) {
21
+ return false;
22
+ }
23
+ for (let i = 0; i < a.length; i++) {
24
+ if (a[i] !== b[i]) {
25
+ return false;
26
+ }
27
+ }
28
+ return true;
15
29
  }
16
30
  export function useFormGroup(options, validators) {
17
31
  const formGroup = createFormGroupOptions(options, validators);
18
- const formInitialized = useRef({
19
- dirty: false,
20
- touched: false,
21
- value: false,
22
- visual: false
23
- });
32
+ const refControls = useRef(formGroup.controls);
33
+ refControls.current = formGroup.controls;
24
34
  const formGroupStatus = useMemo(() => {
25
35
  const dirty = [];
36
+ const disabled = [];
37
+ const focused = [];
26
38
  const touched = [];
27
39
  const value = [];
28
- const visual = [];
29
40
  Object.values(formGroup.controls).forEach((control) => {
30
41
  dirty.push(control.dirty);
42
+ disabled.push(control.disabled);
43
+ focused.push(control.focused);
31
44
  touched.push(control.touched);
32
45
  value.push(control.value);
33
- visual.push(control.disabled);
34
- visual.push(control.focused);
35
46
  });
36
47
  return {
37
48
  dirty,
49
+ disabled,
50
+ focused,
38
51
  touched,
39
- value,
40
- visual
52
+ value
41
53
  };
42
54
  }, [formGroup.controls]);
43
55
  const [state, setState] = useState(() => {
44
56
  return {
45
57
  ...refactorForValid(formGroup.controls, formGroup.validators),
46
- controls: formGroup.controls,
47
58
  dirties: checkAllSuccess(formGroupStatus.dirty),
48
59
  dirty: checkPartialSuccess(formGroupStatus.dirty),
49
60
  touched: checkPartialSuccess(formGroupStatus.touched),
@@ -52,75 +63,65 @@ export function useFormGroup(options, validators) {
52
63
  value: controlsToValue(formGroup.controls)
53
64
  };
54
65
  });
66
+ const refPrevFormGroupStatus = useRef(null);
55
67
  useEffect(() => {
56
- if (formInitialized.current.value) {
57
- setState((state) => ({
58
- ...state,
59
- ...refactorForValid(formGroup.controls, state.validators),
60
- controls: formGroup.controls,
61
- value: controlsToValue(formGroup.controls)
62
- }));
63
- }
64
- else {
65
- formInitialized.current.value = true;
66
- }
67
- }, formGroupStatus.value);
68
- useEffect(() => {
69
- if (formInitialized.current.dirty) {
70
- setState((state) => ({
71
- ...state,
72
- controls: formGroup.controls,
73
- dirty: checkPartialSuccess(formGroupStatus.dirty),
74
- dirties: checkAllSuccess(formGroupStatus.dirty)
75
- }));
68
+ const formGroupPrev = refPrevFormGroupStatus.current;
69
+ refPrevFormGroupStatus.current = formGroupStatus;
70
+ if (!formGroupPrev) {
71
+ return;
76
72
  }
77
- else {
78
- formInitialized.current.dirty = true;
79
- }
80
- }, formGroupStatus.dirty);
81
- useEffect(() => {
82
- if (formInitialized.current.touched) {
83
- setState((state) => ({
84
- ...state,
85
- controls: formGroup.controls,
86
- touched: checkPartialSuccess(formGroupStatus.touched),
87
- toucheds: checkAllSuccess(formGroupStatus.touched)
88
- }));
73
+ const valueChanged = !arraysShallowEqual(formGroupPrev.value, formGroupStatus.value);
74
+ const dirtyChanged = !arraysShallowEqual(formGroupPrev.dirty, formGroupStatus.dirty);
75
+ const touchedChanged = !arraysShallowEqual(formGroupPrev.touched, formGroupStatus.touched);
76
+ const disabledChanged = !arraysShallowEqual(formGroupPrev.disabled, formGroupStatus.disabled);
77
+ const focusedChanged = !arraysShallowEqual(formGroupPrev.focused, formGroupStatus.focused);
78
+ if (!valueChanged &&
79
+ !dirtyChanged &&
80
+ !touchedChanged &&
81
+ !disabledChanged &&
82
+ !focusedChanged) {
83
+ return;
89
84
  }
90
- else {
91
- formInitialized.current.touched = true;
92
- }
93
- }, formGroupStatus.touched);
94
- useEffect(() => {
95
- if (formInitialized.current.visual) {
96
- setState((state) => ({
97
- ...state,
98
- controls: formGroup.controls
99
- }));
100
- }
101
- else {
102
- formInitialized.current.visual = true;
103
- }
104
- }, formGroupStatus.visual);
85
+ setState((state) => {
86
+ const next = { ...state };
87
+ if (valueChanged) {
88
+ const validResult = refactorForValid(refControls.current, state.validators);
89
+ next.errors = validResult.errors;
90
+ next.valid = validResult.valid;
91
+ next.value = controlsToValue(refControls.current);
92
+ }
93
+ if (dirtyChanged) {
94
+ next.dirty = checkPartialSuccess(formGroupStatus.dirty);
95
+ next.dirties = checkAllSuccess(formGroupStatus.dirty);
96
+ }
97
+ if (touchedChanged) {
98
+ next.touched = checkPartialSuccess(formGroupStatus.touched);
99
+ next.toucheds = checkAllSuccess(formGroupStatus.touched);
100
+ }
101
+ return next;
102
+ });
103
+ });
105
104
  const setValidators = useCallback((validators) => {
106
105
  setState((state) => ({
107
106
  ...state,
108
- ...refactorForValid(state.controls, validators)
107
+ ...refactorForValid(refControls.current, validators),
108
+ validators
109
109
  }));
110
110
  }, []);
111
111
  const setValue = useCallback((value) => {
112
112
  Object.entries(value).forEach(([key, valueControl]) => {
113
- const formControl = formGroup.controls[key];
113
+ const formControl = refControls.current[key];
114
114
  formControl?.setValue(valueControl);
115
115
  });
116
116
  }, []);
117
117
  const reset = useCallback(() => {
118
- Object.values(formGroup.controls).forEach((control) => {
118
+ Object.values(refControls.current).forEach((control) => {
119
119
  control.reset();
120
120
  });
121
121
  }, []);
122
122
  return {
123
123
  ...state,
124
+ controls: formGroup.controls,
124
125
  error: state.errors[0],
125
126
  invalid: !state.valid,
126
127
  pristine: !state.dirty,
@@ -1 +1 @@
1
- {"version":3,"file":"form-group.js","sourceRoot":"","sources":["../../../src/form-group/form-group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-group.js","sourceRoot":"","sources":["../../../src/form-group/form-group.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,33 @@
1
1
  import { createFormControlOptions } from '@rolster/forms/helpers';
2
- import { useEffect } from 'react';
2
+ import { useEffect, useRef } from 'react';
3
3
  import { useInputControl } from '../form-control/form-control';
4
4
  function useInputRefControl(options) {
5
5
  const formRef = useInputControl(options);
6
+ const setValueRef = useRef(options.setValue);
7
+ setValueRef.current = options.setValue;
6
8
  useEffect(() => {
7
- formRef.elementRef?.current?.addEventListener('focus', () => {
9
+ const element = formRef.elementRef?.current;
10
+ if (!element) {
11
+ return;
12
+ }
13
+ const handleFocus = () => {
8
14
  formRef.focus();
9
- });
10
- formRef.elementRef?.current?.addEventListener('blur', () => {
15
+ };
16
+ const handleBlur = () => {
11
17
  formRef.blur();
12
- });
13
- formRef.elementRef?.current?.addEventListener('change', ({ target }) => {
14
- options.setValue(formRef, target.value);
15
- });
18
+ };
19
+ const handleChange = (event) => {
20
+ const target = event.target;
21
+ setValueRef.current(formRef, target.value);
22
+ };
23
+ element.addEventListener('focus', handleFocus);
24
+ element.addEventListener('blur', handleBlur);
25
+ element.addEventListener('change', handleChange);
26
+ return () => {
27
+ element.removeEventListener('focus', handleFocus);
28
+ element.removeEventListener('blur', handleBlur);
29
+ element.removeEventListener('change', handleChange);
30
+ };
16
31
  }, []);
17
32
  return formRef;
18
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"form-ref.js","sourceRoot":"","sources":["../../../src/form-ref/form-ref.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAY/D,SAAS,kBAAkB,CAAU,OAA2B;IAC9D,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1D,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YACzD,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAG,MAA2B,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACjB,CAAC;AAUD,MAAM,UAAU,iBAAiB,CAC/B,OAAiC,EACjC,UAAkC;IAElC,OAAO,kBAAkB,CAAC;QACxB,GAAG,wBAAwB,CACzB,OAAO,EACP,UAAU,CACX;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAUD,MAAM,UAAU,mBAAmB,CACjC,OAAmC,EACnC,UAAkC;IAElC,OAAO,kBAAkB,CAAC;QACxB,GAAG,wBAAwB,CACzB,OAAO,EACP,UAAU,CACX;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"form-ref.js","sourceRoot":"","sources":["../../../src/form-ref/form-ref.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAY/D,SAAS,kBAAkB,CAAU,OAA2B;IAC9D,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC;QAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,KAAY,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;YAEhD,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEF,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7C,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEjD,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAClD,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAChD,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACjB,CAAC;AAUD,MAAM,UAAU,iBAAiB,CAC/B,OAAiC,EACjC,UAAkC;IAElC,OAAO,kBAAkB,CAAC;QACxB,GAAG,wBAAwB,CACzB,OAAO,EACP,UAAU,CACX;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAUD,MAAM,UAAU,mBAAmB,CACjC,OAAmC,EACnC,UAAkC;IAElC,OAAO,kBAAkB,CAAC;QACxB,GAAG,wBAAwB,CACzB,OAAO,EACP,UAAU,CACX;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolster/react-forms",
3
- "version": "19.4.3",
3
+ "version": "19.4.7",
4
4
  "type": "module",
5
5
  "description": "It implements a set of classes that allow managing the control of states of the input components in React",
6
6
  "license": "MIT",
@@ -36,10 +36,10 @@
36
36
  "prepublishOnly": "npm run build"
37
37
  },
38
38
  "dependencies": {
39
- "@rolster/forms": "^4.1.2",
39
+ "@rolster/forms": "^4.1.3",
40
40
  "@rolster/validators": "^3.1.0",
41
41
  "react": "^19.2.0",
42
- "uuid": "^13.0.0"
42
+ "uuid": "^14.0.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@rolster/rollup": "^2.0.0",