@povio/ui 3.3.0 → 3.4.0-rc.10
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/dist/assets/locales/en/translation.json.d.ts +158 -0
- package/dist/assets/locales/sl/translation.json.d.ts +154 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js +7 -7
- package/dist/components/Menu/MenuDesktop.js +1 -1
- package/dist/components/Menu/MenuItem.js +4 -4
- package/dist/components/Menu/MenuMobile.js +5 -5
- package/dist/components/Menu/MenuPopover.js +2 -2
- package/dist/components/buttons/Button/Button.js +1 -1
- package/dist/components/buttons/PillButton/PillButton.js +4 -4
- package/dist/components/buttons/PillButton/pillButton.cva.d.ts +1 -1
- package/dist/components/buttons/SplitButton/SplitButton.js +3 -3
- package/dist/components/buttons/shared/ButtonContent.js +2 -2
- package/dist/components/buttons/shared/buttonContent.cva.d.ts +1 -1
- package/dist/components/inputs/Checkbox/Checkbox.d.ts +1 -2
- package/dist/components/inputs/Checkbox/Checkbox.js +95 -102
- package/dist/components/inputs/Checkbox/CheckboxCheckmark.js +2 -3
- package/dist/components/inputs/Checkbox/CheckboxGroup.d.ts +1 -2
- package/dist/components/inputs/Checkbox/CheckboxGroup.js +111 -115
- package/dist/components/inputs/DateTime/DatePicker/DatePicker.d.ts +2 -2
- package/dist/components/inputs/DateTime/DatePicker/DatePicker.js +17 -22
- package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.d.ts +2 -2
- package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.js +17 -23
- package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.d.ts +2 -2
- package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.js +21 -25
- package/dist/components/inputs/DateTime/TimePicker/TimePicker.d.ts +2 -2
- package/dist/components/inputs/DateTime/TimePicker/TimePicker.js +225 -238
- package/dist/components/inputs/DateTime/shared/Calendar.js +1 -1
- package/dist/components/inputs/DateTime/shared/CalendarCell.js +1 -1
- package/dist/components/inputs/DateTime/shared/CalendarGrid.js +1 -1
- package/dist/components/inputs/DateTime/shared/CalendarHeader.js +7 -10
- package/dist/components/inputs/DateTime/shared/CalendarSelectHeader.js +8 -12
- package/dist/components/inputs/DateTime/shared/DateField.d.ts +2 -1
- package/dist/components/inputs/DateTime/shared/DateField.js +4 -4
- package/dist/components/inputs/DateTime/shared/DatePickerInput.d.ts +2 -2
- package/dist/components/inputs/DateTime/shared/DatePickerInput.js +8 -16
- package/dist/components/inputs/DateTime/shared/DateSegmentItem.js +3 -3
- package/dist/components/inputs/DateTime/shared/DateTimeDialog.js +2 -2
- package/dist/components/inputs/DateTime/shared/DateTimeDialogFooter.js +1 -1
- package/dist/components/inputs/DateTime/shared/MonthPicker.js +2 -2
- package/dist/components/inputs/DateTime/shared/RangeCalendar.js +2 -2
- package/dist/components/inputs/DateTime/shared/TimePickerForm.js +4 -5
- package/dist/components/inputs/DateTime/shared/TimePickerInput.d.ts +2 -2
- package/dist/components/inputs/DateTime/shared/TimePickerInput.js +10 -11
- package/dist/components/inputs/DateTime/shared/YearPicker.js +2 -2
- package/dist/components/inputs/DateTime/shared/datePickerTodayIcon.js +46 -1
- package/dist/components/inputs/DateTime/shared/useFirefoxDateSegmentSelectionGuard.js +1 -1
- package/dist/components/inputs/File/FileUpload.d.ts +1 -1
- package/dist/components/inputs/File/FileUpload.js +20 -20
- package/dist/components/inputs/File/InputUpload.d.ts +1 -1
- package/dist/components/inputs/File/InputUpload.js +19 -19
- package/dist/components/inputs/File/fileUpload.types.d.ts +1 -1
- package/dist/components/inputs/File/inputUpload.types.d.ts +1 -1
- package/dist/components/inputs/File/shared/FileCard.js +1 -1
- package/dist/components/inputs/File/shared/FileCardList.js +1 -1
- package/dist/components/inputs/File/shared/FileUploadContent.js +1 -1
- package/dist/components/inputs/File/shared/FileUploadContentEmpty.js +3 -3
- package/dist/components/inputs/File/shared/FileUploadContentError.js +5 -6
- package/dist/components/inputs/File/shared/FileUploadContentFilled.js +5 -6
- package/dist/components/inputs/File/shared/FileUploadContentLoading.js +4 -5
- package/dist/components/inputs/File/shared/InputUploadContent.js +4 -4
- package/dist/components/inputs/File/shared/InputUploadFilled.js +3 -3
- package/dist/components/inputs/FormField/FormFieldError.js +1 -1
- package/dist/components/inputs/FormField/FormFieldHeader.js +4 -4
- package/dist/components/inputs/FormField/FormFieldHeaderClose.js +3 -3
- package/dist/components/inputs/FormField/FormFieldHelper.js +1 -1
- package/dist/components/inputs/FormField/FormFieldLabel.js +2 -2
- package/dist/components/inputs/Input/NumberInput/NumberInput.d.ts +1 -1
- package/dist/components/inputs/Input/NumberInput/NumberInput.js +109 -107
- package/dist/components/inputs/Input/NumberRangeInput/NumberRangeField.d.ts +2 -1
- package/dist/components/inputs/Input/NumberRangeInput/NumberRangeField.js +265 -254
- package/dist/components/inputs/Input/NumberRangeInput/NumberRangeInput.d.ts +2 -1
- package/dist/components/inputs/Input/NumberRangeInput/NumberRangeInput.js +25 -24
- package/dist/components/inputs/Input/PasswordInput/PasswordInput.d.ts +1 -1
- package/dist/components/inputs/Input/PasswordInput/PasswordInput.js +3 -4
- package/dist/components/inputs/Input/TextArea/TextArea.d.ts +2 -1
- package/dist/components/inputs/Input/TextArea/TextArea.js +118 -117
- package/dist/components/inputs/Input/TextInput/TextInput.d.ts +2 -2
- package/dist/components/inputs/Input/TextInput/TextInput.js +129 -129
- package/dist/components/inputs/Input/shared/InputContent.d.ts +2 -1
- package/dist/components/inputs/Input/shared/InputContent.js +50 -48
- package/dist/components/inputs/Inputs/Form.d.ts +4 -4
- package/dist/components/inputs/Inputs/Form.js +1 -1
- package/dist/components/inputs/Inputs/InputItem.d.ts +22 -22
- package/dist/components/inputs/Inputs/InputItem.js +36 -37
- package/dist/components/inputs/Inputs/Inputs.d.ts +2 -2
- package/dist/components/inputs/RadioGroup/RadioGroup.d.ts +1 -2
- package/dist/components/inputs/RadioGroup/RadioGroup.js +109 -113
- package/dist/components/inputs/Selection/Autocomplete/Autocomplete.d.ts +1 -1
- package/dist/components/inputs/Selection/Autocomplete/Autocomplete.js +16 -16
- package/dist/components/inputs/Selection/Autocomplete/QueryAutocomplete.d.ts +1 -1
- package/dist/components/inputs/Selection/Autocomplete/QueryAutocomplete.js +20 -20
- package/dist/components/inputs/Selection/Autocomplete/queryAutocomplete.types.d.ts +1 -1
- package/dist/components/inputs/Selection/Select/QuerySelect.d.ts +1 -1
- package/dist/components/inputs/Selection/Select/QuerySelect.js +20 -20
- package/dist/components/inputs/Selection/Select/Select.d.ts +1 -1
- package/dist/components/inputs/Selection/Select/Select.js +23 -23
- package/dist/components/inputs/Selection/shared/SelectBase.d.ts +1 -1
- package/dist/components/inputs/Selection/shared/SelectBase.js +34 -37
- package/dist/components/inputs/Selection/shared/SelectDesktop.js +58 -56
- package/dist/components/inputs/Selection/shared/SelectInput.d.ts +2 -2
- package/dist/components/inputs/Selection/shared/SelectInput.js +57 -56
- package/dist/components/inputs/Selection/shared/SelectListBox.js +1 -1
- package/dist/components/inputs/Selection/shared/SelectListBoxItem.js +2 -2
- package/dist/components/inputs/Selection/shared/SelectListBoxItemSelectAll.js +2 -2
- package/dist/components/inputs/Selection/shared/SelectListBoxLoadingItem.js +1 -1
- package/dist/components/inputs/Selection/shared/SelectListBoxSelectionBar.js +1 -1
- package/dist/components/inputs/Selection/shared/SelectMobile.js +5 -4
- package/dist/components/inputs/Selection/shared/StaticSelectTrailingContent.js +3 -3
- package/dist/components/inputs/Selection/shared/select.context.d.ts +2 -2
- package/dist/components/inputs/Selection/shared/select.context.js +5 -9
- package/dist/components/inputs/Selection/shared/select.types.d.ts +1 -1
- package/dist/components/inputs/Skeleton/InputFrame.d.ts +1 -0
- package/dist/components/inputs/Skeleton/InputFrame.js +10 -7
- package/dist/components/inputs/Slider/Slider.d.ts +1 -1
- package/dist/components/inputs/Slider/Slider.js +20 -20
- package/dist/components/inputs/TextEditor/TextEditor.d.ts +1 -1
- package/dist/components/inputs/TextEditor/TextEditor.js +20 -20
- package/dist/components/inputs/TextEditor/Toolbar/ColorPicker.js +2 -2
- package/dist/components/inputs/TextEditor/Toolbar/ColorPickerDropdown.js +4 -4
- package/dist/components/inputs/TextEditor/Toolbar/HyperlinkAction.js +4 -4
- package/dist/components/inputs/TextEditor/Toolbar/TextAlignSelect.js +5 -8
- package/dist/components/inputs/TextEditor/Toolbar/TextColorSelect.js +3 -3
- package/dist/components/inputs/TextEditor/Toolbar/TextHighlightSelect.js +4 -5
- package/dist/components/inputs/TextEditor/Toolbar/TextListActions.js +4 -5
- package/dist/components/inputs/TextEditor/Toolbar/TextMarksActions.js +6 -9
- package/dist/components/inputs/Toggle/Toggle.d.ts +1 -2
- package/dist/components/inputs/Toggle/Toggle.js +61 -65
- package/dist/components/inputs/shared/CheckContent.js +1 -1
- package/dist/components/inputs/shared/InputClear.js +45 -28
- package/dist/components/inputs/shared/TooltipWrapper.d.ts +1 -1
- package/dist/components/inputs/shared/form.binding.d.ts +27 -0
- package/dist/components/inputs/shared/form.binding.js +57 -0
- package/dist/components/inputs/shared/form.types.d.ts +9 -8
- package/dist/components/inputs/shared/form.types.js +8 -0
- package/dist/components/inputs/shared/input.cva.js +1 -1
- package/dist/components/inputs/shared/useStaticInputHandoff.js +64 -38
- package/dist/components/navigation/Accordion/Accordion.js +1 -1
- package/dist/components/navigation/Accordion/AccordionItem.js +3 -3
- package/dist/components/navigation/Stepper/Stepper.js +2 -2
- package/dist/components/navigation/Stepper/StepperItem.js +4 -4
- package/dist/components/overlays/ActionModal/ActionModal.js +1 -1
- package/dist/components/overlays/BottomSheet/BottomSheet.js +3 -3
- package/dist/components/overlays/BottomSheet/BottomSheetHeader.js +4 -4
- package/dist/components/overlays/Drawer/Drawer.js +2 -2
- package/dist/components/overlays/Modal/Modal.js +3 -3
- package/dist/components/overlays/ResponsivePopover/ResponsivePopover.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +15 -8
- package/dist/components/overlays/Tooltip/TooltipEllipsis.js +1 -1
- package/dist/components/segment/Segment.d.ts +1 -1
- package/dist/components/segment/Segment.js +21 -21
- package/dist/components/segment/SegmentItem.js +1 -1
- package/dist/components/segment/segment.types.d.ts +1 -1
- package/dist/components/shared/pagination/Pagination.js +1 -1
- package/dist/components/shared/pagination/PaginationList.js +6 -9
- package/dist/components/table/ColumnConfig.js +1 -1
- package/dist/components/table/InfiniteTable.js +1 -1
- package/dist/components/table/Table.js +6 -8
- package/dist/components/text/Link/Link.js +1 -1
- package/dist/components/text/Pill/Pill.js +3 -3
- package/dist/components/text/Tag/Tag.js +3 -3
- package/dist/config/confirmation.context.js +1 -1
- package/dist/config/link.context.js +1 -1
- package/dist/config/router.context.js +1 -1
- package/dist/config/theme.context.js +1 -1
- package/dist/config/uiConfig.context.d.ts +14 -5
- package/dist/config/uiConfig.context.js +9 -11
- package/dist/config/uiOverrides.context.js +2 -2
- package/dist/helpers/dynamicColumns.d.ts +1 -1
- package/dist/helpers/dynamicInputs.d.ts +7 -7
- package/dist/hooks/useAutosave.d.ts +4 -4
- package/dist/hooks/useAutosave.js +64 -49
- package/dist/hooks/useFilters.js +1 -1
- package/dist/hooks/useForm.d.ts +39 -15
- package/dist/hooks/useForm.js +96 -43
- package/dist/hooks/useFormAutosave.d.ts +8 -9
- package/dist/hooks/useFormAutosave.js +23 -9
- package/dist/hooks/useIntersectionObserver.js +1 -1
- package/dist/hooks/useLocalStorage.js +1 -1
- package/dist/hooks/usePagination.js +1 -1
- package/dist/hooks/useScrollableListBox.js +1 -1
- package/dist/hooks/useSorting.js +1 -1
- package/dist/hooks/useStateAndRef.js +1 -1
- package/dist/hooks/useTableColumnConfig.js +1 -1
- package/dist/index.d.ts +1 -263
- package/dist/index.js +11 -71
- package/dist/rhf/Inputs.d.ts +60 -0
- package/dist/rhf/Inputs.js +148 -0
- package/dist/rhf/components.d.ts +80 -0
- package/dist/rhf/components.js +101 -0
- package/dist/rhf/dynamicInputs.d.ts +18 -0
- package/dist/rhf/dynamicInputs.js +5 -0
- package/dist/rhf/fieldAdapter.d.ts +7 -0
- package/dist/rhf/fieldAdapter.js +40 -0
- package/dist/rhf/form.types.d.ts +12 -0
- package/dist/rhf/useAutosave.d.ts +10 -0
- package/dist/rhf/useAutosave.js +71 -0
- package/dist/rhf/useForm.d.ts +18 -0
- package/dist/rhf/useForm.js +48 -0
- package/dist/rhf/useFormAutosave.d.ts +15 -0
- package/dist/rhf/useFormAutosave.js +59 -0
- package/dist/rhf.d.ts +225 -0
- package/dist/tanstack.d.ts +224 -0
- package/dist/tanstack.js +141 -0
- package/package.json +15 -3
- package/dist/assets/icons/Account.d.ts +0 -2
- package/dist/assets/icons/AlignCenter.d.ts +0 -2
- package/dist/assets/icons/AlignCenter.js +0 -30
- package/dist/assets/icons/AlignLeft.d.ts +0 -2
- package/dist/assets/icons/AlignLeft.js +0 -30
- package/dist/assets/icons/AlignLeftRight.d.ts +0 -2
- package/dist/assets/icons/AlignLeftRight.js +0 -30
- package/dist/assets/icons/AlignRight.d.ts +0 -2
- package/dist/assets/icons/AlignRight.js +0 -30
- package/dist/assets/icons/ArrowDropDown.d.ts +0 -2
- package/dist/assets/icons/ArrowDropDown.js +0 -30
- package/dist/assets/icons/ArrowDropUp.d.ts +0 -2
- package/dist/assets/icons/ArrowDropUp.js +0 -30
- package/dist/assets/icons/ArrowLeft.d.ts +0 -2
- package/dist/assets/icons/ArrowLeft.js +0 -30
- package/dist/assets/icons/ArrowRight.d.ts +0 -2
- package/dist/assets/icons/ArrowRight.js +0 -30
- package/dist/assets/icons/Board.d.ts +0 -2
- package/dist/assets/icons/Bold.d.ts +0 -2
- package/dist/assets/icons/Bold.js +0 -30
- package/dist/assets/icons/BulletedList.d.ts +0 -2
- package/dist/assets/icons/BulletedList.js +0 -30
- package/dist/assets/icons/Calendar.d.ts +0 -2
- package/dist/assets/icons/Calendar.js +0 -32
- package/dist/assets/icons/Check.d.ts +0 -2
- package/dist/assets/icons/Check.js +0 -32
- package/dist/assets/icons/CheckCircle.d.ts +0 -2
- package/dist/assets/icons/CheckCircle.js +0 -30
- package/dist/assets/icons/CheckboxCheckmark.d.ts +0 -2
- package/dist/assets/icons/CheckboxCheckmark.js +0 -33
- package/dist/assets/icons/CheckboxIndeterminate.d.ts +0 -2
- package/dist/assets/icons/CheckboxIndeterminate.js +0 -33
- package/dist/assets/icons/ChevronDown.d.ts +0 -2
- package/dist/assets/icons/ChevronDown.js +0 -32
- package/dist/assets/icons/ChevronLeft.d.ts +0 -2
- package/dist/assets/icons/ChevronLeft.js +0 -32
- package/dist/assets/icons/ChevronRight.d.ts +0 -2
- package/dist/assets/icons/ChevronRight.js +0 -32
- package/dist/assets/icons/ChevronUp.d.ts +0 -2
- package/dist/assets/icons/ChevronUp.js +0 -32
- package/dist/assets/icons/ChevronsLeft.d.ts +0 -2
- package/dist/assets/icons/ChevronsLeft.js +0 -32
- package/dist/assets/icons/ChevronsRight.d.ts +0 -2
- package/dist/assets/icons/ChevronsRight.js +0 -32
- package/dist/assets/icons/Clock.d.ts +0 -2
- package/dist/assets/icons/Clock.js +0 -30
- package/dist/assets/icons/Close.d.ts +0 -2
- package/dist/assets/icons/Close.js +0 -30
- package/dist/assets/icons/DateTime.d.ts +0 -2
- package/dist/assets/icons/DateTime.js +0 -39
- package/dist/assets/icons/DragIndicator.d.ts +0 -2
- package/dist/assets/icons/DragIndicator.js +0 -30
- package/dist/assets/icons/Edit.d.ts +0 -2
- package/dist/assets/icons/Emoji.d.ts +0 -2
- package/dist/assets/icons/File.d.ts +0 -2
- package/dist/assets/icons/File.js +0 -32
- package/dist/assets/icons/Grid.d.ts +0 -2
- package/dist/assets/icons/Highlight.d.ts +0 -2
- package/dist/assets/icons/Highlight.js +0 -30
- package/dist/assets/icons/HighlightOn.d.ts +0 -6
- package/dist/assets/icons/HighlightOn.js +0 -55
- package/dist/assets/icons/Home.d.ts +0 -2
- package/dist/assets/icons/Home.js +0 -30
- package/dist/assets/icons/Image.d.ts +0 -2
- package/dist/assets/icons/ImageError.d.ts +0 -2
- package/dist/assets/icons/Info.d.ts +0 -2
- package/dist/assets/icons/Info.js +0 -41
- package/dist/assets/icons/Italic.d.ts +0 -2
- package/dist/assets/icons/Italic.js +0 -30
- package/dist/assets/icons/Link.d.ts +0 -2
- package/dist/assets/icons/Link.js +0 -30
- package/dist/assets/icons/Loader.d.ts +0 -2
- package/dist/assets/icons/MapPin.d.ts +0 -2
- package/dist/assets/icons/Menu.d.ts +0 -2
- package/dist/assets/icons/Menu.js +0 -30
- package/dist/assets/icons/Minus.d.ts +0 -2
- package/dist/assets/icons/MoreHoriz.d.ts +0 -2
- package/dist/assets/icons/NumberedList.d.ts +0 -2
- package/dist/assets/icons/NumberedList.js +0 -30
- package/dist/assets/icons/Pause.d.ts +0 -2
- package/dist/assets/icons/Plus.d.ts +0 -2
- package/dist/assets/icons/PointerHorizontal.d.ts +0 -2
- package/dist/assets/icons/PointerHorizontal.js +0 -30
- package/dist/assets/icons/PointerVertical.d.ts +0 -2
- package/dist/assets/icons/PointerVertical.js +0 -30
- package/dist/assets/icons/Retry.d.ts +0 -2
- package/dist/assets/icons/Search.d.ts +0 -2
- package/dist/assets/icons/Search.js +0 -30
- package/dist/assets/icons/Send.d.ts +0 -2
- package/dist/assets/icons/Send.js +0 -32
- package/dist/assets/icons/Share.d.ts +0 -2
- package/dist/assets/icons/Slash.d.ts +0 -2
- package/dist/assets/icons/Strikethrough.d.ts +0 -2
- package/dist/assets/icons/Strikethrough.js +0 -30
- package/dist/assets/icons/TextColor.d.ts +0 -6
- package/dist/assets/icons/TextColor.js +0 -52
- package/dist/assets/icons/Today.d.ts +0 -2
- package/dist/assets/icons/Today.js +0 -30
- package/dist/assets/icons/Trash.d.ts +0 -2
- package/dist/assets/icons/Underlined.d.ts +0 -2
- package/dist/assets/icons/Underlined.js +0 -32
- package/dist/assets/icons/Upload.d.ts +0 -2
- package/dist/assets/icons/Upload.js +0 -39
- package/dist/assets/icons/User.d.ts +0 -2
- package/dist/assets/icons/Visibility.d.ts +0 -2
- package/dist/assets/icons/Visibility.js +0 -30
- package/dist/assets/icons/VisibilityOff.d.ts +0 -2
- package/dist/assets/icons/VisibilityOff.js +0 -30
- package/dist/assets/icons/WarningFilled.d.ts +0 -2
- package/dist/assets/icons/WarningFilled.js +0 -32
- package/dist/assets/icons/WarningOutlined.d.ts +0 -2
- /package/dist/{hooks/useAutosave.spec.d.ts → rhf/entrypoints.type-test.d.ts} +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { Autocomplete, Checkbox, CheckboxGroup, DatePicker, DateRangePicker, DateTimePicker, NumberInput, NumberRangeInput, PasswordInput, QueryAutocomplete, QuerySelect, Segment, Select, Slider, TextArea, TextInput, TimePicker, Toggle } from "./components.js";
|
|
2
|
+
import { StringUtils } from "../utils/string.utils.js";
|
|
3
|
+
import { ZodUtils } from "../utils/zod.utils.js";
|
|
4
|
+
import { c } from "react/compiler-runtime";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
//#region src/rhf/Inputs.tsx
|
|
8
|
+
var componentRegistry = {
|
|
9
|
+
autocomplete: Autocomplete,
|
|
10
|
+
checkbox: Checkbox,
|
|
11
|
+
checkboxGroup: CheckboxGroup,
|
|
12
|
+
datePicker: DatePicker,
|
|
13
|
+
dateRangePicker: DateRangePicker,
|
|
14
|
+
dateTimePicker: DateTimePicker,
|
|
15
|
+
numberInput: NumberInput,
|
|
16
|
+
numberRangeInput: NumberRangeInput,
|
|
17
|
+
passwordInput: PasswordInput,
|
|
18
|
+
queryAutocomplete: QueryAutocomplete,
|
|
19
|
+
querySelect: QuerySelect,
|
|
20
|
+
segment: Segment,
|
|
21
|
+
select: Select,
|
|
22
|
+
slider: Slider,
|
|
23
|
+
textArea: TextArea,
|
|
24
|
+
textInput: TextInput,
|
|
25
|
+
timePicker: TimePicker,
|
|
26
|
+
toggle: Toggle
|
|
27
|
+
};
|
|
28
|
+
function InputItem({ form, inputDef }) {
|
|
29
|
+
const { name, label = "", placeholder, props, inputWrapper, render, type } = inputDef;
|
|
30
|
+
const formControl = {
|
|
31
|
+
control: form.control,
|
|
32
|
+
name
|
|
33
|
+
};
|
|
34
|
+
if (render) return render(formControl, form);
|
|
35
|
+
if (!type) return null;
|
|
36
|
+
const Component = componentRegistry[type];
|
|
37
|
+
const usesChildrenAsLabel = type === "toggle" || type === "checkbox";
|
|
38
|
+
const inputComponent = /* @__PURE__ */ jsx(Component, {
|
|
39
|
+
...props,
|
|
40
|
+
label: usesChildrenAsLabel ? void 0 : label,
|
|
41
|
+
placeholder,
|
|
42
|
+
formControl,
|
|
43
|
+
children: usesChildrenAsLabel ? label : void 0
|
|
44
|
+
});
|
|
45
|
+
return inputWrapper ? inputWrapper(inputComponent, label) : inputComponent;
|
|
46
|
+
}
|
|
47
|
+
function Inputs(t0) {
|
|
48
|
+
const $ = c(9);
|
|
49
|
+
const { form, inputDefs, children } = t0;
|
|
50
|
+
if (!children) {
|
|
51
|
+
let t1;
|
|
52
|
+
if ($[0] !== form || $[1] !== inputDefs) {
|
|
53
|
+
let t2;
|
|
54
|
+
if ($[3] !== form) {
|
|
55
|
+
t2 = (inputDef) => /* @__PURE__ */ jsx(InputItem, {
|
|
56
|
+
form,
|
|
57
|
+
inputDef
|
|
58
|
+
}, String(inputDef.name));
|
|
59
|
+
$[3] = form;
|
|
60
|
+
$[4] = t2;
|
|
61
|
+
} else t2 = $[4];
|
|
62
|
+
t1 = inputDefs.map(t2);
|
|
63
|
+
$[0] = form;
|
|
64
|
+
$[1] = inputDefs;
|
|
65
|
+
$[2] = t1;
|
|
66
|
+
} else t1 = $[2];
|
|
67
|
+
return t1;
|
|
68
|
+
}
|
|
69
|
+
let t1;
|
|
70
|
+
if ($[5] !== children || $[6] !== form || $[7] !== inputDefs) {
|
|
71
|
+
const rendered = {};
|
|
72
|
+
for (const inputDef_0 of inputDefs) rendered[inputDef_0.name] = /* @__PURE__ */ jsx(InputItem, {
|
|
73
|
+
form,
|
|
74
|
+
inputDef: inputDef_0
|
|
75
|
+
});
|
|
76
|
+
t1 = children(rendered);
|
|
77
|
+
$[5] = children;
|
|
78
|
+
$[6] = form;
|
|
79
|
+
$[7] = inputDefs;
|
|
80
|
+
$[8] = t1;
|
|
81
|
+
} else t1 = $[8];
|
|
82
|
+
return t1;
|
|
83
|
+
}
|
|
84
|
+
function Form(t0) {
|
|
85
|
+
const $ = c(16);
|
|
86
|
+
const { form, schema, onSubmit, onError, className, children } = t0;
|
|
87
|
+
let fields;
|
|
88
|
+
if ($[0] !== form || $[1] !== schema.shape) {
|
|
89
|
+
fields = {};
|
|
90
|
+
let t1;
|
|
91
|
+
if ($[3] !== schema.shape) {
|
|
92
|
+
t1 = Object.keys(schema.shape);
|
|
93
|
+
$[3] = schema.shape;
|
|
94
|
+
$[4] = t1;
|
|
95
|
+
} else t1 = $[4];
|
|
96
|
+
for (const field of t1) {
|
|
97
|
+
const componentName = StringUtils.capitalize(String(field));
|
|
98
|
+
fields[componentName] = ((t2) => {
|
|
99
|
+
const { inputType, label, placeholder, ...props } = t2;
|
|
100
|
+
const schemaType = ZodUtils.unwrapZodType(schema.shape[field]);
|
|
101
|
+
return /* @__PURE__ */ jsx(InputItem, {
|
|
102
|
+
form,
|
|
103
|
+
inputDef: {
|
|
104
|
+
name: field,
|
|
105
|
+
type: inputType ?? (schemaType instanceof z.ZodBoolean ? "toggle" : schemaType instanceof z.ZodNumber ? "numberInput" : "textInput"),
|
|
106
|
+
label,
|
|
107
|
+
placeholder,
|
|
108
|
+
props
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
$[0] = form;
|
|
114
|
+
$[1] = schema.shape;
|
|
115
|
+
$[2] = fields;
|
|
116
|
+
} else fields = $[2];
|
|
117
|
+
const components = fields;
|
|
118
|
+
let t1;
|
|
119
|
+
if ($[5] !== form || $[6] !== onError || $[7] !== onSubmit) {
|
|
120
|
+
t1 = form.handleSubmit(onSubmit, onError);
|
|
121
|
+
$[5] = form;
|
|
122
|
+
$[6] = onError;
|
|
123
|
+
$[7] = onSubmit;
|
|
124
|
+
$[8] = t1;
|
|
125
|
+
} else t1 = $[8];
|
|
126
|
+
let t2;
|
|
127
|
+
if ($[9] !== children || $[10] !== components) {
|
|
128
|
+
t2 = children(components);
|
|
129
|
+
$[9] = children;
|
|
130
|
+
$[10] = components;
|
|
131
|
+
$[11] = t2;
|
|
132
|
+
} else t2 = $[11];
|
|
133
|
+
let t3;
|
|
134
|
+
if ($[12] !== className || $[13] !== t1 || $[14] !== t2) {
|
|
135
|
+
t3 = /* @__PURE__ */ jsx("form", {
|
|
136
|
+
className,
|
|
137
|
+
onSubmit: t1,
|
|
138
|
+
children: t2
|
|
139
|
+
});
|
|
140
|
+
$[12] = className;
|
|
141
|
+
$[13] = t1;
|
|
142
|
+
$[14] = t2;
|
|
143
|
+
$[15] = t3;
|
|
144
|
+
} else t3 = $[15];
|
|
145
|
+
return t3;
|
|
146
|
+
}
|
|
147
|
+
//#endregion
|
|
148
|
+
export { Form, Inputs };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { FieldValues } from 'react-hook-form';
|
|
2
|
+
import { Key } from 'react-aria-components';
|
|
3
|
+
import { CheckboxProps } from '../components/inputs/Checkbox/Checkbox';
|
|
4
|
+
import { CheckboxGroupProps } from '../components/inputs/Checkbox/CheckboxGroup';
|
|
5
|
+
import { DatePickerProps } from '../components/inputs/DateTime/DatePicker/DatePicker';
|
|
6
|
+
import { DateRangePickerProps } from '../components/inputs/DateTime/DateRangePicker/DateRangePicker';
|
|
7
|
+
import { DateTimePickerProps } from '../components/inputs/DateTime/DateTimePicker/DateTimePicker';
|
|
8
|
+
import { TimePickerProps } from '../components/inputs/DateTime/TimePicker/TimePicker';
|
|
9
|
+
import { FileUploadBaseProps } from '../components/inputs/File/FileUpload';
|
|
10
|
+
import { InputUploadBaseProps } from '../components/inputs/File/InputUpload';
|
|
11
|
+
import { NumberInputProps } from '../components/inputs/Input/NumberInput/NumberInput';
|
|
12
|
+
import { NumberRangeInputProps } from '../components/inputs/Input/NumberRangeInput/NumberRangeInput';
|
|
13
|
+
import { PasswordInputProps } from '../components/inputs/Input/PasswordInput/PasswordInput';
|
|
14
|
+
import { TextAreaProps } from '../components/inputs/Input/TextArea/TextArea';
|
|
15
|
+
import { TextInputProps } from '../components/inputs/Input/TextInput/TextInput';
|
|
16
|
+
import { RadioGroupProps } from '../components/inputs/RadioGroup/RadioGroup';
|
|
17
|
+
import { AutocompleteProps } from '../components/inputs/Selection/Autocomplete/Autocomplete';
|
|
18
|
+
import { QueryAutocompleteProps, QueryFn as AutocompleteQueryFn } from '../components/inputs/Selection/Autocomplete/queryAutocomplete.types';
|
|
19
|
+
import { SelectProps } from '../components/inputs/Selection/Select/Select';
|
|
20
|
+
import { QuerySelect as TanStackQuerySelect, QuerySelectProps } from '../components/inputs/Selection/Select/QuerySelect';
|
|
21
|
+
import { DefaultInitialSelectItem, GroupedSelectProps, MultiSelectProps, SelectItem, SingleSelectProps } from '../components/inputs/Selection/shared/select.types';
|
|
22
|
+
import { SliderProps } from '../components/inputs/Slider/Slider';
|
|
23
|
+
import { ToggleProps } from '../components/inputs/Toggle/Toggle';
|
|
24
|
+
import { TextEditorProps } from '../components/inputs/TextEditor/TextEditor';
|
|
25
|
+
import { SegmentProps } from '../components/segment/segment.types';
|
|
26
|
+
import { ControlProps, FormControl } from './form.types';
|
|
27
|
+
import { FireBlurOnChangeProps } from './fieldAdapter';
|
|
28
|
+
export type ControlledCheckboxProps<TFieldValues extends FieldValues> = ControlProps<CheckboxProps & FireBlurOnChangeProps, TFieldValues, "isSelected">;
|
|
29
|
+
export declare const Checkbox: <TFieldValues extends FieldValues>(props: ControlledCheckboxProps<TFieldValues>) => import('react').ReactNode;
|
|
30
|
+
export type ControlledCheckboxGroupProps<TFieldValues extends FieldValues> = ControlProps<CheckboxGroupProps & FireBlurOnChangeProps, TFieldValues>;
|
|
31
|
+
export declare const CheckboxGroup: <TFieldValues extends FieldValues>(props: ControlledCheckboxGroupProps<TFieldValues>) => import('react').ReactNode;
|
|
32
|
+
export type ControlledDatePickerProps<TFieldValues extends FieldValues> = ControlProps<DatePickerProps & FireBlurOnChangeProps, TFieldValues>;
|
|
33
|
+
export declare const DatePicker: <TFieldValues extends FieldValues>(props: ControlledDatePickerProps<TFieldValues>) => import('react').ReactNode;
|
|
34
|
+
export type ControlledDateRangePickerProps<TFieldValues extends FieldValues> = ControlProps<DateRangePickerProps & FireBlurOnChangeProps, TFieldValues>;
|
|
35
|
+
export declare const DateRangePicker: <TFieldValues extends FieldValues>(props: ControlledDateRangePickerProps<TFieldValues>) => import('react').ReactNode;
|
|
36
|
+
export type ControlledDateTimePickerProps<TFieldValues extends FieldValues> = ControlProps<DateTimePickerProps & FireBlurOnChangeProps, TFieldValues>;
|
|
37
|
+
export declare const DateTimePicker: <TFieldValues extends FieldValues>(props: ControlledDateTimePickerProps<TFieldValues>) => import('react').ReactNode;
|
|
38
|
+
export type ControlledTimePickerProps<TFieldValues extends FieldValues> = ControlProps<TimePickerProps & FireBlurOnChangeProps, TFieldValues>;
|
|
39
|
+
export declare const TimePicker: <TFieldValues extends FieldValues>(props: ControlledTimePickerProps<TFieldValues>) => import('react').ReactNode;
|
|
40
|
+
export type ControlledNumberInputProps<TFieldValues extends FieldValues> = ControlProps<NumberInputProps, TFieldValues>;
|
|
41
|
+
export declare const NumberInput: <TFieldValues extends FieldValues>(props: ControlledNumberInputProps<TFieldValues>) => import('react').ReactNode;
|
|
42
|
+
export type ControlledNumberRangeInputProps<TFieldValues extends FieldValues> = ControlProps<NumberRangeInputProps, TFieldValues>;
|
|
43
|
+
export declare const NumberRangeInput: <TFieldValues extends FieldValues>(props: ControlledNumberRangeInputProps<TFieldValues>) => import('react').ReactNode;
|
|
44
|
+
export type ControlledPasswordInputProps<TFieldValues extends FieldValues> = ControlProps<PasswordInputProps, TFieldValues>;
|
|
45
|
+
export declare const PasswordInput: <TFieldValues extends FieldValues>(props: ControlledPasswordInputProps<TFieldValues>) => import('react').ReactNode;
|
|
46
|
+
export type ControlledTextAreaProps<TFieldValues extends FieldValues> = ControlProps<TextAreaProps, TFieldValues>;
|
|
47
|
+
export declare const TextArea: <TFieldValues extends FieldValues>(props: ControlledTextAreaProps<TFieldValues>) => import('react').ReactNode;
|
|
48
|
+
export type ControlledTextInputProps<TFieldValues extends FieldValues> = ControlProps<TextInputProps, TFieldValues>;
|
|
49
|
+
export declare const TextInput: <TFieldValues extends FieldValues>(props: ControlledTextInputProps<TFieldValues>) => import('react').ReactNode;
|
|
50
|
+
export type ControlledRadioGroupProps<TFieldValues extends FieldValues> = ControlProps<RadioGroupProps & FireBlurOnChangeProps, TFieldValues>;
|
|
51
|
+
export declare const RadioGroup: <TFieldValues extends FieldValues>(props: ControlledRadioGroupProps<TFieldValues>) => import('react').ReactNode;
|
|
52
|
+
export type ControlledSliderProps<TFieldValues extends FieldValues, IsRange extends boolean = false> = ControlProps<SliderProps<IsRange>, TFieldValues>;
|
|
53
|
+
export declare const Slider: <TFieldValues extends FieldValues, IsRange extends boolean = false>(props: ControlledSliderProps<TFieldValues, IsRange>) => import('react').ReactNode;
|
|
54
|
+
export type ControlledToggleProps<TFieldValues extends FieldValues> = ControlProps<ToggleProps & FireBlurOnChangeProps, TFieldValues, "isSelected">;
|
|
55
|
+
export declare const Toggle: <TFieldValues extends FieldValues>(props: ControlledToggleProps<TFieldValues>) => import('react').ReactNode;
|
|
56
|
+
export type ControlledSegmentProps<TFieldValues extends FieldValues, TKey extends Key = Key> = ControlProps<SegmentProps<TKey>, TFieldValues>;
|
|
57
|
+
export declare const Segment: <TFieldValues extends FieldValues, TKey extends Key = Key>(props: ControlledSegmentProps<TFieldValues, TKey>) => import('react').ReactNode;
|
|
58
|
+
type RHFSelectionProps<TFieldValues extends FieldValues, TProps, TKey extends Key, TInitialSelectItem> = ({
|
|
59
|
+
selectionMode: MultiSelectProps["selectionMode"];
|
|
60
|
+
} & ControlProps<Omit<TProps, keyof GroupedSelectProps> & MultiSelectProps<TKey, TInitialSelectItem>, TFieldValues>) | ({
|
|
61
|
+
selectionMode?: SingleSelectProps["selectionMode"];
|
|
62
|
+
} & ControlProps<Omit<TProps, keyof GroupedSelectProps> & SingleSelectProps<TKey, TInitialSelectItem>, TFieldValues>);
|
|
63
|
+
export type ControlledSelectProps<TFieldValues extends FieldValues, TKey extends Key = Key, TInitialSelectItem = DefaultInitialSelectItem<TKey>> = RHFSelectionProps<TFieldValues, SelectProps<TKey, TInitialSelectItem> & FireBlurOnChangeProps, TKey, TInitialSelectItem>;
|
|
64
|
+
export declare const Select: <TFieldValues extends FieldValues, TKey extends Key = Key, TInitialSelectItem = DefaultInitialSelectItem<TKey>>(props: ControlledSelectProps<TFieldValues, TKey, TInitialSelectItem>) => import('react').ReactNode;
|
|
65
|
+
export type ControlledAutocompleteProps<TFieldValues extends FieldValues, TKey extends Key = Key, TInitialSelectItem = DefaultInitialSelectItem<TKey>> = RHFSelectionProps<TFieldValues, AutocompleteProps<TKey, TInitialSelectItem> & FireBlurOnChangeProps, TKey, TInitialSelectItem>;
|
|
66
|
+
export declare const Autocomplete: <TFieldValues extends FieldValues, TKey extends Key = Key, TInitialSelectItem = DefaultInitialSelectItem<TKey>>(props: ControlledAutocompleteProps<TFieldValues, TKey, TInitialSelectItem>) => import('react').ReactNode;
|
|
67
|
+
type ReplaceFieldWithFormControl<TProps, TFieldValues extends FieldValues> = Omit<TProps, "field"> & {
|
|
68
|
+
formControl: FormControl<TFieldValues, unknown>;
|
|
69
|
+
} & FireBlurOnChangeProps;
|
|
70
|
+
export type RHFQuerySelectProps<TFieldValues extends FieldValues, TQueryFn extends Parameters<typeof TanStackQuerySelect>[0]["query"], TKey extends Key = Key, TInitialSelectItem = DefaultInitialSelectItem<TKey>> = ReplaceFieldWithFormControl<QuerySelectProps<TFieldValues, TQueryFn, TKey, TInitialSelectItem>, TFieldValues>;
|
|
71
|
+
export declare const QuerySelect: <TFieldValues extends FieldValues, TQueryFn extends Parameters<typeof TanStackQuerySelect>[0]["query"], TKey extends Key = Key, TInitialSelectItem = DefaultInitialSelectItem<TKey>>(props: RHFQuerySelectProps<TFieldValues, TQueryFn, TKey, TInitialSelectItem>) => import('react').ReactNode;
|
|
72
|
+
export type RHFQueryAutocompleteProps<TFieldValues extends FieldValues, TSelectItem extends SelectItem<any>, TQueryFn extends AutocompleteQueryFn> = ReplaceFieldWithFormControl<QueryAutocompleteProps<TFieldValues, TSelectItem, TQueryFn>, TFieldValues>;
|
|
73
|
+
export declare const QueryAutocomplete: <TFieldValues extends FieldValues, TSelectItem extends SelectItem<any>, TQueryFn extends AutocompleteQueryFn>(props: RHFQueryAutocompleteProps<TFieldValues, TSelectItem, TQueryFn>) => import('react').ReactNode;
|
|
74
|
+
export type ControlledTextEditorProps<TFieldValues extends FieldValues> = ControlProps<TextEditorProps, TFieldValues>;
|
|
75
|
+
export declare const TextEditor: <TFieldValues extends FieldValues>(props: ControlledTextEditorProps<TFieldValues>) => import('react').ReactNode;
|
|
76
|
+
export type RHFFileUploadProps<TFieldValues extends FieldValues> = ControlProps<FileUploadBaseProps, TFieldValues>;
|
|
77
|
+
export declare const FileUpload: <TFieldValues extends FieldValues>(props: RHFFileUploadProps<TFieldValues>) => import('react').ReactNode;
|
|
78
|
+
export type RHFInputUploadProps<TFieldValues extends FieldValues> = ControlProps<InputUploadBaseProps, TFieldValues>;
|
|
79
|
+
export declare const InputUpload: <TFieldValues extends FieldValues>(props: RHFInputUploadProps<TFieldValues>) => import('react').ReactNode;
|
|
80
|
+
export type { CheckboxGroupProps, CheckboxProps, DatePickerProps, DateRangePickerProps, DateTimePickerProps, NumberInputProps, NumberRangeInputProps, PasswordInputProps, RadioGroupProps, SegmentProps, SelectProps, SliderProps, TextAreaProps, TextInputProps, TimePickerProps, ToggleProps, TextEditorProps, AutocompleteProps, };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { UIConfig } from "../config/uiConfig.context.js";
|
|
2
|
+
import { Checkbox as Checkbox$1 } from "../components/inputs/Checkbox/Checkbox.js";
|
|
3
|
+
import { CheckboxGroup as CheckboxGroup$1 } from "../components/inputs/Checkbox/CheckboxGroup.js";
|
|
4
|
+
import { DatePicker as DatePicker$1 } from "../components/inputs/DateTime/DatePicker/DatePicker.js";
|
|
5
|
+
import { TextInput as TextInput$1 } from "../components/inputs/Input/TextInput/TextInput.js";
|
|
6
|
+
import { Select as Select$1 } from "../components/inputs/Selection/Select/Select.js";
|
|
7
|
+
import { DateRangePicker as DateRangePicker$1 } from "../components/inputs/DateTime/DateRangePicker/DateRangePicker.js";
|
|
8
|
+
import { DateTimePicker as DateTimePicker$1 } from "../components/inputs/DateTime/DateTimePicker/DateTimePicker.js";
|
|
9
|
+
import { TimePicker as TimePicker$1 } from "../components/inputs/DateTime/TimePicker/TimePicker.js";
|
|
10
|
+
import { FileUpload as FileUpload$1 } from "../components/inputs/File/FileUpload.js";
|
|
11
|
+
import { InputUpload as InputUpload$1 } from "../components/inputs/File/InputUpload.js";
|
|
12
|
+
import { NumberInput as NumberInput$1 } from "../components/inputs/Input/NumberInput/NumberInput.js";
|
|
13
|
+
import { NumberRangeInput as NumberRangeInput$1 } from "../components/inputs/Input/NumberRangeInput/NumberRangeInput.js";
|
|
14
|
+
import { PasswordInput as PasswordInput$1 } from "../components/inputs/Input/PasswordInput/PasswordInput.js";
|
|
15
|
+
import { TextArea as TextArea$1 } from "../components/inputs/Input/TextArea/TextArea.js";
|
|
16
|
+
import { RadioGroup as RadioGroup$1 } from "../components/inputs/RadioGroup/RadioGroup.js";
|
|
17
|
+
import { Autocomplete as Autocomplete$1 } from "../components/inputs/Selection/Autocomplete/Autocomplete.js";
|
|
18
|
+
import { QueryAutocomplete as QueryAutocomplete$1 } from "../components/inputs/Selection/Autocomplete/QueryAutocomplete.js";
|
|
19
|
+
import { QuerySelect as QuerySelect$1 } from "../components/inputs/Selection/Select/QuerySelect.js";
|
|
20
|
+
import { Slider as Slider$1 } from "../components/inputs/Slider/Slider.js";
|
|
21
|
+
import { Toggle as Toggle$1 } from "../components/inputs/Toggle/Toggle.js";
|
|
22
|
+
import { Segment as Segment$1 } from "../components/segment/Segment.js";
|
|
23
|
+
import { renderRHFField } from "./fieldAdapter.js";
|
|
24
|
+
import { c } from "react/compiler-runtime";
|
|
25
|
+
import { parseDate, parseDateTime, parseTime } from "@internationalized/date";
|
|
26
|
+
//#region src/rhf/components.tsx
|
|
27
|
+
var runtime = (component) => component;
|
|
28
|
+
var useFireBlurOnChange = (props, key) => {
|
|
29
|
+
const $ = c(3);
|
|
30
|
+
const config = UIConfig.useConfig();
|
|
31
|
+
const t0 = props.fireBlurOnChange ?? config[key].fireBlurOnChange;
|
|
32
|
+
let t1;
|
|
33
|
+
if ($[0] !== props || $[1] !== t0) {
|
|
34
|
+
t1 = {
|
|
35
|
+
...props,
|
|
36
|
+
fireBlurOnChange: t0
|
|
37
|
+
};
|
|
38
|
+
$[0] = props;
|
|
39
|
+
$[1] = t0;
|
|
40
|
+
$[2] = t1;
|
|
41
|
+
} else t1 = $[2];
|
|
42
|
+
return t1;
|
|
43
|
+
};
|
|
44
|
+
var toCalendarDate$1 = (value) => typeof value === "string" ? parseDate(value.slice(0, 10)) : value;
|
|
45
|
+
var toCalendarDateTime$1 = (value) => typeof value === "string" ? parseDateTime(value.replace(/(?:Z|[+-]\d{2}:?\d{2})$/, "")) : value;
|
|
46
|
+
var toTime$1 = (value) => typeof value === "string" ? parseTime(value.slice(11, 23)) : value;
|
|
47
|
+
var toCalendarDateRange = (value) => {
|
|
48
|
+
if (!value || typeof value !== "object" || !("start" in value) || !("end" in value)) return value;
|
|
49
|
+
const range = value;
|
|
50
|
+
return {
|
|
51
|
+
start: toCalendarDate$1(range.start),
|
|
52
|
+
end: toCalendarDate$1(range.end)
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
var Checkbox = (props) => {
|
|
56
|
+
return renderRHFField(runtime(Checkbox$1), useFireBlurOnChange(props, "checkbox"), "isSelected");
|
|
57
|
+
};
|
|
58
|
+
var CheckboxGroup = (props) => {
|
|
59
|
+
return renderRHFField(runtime(CheckboxGroup$1), useFireBlurOnChange(props, "checkbox"));
|
|
60
|
+
};
|
|
61
|
+
var DatePicker = (props) => {
|
|
62
|
+
return renderRHFField(runtime(DatePicker$1), useFireBlurOnChange(props, "dateInput"), "value", toCalendarDate$1);
|
|
63
|
+
};
|
|
64
|
+
var DateRangePicker = (props) => {
|
|
65
|
+
return renderRHFField(runtime(DateRangePicker$1), useFireBlurOnChange(props, "dateInput"), "value", toCalendarDateRange);
|
|
66
|
+
};
|
|
67
|
+
var DateTimePicker = (props) => {
|
|
68
|
+
return renderRHFField(runtime(DateTimePicker$1), useFireBlurOnChange(props, "dateInput"), "value", toCalendarDateTime$1);
|
|
69
|
+
};
|
|
70
|
+
var TimePicker = (props) => {
|
|
71
|
+
return renderRHFField(runtime(TimePicker$1), useFireBlurOnChange(props, "dateInput"), "value", toTime$1);
|
|
72
|
+
};
|
|
73
|
+
var NumberInput = (props) => renderRHFField(runtime(NumberInput$1), props);
|
|
74
|
+
var NumberRangeInput = (props) => renderRHFField(runtime(NumberRangeInput$1), props);
|
|
75
|
+
var PasswordInput = (props) => renderRHFField(runtime(PasswordInput$1), props);
|
|
76
|
+
var TextArea = (props) => renderRHFField(runtime(TextArea$1), props);
|
|
77
|
+
var TextInput = (props) => renderRHFField(runtime(TextInput$1), props);
|
|
78
|
+
var RadioGroup = (props) => {
|
|
79
|
+
return renderRHFField(runtime(RadioGroup$1), useFireBlurOnChange(props, "radioGroup"));
|
|
80
|
+
};
|
|
81
|
+
var Slider = (props) => renderRHFField(runtime(Slider$1), props);
|
|
82
|
+
var Toggle = (props) => {
|
|
83
|
+
return renderRHFField(runtime(Toggle$1), useFireBlurOnChange(props, "toggle"), "isSelected");
|
|
84
|
+
};
|
|
85
|
+
var Segment = (props) => renderRHFField(runtime(Segment$1), props);
|
|
86
|
+
var Select = (props) => {
|
|
87
|
+
return renderRHFField(runtime(Select$1), useFireBlurOnChange(props, "select"));
|
|
88
|
+
};
|
|
89
|
+
var Autocomplete = (props) => {
|
|
90
|
+
return renderRHFField(runtime(Autocomplete$1), useFireBlurOnChange(props, "select"));
|
|
91
|
+
};
|
|
92
|
+
var QuerySelect = (props) => {
|
|
93
|
+
return renderRHFField(runtime(QuerySelect$1), useFireBlurOnChange(props, "select"));
|
|
94
|
+
};
|
|
95
|
+
var QueryAutocomplete = (props) => {
|
|
96
|
+
return renderRHFField(runtime(QueryAutocomplete$1), useFireBlurOnChange(props, "select"));
|
|
97
|
+
};
|
|
98
|
+
var FileUpload = (props) => renderRHFField(runtime(FileUpload$1), props);
|
|
99
|
+
var InputUpload = (props) => renderRHFField(runtime(InputUpload$1), props);
|
|
100
|
+
//#endregion
|
|
101
|
+
export { Autocomplete, Checkbox, CheckboxGroup, DatePicker, DateRangePicker, DateTimePicker, FileUpload, InputUpload, NumberInput, NumberRangeInput, PasswordInput, QueryAutocomplete, QuerySelect, RadioGroup, Segment, Select, Slider, TextArea, TextInput, TimePicker, Toggle };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { UseFormReturn } from 'react-hook-form';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { DynamicInputsObjectSchema, DynamicInputsOptions as TanStackDynamicInputsOptions } from '../helpers/dynamicInputs';
|
|
5
|
+
import { InputDef } from './Inputs';
|
|
6
|
+
type RHFRender<TSchema extends z.ZodObject<Record<string, z.ZodType>>> = (formControl: {
|
|
7
|
+
control: UseFormReturn<z.infer<TSchema>>["control"];
|
|
8
|
+
name: keyof z.infer<TSchema>;
|
|
9
|
+
}, form: UseFormReturn<z.infer<TSchema>>) => ReactElement;
|
|
10
|
+
export type DynamicInputsOptions<TSchema extends z.ZodType> = Omit<TanStackDynamicInputsOptions<TSchema>, "inputs"> & {
|
|
11
|
+
inputs?: Record<string, boolean | Record<string, unknown> | RHFRender<DynamicInputsObjectSchema<TSchema>>>;
|
|
12
|
+
};
|
|
13
|
+
export { type DynamicInputsObjectSchema };
|
|
14
|
+
export declare const dynamicInputs: <TSchema extends z.ZodType>(params: {
|
|
15
|
+
schema: TSchema;
|
|
16
|
+
preset?: InputDef<z.infer<DynamicInputsObjectSchema<TSchema>>>[];
|
|
17
|
+
options: DynamicInputsOptions<TSchema>;
|
|
18
|
+
}) => InputDef<z.infer<DynamicInputsObjectSchema<TSchema>>>[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { FieldValues } from 'react-hook-form';
|
|
3
|
+
import { ControlProps } from './form.types';
|
|
4
|
+
export interface FireBlurOnChangeProps {
|
|
5
|
+
fireBlurOnChange?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function renderRHFField<TProps extends object, TFieldValues extends FieldValues, TValueKey extends keyof TProps = "value" extends keyof TProps ? "value" : never>(Component: ComponentType<any>, props: ControlProps<TProps, TFieldValues, TValueKey>, valueKey?: "isSelected" | "value", blurValueTransform?: (value: unknown) => unknown): ReactNode;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Controller } from "react-hook-form";
|
|
3
|
+
//#region src/rhf/fieldAdapter.tsx
|
|
4
|
+
function renderRHFField(Component, props, valueKey = "value", blurValueTransform = (value) => value) {
|
|
5
|
+
if (!("formControl" in props)) {
|
|
6
|
+
const { fireBlurOnChange, ...componentProps } = props;
|
|
7
|
+
const runtimeProps = componentProps;
|
|
8
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
9
|
+
...runtimeProps,
|
|
10
|
+
onChange: (value) => {
|
|
11
|
+
runtimeProps.onChange?.(value);
|
|
12
|
+
if (fireBlurOnChange) runtimeProps.onBlur?.({ target: { value: blurValueTransform(value) } });
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const { fireBlurOnChange, formControl, ...componentProps } = props;
|
|
17
|
+
const runtimeProps = componentProps;
|
|
18
|
+
return /* @__PURE__ */ jsx(Controller, {
|
|
19
|
+
control: formControl.control,
|
|
20
|
+
name: formControl.name,
|
|
21
|
+
render: ({ field, fieldState }) => {
|
|
22
|
+
const valueProps = { [valueKey]: field.value ?? (valueKey === "isSelected" ? false : null) };
|
|
23
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
24
|
+
...componentProps,
|
|
25
|
+
...valueProps,
|
|
26
|
+
ref: field.ref,
|
|
27
|
+
onChange: (value) => {
|
|
28
|
+
field.onChange(value ?? null);
|
|
29
|
+
if (fireBlurOnChange) field.onBlur();
|
|
30
|
+
},
|
|
31
|
+
onBlur: field.onBlur,
|
|
32
|
+
isDisabled: field.disabled || runtimeProps.isDisabled,
|
|
33
|
+
isDirty: fieldState.isDirty,
|
|
34
|
+
error: runtimeProps.error ?? fieldState.error?.message
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { renderRHFField };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Control, FieldPath, FieldPathValue, FieldValues } from 'react-hook-form';
|
|
2
|
+
export type ControlKeys<TProps, TValueProp extends keyof TProps = "value" extends keyof TProps ? "value" : never> = TValueProp | "onChange" | "onBlur";
|
|
3
|
+
export interface FormControl<TFieldValues extends FieldValues, TType> {
|
|
4
|
+
control: Control<TFieldValues>;
|
|
5
|
+
name: {
|
|
6
|
+
[K in FieldPath<TFieldValues>]: FieldPathValue<TFieldValues, K> extends TType ? K : never;
|
|
7
|
+
}[FieldPath<TFieldValues>];
|
|
8
|
+
}
|
|
9
|
+
export type FormControlProps<TProps, TFieldValues extends FieldValues, TValueProp extends keyof TProps = "value" extends keyof TProps ? "value" : never> = {
|
|
10
|
+
formControl: FormControl<TFieldValues, TProps[TValueProp] | null>;
|
|
11
|
+
} & Omit<TProps, ControlKeys<TProps, TValueProp>> & Partial<Record<ControlKeys<TProps, TValueProp>, never>>;
|
|
12
|
+
export type ControlProps<TProps, TFieldValues extends FieldValues, TValueProp extends keyof TProps = "value" extends keyof TProps ? "value" : never> = FormControlProps<TProps, TFieldValues, TValueProp> | TProps;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FieldValues, UseFormReturn } from 'react-hook-form';
|
|
2
|
+
export interface UseAutosaveProps<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues, TResponse = unknown> {
|
|
3
|
+
form: UseFormReturn<TFieldValues, TContext, TTransformedValues>;
|
|
4
|
+
delay?: number;
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
trigger?: "change" | "blur";
|
|
7
|
+
onSave: (data: Partial<TTransformedValues>) => Promise<TResponse>;
|
|
8
|
+
onSaveSuccess?: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function useAutosave<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues, TResponse = unknown>({ form, delay, enabled, trigger, onSave, onSaveSuccess, }: UseAutosaveProps<TFieldValues, TContext, TTransformedValues, TResponse>): void;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ObjectUtils } from "../utils/object.utils.js";
|
|
2
|
+
import { isEqual } from "../utils/isEqual.js";
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import { useFormState, useWatch } from "react-hook-form";
|
|
5
|
+
//#region src/rhf/useAutosave.ts
|
|
6
|
+
function isNilOrEqual(left, right) {
|
|
7
|
+
if (ObjectUtils.isNil(left) && ObjectUtils.isNil(right)) return true;
|
|
8
|
+
return isEqual(left, right);
|
|
9
|
+
}
|
|
10
|
+
function diffLeftOnly(left, right, shallowKeys) {
|
|
11
|
+
if (!ObjectUtils.isObject(left) || ObjectUtils.isDate(left) || ObjectUtils.isRegExp(left)) return !isNilOrEqual(left, right) ? left : void 0;
|
|
12
|
+
if (Array.isArray(left)) return !isNilOrEqual(left, right) ? left : void 0;
|
|
13
|
+
const result = Object.entries(left).reduce((acc, [key, value]) => {
|
|
14
|
+
const shallowSubtree = shallowKeys?.[key];
|
|
15
|
+
if (shallowSubtree === true) {
|
|
16
|
+
if (!isNilOrEqual(value, right?.[key])) acc[key] = value;
|
|
17
|
+
return acc;
|
|
18
|
+
}
|
|
19
|
+
const diff = diffLeftOnly(value, right?.[key], shallowSubtree);
|
|
20
|
+
if (diff !== void 0 && (!ObjectUtils.isObject(diff) || !ObjectUtils.isEmpty(diff))) acc[key] = diff;
|
|
21
|
+
return acc;
|
|
22
|
+
}, {});
|
|
23
|
+
return ObjectUtils.isEmpty(result) ? void 0 : result;
|
|
24
|
+
}
|
|
25
|
+
function useAutosave({ form, delay = 500, enabled = true, trigger = "change", onSave, onSaveSuccess }) {
|
|
26
|
+
const timeoutRef = useRef(void 0);
|
|
27
|
+
const previousBlurTriggerFieldsRef = useRef(void 0);
|
|
28
|
+
const { control, reset, handleSubmit } = form;
|
|
29
|
+
const { dirtyFields, touchedFields, defaultValues } = useFormState({ control });
|
|
30
|
+
const formData = useWatch({ control });
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!enabled || Object.keys(dirtyFields).length === 0) return;
|
|
33
|
+
if (trigger === "blur") {
|
|
34
|
+
const blurTriggerFields = JSON.stringify(touchedFields);
|
|
35
|
+
if (Object.keys(touchedFields).length === 0 || previousBlurTriggerFieldsRef.current === blurTriggerFields) return;
|
|
36
|
+
previousBlurTriggerFieldsRef.current = blurTriggerFields;
|
|
37
|
+
}
|
|
38
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
39
|
+
timeoutRef.current = setTimeout(() => {
|
|
40
|
+
handleSubmit(async (data) => {
|
|
41
|
+
const changedData = diffLeftOnly(Object.entries(dirtyFields).filter(([, value]) => value).reduce((acc, [key]) => {
|
|
42
|
+
acc[key] = data[key];
|
|
43
|
+
return acc;
|
|
44
|
+
}, {}), defaultValues, dirtyFields) ?? {};
|
|
45
|
+
if (Object.keys(changedData).length === 0) return;
|
|
46
|
+
try {
|
|
47
|
+
reset(void 0, { keepValues: true });
|
|
48
|
+
await onSave(changedData);
|
|
49
|
+
onSaveSuccess?.();
|
|
50
|
+
} catch {
|
|
51
|
+
reset(defaultValues);
|
|
52
|
+
}
|
|
53
|
+
})();
|
|
54
|
+
}, delay);
|
|
55
|
+
return () => {
|
|
56
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
57
|
+
};
|
|
58
|
+
}, [
|
|
59
|
+
defaultValues,
|
|
60
|
+
dirtyFields,
|
|
61
|
+
trigger === "change" ? formData : touchedFields,
|
|
62
|
+
delay,
|
|
63
|
+
onSave,
|
|
64
|
+
handleSubmit,
|
|
65
|
+
enabled,
|
|
66
|
+
reset,
|
|
67
|
+
trigger
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { useAutosave };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BrowserNativeObject, ExtractObjects, FieldValues, NestedValue, UseFormProps as UseReactHookFormProps } from 'react-hook-form';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
type DeepNullablePartial<T> = T extends BrowserNativeObject | NestedValue ? T : {
|
|
4
|
+
[K in keyof T]?: ExtractObjects<T[K]> extends never ? T[K] | null : DeepNullablePartial<T[K]>;
|
|
5
|
+
};
|
|
6
|
+
type AsyncDefaultValues<TFieldValues> = (payload?: unknown) => Promise<TFieldValues>;
|
|
7
|
+
type NullableDefaultValues<TFieldValues> = TFieldValues extends AsyncDefaultValues<TFieldValues> ? DeepNullablePartial<Awaited<TFieldValues>> : DeepNullablePartial<TFieldValues>;
|
|
8
|
+
export type UseFormResolverProps<TFieldValues extends FieldValues, TTransformedValues = TFieldValues> = {
|
|
9
|
+
zodSchema: z.ZodType<TTransformedValues, TFieldValues>;
|
|
10
|
+
resolver?: never;
|
|
11
|
+
} | {
|
|
12
|
+
zodSchema?: never;
|
|
13
|
+
};
|
|
14
|
+
export type UseFormProps<TFieldValues extends FieldValues, TContext, TTransformedValues = TFieldValues> = Omit<UseReactHookFormProps<TFieldValues, TContext, TTransformedValues>, "defaultValues"> & {
|
|
15
|
+
defaultValues?: NullableDefaultValues<TFieldValues> | AsyncDefaultValues<TFieldValues>;
|
|
16
|
+
};
|
|
17
|
+
export declare function useForm<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues>({ resolver, zodSchema, defaultValues, ...props }: UseFormProps<TFieldValues, TContext, TTransformedValues> & UseFormResolverProps<TFieldValues, TTransformedValues>): import('react-hook-form').UseFormReturn<TFieldValues, TContext, TTransformedValues>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { c } from "react/compiler-runtime";
|
|
2
|
+
import { useForm } from "react-hook-form";
|
|
3
|
+
import { zodResolver } from "@hookform/resolvers/zod";
|
|
4
|
+
//#region src/rhf/useForm.ts
|
|
5
|
+
function useForm$1(t0) {
|
|
6
|
+
const $ = c(12);
|
|
7
|
+
let defaultValues;
|
|
8
|
+
let props;
|
|
9
|
+
let resolver;
|
|
10
|
+
let zodSchema;
|
|
11
|
+
if ($[0] !== t0) {
|
|
12
|
+
({resolver, zodSchema, defaultValues, ...props} = t0);
|
|
13
|
+
$[0] = t0;
|
|
14
|
+
$[1] = defaultValues;
|
|
15
|
+
$[2] = props;
|
|
16
|
+
$[3] = resolver;
|
|
17
|
+
$[4] = zodSchema;
|
|
18
|
+
} else {
|
|
19
|
+
defaultValues = $[1];
|
|
20
|
+
props = $[2];
|
|
21
|
+
resolver = $[3];
|
|
22
|
+
zodSchema = $[4];
|
|
23
|
+
}
|
|
24
|
+
let t1;
|
|
25
|
+
if ($[5] !== resolver || $[6] !== zodSchema) {
|
|
26
|
+
t1 = resolver ?? (zodSchema ? zodResolver(zodSchema) : void 0);
|
|
27
|
+
$[5] = resolver;
|
|
28
|
+
$[6] = zodSchema;
|
|
29
|
+
$[7] = t1;
|
|
30
|
+
} else t1 = $[7];
|
|
31
|
+
const formResolver = t1;
|
|
32
|
+
const t2 = defaultValues;
|
|
33
|
+
let t3;
|
|
34
|
+
if ($[8] !== formResolver || $[9] !== props || $[10] !== t2) {
|
|
35
|
+
t3 = {
|
|
36
|
+
...props,
|
|
37
|
+
resolver: formResolver,
|
|
38
|
+
defaultValues: t2
|
|
39
|
+
};
|
|
40
|
+
$[8] = formResolver;
|
|
41
|
+
$[9] = props;
|
|
42
|
+
$[10] = t2;
|
|
43
|
+
$[11] = t3;
|
|
44
|
+
} else t3 = $[11];
|
|
45
|
+
return useForm(t3);
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { useForm$1 as useForm };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DependencyList } from 'react';
|
|
2
|
+
import { FieldValues } from 'react-hook-form';
|
|
3
|
+
import { UseAutosaveProps } from './useAutosave';
|
|
4
|
+
import { UseFormProps, UseFormResolverProps } from './useForm';
|
|
5
|
+
export type UseFormAutosaveProps<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues, TResponse = unknown> = Omit<UseFormProps<TFieldValues, TContext, TTransformedValues>, "defaultValues"> & UseFormResolverProps<TFieldValues, TTransformedValues> & {
|
|
6
|
+
autosaveDelay?: UseAutosaveProps<TFieldValues, TContext, TTransformedValues, TResponse>["delay"];
|
|
7
|
+
enableAutosave?: UseAutosaveProps<TFieldValues, TContext, TTransformedValues, TResponse>["enabled"];
|
|
8
|
+
autosaveOn?: UseAutosaveProps<TFieldValues, TContext, TTransformedValues, TResponse>["trigger"];
|
|
9
|
+
normalizeAutosaveData?: (data: Partial<TTransformedValues>) => Partial<TTransformedValues> | undefined;
|
|
10
|
+
onAutosave: UseAutosaveProps<TFieldValues, TContext, TTransformedValues, TResponse>["onSave"];
|
|
11
|
+
getResetValues: () => UseFormProps<TFieldValues, TContext, TTransformedValues>["defaultValues"];
|
|
12
|
+
resetDeps: DependencyList;
|
|
13
|
+
resetTimeout?: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function useFormAutosave<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues, TResponse = any>({ autosaveDelay, enableAutosave, autosaveOn, normalizeAutosaveData, onAutosave, getResetValues, resetDeps, resetTimeout, ...props }: UseFormAutosaveProps<TFieldValues, TContext, TTransformedValues, TResponse>): import('react-hook-form').UseFormReturn<TFieldValues, TContext, TTransformedValues>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ObjectUtils } from "../utils/object.utils.js";
|
|
2
|
+
import { useAutosave } from "./useAutosave.js";
|
|
3
|
+
import { useForm } from "./useForm.js";
|
|
4
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
5
|
+
//#region src/rhf/useFormAutosave.ts
|
|
6
|
+
var getResetTimeoutErrorMessage = (resetTimeout) => `Form Reset Timeout (${resetTimeout}ms) - Action Required
|
|
7
|
+
Problem: Form values weren't reset after submission.
|
|
8
|
+
|
|
9
|
+
Likely causes:
|
|
10
|
+
• Missing variables in reset dependency array
|
|
11
|
+
• Reset dependencies not updating after form save
|
|
12
|
+
• Async operations blocking timely reset
|
|
13
|
+
|
|
14
|
+
Solutions:
|
|
15
|
+
1. Ensure reset dependencies include all relevant state variables
|
|
16
|
+
2. Confirm your submission handler updates state properly (check query invalidation)
|
|
17
|
+
3. For slower operations, consider increasing the timeout threshold`;
|
|
18
|
+
function useFormAutosave({ autosaveDelay, enableAutosave, autosaveOn = "change", normalizeAutosaveData, onAutosave, getResetValues, resetDeps, resetTimeout = 5e3, ...props }) {
|
|
19
|
+
const form = useForm({
|
|
20
|
+
...props,
|
|
21
|
+
defaultValues: getResetValues()
|
|
22
|
+
});
|
|
23
|
+
const shouldResetFormValuesRef = useRef(false);
|
|
24
|
+
const resetFormValuesTimeoutRef = useRef(void 0);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
const resetValues = getResetValues();
|
|
27
|
+
if (resetValues === void 0) return;
|
|
28
|
+
const resetFormValues = async () => {
|
|
29
|
+
const keepStateOptions = shouldResetFormValuesRef.current ? { keepDirtyValues: true } : void 0;
|
|
30
|
+
shouldResetFormValuesRef.current = false;
|
|
31
|
+
let values = resetValues;
|
|
32
|
+
if (ObjectUtils.isFunction(resetValues)) values = await resetValues();
|
|
33
|
+
form.reset(values, keepStateOptions);
|
|
34
|
+
};
|
|
35
|
+
resetFormValues();
|
|
36
|
+
}, [...resetDeps]);
|
|
37
|
+
const onSaveSuccess = () => {
|
|
38
|
+
shouldResetFormValuesRef.current = true;
|
|
39
|
+
if (resetFormValuesTimeoutRef.current) clearTimeout(resetFormValuesTimeoutRef.current);
|
|
40
|
+
resetFormValuesTimeoutRef.current = setTimeout(() => {
|
|
41
|
+
if (shouldResetFormValuesRef.current) throw new Error(getResetTimeoutErrorMessage(resetTimeout));
|
|
42
|
+
}, resetTimeout);
|
|
43
|
+
};
|
|
44
|
+
useAutosave({
|
|
45
|
+
form,
|
|
46
|
+
delay: autosaveDelay,
|
|
47
|
+
enabled: enableAutosave,
|
|
48
|
+
trigger: autosaveOn,
|
|
49
|
+
onSave: useCallback((data) => {
|
|
50
|
+
const normalizedData = normalizeAutosaveData ? normalizeAutosaveData(data) : data;
|
|
51
|
+
if (!normalizedData || ObjectUtils.isEmpty(normalizedData)) return Promise.resolve(void 0);
|
|
52
|
+
return onAutosave(normalizedData);
|
|
53
|
+
}, [normalizeAutosaveData, onAutosave]),
|
|
54
|
+
onSaveSuccess
|
|
55
|
+
});
|
|
56
|
+
return form;
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
export { useFormAutosave };
|