linear-react-components-ui 2.1.0-beta.5 → 2.2.0-beta.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.
- package/lib/assets/styles/datepicker2.css +11 -81
- package/lib/form2/useForm/index.js +1 -0
- package/lib/form2/useForm/index.js.map +1 -1
- package/lib/inputs2/date/{hooks/useCalendarPosition.d.ts → base/constants.d.ts} +1 -1
- package/lib/inputs2/date/base/constants.js +69 -0
- package/lib/inputs2/date/base/constants.js.map +1 -0
- package/lib/inputs2/date/datefield/base.js +214 -691
- package/lib/inputs2/date/datefield/base.js.map +1 -1
- package/lib/inputs2/date/datefield/calendarbox.d.ts +6 -0
- package/lib/inputs2/date/datefield/calendarbox.js +228 -0
- package/lib/inputs2/date/datefield/calendarbox.js.map +1 -0
- package/lib/inputs2/date/datefield/triggers.js +4 -4
- package/lib/inputs2/date/datefield/triggers.js.map +1 -1
- package/lib/inputs2/date/datefield/types.d.ts +12 -5
- package/lib/inputs2/date/dateperiodfield/base.js +809 -694
- package/lib/inputs2/date/dateperiodfield/base.js.map +1 -1
- package/lib/inputs2/date/dateperiodfield/calendarbox.d.ts +6 -0
- package/lib/inputs2/date/dateperiodfield/calendarbox.js +282 -0
- package/lib/inputs2/date/dateperiodfield/calendarbox.js.map +1 -0
- package/lib/inputs2/date/dateperiodfield/triggers.js +9 -21
- package/lib/inputs2/date/dateperiodfield/triggers.js.map +1 -1
- package/lib/inputs2/date/dateperiodfield/types.d.ts +23 -13
- package/lib/inputs2/date/helpers.d.ts +4 -44
- package/lib/inputs2/date/helpers.js +4 -200
- package/lib/inputs2/date/helpers.js.map +1 -1
- package/lib/inputs2/date/types.d.ts +1 -22
- package/lib/inputs2/date/types.js.map +1 -1
- package/lib/node_modules/lodash/lodash.js +2 -2
- package/lib/node_modules/lodash/lodash.js.map +1 -1
- package/package.json +1 -1
- package/lib/inputs2/date/calendarbox.d.ts +0 -23
- package/lib/inputs2/date/calendarbox.js +0 -254
- package/lib/inputs2/date/calendarbox.js.map +0 -1
- package/lib/inputs2/date/hooks/useCalendarPosition.js +0 -93
- package/lib/inputs2/date/hooks/useCalendarPosition.js.map +0 -1
- package/lib/inputs2/date/hooks/useDateCalendarState.d.ts +0 -14
- package/lib/inputs2/date/hooks/useDateCalendarState.js +0 -250
- package/lib/inputs2/date/hooks/useDateCalendarState.js.map +0 -1
- package/lib/inputs2/date/hooks/useDateMask.d.ts +0 -22
- package/lib/inputs2/date/hooks/useDateMask.js +0 -143
- package/lib/inputs2/date/hooks/useDateMask.js.map +0 -1
- package/lib/inputs2/date/timeselector.d.ts +0 -17
- package/lib/inputs2/date/timeselector.js +0 -226
- package/lib/inputs2/date/timeselector.js.map +0 -1
- package/lib/node_modules/moment/dist/locale/pt-br.js +0 -54
- package/lib/node_modules/moment/dist/locale/pt-br.js.map +0 -1
|
@@ -741,7 +741,7 @@
|
|
|
741
741
|
background-position: -135% 0%;
|
|
742
742
|
}
|
|
743
743
|
}
|
|
744
|
-
.date-calendar-box[aria-expanded=true]
|
|
744
|
+
.date-calendar-box[aria-expanded=true], .date-field-root .container .input {
|
|
745
745
|
color: #666;
|
|
746
746
|
font-size: 16px;
|
|
747
747
|
font-family: Roboto;
|
|
@@ -892,11 +892,8 @@ input::-webkit-inner-spin-button {
|
|
|
892
892
|
border: 1px solid transparent;
|
|
893
893
|
background-color: transparent;
|
|
894
894
|
}
|
|
895
|
-
.date-field-root .container:has(input:
|
|
896
|
-
color: #
|
|
897
|
-
transition: color 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;
|
|
898
|
-
background-color: #f5f5f5;
|
|
899
|
-
cursor: not-allowed;
|
|
895
|
+
.date-field-root .container:has(input[data-state-error=true]):has(input[data-state-skeletonize=false]) {
|
|
896
|
+
border-color: #f48181;
|
|
900
897
|
}
|
|
901
898
|
.date-field-root .container:has(input[data-state-read-only=true]) {
|
|
902
899
|
cursor: default;
|
|
@@ -906,8 +903,11 @@ input::-webkit-inner-spin-button {
|
|
|
906
903
|
box-shadow: 0 3px 0 #a10d0d;
|
|
907
904
|
transition: box-shadow 250ms cubic-bezier(0.19, 0.62, 0.58, 0.98) 100ms;
|
|
908
905
|
}
|
|
909
|
-
.date-field-root .container:has(input
|
|
910
|
-
|
|
906
|
+
.date-field-root .container:has(input:disabled) {
|
|
907
|
+
color: #cacaca !important;
|
|
908
|
+
transition: color 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;
|
|
909
|
+
background-color: #f5f5f5;
|
|
910
|
+
cursor: not-allowed;
|
|
911
911
|
}
|
|
912
912
|
.date-field-root .container .separator {
|
|
913
913
|
display: flex;
|
|
@@ -1029,10 +1029,9 @@ input::-webkit-inner-spin-button {
|
|
|
1029
1029
|
margin: 5px 0;
|
|
1030
1030
|
font-size: 87.5%;
|
|
1031
1031
|
z-index: auto;
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
min-width: min-content;
|
|
1032
|
+
position: fixed;
|
|
1033
|
+
display: flex;
|
|
1034
|
+
flex-direction: column;
|
|
1036
1035
|
overflow: hidden;
|
|
1037
1036
|
border: 1px solid #dae1e8;
|
|
1038
1037
|
background-color: #fff;
|
|
@@ -1040,7 +1039,6 @@ input::-webkit-inner-spin-button {
|
|
|
1040
1039
|
box-shadow: -6px 6px 50px -12px rgba(51, 51, 51, 0.4);
|
|
1041
1040
|
}
|
|
1042
1041
|
.date-calendar-box[aria-expanded=true] .date-calendar-box-header {
|
|
1043
|
-
grid-area: header;
|
|
1044
1042
|
width: auto;
|
|
1045
1043
|
height: auto;
|
|
1046
1044
|
display: flex;
|
|
@@ -1072,7 +1070,6 @@ input::-webkit-inner-spin-button {
|
|
|
1072
1070
|
font-size: 87.5%;
|
|
1073
1071
|
}
|
|
1074
1072
|
.date-calendar-box[aria-expanded=true] .date-calendar-box-days-of-week {
|
|
1075
|
-
grid-area: weekdays;
|
|
1076
1073
|
height: 28px;
|
|
1077
1074
|
display: flex;
|
|
1078
1075
|
flex-flow: nowrap;
|
|
@@ -1089,13 +1086,11 @@ input::-webkit-inner-spin-button {
|
|
|
1089
1086
|
vertical-align: middle;
|
|
1090
1087
|
}
|
|
1091
1088
|
.date-calendar-box[aria-expanded=true] .date-calendar-box-grid-of-days {
|
|
1092
|
-
grid-area: grid;
|
|
1093
1089
|
padding: 3px;
|
|
1094
1090
|
}
|
|
1095
1091
|
.date-calendar-box[aria-expanded=true] .date-calendar-box-grid-of-days table {
|
|
1096
1092
|
width: 100%;
|
|
1097
1093
|
height: 100%;
|
|
1098
|
-
min-height: 252px;
|
|
1099
1094
|
}
|
|
1100
1095
|
.date-calendar-box[aria-expanded=true] .date-calendar-box-grid-of-days table td[role=gridcell] {
|
|
1101
1096
|
text-align: center;
|
|
@@ -1132,13 +1127,6 @@ input::-webkit-inner-spin-button {
|
|
|
1132
1127
|
border-color: #d1d3d4;
|
|
1133
1128
|
border-style: dashed;
|
|
1134
1129
|
}
|
|
1135
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-grid-of-days table .day-button[data-state-out-of-bounds=true] {
|
|
1136
|
-
color: #cacaca !important;
|
|
1137
|
-
cursor: not-allowed;
|
|
1138
|
-
}
|
|
1139
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-grid-of-days table .day-button[data-state-out-of-bounds=true]:hover {
|
|
1140
|
-
background-color: transparent;
|
|
1141
|
-
}
|
|
1142
1130
|
.date-calendar-box[aria-expanded=true] .date-calendar-box-grid-of-days table .day-button[data-state-is-today=true] {
|
|
1143
1131
|
position: relative;
|
|
1144
1132
|
}
|
|
@@ -1156,62 +1144,4 @@ input::-webkit-inner-spin-button {
|
|
|
1156
1144
|
}
|
|
1157
1145
|
.date-calendar-box[aria-expanded=true] .date-calendar-box-grid-of-days table .day-button[data-state-is-today=true][aria-selected=true]::after {
|
|
1158
1146
|
background-color: #fff;
|
|
1159
|
-
}
|
|
1160
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector {
|
|
1161
|
-
grid-area: time;
|
|
1162
|
-
display: flex;
|
|
1163
|
-
flex-direction: row;
|
|
1164
|
-
height: 0;
|
|
1165
|
-
min-height: 100%;
|
|
1166
|
-
}
|
|
1167
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-column {
|
|
1168
|
-
display: flex;
|
|
1169
|
-
flex-direction: column;
|
|
1170
|
-
min-height: 0;
|
|
1171
|
-
width: 52px;
|
|
1172
|
-
border-left: 1px solid #dae1e8;
|
|
1173
|
-
}
|
|
1174
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-column .time-column-label {
|
|
1175
|
-
padding: 6px 0;
|
|
1176
|
-
font-size: 87.5%;
|
|
1177
|
-
text-align: center;
|
|
1178
|
-
white-space: nowrap;
|
|
1179
|
-
background-color: #f0f0f0;
|
|
1180
|
-
border-bottom: 1px solid #e1e1e1;
|
|
1181
|
-
}
|
|
1182
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-column .time-column-options {
|
|
1183
|
-
flex: 1 1 auto;
|
|
1184
|
-
min-height: 0;
|
|
1185
|
-
font-size: 87.5%;
|
|
1186
|
-
overflow: hidden auto;
|
|
1187
|
-
scrollbar-width: thin;
|
|
1188
|
-
}
|
|
1189
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-unit-button {
|
|
1190
|
-
width: 100%;
|
|
1191
|
-
padding: 6px 0;
|
|
1192
|
-
border: none;
|
|
1193
|
-
cursor: pointer;
|
|
1194
|
-
text-align: center;
|
|
1195
|
-
background-color: transparent;
|
|
1196
|
-
}
|
|
1197
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-unit-button:hover {
|
|
1198
|
-
background-color: #dae1e8;
|
|
1199
|
-
}
|
|
1200
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-unit-button[aria-selected=true], .date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-unit-button[aria-selected=true]:hover {
|
|
1201
|
-
color: #fff;
|
|
1202
|
-
background-color: #6C757D;
|
|
1203
|
-
}
|
|
1204
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-unit-button[data-state-out-of-bounds=true] {
|
|
1205
|
-
color: #cacaca !important;
|
|
1206
|
-
cursor: not-allowed;
|
|
1207
|
-
}
|
|
1208
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector .time-unit-button[data-state-out-of-bounds=true]:hover {
|
|
1209
|
-
background-color: transparent;
|
|
1210
|
-
}
|
|
1211
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector[data-state-disabled=true] .time-unit-button {
|
|
1212
|
-
color: #cacaca !important;
|
|
1213
|
-
cursor: not-allowed;
|
|
1214
|
-
}
|
|
1215
|
-
.date-calendar-box[aria-expanded=true] .date-calendar-box-time-selector[data-state-disabled=true] .time-unit-button:hover {
|
|
1216
|
-
background-color: transparent;
|
|
1217
1147
|
}
|
|
@@ -197,6 +197,7 @@ const useForm = ({
|
|
|
197
197
|
};
|
|
198
198
|
const handleSubmit = (callback) => (event_1) => {
|
|
199
199
|
event_1.preventDefault();
|
|
200
|
+
event_1.stopPropagation();
|
|
200
201
|
const validationErrors = validateAllFields();
|
|
201
202
|
const hasErrors_0 = !_.isEmpty(validationErrors);
|
|
202
203
|
if (hasErrors_0) return;
|
|
@@ -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 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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"}
|
|
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 event.stopPropagation();\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","stopPropagation","validationErrors","isValid","formHasChange","some"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CSSProperties, RefObject } from 'react';
|
|
2
|
-
export declare const useCalendarPosition: (calendarBoxOpen: boolean, containerRef: RefObject<HTMLDivElement | null
|
|
2
|
+
export declare const useCalendarPosition: (calendarBoxOpen: boolean, containerRef: RefObject<HTMLDivElement | null>) => {
|
|
3
3
|
calendarBoxStyles: CSSProperties;
|
|
4
4
|
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { c as compilerRuntimeExports } from "../../../_virtual/compiler-runtime.js";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
const useCalendarPosition = (calendarBoxOpen, containerRef) => {
|
|
4
|
+
const $ = compilerRuntimeExports.c(7);
|
|
5
|
+
let t0;
|
|
6
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
7
|
+
t0 = {};
|
|
8
|
+
$[0] = t0;
|
|
9
|
+
} else {
|
|
10
|
+
t0 = $[0];
|
|
11
|
+
}
|
|
12
|
+
const [calendarBoxStyles, setCalendarBoxStyles] = useState(t0);
|
|
13
|
+
let t1;
|
|
14
|
+
let t2;
|
|
15
|
+
if ($[1] !== calendarBoxOpen || $[2] !== containerRef) {
|
|
16
|
+
t1 = () => {
|
|
17
|
+
const updatePosition = () => {
|
|
18
|
+
const selectPositionOnScreen = containerRef.current?.getBoundingClientRect();
|
|
19
|
+
if (selectPositionOnScreen) {
|
|
20
|
+
const {
|
|
21
|
+
top,
|
|
22
|
+
left,
|
|
23
|
+
width,
|
|
24
|
+
height
|
|
25
|
+
} = selectPositionOnScreen;
|
|
26
|
+
setCalendarBoxStyles({
|
|
27
|
+
top: top + height + window.scrollY,
|
|
28
|
+
left: left + window.scrollX,
|
|
29
|
+
width,
|
|
30
|
+
position: "absolute"
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
if (calendarBoxOpen) {
|
|
35
|
+
updatePosition();
|
|
36
|
+
window.addEventListener("resize", updatePosition);
|
|
37
|
+
window.addEventListener("scroll", updatePosition, true);
|
|
38
|
+
}
|
|
39
|
+
return () => {
|
|
40
|
+
window.removeEventListener("resize", updatePosition);
|
|
41
|
+
window.removeEventListener("scroll", updatePosition, true);
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
t2 = [calendarBoxOpen, containerRef];
|
|
45
|
+
$[1] = calendarBoxOpen;
|
|
46
|
+
$[2] = containerRef;
|
|
47
|
+
$[3] = t1;
|
|
48
|
+
$[4] = t2;
|
|
49
|
+
} else {
|
|
50
|
+
t1 = $[3];
|
|
51
|
+
t2 = $[4];
|
|
52
|
+
}
|
|
53
|
+
useEffect(t1, t2);
|
|
54
|
+
let t3;
|
|
55
|
+
if ($[5] !== calendarBoxStyles) {
|
|
56
|
+
t3 = {
|
|
57
|
+
calendarBoxStyles
|
|
58
|
+
};
|
|
59
|
+
$[5] = calendarBoxStyles;
|
|
60
|
+
$[6] = t3;
|
|
61
|
+
} else {
|
|
62
|
+
t3 = $[6];
|
|
63
|
+
}
|
|
64
|
+
return t3;
|
|
65
|
+
};
|
|
66
|
+
export {
|
|
67
|
+
useCalendarPosition
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/lib/inputs2/date/base/constants.ts"],"sourcesContent":["import { CSSProperties, RefObject, useEffect, useState } from \"react\";\n\nexport const useCalendarPosition = (\n calendarBoxOpen: boolean,\n containerRef: RefObject<HTMLDivElement | null>,\n) => {\n const [calendarBoxStyles, setCalendarBoxStyles] = useState<CSSProperties>({});\n\n useEffect(() => {\n const updatePosition = () => {\n const selectPositionOnScreen = containerRef.current?.getBoundingClientRect();\n if (selectPositionOnScreen) {\n const { top, left, width, height } = selectPositionOnScreen;\n setCalendarBoxStyles({\n top: top + height + window.scrollY,\n left: left + window.scrollX,\n width: width,\n position: 'absolute',\n });\n }\n };\n\n if (calendarBoxOpen) {\n updatePosition();\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n }\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [calendarBoxOpen, containerRef]);\n\n return { calendarBoxStyles };\n};\n"],"names":["useCalendarPosition","calendarBoxOpen","containerRef","$","_c","t0","Symbol","for","calendarBoxStyles","setCalendarBoxStyles","useState","t1","t2","updatePosition","selectPositionOnScreen","current","getBoundingClientRect","top","left","width","height","window","scrollY","scrollX","position","addEventListener","removeEventListener","useEffect","t3"],"mappings":";;AAEO,MAAMA,sBAAsBA,CAAAC,iBAAAC,iBAAA;AAAA,QAAAC,IAAAC,uBAAAA,EAAA,CAAA;AAAA,MAAAC;AAAA,MAAAF,EAAA,CAAA,MAAAG,OAAAC,IAAA,2BAAA,GAAA;AAIyCF;AAAEF,WAAAE;AAAAA,EAAA,OAAA;AAAAA,SAAAF,EAAA,CAAA;AAAA,EAAA;AAA5E,QAAA,CAAAK,mBAAAC,oBAAA,IAAkDC,SAAwBL,EAAE;AAAE,MAAAM;AAAA,MAAAC;AAAA,MAAAT,EAAA,CAAA,MAAAF,mBAAAE,SAAAD,cAAA;AAEpES,SAAAA,MAAA;AACR,YAAAE,iBAAuBA,MAAA;AACrB,cAAAC,yBAA+BZ,aAAYa,SAA+BC,sBAAAA;AAC1E,YAAIF,wBAAsB;AACxB,gBAAA;AAAA,YAAAG;AAAAA,YAAAC;AAAAA,YAAAC;AAAAA,YAAAC;AAAAA,UAAAA,IAAqCN;AACrCL,+BAAqB;AAAA,YAAAQ,KACdA,MAAMG,SAASC,OAAMC;AAAAA,YAAQJ,MAC5BA,OAAOG,OAAME;AAAAA,YAAQJ;AAAAA,YAAAK,UAEjB;AAAA,UAAA,CACX;AAAA,QAAC;AAAA,MACH;AAGH,UAAIvB,iBAAe;AACjBY,uBAAAA;AACAQ,eAAMI,iBAAkB,UAAUZ,cAAc;AAChDQ,eAAMI,iBAAkB,UAAUZ,gBAAgB,IAAI;AAAA,MAAC;AACxD,aAEM,MAAA;AACLQ,eAAMK,oBAAqB,UAAUb,cAAc;AACnDQ,eAAMK,oBAAqB,UAAUb,gBAAgB,IAAI;AAAA,MAAC;AAAA,IAC3D;AACAD,SAAA,CAACX,iBAAiBC,YAAY;AAACC,WAAAF;AAAAE,WAAAD;AAAAC,WAAAQ;AAAAR,WAAAS;AAAAA,EAAA,OAAA;AAAAD,SAAAR,EAAA,CAAA;AAAAS,SAAAT,EAAA,CAAA;AAAA,EAAA;AAxBlCwB,YAAUhB,IAwBPC,EAA+B;AAAC,MAAAgB;AAAA,MAAAzB,SAAAK,mBAAA;AAE5BoB,SAAA;AAAA,MAAApB;AAAAA,IAAAA;AAAqBL,WAAAK;AAAAL,WAAAyB;AAAAA,EAAA,OAAA;AAAAA,SAAAzB,EAAA,CAAA;AAAA,EAAA;AAAA,SAArByB;AAAqB;"}
|