linear-react-components-ui 2.0.0-beta.4 → 2.0.0-rc.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 (122) hide show
  1. package/lib/assets/styles/radio.css +1 -1
  2. package/lib/assets/styles/selectfield.css +1 -1
  3. package/lib/assets/styles/split.css +1 -1
  4. package/lib/form2/useForm/index.js +74 -63
  5. package/lib/form2/useForm/index.js.map +1 -1
  6. package/lib/inputs/base/types.d.ts +2 -2
  7. package/lib/inputs/date/helpers.js +11 -22
  8. package/lib/inputs/date/helpers.js.map +1 -1
  9. package/lib/inputs/mask/BaseMask.js +55 -65
  10. package/lib/inputs/mask/BaseMask.js.map +1 -1
  11. package/lib/inputs/mask/types.d.ts +2 -1
  12. package/lib/inputs/number/Currency.js +35 -45
  13. package/lib/inputs/number/Currency.js.map +1 -1
  14. package/lib/inputs/number/Decimal.js +38 -48
  15. package/lib/inputs/number/Decimal.js.map +1 -1
  16. package/lib/inputs/number/index.js +38 -48
  17. package/lib/inputs/number/index.js.map +1 -1
  18. package/lib/inputs/period/helper.d.ts +1 -0
  19. package/lib/inputs/period/helper.js +27 -19
  20. package/lib/inputs/period/helper.js.map +1 -1
  21. package/lib/inputs/period/index.js +143 -139
  22. package/lib/inputs/period/index.js.map +1 -1
  23. package/lib/inputs2/date/datefield/base.js +60 -70
  24. package/lib/inputs2/date/datefield/base.js.map +1 -1
  25. package/lib/inputs2/date/dateperiodfield/base.js +79 -89
  26. package/lib/inputs2/date/dateperiodfield/base.js.map +1 -1
  27. package/lib/inputs2/mask/Cnpj.js +58 -68
  28. package/lib/inputs2/mask/Cnpj.js.map +1 -1
  29. package/lib/inputs2/mask/Cpf.js +38 -48
  30. package/lib/inputs2/mask/Cpf.js.map +1 -1
  31. package/lib/inputs2/mask/index.js +50 -60
  32. package/lib/inputs2/mask/index.js.map +1 -1
  33. package/lib/inputs2/numberfield/currency.js +51 -61
  34. package/lib/inputs2/numberfield/currency.js.map +1 -1
  35. package/lib/inputs2/numberfield/decimal.js +25 -35
  36. package/lib/inputs2/numberfield/decimal.js.map +1 -1
  37. package/lib/inputs2/numberfield/index.js +46 -56
  38. package/lib/inputs2/numberfield/index.js.map +1 -1
  39. package/lib/inputs2/selectfield/base.d.ts +1 -2
  40. package/lib/inputs2/selectfield/base.js +260 -382
  41. package/lib/inputs2/selectfield/base.js.map +1 -1
  42. package/lib/inputs2/selectfield/context.d.ts +1 -1
  43. package/lib/inputs2/selectfield/context.js.map +1 -1
  44. package/lib/inputs2/selectfield/helpers.d.ts +5 -0
  45. package/lib/inputs2/selectfield/helpers.js +22 -13
  46. package/lib/inputs2/selectfield/helpers.js.map +1 -1
  47. package/lib/inputs2/selectfield/index.js.map +1 -1
  48. package/lib/inputs2/selectfield/listbox.js +17 -18
  49. package/lib/inputs2/selectfield/listbox.js.map +1 -1
  50. package/lib/inputs2/selectfield/selections.d.ts +1 -1
  51. package/lib/inputs2/selectfield/selections.js +11 -11
  52. package/lib/inputs2/selectfield/selections.js.map +1 -1
  53. package/lib/inputs2/selectfield/triggers.js +15 -15
  54. package/lib/inputs2/selectfield/triggers.js.map +1 -1
  55. package/lib/radio/index.js +74 -84
  56. package/lib/radio/index.js.map +1 -1
  57. package/lib/table/Row.js +57 -46
  58. package/lib/table/Row.js.map +1 -1
  59. package/lib/table/types.d.ts +2 -1
  60. package/package.json +9 -6
  61. package/lib/node_modules/imask/esm/controls/html-contenteditable-mask-element.js +0 -35
  62. package/lib/node_modules/imask/esm/controls/html-contenteditable-mask-element.js.map +0 -1
  63. package/lib/node_modules/imask/esm/controls/html-input-mask-element.js +0 -32
  64. package/lib/node_modules/imask/esm/controls/html-input-mask-element.js.map +0 -1
  65. package/lib/node_modules/imask/esm/controls/html-mask-element.js +0 -49
  66. package/lib/node_modules/imask/esm/controls/html-mask-element.js.map +0 -1
  67. package/lib/node_modules/imask/esm/controls/input-history.js +0 -31
  68. package/lib/node_modules/imask/esm/controls/input-history.js.map +0 -1
  69. package/lib/node_modules/imask/esm/controls/input.js +0 -223
  70. package/lib/node_modules/imask/esm/controls/input.js.map +0 -1
  71. package/lib/node_modules/imask/esm/controls/mask-element.js +0 -44
  72. package/lib/node_modules/imask/esm/controls/mask-element.js.map +0 -1
  73. package/lib/node_modules/imask/esm/core/action-details.js +0 -52
  74. package/lib/node_modules/imask/esm/core/action-details.js.map +0 -1
  75. package/lib/node_modules/imask/esm/core/change-details.js +0 -37
  76. package/lib/node_modules/imask/esm/core/change-details.js.map +0 -1
  77. package/lib/node_modules/imask/esm/core/continuous-tail-details.js +0 -43
  78. package/lib/node_modules/imask/esm/core/continuous-tail-details.js.map +0 -1
  79. package/lib/node_modules/imask/esm/core/holder.js +0 -7
  80. package/lib/node_modules/imask/esm/core/holder.js.map +0 -1
  81. package/lib/node_modules/imask/esm/core/utils.js +0 -68
  82. package/lib/node_modules/imask/esm/core/utils.js.map +0 -1
  83. package/lib/node_modules/imask/esm/index.js +0 -51
  84. package/lib/node_modules/imask/esm/index.js.map +0 -1
  85. package/lib/node_modules/imask/esm/masked/base.js +0 -253
  86. package/lib/node_modules/imask/esm/masked/base.js.map +0 -1
  87. package/lib/node_modules/imask/esm/masked/date.js +0 -118
  88. package/lib/node_modules/imask/esm/masked/date.js.map +0 -1
  89. package/lib/node_modules/imask/esm/masked/dynamic.js +0 -223
  90. package/lib/node_modules/imask/esm/masked/dynamic.js.map +0 -1
  91. package/lib/node_modules/imask/esm/masked/enum.js +0 -70
  92. package/lib/node_modules/imask/esm/masked/enum.js.map +0 -1
  93. package/lib/node_modules/imask/esm/masked/factory.js +0 -47
  94. package/lib/node_modules/imask/esm/masked/factory.js.map +0 -1
  95. package/lib/node_modules/imask/esm/masked/function.js +0 -24
  96. package/lib/node_modules/imask/esm/masked/function.js.map +0 -1
  97. package/lib/node_modules/imask/esm/masked/number.js +0 -213
  98. package/lib/node_modules/imask/esm/masked/number.js.map +0 -1
  99. package/lib/node_modules/imask/esm/masked/pattern/chunk-tail-details.js +0 -104
  100. package/lib/node_modules/imask/esm/masked/pattern/chunk-tail-details.js.map +0 -1
  101. package/lib/node_modules/imask/esm/masked/pattern/cursor.js +0 -101
  102. package/lib/node_modules/imask/esm/masked/pattern/cursor.js.map +0 -1
  103. package/lib/node_modules/imask/esm/masked/pattern/fixed-definition.js +0 -103
  104. package/lib/node_modules/imask/esm/masked/pattern/fixed-definition.js.map +0 -1
  105. package/lib/node_modules/imask/esm/masked/pattern/input-definition.js +0 -134
  106. package/lib/node_modules/imask/esm/masked/pattern/input-definition.js.map +0 -1
  107. package/lib/node_modules/imask/esm/masked/pattern.js +0 -323
  108. package/lib/node_modules/imask/esm/masked/pattern.js.map +0 -1
  109. package/lib/node_modules/imask/esm/masked/pipe.js +0 -24
  110. package/lib/node_modules/imask/esm/masked/pipe.js.map +0 -1
  111. package/lib/node_modules/imask/esm/masked/range.js +0 -79
  112. package/lib/node_modules/imask/esm/masked/range.js.map +0 -1
  113. package/lib/node_modules/imask/esm/masked/regexp.js +0 -22
  114. package/lib/node_modules/imask/esm/masked/regexp.js.map +0 -1
  115. package/lib/node_modules/imask/esm/masked/repeat.js +0 -105
  116. package/lib/node_modules/imask/esm/masked/repeat.js.map +0 -1
  117. package/lib/node_modules/react-imask/esm/hook.js +0 -76
  118. package/lib/node_modules/react-imask/esm/hook.js.map +0 -1
  119. package/lib/node_modules/react-imask/esm/input.js +0 -24
  120. package/lib/node_modules/react-imask/esm/input.js.map +0 -1
  121. package/lib/node_modules/react-imask/esm/mixin.js +0 -132
  122. package/lib/node_modules/react-imask/esm/mixin.js.map +0 -1
@@ -1 +1 @@
1
- .split-component{font-family:Roboto,sans-serif;font-size:14px;line-height:1.6em;display:flex;flex-direction:row;width:100%;height:100%;overflow:hidden}.split-component p{font-size:14px}.split-component .layout-changing{cursor:col-resize}.split-component .layout-changing>.layout-splitter{background-color:#ddd}.split-component .layout-pane{position:relative;flex:0 0 auto;overflow:auto}.split-component .layout-pane>.layoutpanecontent{padding:2px}.split-component .layout-pane.layout-pane-primary{flex:1 1 auto}.split-component>.layout-splitter{flex:0 0 auto;width:5px;height:100%;cursor:col-resize;background:#ddd}.split-component>.layout-splitter>.toggler-horizontal{position:relative;display:block;padding:0;margin:0;overflow:hidden;text-align:center;font-size:1px;z-index:1;background:#aaa;visibility:visible;height:50px;width:7px;top:45%;left:-1px;cursor:pointer}.split-component>.layout-splitter.layout-splitter:hover{background-color:#bbb}.split-component .layout-changing>.layout-splitter{background-color:#aaa}.split-component.splitter-layout-vertical{flex-direction:column}.split-component.splitter-layout-vertical>.layout-splitter{width:100%;height:5px;cursor:row-resize}.split-component.splitter-layout-vertical>.layout-splitter>.toggler-vertical{border-radius:2px;align-items:center;height:7px;width:54px;align-self:center;margin-left:47%;background:#aaa;margin-top:-1px;cursor:pointer}
1
+ .split-component{font-family:Roboto,sans-serif;font-size:14px;line-height:1.6em;display:flex;flex-direction:row;width:100%;height:100%;overflow:hidden}.split-component p{font-size:14px}.split-component .layout-changing{cursor:col-resize}.split-component .layout-changing>.layout-splitter{background-color:#ddd}.split-component .layout-pane{position:relative;flex:0 0 auto;overflow:auto}.split-component .layout-pane>.layoutpanecontent{padding:2px}.split-component .layout-pane.layout-pane-primary{flex:1 1 auto}.split-component>.layout-splitter{flex:0 0 auto;width:5px;height:100%;cursor:col-resize;background:#ddd}.split-component>.layout-splitter>.toggler-horizontal{position:relative;display:block;padding:0;margin:0;overflow:hidden;text-align:center;font-size:1px;z-index:0;background:#aaa;visibility:visible;height:50px;width:7px;top:45%;left:-1px;cursor:pointer}.split-component>.layout-splitter.layout-splitter:hover{background-color:#bbb}.split-component .layout-changing>.layout-splitter{background-color:#aaa}.split-component.splitter-layout-vertical{flex-direction:column}.split-component.splitter-layout-vertical>.layout-splitter{width:100%;height:5px;cursor:row-resize}.split-component.splitter-layout-vertical>.layout-splitter>.toggler-vertical{border-radius:2px;align-items:center;height:7px;width:54px;align-self:center;margin-left:47%;background:#aaa;margin-top:-1px;cursor:pointer}
@@ -1,67 +1,78 @@
1
1
  import e from "../../_virtual/lodash.js";
2
- import { useState as D, useRef as O } from "react";
2
+ import { useState as D, useRef as B } from "react";
3
3
  import { flattenValidators as Q, deepMergeValues as U, mergeRefs as W } from "../helpers.js";
4
4
  const $ = ({
5
5
  initialValues: S,
6
- validators: M = {},
6
+ validators: q = {},
7
7
  options: C = {
8
8
  validationMode: "default"
9
9
  }
10
10
  }) => {
11
- const [u, V] = D(S), [d, g] = D({}), [F, m] = D({}), [E, j] = D({}), B = O({}), h = O(S), v = O(S), f = Q(M), b = (t, r = E, s = d) => {
12
- const n = Object.keys(f).filter((c) => {
13
- const o = e.get(r, c), a = !e.isEmpty(e.get(s, c));
14
- return !!(o || a);
11
+ const [u, V] = D(S), [f, i] = D({}), [F, m] = D({}), [E, O] = D({}), j = B({}), h = B(S), v = B(S), g = Q(q), w = (t, r = E, s = f) => {
12
+ const n = Object.keys(g).filter((a) => {
13
+ const c = e.get(r, a), o = !e.isEmpty(e.get(s, a));
14
+ return !!(c || o);
15
15
  });
16
- n.length && g((c) => {
17
- const o = e.cloneDeep(c);
18
- return n.forEach((a) => {
19
- const l = e.get(t, a), w = (e.get(f, a) ?? []).map((p) => p(l, t)).filter((p) => !!p);
20
- e.set(o, a, w);
21
- }), o;
16
+ n.length && i((a) => {
17
+ const c = e.cloneDeep(a);
18
+ return n.forEach((o) => {
19
+ const l = e.get(t, o), b = (e.get(g, o) ?? []).map((p) => p(l, t)).filter((p) => !!p);
20
+ e.set(c, o, b);
21
+ }), c;
22
22
  });
23
23
  }, R = () => {
24
24
  const t = {};
25
- return Object.keys(f).forEach((r) => {
26
- const s = e.get(u, r), c = (e.get(f, r) ?? []).map((o) => o(s, u)).filter((o) => !!o);
27
- c.length && e.set(t, r, c);
28
- }), g(t), t;
29
- }, q = () => Object.keys(f).every((t) => {
25
+ return Object.keys(g).forEach((r) => {
26
+ const s = e.get(u, r), a = (e.get(g, r) ?? []).map((c) => c(s, u)).filter((c) => !!c);
27
+ a.length && e.set(t, r, a);
28
+ }), i(t), t;
29
+ }, T = () => Object.keys(g).every((t) => {
30
30
  const r = e.get(u, t);
31
- return (e.get(f, t) ?? []).every((n) => !n(r, u));
32
- }), k = (t) => e.get(d, t) ?? [], x = (t) => {
33
- g((r) => {
31
+ return (e.get(g, t) ?? []).every((n) => !n(r, u));
32
+ }), k = (t) => e.get(f, t) ?? [], x = (t) => {
33
+ i((r) => {
34
34
  const s = e.cloneDeep(r);
35
- return Object.entries(t).forEach(([n, c]) => {
36
- e.set(s, n, c);
35
+ return Object.entries(t).forEach(([n, a]) => {
36
+ e.set(s, n, a);
37
37
  }), s;
38
38
  });
39
39
  }, I = (t) => e.get(u, t), A = (t, r) => {
40
40
  V((s) => {
41
41
  const n = e.cloneDeep(s);
42
42
  e.set(n, t, r);
43
- const c = e.get(v.current, t), o = !e.isEqual(c, r);
44
- return m((a) => {
45
- const l = e.cloneDeep(a);
46
- return e.set(l, t, o), l;
47
- }), C.validationMode === "default" && b(n), n;
43
+ const a = e.get(v.current, t), c = !e.isEqual(a, r);
44
+ return m((o) => {
45
+ const l = e.cloneDeep(o);
46
+ return e.set(l, t, c), l;
47
+ }), C.validationMode === "default" && w(n), n;
48
48
  });
49
49
  }, H = (t, r) => {
50
- const s = B.current[t];
50
+ const s = j.current[t];
51
51
  s?.focus?.(), r?.shouldSelect && s?.select?.();
52
52
  }, z = (t, r) => e.isEqual(e.get(u, t), r), G = (t) => {
53
- const r = e.cloneDeep(d);
54
- (t ?? Object.keys(d)).forEach((n) => {
55
- e.set(r, n, []);
56
- }), g(r);
57
- }, T = (t, r) => {
58
- const s = e.cloneDeep(u), n = e.cloneDeep(E), c = e.cloneDeep(F), o = e.cloneDeep(d);
59
- (t ?? Object.keys(h.current)).forEach((l) => {
60
- const i = e.get(h.current, l);
61
- e.set(s, l, i), e.set(n, l, !1), e.set(c, l, !1), e.set(o, l, []);
62
- }), V(s), j(n), m(c), g(o), r || (v.current = h.current);
53
+ if (!t) {
54
+ i({});
55
+ return;
56
+ }
57
+ i((r) => {
58
+ const s = e.cloneDeep(r);
59
+ return t.forEach((n) => {
60
+ e.unset(s, n);
61
+ }), s;
62
+ });
63
+ }, y = (t, r) => {
64
+ const s = e.cloneDeep(u), n = e.cloneDeep(E), a = e.cloneDeep(F);
65
+ (t ?? Object.keys(h.current)).forEach((o) => {
66
+ const l = e.get(h.current, o);
67
+ e.set(s, o, l), e.set(n, o, !1), e.set(a, o, !1);
68
+ }), V(s), O(n), m(a), i(t ? (o) => {
69
+ const l = e.cloneDeep(o);
70
+ return t.forEach((d) => {
71
+ e.unset(l, d);
72
+ }), l;
73
+ } : {}), r || (v.current = h.current);
63
74
  }, J = (t) => {
64
- T(void 0, !0), V((r) => {
75
+ y(void 0, !0), V((r) => {
65
76
  const s = U(r, t);
66
77
  return v.current = s, s;
67
78
  });
@@ -69,47 +80,47 @@ const $ = ({
69
80
  const {
70
81
  onChange: s,
71
82
  onBlur: n,
72
- ref: c
83
+ ref: a
73
84
  } = r ?? {};
74
85
  return {
75
86
  name: t,
76
- ref: W((o) => {
77
- B.current[t] = o;
78
- }, c),
87
+ ref: W((c) => {
88
+ j.current[t] = c;
89
+ }, a),
79
90
  value: e.get(u, t, e.get(h.current, t, "")),
80
- errors: e.get(d, t, []),
81
- onChange: (o) => {
91
+ errors: e.get(f, t, []),
92
+ onChange: (c) => {
82
93
  const {
83
- value: a
84
- } = o.target;
94
+ value: o
95
+ } = c.target;
85
96
  V((l) => {
86
- const i = e.cloneDeep(l);
87
- e.set(i, t, a);
88
- const w = !e.isEqual(e.get(v.current, t), a);
97
+ const d = e.cloneDeep(l);
98
+ e.set(d, t, o);
99
+ const b = !e.isEqual(e.get(v.current, t), o);
89
100
  return m((p) => {
90
- const y = e.cloneDeep(p);
91
- return e.set(y, t, w), y;
92
- }), C.validationMode === "default" && b(i, E, d), i;
93
- }), s?.(o);
101
+ const M = e.cloneDeep(p);
102
+ return e.set(M, t, b), M;
103
+ }), C.validationMode === "default" && w(d, E, f), d;
104
+ }), s?.(c);
94
105
  },
95
- onBlur: (o) => {
96
- const a = e.cloneDeep(E);
97
- e.set(a, t, !0), j((l) => {
98
- const i = e.cloneDeep(l);
99
- return e.set(i, t, !0), i;
100
- }), C.validationMode === "default" && b(u, a, d), n?.(o);
106
+ onBlur: (c) => {
107
+ const o = e.cloneDeep(E);
108
+ e.set(o, t, !0), O((l) => {
109
+ const d = e.cloneDeep(l);
110
+ return e.set(d, t, !0), d;
111
+ }), C.validationMode === "default" && w(u, o, f), n?.(c);
101
112
  }
102
113
  };
103
114
  }, L = (t) => (r) => {
104
115
  r.preventDefault();
105
116
  const s = R();
106
117
  e.isEmpty(s) && t(u);
107
- }, N = q(), P = Object.values(F).some(Boolean);
118
+ }, N = T(), P = Object.values(F).some(Boolean);
108
119
  return {
109
- reset: T,
120
+ reset: y,
110
121
  changed: F,
111
122
  values: u,
112
- errors: d,
123
+ errors: f,
113
124
  touched: E,
114
125
  isValid: N,
115
126
  formHasChange: P,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/lib/form2/useForm/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { ChangeEvent, FocusEvent, FormEvent, useRef, useState } from 'react';\nimport type {\n FieldErrors, FieldChanged, FieldTouched, FieldFocusOptions, UseFormProps,\n UseFormReturn, DeepPartial,\n RegisterOptions,\n} from '../types';\nimport { deepMergeValues, flattenValidators, mergeRefs } from '../helpers';\n\nconst useForm = <ValuesType extends Record<string, any>>({\n initialValues,\n validators = {},\n options = { validationMode: 'default' },\n}: UseFormProps<ValuesType>): UseFormReturn<ValuesType> => {\n const [values, setValues] = useState<ValuesType>(initialValues);\n const [errors, setErrors] = useState<FieldErrors<ValuesType>>({});\n const [changed, setChanged] = useState<FieldChanged<ValuesType>>({});\n const [touched, setTouched] = useState<FieldTouched<ValuesType>>({});\n const fieldsRef = useRef<Record<string, HTMLInputElement | HTMLTextAreaElement | null>>({});\n const initialValuesRef = useRef<ValuesType>(initialValues);\n const valuesToCompareInChangedRef = useRef<ValuesType>(initialValues);\n\n const flattenedValidators = flattenValidators(validators);\n\n const validateBatchOfFields = (\n valuesSnapshot: ValuesType,\n touchedFields: FieldTouched<ValuesType> = touched,\n errorsFields: FieldErrors<ValuesType> = errors,\n ) => {\n const fieldsToValidate = Object.keys(flattenedValidators).filter((path) => {\n const wasTouched = _.get(touchedFields, path);\n const hasErrors = !_.isEmpty(_.get(errorsFields, path));\n return Boolean(wasTouched || hasErrors);\n });\n\n if (!fieldsToValidate.length) return;\n\n setErrors((prevErrorsState) => {\n const updatedErrorsState = _.cloneDeep(prevErrorsState);\n\n fieldsToValidate.forEach((path) => {\n const value = _.get(valuesSnapshot, path);\n const fieldValidators = _.get(flattenedValidators, path) ?? [];\n const fieldErrors = fieldValidators\n .map((validator: any) => validator(value, valuesSnapshot))\n .filter((message: string) => Boolean(message));\n\n _.set(updatedErrorsState, path, fieldErrors);\n });\n\n return updatedErrorsState;\n });\n };\n\n const validateAllFields = () => {\n const allValidationErrors: FieldErrors<ValuesType> = {};\n\n Object.keys(flattenedValidators).forEach((path) => {\n const value = _.get(values, path);\n const fieldValidators = _.get(flattenedValidators, path) ?? [];\n const fieldErrors = fieldValidators\n .map((validator: any) => validator(value, values))\n .filter((message: string) => Boolean(message));\n\n if (fieldErrors.length) {\n _.set(allValidationErrors, path, fieldErrors);\n }\n });\n\n setErrors(allValidationErrors);\n return allValidationErrors;\n };\n\n const checkFormIsValid = () => {\n return Object.keys(flattenedValidators).every((path) => {\n const value = _.get(values, path);\n const fieldValidators = _.get(flattenedValidators, path) ?? [];\n return fieldValidators.every((validator: any) => !validator(value, values));\n });\n };\n\n const getFieldError = (name: string): string[] => {\n const fieldErrors = _.get(errors, name) as string[] ?? [];\n return fieldErrors;\n };\n\n const setExternalErrors = (externalErrors: Record<string, string[]>) => {\n setErrors((prevStateErrors) => {\n const newErrorsState = _.cloneDeep(prevStateErrors);\n Object.entries(externalErrors).forEach(([key, value]) => {\n _.set(newErrorsState, key, value);\n });\n return newErrorsState;\n });\n };\n\n const getFieldValue = (name: string): any => {\n return _.get(values, name);\n };\n\n const setFieldValue = (name: string, value: any) => {\n setValues((prevStateValues) => {\n const updatedValuesState = _.cloneDeep(prevStateValues);\n _.set(updatedValuesState, name, value);\n\n const valueToCompare = _.get(valuesToCompareInChangedRef.current, name);\n const hasChanged = !_.isEqual(valueToCompare, value);\n\n setChanged((prevStateChanged) => {\n const updatedChangedState = _.cloneDeep(prevStateChanged);\n _.set(updatedChangedState, name, hasChanged);\n return updatedChangedState;\n });\n\n if (options.validationMode === 'default') {\n validateBatchOfFields(updatedValuesState);\n }\n\n return updatedValuesState;\n });\n };\n\n const setFieldFocus = (name: string, fieldFocusOptions?: FieldFocusOptions) => {\n const field = fieldsRef.current[name];\n field?.focus?.();\n if (fieldFocusOptions?.shouldSelect) {\n field?.select?.();\n }\n };\n\n const compareField = (name: string, valueToCompare: any): boolean => {\n return _.isEqual(_.get(values, name), valueToCompare);\n };\n\n const cleanErrors = (fieldsToClean?: string[]) => {\n const newErrorsState = _.cloneDeep(errors);\n const fields = fieldsToClean ?? Object.keys(errors);\n\n fields.forEach((key) => {\n _.set(newErrorsState, key, []);\n });\n\n setErrors(newErrorsState);\n };\n\n const reset = (inputsToReset?: string[], internalReset?: boolean) => {\n const newValuesState = _.cloneDeep(values);\n const newTouchedState = _.cloneDeep(touched);\n const newChangedState = _.cloneDeep(changed);\n const newErrorsState = _.cloneDeep(errors);\n const inputs = inputsToReset ?? Object.keys(initialValuesRef.current);\n\n inputs.forEach((key) => {\n const initialValue = _.get(initialValuesRef.current, key);\n _.set(newValuesState, key, initialValue);\n _.set(newTouchedState, key, false);\n _.set(newChangedState, key, false);\n _.set(newErrorsState, key, []);\n });\n\n setValues(newValuesState);\n setTouched(newTouchedState);\n setChanged(newChangedState);\n setErrors(newErrorsState);\n\n if (!internalReset) { valuesToCompareInChangedRef.current = initialValuesRef.current; }\n };\n\n const changeValues = (fieldValues: DeepPartial<ValuesType>) => {\n reset(undefined, true);\n setValues((prevStateValues) => {\n const newValuesState = deepMergeValues(prevStateValues, fieldValues);\n valuesToCompareInChangedRef.current = newValuesState;\n return newValuesState;\n });\n };\n\n const register = (\n name: string,\n registerOptions?: RegisterOptions,\n ) => {\n const { onChange, onBlur, ref } = registerOptions ?? {};\n return {\n name,\n ref: mergeRefs<HTMLInputElement | HTMLTextAreaElement>((inputElement: any) => {\n fieldsRef.current[name] = inputElement;\n }, ref),\n value: _.get(values, name, _.get(initialValuesRef.current, name, '')),\n errors: _.get(errors, name, []),\n onChange: (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { value } = event.target;\n\n setValues((prevStateValues) => {\n const updatedValues = _.cloneDeep(prevStateValues);\n _.set(updatedValues, name, value);\n\n const hasChanged = !_.isEqual(_.get(valuesToCompareInChangedRef.current, name), value);\n setChanged((prevStateChanged) => {\n const updatedChangedState = _.cloneDeep(prevStateChanged);\n _.set(updatedChangedState, name, hasChanged);\n return updatedChangedState;\n });\n\n if (options.validationMode === 'default') {\n validateBatchOfFields(updatedValues, touched, errors);\n }\n\n return updatedValues;\n });\n\n onChange?.(event);\n },\n onBlur: (event: FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const touchedSnapshot = _.cloneDeep(touched);\n _.set(touchedSnapshot, name, true);\n\n setTouched((prevStateTouched) => {\n const updated = _.cloneDeep(prevStateTouched);\n _.set(updated, name, true);\n return updated;\n });\n\n if (options.validationMode === 'default') {\n validateBatchOfFields(values, touchedSnapshot, errors);\n }\n\n onBlur?.(event);\n },\n };\n };\n\n const handleSubmit = (callback: (data: ValuesType) => void) => (event: FormEvent) => {\n event.preventDefault();\n\n const validationErrors = validateAllFields();\n const hasErrors = !_.isEmpty(validationErrors);\n\n if (hasErrors) return;\n callback(values);\n };\n\n const isValid = checkFormIsValid();\n const formHasChange = Object.values(changed).some(Boolean);\n\n return {\n reset,\n changed,\n values,\n errors,\n touched,\n isValid,\n formHasChange,\n register,\n cleanErrors,\n changeValues,\n compareField,\n handleSubmit,\n getFieldValue,\n getFieldError,\n setFieldFocus,\n setFieldValue,\n setExternalErrors,\n initialValues: initialValuesRef.current,\n };\n};\n\nexport default useForm;\n"],"names":["useForm","initialValues","validators","options","validationMode","values","setValues","useState","errors","setErrors","changed","setChanged","touched","setTouched","fieldsRef","useRef","initialValuesRef","valuesToCompareInChangedRef","flattenedValidators","flattenValidators","validateBatchOfFields","valuesSnapshot","touchedFields","errorsFields","fieldsToValidate","Object","keys","filter","path","wasTouched","_","get","hasErrors","isEmpty","Boolean","length","prevErrorsState","updatedErrorsState","cloneDeep","forEach","value","fieldErrors","map","validator","message","set","validateAllFields","allValidationErrors","checkFormIsValid","every","getFieldError","name","setExternalErrors","externalErrors","prevStateErrors","newErrorsState","entries","key","getFieldValue","setFieldValue","prevStateValues","updatedValuesState","valueToCompare","current","hasChanged","isEqual","prevStateChanged","updatedChangedState","setFieldFocus","fieldFocusOptions","field","focus","shouldSelect","select","compareField","cleanErrors","fieldsToClean","fields","reset","inputsToReset","internalReset","newValuesState","newTouchedState","newChangedState","inputs","initialValue","changeValues","fieldValues","undefined","deepMergeValues","register","registerOptions","onChange","onBlur","ref","mergeRefs","inputElement","event","target","updatedValues","touchedSnapshot","prevStateTouched","updated","handleSubmit","callback","preventDefault","validationErrors","isValid","formHasChange","some"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/lib/form2/useForm/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { ChangeEvent, FocusEvent, FormEvent, useRef, useState } from 'react';\nimport type {\n FieldErrors, FieldChanged, FieldTouched, FieldFocusOptions, UseFormProps,\n UseFormReturn, DeepPartial,\n RegisterOptions,\n} from '../types';\nimport { deepMergeValues, flattenValidators, mergeRefs } from '../helpers';\n\nconst useForm = <ValuesType extends Record<string, any>>({\n initialValues,\n validators = {},\n options = { validationMode: 'default' },\n}: UseFormProps<ValuesType>): UseFormReturn<ValuesType> => {\n const [values, setValues] = useState<ValuesType>(initialValues);\n const [errors, setErrors] = useState<FieldErrors<ValuesType>>({});\n const [changed, setChanged] = useState<FieldChanged<ValuesType>>({});\n const [touched, setTouched] = useState<FieldTouched<ValuesType>>({});\n const fieldsRef = useRef<Record<string, HTMLInputElement | HTMLTextAreaElement | null>>({});\n const initialValuesRef = useRef<ValuesType>(initialValues);\n const valuesToCompareInChangedRef = useRef<ValuesType>(initialValues);\n\n const flattenedValidators = flattenValidators(validators);\n\n const validateBatchOfFields = (\n valuesSnapshot: ValuesType,\n touchedFields: FieldTouched<ValuesType> = touched,\n errorsFields: FieldErrors<ValuesType> = errors,\n ) => {\n const fieldsToValidate = Object.keys(flattenedValidators).filter((path) => {\n const wasTouched = _.get(touchedFields, path);\n const hasErrors = !_.isEmpty(_.get(errorsFields, path));\n return Boolean(wasTouched || hasErrors);\n });\n\n if (!fieldsToValidate.length) return;\n\n setErrors((prevErrorsState) => {\n const updatedErrorsState = _.cloneDeep(prevErrorsState);\n\n fieldsToValidate.forEach((path) => {\n const value = _.get(valuesSnapshot, path);\n const fieldValidators = _.get(flattenedValidators, path) ?? [];\n const fieldErrors = fieldValidators\n .map((validator: any) => validator(value, valuesSnapshot))\n .filter((message: string) => Boolean(message));\n\n _.set(updatedErrorsState, path, fieldErrors);\n });\n\n return updatedErrorsState;\n });\n };\n\n const validateAllFields = () => {\n const allValidationErrors: FieldErrors<ValuesType> = {};\n\n Object.keys(flattenedValidators).forEach((path) => {\n const value = _.get(values, path);\n const fieldValidators = _.get(flattenedValidators, path) ?? [];\n const fieldErrors = fieldValidators\n .map((validator: any) => validator(value, values))\n .filter((message: string) => Boolean(message));\n\n if (fieldErrors.length) {\n _.set(allValidationErrors, path, fieldErrors);\n }\n });\n\n setErrors(allValidationErrors);\n return allValidationErrors;\n };\n\n const checkFormIsValid = () => {\n return Object.keys(flattenedValidators).every((path) => {\n const value = _.get(values, path);\n const fieldValidators = _.get(flattenedValidators, path) ?? [];\n return fieldValidators.every((validator: any) => !validator(value, values));\n });\n };\n\n const getFieldError = (name: string): string[] => {\n const fieldErrors = _.get(errors, name) as string[] ?? [];\n return fieldErrors;\n };\n\n const setExternalErrors = (externalErrors: Record<string, string[]>) => {\n setErrors((prevStateErrors) => {\n const newErrorsState = _.cloneDeep(prevStateErrors);\n Object.entries(externalErrors).forEach(([key, value]) => {\n _.set(newErrorsState, key, value);\n });\n return newErrorsState;\n });\n };\n\n const getFieldValue = (name: string): any => {\n return _.get(values, name);\n };\n\n const setFieldValue = (name: string, value: any) => {\n setValues((prevStateValues) => {\n const updatedValuesState = _.cloneDeep(prevStateValues);\n _.set(updatedValuesState, name, value);\n\n const valueToCompare = _.get(valuesToCompareInChangedRef.current, name);\n const hasChanged = !_.isEqual(valueToCompare, value);\n\n setChanged((prevStateChanged) => {\n const updatedChangedState = _.cloneDeep(prevStateChanged);\n _.set(updatedChangedState, name, hasChanged);\n return updatedChangedState;\n });\n\n if (options.validationMode === 'default') {\n validateBatchOfFields(updatedValuesState);\n }\n\n return updatedValuesState;\n });\n };\n\n const setFieldFocus = (name: string, fieldFocusOptions?: FieldFocusOptions) => {\n const field = fieldsRef.current[name];\n field?.focus?.();\n if (fieldFocusOptions?.shouldSelect) {\n field?.select?.();\n }\n };\n\n const compareField = (name: string, valueToCompare: any): boolean => {\n return _.isEqual(_.get(values, name), valueToCompare);\n };\n\n const cleanErrors = (fieldsToClean?: string[]) => {\n if (!fieldsToClean) {\n setErrors({});\n return;\n }\n\n setErrors((prevErrorsState) => {\n const newErrorsState = _.cloneDeep(prevErrorsState);\n fieldsToClean.forEach((key) => {\n _.unset(newErrorsState, key);\n });\n return newErrorsState;\n });\n };\n\n const reset = (inputsToReset?: string[], internalReset?: boolean) => {\n const newValuesState = _.cloneDeep(values);\n const newTouchedState = _.cloneDeep(touched);\n const newChangedState = _.cloneDeep(changed);\n const inputs = inputsToReset ?? Object.keys(initialValuesRef.current);\n\n inputs.forEach((key) => {\n const initialValue = _.get(initialValuesRef.current, key);\n _.set(newValuesState, key, initialValue);\n _.set(newTouchedState, key, false);\n _.set(newChangedState, key, false);\n });\n\n setValues(newValuesState);\n setTouched(newTouchedState);\n setChanged(newChangedState);\n\n if (inputsToReset) {\n setErrors((prevErrorsState) => {\n const newErrorsState = _.cloneDeep(prevErrorsState);\n inputsToReset.forEach((key) => {\n _.unset(newErrorsState, key);\n });\n return newErrorsState;\n });\n } else {\n setErrors({});\n }\n\n if (!internalReset) { valuesToCompareInChangedRef.current = initialValuesRef.current; }\n };\n\n const changeValues = (fieldValues: DeepPartial<ValuesType>) => {\n reset(undefined, true);\n setValues((prevStateValues) => {\n const newValuesState = deepMergeValues(prevStateValues, fieldValues);\n valuesToCompareInChangedRef.current = newValuesState;\n return newValuesState;\n });\n };\n\n const register = (\n name: string,\n registerOptions?: RegisterOptions,\n ) => {\n const { onChange, onBlur, ref } = registerOptions ?? {};\n return {\n name,\n ref: mergeRefs<HTMLInputElement | HTMLTextAreaElement>((inputElement: any) => {\n fieldsRef.current[name] = inputElement;\n }, ref),\n value: _.get(values, name, _.get(initialValuesRef.current, name, '')),\n errors: _.get(errors, name, []),\n onChange: (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { value } = event.target;\n\n setValues((prevStateValues) => {\n const updatedValues = _.cloneDeep(prevStateValues);\n _.set(updatedValues, name, value);\n\n const hasChanged = !_.isEqual(_.get(valuesToCompareInChangedRef.current, name), value);\n setChanged((prevStateChanged) => {\n const updatedChangedState = _.cloneDeep(prevStateChanged);\n _.set(updatedChangedState, name, hasChanged);\n return updatedChangedState;\n });\n\n if (options.validationMode === 'default') {\n validateBatchOfFields(updatedValues, touched, errors);\n }\n\n return updatedValues;\n });\n\n onChange?.(event);\n },\n onBlur: (event: FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const touchedSnapshot = _.cloneDeep(touched);\n _.set(touchedSnapshot, name, true);\n\n setTouched((prevStateTouched) => {\n const updated = _.cloneDeep(prevStateTouched);\n _.set(updated, name, true);\n return updated;\n });\n\n if (options.validationMode === 'default') {\n validateBatchOfFields(values, touchedSnapshot, errors);\n }\n\n onBlur?.(event);\n },\n };\n };\n\n const handleSubmit = (callback: (data: ValuesType) => void) => (event: FormEvent) => {\n event.preventDefault();\n\n const validationErrors = validateAllFields();\n const hasErrors = !_.isEmpty(validationErrors);\n\n if (hasErrors) return;\n callback(values);\n };\n\n const isValid = checkFormIsValid();\n const formHasChange = Object.values(changed).some(Boolean);\n\n return {\n reset,\n changed,\n values,\n errors,\n touched,\n isValid,\n formHasChange,\n register,\n cleanErrors,\n changeValues,\n compareField,\n handleSubmit,\n getFieldValue,\n getFieldError,\n setFieldFocus,\n setFieldValue,\n setExternalErrors,\n initialValues: initialValuesRef.current,\n };\n};\n\nexport default useForm;\n"],"names":["useForm","initialValues","validators","options","validationMode","values","setValues","useState","errors","setErrors","changed","setChanged","touched","setTouched","fieldsRef","useRef","initialValuesRef","valuesToCompareInChangedRef","flattenedValidators","flattenValidators","validateBatchOfFields","valuesSnapshot","touchedFields","errorsFields","fieldsToValidate","Object","keys","filter","path","wasTouched","_","get","hasErrors","isEmpty","Boolean","length","prevErrorsState","updatedErrorsState","cloneDeep","forEach","value","fieldErrors","map","validator","message","set","validateAllFields","allValidationErrors","checkFormIsValid","every","getFieldError","name","setExternalErrors","externalErrors","prevStateErrors","newErrorsState","entries","key","getFieldValue","setFieldValue","prevStateValues","updatedValuesState","valueToCompare","current","hasChanged","isEqual","prevStateChanged","updatedChangedState","setFieldFocus","fieldFocusOptions","field","focus","shouldSelect","select","compareField","cleanErrors","fieldsToClean","unset","reset","inputsToReset","internalReset","newValuesState","newTouchedState","newChangedState","inputs","initialValue","changeValues","fieldValues","undefined","deepMergeValues","register","registerOptions","onChange","onBlur","ref","mergeRefs","inputElement","event","target","updatedValues","touchedSnapshot","prevStateTouched","updated","handleSubmit","callback","preventDefault","validationErrors","isValid","formHasChange","some"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CSSProperties, KeyboardEvent, MutableRefObject, RefObject, DragEvent, MouseEvent, JSX, ReactNode } from 'react';
1
+ import { CSSProperties, KeyboardEvent, MutableRefObject, RefObject, DragEvent, MouseEvent, JSX, ReactNode, HTMLInputAutoCompleteAttribute } from 'react';
2
2
  import { TextAlign } from 'src/lib/@types/Align';
3
3
  import { ITooltipCommonProps } from 'src/lib/tooltip/types';
4
4
  import { Period } from '../../@types/Period';
@@ -80,9 +80,9 @@ export interface IBaseProps extends ITooltipCommonProps {
80
80
  accept?: string;
81
81
  multiple?: boolean;
82
82
  readOnlyClass?: string;
83
- autoComplete?: 'on' | 'off';
84
83
  themePopover?: 'light' | 'dark';
85
84
  popoverAlign?: 'right' | 'left';
86
85
  tabIndex?: number;
87
86
  defaultValue?: string | string[];
87
+ autoComplete?: HTMLInputAutoCompleteAttribute;
88
88
  }
@@ -1,20 +1,9 @@
1
1
  import t from "../../node_modules/moment/dist/moment.js";
2
- import "../../node_modules/imask/esm/index.js";
3
- import "../../node_modules/imask/esm/controls/input.js";
4
- import m from "../../node_modules/imask/esm/core/holder.js";
5
- import "../../node_modules/imask/esm/masked/factory.js";
6
- import "../../node_modules/imask/esm/controls/mask-element.js";
7
- import "../../node_modules/imask/esm/controls/html-input-mask-element.js";
8
- import "../../node_modules/imask/esm/controls/html-mask-element.js";
9
- import "../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js";
10
- import "../../node_modules/imask/esm/controls/input-history.js";
11
- import "../../node_modules/react-imask/esm/input.js";
12
- import "react";
13
- import "../../node_modules/react-imask/esm/mixin.js";
14
- const r = "DD/MM/YYYY", g = "DD/MM/YYYY HH:mm", a = "YYYY-MM-DD", d = "YYYY-MM-DD HH.mm", A = (M) => {
15
- let o = M;
16
- return t(o, r, !0).isValid() && (o = t(o, r).format(r)), typeof o == "string" ? t(o, a) : o;
17
- }, E = {
2
+ import { IMask as m } from "react-imask";
3
+ const M = "DD/MM/YYYY", r = "DD/MM/YYYY HH:mm", e = "YYYY-MM-DD", n = "YYYY-MM-DD HH.mm", k = (a) => {
4
+ let o = a;
5
+ return t(o, M, !0).isValid() && (o = t(o, M).format(M)), typeof o == "string" ? t(o, e) : o;
6
+ }, D = {
18
7
  DD: {
19
8
  mask: m.MaskedRange,
20
9
  from: 1,
@@ -42,11 +31,11 @@ const r = "DD/MM/YYYY", g = "DD/MM/YYYY HH:mm", a = "YYYY-MM-DD", d = "YYYY-MM-D
42
31
  }
43
32
  };
44
33
  export {
45
- a as EN_US_FORMAT,
46
- d as EN_US_FORMAT_DATETIME,
47
- r as PT_BR_FORMAT,
48
- g as PT_BR_FORMAT_DATETIME,
49
- E as blocksDateTimeFormat,
50
- A as getMomentValue
34
+ e as EN_US_FORMAT,
35
+ n as EN_US_FORMAT_DATETIME,
36
+ M as PT_BR_FORMAT,
37
+ r as PT_BR_FORMAT_DATETIME,
38
+ D as blocksDateTimeFormat,
39
+ k as getMomentValue
51
40
  };
52
41
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/lib/inputs/date/helpers.ts"],"sourcesContent":["import moment from 'moment';\nimport { IMask } from 'react-imask';\n\nconst PT_BR_FORMAT = 'DD/MM/YYYY';\nconst PT_BR_FORMAT_DATETIME = 'DD/MM/YYYY HH:mm';\nconst EN_US_FORMAT = 'YYYY-MM-DD';\nconst EN_US_FORMAT_DATETIME = 'YYYY-MM-DD HH.mm';\n\nconst getMomentValue = (value: string) => {\n let newValue = value;\n if (moment(newValue, PT_BR_FORMAT, true).isValid()) {\n newValue = moment(newValue, PT_BR_FORMAT).format(PT_BR_FORMAT);\n }\n\n return (typeof newValue === 'string' ? moment(newValue, EN_US_FORMAT) : newValue);\n};\n\nconst blocksDateTimeFormat = {\n DD: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n YYYY: {\n mask: IMask.MaskedRange,\n from: 1900,\n to: 2999,\n },\n HH: {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm: {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n};\n\nexport {\n getMomentValue,\n blocksDateTimeFormat,\n PT_BR_FORMAT,\n PT_BR_FORMAT_DATETIME,\n EN_US_FORMAT,\n EN_US_FORMAT_DATETIME,\n};\n"],"names":["PT_BR_FORMAT","PT_BR_FORMAT_DATETIME","EN_US_FORMAT","EN_US_FORMAT_DATETIME","getMomentValue","value","newValue","moment","isValid","format","blocksDateTimeFormat","DD","mask","IMask","MaskedRange","from","to","MM","YYYY","HH","mm"],"mappings":";;;;;;;;;;;;;AAGA,MAAMA,IAAe,cACfC,IAAwB,oBACxBC,IAAe,cACfC,IAAwB,oBAExBC,IAAiBA,CAACC,MAAkB;AACxC,MAAIC,IAAWD;AACf,SAAIE,EAAOD,GAAUN,GAAc,EAAI,EAAEQ,cACvCF,IAAWC,EAAOD,GAAUN,CAAY,EAAES,OAAOT,CAAY,IAGvD,OAAOM,KAAa,WAAWC,EAAOD,GAAUJ,CAAY,IAAII;AAC1E,GAEMI,IAAuB;AAAA,EAC3BC,IAAI;AAAA,IACFC,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAAA,EAENC,IAAI;AAAA,IACFL,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAAA,EAENE,MAAM;AAAA,IACJN,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAAA,EAENG,IAAI;AAAA,IACFP,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAAA,EAENI,IAAI;AAAA,IACFR,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/lib/inputs/date/helpers.ts"],"sourcesContent":["import moment from 'moment';\nimport { IMask } from 'react-imask';\n\nconst PT_BR_FORMAT = 'DD/MM/YYYY';\nconst PT_BR_FORMAT_DATETIME = 'DD/MM/YYYY HH:mm';\nconst EN_US_FORMAT = 'YYYY-MM-DD';\nconst EN_US_FORMAT_DATETIME = 'YYYY-MM-DD HH.mm';\n\nconst getMomentValue = (value: string) => {\n let newValue = value;\n if (moment(newValue, PT_BR_FORMAT, true).isValid()) {\n newValue = moment(newValue, PT_BR_FORMAT).format(PT_BR_FORMAT);\n }\n\n return (typeof newValue === 'string' ? moment(newValue, EN_US_FORMAT) : newValue);\n};\n\nconst blocksDateTimeFormat = {\n DD: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n YYYY: {\n mask: IMask.MaskedRange,\n from: 1900,\n to: 2999,\n },\n HH: {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm: {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n};\n\nexport {\n getMomentValue,\n blocksDateTimeFormat,\n PT_BR_FORMAT,\n PT_BR_FORMAT_DATETIME,\n EN_US_FORMAT,\n EN_US_FORMAT_DATETIME,\n};\n"],"names":["PT_BR_FORMAT","PT_BR_FORMAT_DATETIME","EN_US_FORMAT","EN_US_FORMAT_DATETIME","getMomentValue","value","newValue","moment","isValid","format","blocksDateTimeFormat","DD","mask","IMask","MaskedRange","from","to","MM","YYYY","HH","mm"],"mappings":";;AAGA,MAAMA,IAAe,cACfC,IAAwB,oBACxBC,IAAe,cACfC,IAAwB,oBAExBC,IAAiBA,CAACC,MAAkB;AACxC,MAAIC,IAAWD;AACf,SAAIE,EAAOD,GAAUN,GAAc,EAAI,EAAEQ,cACvCF,IAAWC,EAAOD,GAAUN,CAAY,EAAES,OAAOT,CAAY,IAGvD,OAAOM,KAAa,WAAWC,EAAOD,GAAUJ,CAAY,IAAII;AAC1E,GAEMI,IAAuB;AAAA,EAC3BC,IAAI;AAAA,IACFC,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAAA,EAENC,IAAI;AAAA,IACFL,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAAA,EAENE,MAAM;AAAA,IACJN,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAAA,EAENG,IAAI;AAAA,IACFP,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAAA,EAENI,IAAI;AAAA,IACFR,MAAMC,EAAMC;AAAAA,IACZC,MAAM;AAAA,IACNC,IAAI;AAAA,EAAA;AAER;"}
@@ -1,105 +1,95 @@
1
- import { jsx as S } from "react/jsx-runtime";
2
- import { useEffect as h } from "react";
3
- import "../../node_modules/imask/esm/index.js";
4
- import "../../node_modules/imask/esm/controls/input.js";
5
- import "../../node_modules/imask/esm/masked/factory.js";
6
- import "../../node_modules/imask/esm/controls/mask-element.js";
7
- import "../../node_modules/imask/esm/controls/html-input-mask-element.js";
8
- import "../../node_modules/imask/esm/controls/html-mask-element.js";
9
- import "../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js";
10
- import "../../node_modules/imask/esm/controls/input-history.js";
11
- import "../../node_modules/react-imask/esm/input.js";
12
- import B from "../../node_modules/react-imask/esm/hook.js";
13
- import "../../node_modules/react-imask/esm/mixin.js";
14
- import M from "../base/InputTextBase.js";
1
+ import { jsx as h } from "react/jsx-runtime";
2
+ import { useEffect as B } from "react";
3
+ import { useIMask as M } from "react-imask";
4
+ import w from "../base/InputTextBase.js";
15
5
  import { numberToEnUS as b, formatOnlyNumbers as g } from "../number/format_number.js";
16
- import { actionsOnPermissionDenied as w, OPTIONS_ON_DENIED as s } from "../../permissionValidations.js";
17
- import { getMaskOptions as F } from "./helpers.js";
18
- const k = (e, u) => {
6
+ import { actionsOnPermissionDenied as F, OPTIONS_ON_DENIED as i } from "../../permissionValidations.js";
7
+ import { getMaskOptions as I } from "./helpers.js";
8
+ const k = (e, r) => {
19
9
  if (e.returnFormattedValueOnBlur || e.returnFormattedValueOnKeyDown) {
20
10
  const {
21
- name: o
22
- } = u.target, a = e.defaultValue || "";
11
+ name: u
12
+ } = r.target, a = e.defaultValue || "";
23
13
  return {
24
- ...u,
14
+ ...r,
25
15
  target: {
26
16
  value: String(b(a)),
27
- name: o
17
+ name: u
28
18
  }
29
19
  };
30
20
  }
31
- return u;
32
- }, I = (e, u, o) => e.isNumeric ? {} : {
21
+ return r;
22
+ }, K = (e, r, u) => e.isNumeric ? {} : {
33
23
  onBlur: (a) => {
34
- if (o.unmaskedValue.trim().length && e.autoCompleteMask) {
35
- const n = o.unmaskedValue, r = o.mask.toString().replace(/\D+/g, "").length;
36
- if (r > n.length)
24
+ if (u.unmaskedValue.trim().length && e.autoCompleteMask) {
25
+ const n = u.unmaskedValue, o = u.mask.toString().replace(/\D+/g, "").length;
26
+ if (o > n.length)
37
27
  switch (e.autoCompleteMask) {
38
28
  case "left":
39
- u(n.padStart(r, "0"));
29
+ r(n.padStart(o, "0"));
40
30
  break;
41
31
  case "right":
42
- u(n.padEnd(r, "0"));
32
+ r(n.padEnd(o, "0"));
43
33
  break;
44
34
  default:
45
- u(n);
35
+ r(n);
46
36
  break;
47
37
  }
48
38
  }
49
39
  if (e.onBlur) {
50
40
  const {
51
41
  value: n
52
- } = a.target, r = g(n), i = {
42
+ } = a.target, o = g(n), s = {
53
43
  ...a,
54
44
  target: {
55
45
  ...a.target,
56
- value: r
46
+ value: o
57
47
  }
58
- }, l = k(e, i);
59
- e.onBlur(l);
48
+ }, m = k(e, s);
49
+ e.onBlur(m);
60
50
  }
61
51
  },
62
52
  onKeyDown: (a) => {
63
53
  if (e.onKeyDown) {
64
54
  const {
65
55
  value: n
66
- } = a.target, r = g(n), i = {
56
+ } = a.target, o = g(n), s = {
67
57
  ...a,
68
58
  target: {
69
- value: r
59
+ value: o
70
60
  }
71
- }, l = k(e, i);
72
- e.onKeyDown(l);
61
+ }, m = k(e, s);
62
+ e.onKeyDown(m);
73
63
  }
74
64
  }
75
- }, K = [s.disabled, s.unvisible, s.readOnly, s.hideContent], Z = ({
65
+ }, x = [i.disabled, i.unvisible, i.readOnly, i.hideContent], _ = ({
76
66
  value: e,
77
- defaultValue: u,
78
- inputRef: o,
67
+ defaultValue: r,
68
+ inputRef: u,
79
69
  onChange: a,
80
70
  onComplete: n,
81
- permissionAttr: r,
82
- mask: i,
83
- isDateTimeField: l,
71
+ permissionAttr: o,
72
+ mask: s,
73
+ isDateTimeField: m,
84
74
  ...d
85
75
  }) => {
86
- const v = w(K, r), {
76
+ const v = F(x, o), {
87
77
  disabled: y,
88
- readOnly: p
89
- } = v, f = y || p, O = F({
90
- mask: i,
91
- isDateTimeField: l,
78
+ readOnly: O
79
+ } = v, f = y || O, D = I({
80
+ mask: s,
81
+ isDateTimeField: m,
92
82
  ...d
93
83
  }), {
94
- ref: D,
84
+ ref: E,
95
85
  setValue: V,
96
- setUnmaskedValue: E,
97
- maskRef: N
98
- } = B({
99
- ...O
86
+ setUnmaskedValue: N,
87
+ maskRef: S
88
+ } = M({
89
+ ...D
100
90
  }, {
101
- defaultValue: u,
102
- onAccept: (m, t) => {
91
+ defaultValue: r,
92
+ onAccept: (l, t) => {
103
93
  if (!f && a) {
104
94
  const c = {
105
95
  target: {
@@ -112,7 +102,7 @@ const k = (e, u) => {
112
102
  a(c);
113
103
  }
114
104
  },
115
- onComplete: (m, t) => {
105
+ onComplete: (l, t) => {
116
106
  if (!f && n) {
117
107
  const c = {
118
108
  target: {
@@ -126,19 +116,19 @@ const k = (e, u) => {
126
116
  }
127
117
  }
128
118
  });
129
- return h(() => {
130
- if (i === Number || typeof e == "number") {
119
+ return B(() => {
120
+ if (s === Number || typeof e == "number") {
131
121
  const t = b(String(e));
132
- Number.isNaN(t) || E(String(t));
122
+ Number.isNaN(t) || N(String(t));
133
123
  return;
134
124
  }
135
- const m = e ? String(e) : "";
136
- V(m);
137
- }, [e]), /* @__PURE__ */ S(M, { inputRef: (m) => {
138
- D.current = m, o && (typeof o == "object" ? o.current = m : o(m));
139
- }, permissionAttr: r, ...d, ...I(d, V, N.current) });
125
+ const l = e ? String(e) : "";
126
+ V(l);
127
+ }, [e]), /* @__PURE__ */ h(w, { inputRef: (l) => {
128
+ E.current = l, u && (typeof u == "object" ? u.current = l : u(l));
129
+ }, permissionAttr: o, ...d, ...K(d, V, S.current) });
140
130
  };
141
131
  export {
142
- Z as default
132
+ _ as default
143
133
  };
144
134
  //# sourceMappingURL=BaseMask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseMask.js","sources":["../../../src/lib/inputs/mask/BaseMask.tsx"],"sourcesContent":["import { Dispatch, KeyboardEvent, useEffect } from 'react';\nimport { useIMask } from 'react-imask';\nimport InputTextBase from '../base/InputTextBase';\nimport { IBaseMaskProps } from './types';\nimport { CustomInputEvent } from '../base/types';\nimport { numberToEnUS, formatOnlyNumbers } from '../number/format_number';\nimport { OPTIONS_ON_DENIED, actionsOnPermissionDenied } from '../../permissionValidations';\nimport { getMaskOptions } from './helpers';\n\nconst returnEventFormattedValue = (\n props: IBaseMaskProps,\n event: CustomInputEvent,\n) => {\n if (props.returnFormattedValueOnBlur || props.returnFormattedValueOnKeyDown) {\n // Retornando um objeto com a mesma estrutura do Proxy original\n // para recuperacao do valor da mascara sem formatacao.\n // O retorno poderá ser modificado conforme necessidade, desde que seja\n // mantido o path até a propriedade value e name.\n const { name } = event.target;\n const value = props.defaultValue || '';\n return { ...event, target: { value: String(numberToEnUS(value)), name } } as CustomInputEvent;\n }\n return event;\n};\n\nconst getEventProps = (props: IBaseMaskProps, setValue: Dispatch<string>, maskRef: any) => {\n if (props.isNumeric) return {};\n return {\n onBlur: (e: CustomInputEvent) => {\n if (maskRef.unmaskedValue.trim().length && props.autoCompleteMask) {\n const currentValue = maskRef.unmaskedValue;\n const sizeMask = maskRef.mask.toString().replace(/\\D+/g, '').length;\n if (sizeMask > currentValue.length) {\n switch (props.autoCompleteMask) {\n case 'left':\n setValue(currentValue.padStart(sizeMask, '0'));\n break;\n case 'right':\n setValue(currentValue.padEnd(sizeMask, '0'));\n break;\n default:\n setValue(currentValue);\n break;\n }\n }\n }\n if (props.onBlur) {\n const { value } = e.target;\n const formatedValue = formatOnlyNumbers(value);\n const eventWithFormatedValue = { ...e, target: { ...e.target, value: formatedValue } };\n const formattedEvent =\n returnEventFormattedValue(props, eventWithFormatedValue);\n props.onBlur(formattedEvent);\n }\n },\n onKeyDown: (e: CustomInputEvent | KeyboardEvent<Element>) => {\n if (props.onKeyDown) {\n const { value } = e.target as { value: string };\n const formatedValue = formatOnlyNumbers(value);\n const eventWithFormatedValue = { ...e, target: { value: formatedValue } };\n const formattedEvent =\n returnEventFormattedValue(props, eventWithFormatedValue as CustomInputEvent);\n props.onKeyDown(formattedEvent);\n }\n },\n };\n};\n\nconst options = [\n OPTIONS_ON_DENIED.disabled,\n OPTIONS_ON_DENIED.unvisible,\n OPTIONS_ON_DENIED.readOnly,\n OPTIONS_ON_DENIED.hideContent,\n];\n\nconst BaseMask = ({\n value: valueProp,\n defaultValue,\n inputRef,\n onChange,\n onComplete,\n permissionAttr,\n mask,\n isDateTimeField,\n ...rest\n}: IBaseMaskProps) => {\n const onDenied = actionsOnPermissionDenied(options, permissionAttr);\n const { disabled, readOnly } = onDenied;\n const disableCallbacks = disabled || readOnly;\n const maskOptions = getMaskOptions({ mask, isDateTimeField, ...rest });\n const { ref, setValue, setUnmaskedValue, maskRef } = useIMask({\n ...maskOptions,\n }, {\n defaultValue,\n onAccept: (_, r) => {\n if (!disableCallbacks && onChange) {\n const event: CustomInputEvent = {\n target: {\n name: r.el.input.name,\n value: r.unmaskedValue,\n maskedValue: r.value,\n typedValue: r.typedValue,\n },\n };\n onChange(event);\n }\n },\n onComplete: (_, r) => {\n if (!disableCallbacks && onComplete) {\n const event: CustomInputEvent = {\n target: {\n name: r.el.input.name,\n value: r.unmaskedValue,\n maskedValue: r.value,\n typedValue: r.typedValue,\n },\n };\n onComplete(event);\n }\n },\n });\n\n useEffect(() => {\n if (mask === Number || typeof valueProp === 'number') {\n const updatedUnmaskedValue = numberToEnUS(String(valueProp));\n if (!Number.isNaN(updatedUnmaskedValue)) setUnmaskedValue(String(updatedUnmaskedValue));\n return;\n }\n\n const updatedValue = valueProp ? String(valueProp) : '';\n setValue(updatedValue);\n }, [valueProp]);\n\n return (\n <InputTextBase\n inputRef={(r) => {\n ref.current = r;\n if (inputRef) {\n if (typeof inputRef === 'object') inputRef.current = r;\n else inputRef(r);\n }\n }}\n permissionAttr={permissionAttr}\n {...rest}\n {...getEventProps(rest, setValue, maskRef.current)} />\n );\n};\n\nexport default BaseMask;\n"],"names":["returnEventFormattedValue","props","event","returnFormattedValueOnBlur","returnFormattedValueOnKeyDown","name","target","value","defaultValue","String","numberToEnUS","getEventProps","setValue","maskRef","isNumeric","onBlur","e","unmaskedValue","trim","length","autoCompleteMask","currentValue","sizeMask","mask","toString","replace","padStart","padEnd","formatedValue","formatOnlyNumbers","eventWithFormatedValue","formattedEvent","onKeyDown","options","OPTIONS_ON_DENIED","disabled","unvisible","readOnly","hideContent","BaseMask","valueProp","inputRef","onChange","onComplete","permissionAttr","isDateTimeField","rest","onDenied","actionsOnPermissionDenied","disableCallbacks","maskOptions","getMaskOptions","ref","setUnmaskedValue","useIMask","onAccept","_","r","el","input","maskedValue","typedValue","useEffect","Number","updatedUnmaskedValue","isNaN","updatedValue","jsx","InputTextBase","current"],"mappings":"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"}
1
+ {"version":3,"file":"BaseMask.js","sources":["../../../src/lib/inputs/mask/BaseMask.tsx"],"sourcesContent":["import { Dispatch, KeyboardEvent, useEffect } from 'react';\nimport { useIMask } from 'react-imask';\nimport InputTextBase from '../base/InputTextBase';\nimport { IBaseMaskProps } from './types';\nimport { CustomInputEvent } from '../base/types';\nimport { numberToEnUS, formatOnlyNumbers } from '../number/format_number';\nimport { OPTIONS_ON_DENIED, actionsOnPermissionDenied } from '../../permissionValidations';\nimport { getMaskOptions } from './helpers';\n\nconst returnEventFormattedValue = (\n props: IBaseMaskProps,\n event: CustomInputEvent,\n) => {\n if (props.returnFormattedValueOnBlur || props.returnFormattedValueOnKeyDown) {\n // Retornando um objeto com a mesma estrutura do Proxy original\n // para recuperacao do valor da mascara sem formatacao.\n // O retorno poderá ser modificado conforme necessidade, desde que seja\n // mantido o path até a propriedade value e name.\n const { name } = event.target;\n const value = props.defaultValue || '';\n return { ...event, target: { value: String(numberToEnUS(value)), name } } as CustomInputEvent;\n }\n return event;\n};\n\nconst getEventProps = (props: IBaseMaskProps, setValue: Dispatch<string>, maskRef: any) => {\n if (props.isNumeric) return {};\n return {\n onBlur: (e: CustomInputEvent) => {\n if (maskRef.unmaskedValue.trim().length && props.autoCompleteMask) {\n const currentValue = maskRef.unmaskedValue;\n const sizeMask = maskRef.mask.toString().replace(/\\D+/g, '').length;\n if (sizeMask > currentValue.length) {\n switch (props.autoCompleteMask) {\n case 'left':\n setValue(currentValue.padStart(sizeMask, '0'));\n break;\n case 'right':\n setValue(currentValue.padEnd(sizeMask, '0'));\n break;\n default:\n setValue(currentValue);\n break;\n }\n }\n }\n if (props.onBlur) {\n const { value } = e.target;\n const formatedValue = formatOnlyNumbers(value);\n const eventWithFormatedValue = { ...e, target: { ...e.target, value: formatedValue } };\n const formattedEvent =\n returnEventFormattedValue(props, eventWithFormatedValue);\n props.onBlur(formattedEvent);\n }\n },\n onKeyDown: (e: CustomInputEvent | KeyboardEvent<Element>) => {\n if (props.onKeyDown) {\n const { value } = e.target as { value: string };\n const formatedValue = formatOnlyNumbers(value);\n const eventWithFormatedValue = { ...e, target: { value: formatedValue } };\n const formattedEvent =\n returnEventFormattedValue(props, eventWithFormatedValue as CustomInputEvent);\n props.onKeyDown(formattedEvent);\n }\n },\n };\n};\n\nconst options = [\n OPTIONS_ON_DENIED.disabled,\n OPTIONS_ON_DENIED.unvisible,\n OPTIONS_ON_DENIED.readOnly,\n OPTIONS_ON_DENIED.hideContent,\n];\n\nconst BaseMask = ({\n value: valueProp,\n defaultValue,\n inputRef,\n onChange,\n onComplete,\n permissionAttr,\n mask,\n isDateTimeField,\n ...rest\n}: IBaseMaskProps) => {\n const onDenied = actionsOnPermissionDenied(options, permissionAttr);\n const { disabled, readOnly } = onDenied;\n const disableCallbacks = disabled || readOnly;\n const maskOptions = getMaskOptions({ mask, isDateTimeField, ...rest });\n const { ref, setValue, setUnmaskedValue, maskRef } = useIMask({\n ...maskOptions,\n }, {\n defaultValue,\n onAccept: (_, r) => {\n if (!disableCallbacks && onChange) {\n const event: CustomInputEvent = {\n target: {\n name: r.el.input.name,\n value: r.unmaskedValue,\n maskedValue: r.value,\n typedValue: r.typedValue,\n },\n };\n onChange(event);\n }\n },\n onComplete: (_, r) => {\n if (!disableCallbacks && onComplete) {\n const event: CustomInputEvent = {\n target: {\n name: r.el.input.name,\n value: r.unmaskedValue,\n maskedValue: r.value,\n typedValue: r.typedValue,\n },\n };\n onComplete(event);\n }\n },\n });\n\n useEffect(() => {\n if (mask === Number || typeof valueProp === 'number') {\n const updatedUnmaskedValue = numberToEnUS(String(valueProp));\n if (!Number.isNaN(updatedUnmaskedValue)) setUnmaskedValue(String(updatedUnmaskedValue));\n return;\n }\n\n const updatedValue = valueProp ? String(valueProp) : '';\n setValue(updatedValue);\n }, [valueProp]);\n\n return (\n <InputTextBase\n inputRef={(r) => {\n ref.current = r;\n if (inputRef) {\n if (typeof inputRef === 'object') inputRef.current = r;\n else inputRef(r);\n }\n }}\n permissionAttr={permissionAttr}\n {...rest}\n {...getEventProps(rest, setValue, maskRef.current)} />\n );\n};\n\nexport default BaseMask;\n"],"names":["returnEventFormattedValue","props","event","returnFormattedValueOnBlur","returnFormattedValueOnKeyDown","name","target","value","defaultValue","String","numberToEnUS","getEventProps","setValue","maskRef","isNumeric","onBlur","e","unmaskedValue","trim","length","autoCompleteMask","currentValue","sizeMask","mask","toString","replace","padStart","padEnd","formatedValue","formatOnlyNumbers","eventWithFormatedValue","formattedEvent","onKeyDown","options","OPTIONS_ON_DENIED","disabled","unvisible","readOnly","hideContent","BaseMask","valueProp","inputRef","onChange","onComplete","permissionAttr","isDateTimeField","rest","onDenied","actionsOnPermissionDenied","disableCallbacks","maskOptions","getMaskOptions","ref","setUnmaskedValue","useIMask","onAccept","_","r","el","input","maskedValue","typedValue","useEffect","Number","updatedUnmaskedValue","isNaN","updatedValue","jsx","InputTextBase","current"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { JSX, KeyboardEvent, MutableRefObject } from 'react';
1
+ import { JSX, KeyboardEvent, MutableRefObject, HTMLInputAutoCompleteAttribute } from 'react';
2
2
  import { TextAlign } from 'src/lib/@types/Align';
3
3
  import { OnDenied, PermissionAttr } from '../../@types/PermissionAttr';
4
4
  import { CustomInputEvent } from '../base/types';
@@ -54,6 +54,7 @@ export type IBaseMaskProps = {
54
54
  mapToRadix?: string[];
55
55
  normalizeZeros?: boolean;
56
56
  isDateTimeField?: boolean;
57
+ autoComplete?: HTMLInputAutoCompleteAttribute;
57
58
  };
58
59
  export type ICnpjFieldProps = IBaseMaskProps & {
59
60
  value?: string;