linear-react-components-ui 2.3.1-beta.1 → 2.3.1-beta.3

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.
@@ -129,5 +129,5 @@ export interface UseFormReturn<T> {
129
129
  * Define erros manualmente em campos do formulário, útil para erros externos (ex: backend).
130
130
  * @param errors - Objeto contendo mensagens de erro para campos.
131
131
  */
132
- setExternalErrors: (errors: Record<string, string[] | null | undefined>) => void;
132
+ setExternalErrors: (errors: Record<string, string[]>) => void;
133
133
  }
@@ -10,7 +10,6 @@ const useForm = ({
10
10
  }) => {
11
11
  const [values, setValues] = useState(initialValues);
12
12
  const [errors, setErrors] = useState({});
13
- const [externalErrors, setExternalErrorsState] = useState({});
14
13
  const [changed, setChanged] = useState({});
15
14
  const [touched, setTouched] = useState({});
16
15
  const fieldsRef = useRef({});
@@ -55,27 +54,18 @@ const useForm = ({
55
54
  return fieldValidators_1.every((validator_1) => !validator_1(value_1, values));
56
55
  });
57
56
  };
58
- const mergeErrors = (internalErrors, externalErrorsState) => {
59
- const mergedErrors = _.cloneDeep(internalErrors);
60
- const externalPaths = Object.keys(flattenValidators(externalErrorsState));
61
- externalPaths.forEach((path_3) => {
62
- const internalFieldErrors = _.get(mergedErrors, path_3) ?? [];
63
- const externalFieldErrors = _.get(externalErrorsState, path_3) ?? [];
64
- _.set(mergedErrors, path_3, [...internalFieldErrors, ...externalFieldErrors]);
65
- });
66
- return mergedErrors;
67
- };
68
- const allErrors = mergeErrors(errors, externalErrors);
69
57
  const getFieldError = (name) => {
70
- const fieldErrors_1 = _.get(allErrors, name) ?? [];
58
+ const fieldErrors_1 = _.get(errors, name) ?? [];
71
59
  return fieldErrors_1;
72
60
  };
73
- const setExternalErrors = (newExternalErrors) => {
74
- const newExternalErrorsState = {};
75
- Object.entries(newExternalErrors ?? {}).forEach(([key, value_2]) => {
76
- if (!_.isEmpty(value_2)) _.set(newExternalErrorsState, key, value_2);
61
+ const setExternalErrors = (externalErrors) => {
62
+ setErrors((prevStateErrors) => {
63
+ const newErrorsState = _.cloneDeep(prevStateErrors);
64
+ Object.entries(externalErrors).forEach(([key, value_2]) => {
65
+ _.set(newErrorsState, key, value_2);
66
+ });
67
+ return newErrorsState;
77
68
  });
78
- setExternalErrorsState(newExternalErrorsState);
79
69
  };
80
70
  const getFieldValue = (name_0) => {
81
71
  return _.get(values, name_0);
@@ -107,21 +97,18 @@ const useForm = ({
107
97
  const compareField = (name_3, valueToCompare_0) => {
108
98
  return _.isEqual(_.get(values, name_3), valueToCompare_0);
109
99
  };
110
- const unsetErrorPaths = (errorsState, fieldsToClean) => {
111
- const newErrorsState = _.cloneDeep(errorsState);
112
- fieldsToClean.forEach((key_0) => {
113
- _.unset(newErrorsState, key_0);
114
- });
115
- return newErrorsState;
116
- };
117
- const cleanErrors = (fieldsToClean_0) => {
118
- if (!fieldsToClean_0) {
100
+ const cleanErrors = (fieldsToClean) => {
101
+ if (!fieldsToClean) {
119
102
  setErrors({});
120
- setExternalErrorsState({});
121
103
  return;
122
104
  }
123
- setErrors((prevErrorsState_0) => unsetErrorPaths(prevErrorsState_0, fieldsToClean_0));
124
- setExternalErrorsState((prevErrorsState_1) => unsetErrorPaths(prevErrorsState_1, fieldsToClean_0));
105
+ setErrors((prevErrorsState_0) => {
106
+ const newErrorsState_0 = _.cloneDeep(prevErrorsState_0);
107
+ fieldsToClean.forEach((key_0) => {
108
+ _.unset(newErrorsState_0, key_0);
109
+ });
110
+ return newErrorsState_0;
111
+ });
125
112
  };
126
113
  const reset = (inputsToReset, internalReset) => {
127
114
  const newValuesState = _.cloneDeep(values);
@@ -138,11 +125,15 @@ const useForm = ({
138
125
  setTouched(newTouchedState);
139
126
  setChanged(newChangedState);
140
127
  if (inputsToReset) {
141
- setErrors((prevErrorsState_2) => unsetErrorPaths(prevErrorsState_2, inputsToReset));
142
- setExternalErrorsState((prevErrorsState_3) => unsetErrorPaths(prevErrorsState_3, inputsToReset));
128
+ setErrors((prevErrorsState_1) => {
129
+ const newErrorsState_1 = _.cloneDeep(prevErrorsState_1);
130
+ inputsToReset.forEach((key_2) => {
131
+ _.unset(newErrorsState_1, key_2);
132
+ });
133
+ return newErrorsState_1;
134
+ });
143
135
  } else {
144
136
  setErrors({});
145
- setExternalErrorsState({});
146
137
  }
147
138
  if (!internalReset) {
148
139
  valuesToCompareInChangedRef.current = initialValuesRef.current;
@@ -168,7 +159,7 @@ const useForm = ({
168
159
  fieldsRef.current[name_4] = inputElement;
169
160
  }, ref),
170
161
  value: _.get(values, name_4, _.get(initialValuesRef.current, name_4, "")),
171
- errors: _.get(allErrors, name_4, []),
162
+ errors: _.get(errors, name_4, []),
172
163
  onChange: (event) => {
173
164
  const {
174
165
  value: value_4
@@ -217,7 +208,7 @@ const useForm = ({
217
208
  reset,
218
209
  changed,
219
210
  values,
220
- errors: allErrors,
211
+ errors,
221
212
  touched,
222
213
  isValid,
223
214
  formHasChange,
@@ -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 [externalErrors, setExternalErrorsState] = 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 mergeErrors = (\n internalErrors: FieldErrors<ValuesType>,\n externalErrorsState: FieldErrors<ValuesType>,\n ): FieldErrors<ValuesType> => {\n const mergedErrors = _.cloneDeep(internalErrors);\n const externalPaths = Object.keys(flattenValidators(externalErrorsState));\n\n externalPaths.forEach((path) => {\n const internalFieldErrors = (_.get(mergedErrors, path) as string[]) ?? [];\n const externalFieldErrors = (_.get(externalErrorsState, path) as string[]) ?? [];\n _.set(mergedErrors, path, [...internalFieldErrors, ...externalFieldErrors]);\n });\n\n return mergedErrors;\n };\n\n const allErrors = mergeErrors(errors, externalErrors);\n\n const getFieldError = (name: string): string[] => {\n const fieldErrors = _.get(allErrors, name) as string[] ?? [];\n return fieldErrors;\n };\n\n const setExternalErrors = (newExternalErrors: Record<string, string[] | null | undefined>) => {\n const newExternalErrorsState: FieldErrors<ValuesType> = {};\n Object.entries(newExternalErrors ?? {}).forEach(([key, value]) => {\n if (!_.isEmpty(value)) _.set(newExternalErrorsState, key, value);\n });\n setExternalErrorsState(newExternalErrorsState);\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 unsetErrorPaths = (\n errorsState: FieldErrors<ValuesType>,\n fieldsToClean: string[],\n ): FieldErrors<ValuesType> => {\n const newErrorsState = _.cloneDeep(errorsState);\n fieldsToClean.forEach((key) => {\n _.unset(newErrorsState, key);\n });\n return newErrorsState;\n };\n\n const cleanErrors = (fieldsToClean?: string[]) => {\n if (!fieldsToClean) {\n setErrors({});\n setExternalErrorsState({});\n return;\n }\n\n setErrors(prevErrorsState => unsetErrorPaths(prevErrorsState, fieldsToClean));\n setExternalErrorsState(prevErrorsState => unsetErrorPaths(prevErrorsState, fieldsToClean));\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 => unsetErrorPaths(prevErrorsState, inputsToReset));\n setExternalErrorsState(prevErrorsState => unsetErrorPaths(prevErrorsState, inputsToReset));\n } else {\n setErrors({});\n setExternalErrorsState({});\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(allErrors, 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: allErrors,\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","externalErrors","setExternalErrorsState","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","fieldValidators","fieldErrors","map","validator","message","set","validateAllFields","allValidationErrors","checkFormIsValid","every","mergeErrors","internalErrors","externalErrorsState","mergedErrors","externalPaths","internalFieldErrors","externalFieldErrors","allErrors","getFieldError","name","setExternalErrors","newExternalErrors","newExternalErrorsState","entries","key","getFieldValue","setFieldValue","prevStateValues","updatedValuesState","valueToCompare","current","hasChanged","isEqual","prevStateChanged","updatedChangedState","setFieldFocus","fieldFocusOptions","field","focus","shouldSelect","select","compareField","unsetErrorPaths","errorsState","fieldsToClean","newErrorsState","unset","cleanErrors","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","fieldValidators","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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"}
@@ -2,13 +2,13 @@ import { ReactNode } from 'react';
2
2
  export declare const TreeTableContext: import('react').Context<import('./types').ITreeTableProps>;
3
3
  export declare const searchRootElements: (data: Array<{
4
4
  [key: string]: ReactNode;
5
- }>, parentPropName: string, rowLevel?: number) => ({
6
- [key: string]: ReactNode;
7
- } & {
5
+ }>, parentPropName: string, rowLevel?: number) => {
8
6
  rowLevel: number;
9
- })[];
7
+ }[];
10
8
  export declare const searchChildrensPerRow: (data: Array<{
11
9
  [key: string]: ReactNode;
12
10
  }>, parentPropName: string, rowId?: string | number, rowLevel?: number) => {
13
11
  [key: string]: ReactNode;
12
+ }[] | {
13
+ rowLevel: number;
14
14
  }[];
@@ -4,7 +4,8 @@ const searchRootElements = (data, parentPropName, rowLevel = 0) => {
4
4
  let dataFiltered;
5
5
  if (data) {
6
6
  dataFiltered = data.filter((item) => !item[parentPropName]);
7
- return dataFiltered.map((item) => Object.assign(item, {}, {
7
+ return dataFiltered.map((item) => ({
8
+ ...item,
8
9
  rowLevel
9
10
  }));
10
11
  }
@@ -14,7 +15,8 @@ const searchChildrensPerRow = (data, parentPropName, rowId, rowLevel = 0) => {
14
15
  let dataFiltered;
15
16
  if (data && rowId) {
16
17
  dataFiltered = data.filter((item) => item[parentPropName] === Number(rowId));
17
- return dataFiltered.map((item) => Object.assign(item, {}, {
18
+ return dataFiltered.map((item) => ({
19
+ ...item,
18
20
  rowLevel
19
21
  }));
20
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../src/lib/treetable/helpers.ts"],"sourcesContent":["import { createContext, ReactNode } from 'react';\nimport { ITreeTableContext } from './types';\n\nexport const TreeTableContext = createContext({} as ITreeTableContext);\n\nexport const searchRootElements = (\n data: Array<{\n [key: string]: ReactNode\n }>,\n parentPropName: string,\n rowLevel = 0,\n) => {\n let dataFiltered;\n if (data) {\n dataFiltered = data.filter(item => !item[parentPropName]);\n\n return dataFiltered.map(item =>\n Object.assign(\n item,\n {},\n {\n rowLevel,\n },\n ));\n }\n\n return data;\n};\n\nexport const searchChildrensPerRow = (\n data: Array<{\n [key: string]: ReactNode\n }>,\n parentPropName: string,\n rowId?: string | number,\n rowLevel = 0,\n) => {\n let dataFiltered;\n if (data && rowId) {\n dataFiltered = data.filter(item => item[parentPropName] === Number(rowId));\n\n return dataFiltered.map(item =>\n Object.assign(\n item,\n {},\n {\n rowLevel,\n },\n ));\n }\n\n return data;\n};\n"],"names":["TreeTableContext","createContext","searchRootElements","data","parentPropName","rowLevel","dataFiltered","filter","item","map","Object","assign","searchChildrensPerRow","rowId","Number"],"mappings":";AAGO,MAAMA,mBAAmBC,cAAc,CAAA,CAAuB;AAE9D,MAAMC,qBAAqBA,CAChCC,MAGAC,gBACAC,WAAW,MACR;AACH,MAAIC;AACJ,MAAIH,MAAM;AACRG,mBAAeH,KAAKI,OAAOC,CAAAA,SAAQ,CAACA,KAAKJ,cAAc,CAAC;AAExD,WAAOE,aAAaG,IAAID,CAAAA,SACtBE,OAAOC,OACLH,MACA,IACA;AAAA,MACEH;AAAAA,IAAAA,CAEJ,CAAC;AAAA,EACL;AAEA,SAAOF;AACT;AAEO,MAAMS,wBAAwBA,CACnCT,MAGAC,gBACAS,OACAR,WAAW,MACR;AACH,MAAIC;AACJ,MAAIH,QAAQU,OAAO;AACjBP,mBAAeH,KAAKI,OAAOC,CAAAA,SAAQA,KAAKJ,cAAc,MAAMU,OAAOD,KAAK,CAAC;AAEzE,WAAOP,aAAaG,IAAID,CAAAA,SACtBE,OAAOC,OACLH,MACA,IACA;AAAA,MACEH;AAAAA,IAAAA,CAEJ,CAAC;AAAA,EACL;AAEA,SAAOF;AACT;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../src/lib/treetable/helpers.ts"],"sourcesContent":["import { createContext, ReactNode } from 'react';\nimport { ITreeTableContext } from './types';\n\nexport const TreeTableContext = createContext({} as ITreeTableContext);\n\nexport const searchRootElements = (\n data: Array<{\n [key: string]: ReactNode\n }>,\n parentPropName: string,\n rowLevel = 0,\n) => {\n let dataFiltered;\n if (data) {\n dataFiltered = data.filter(item => !item[parentPropName]);\n\n return dataFiltered.map(item => ({ ...item, rowLevel }));\n }\n\n return data;\n};\n\nexport const searchChildrensPerRow = (\n data: Array<{\n [key: string]: ReactNode\n }>,\n parentPropName: string,\n rowId?: string | number,\n rowLevel = 0,\n) => {\n let dataFiltered;\n if (data && rowId) {\n dataFiltered = data.filter(item => item[parentPropName] === Number(rowId));\n\n return dataFiltered.map(item => ({ ...item, rowLevel }));\n }\n\n return data;\n};\n"],"names":["TreeTableContext","createContext","searchRootElements","data","parentPropName","rowLevel","dataFiltered","filter","item","map","searchChildrensPerRow","rowId","Number"],"mappings":";AAGO,MAAMA,mBAAmBC,cAAc,CAAA,CAAuB;AAE9D,MAAMC,qBAAqBA,CAChCC,MAGAC,gBACAC,WAAW,MACR;AACH,MAAIC;AACJ,MAAIH,MAAM;AACRG,mBAAeH,KAAKI,OAAOC,CAAAA,SAAQ,CAACA,KAAKJ,cAAc,CAAC;AAExD,WAAOE,aAAaG,IAAID,CAAAA,UAAS;AAAA,MAAE,GAAGA;AAAAA,MAAMH;AAAAA,IAAAA,EAAW;AAAA,EACzD;AAEA,SAAOF;AACT;AAEO,MAAMO,wBAAwBA,CACnCP,MAGAC,gBACAO,OACAN,WAAW,MACR;AACH,MAAIC;AACJ,MAAIH,QAAQQ,OAAO;AACjBL,mBAAeH,KAAKI,OAAOC,CAAAA,SAAQA,KAAKJ,cAAc,MAAMQ,OAAOD,KAAK,CAAC;AAEzE,WAAOL,aAAaG,IAAID,CAAAA,UAAS;AAAA,MAAE,GAAGA;AAAAA,MAAMH;AAAAA,IAAAA,EAAW;AAAA,EACzD;AAEA,SAAOF;AACT;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "2.3.1-beta.1",
3
+ "version": "2.3.1-beta.3",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",