@bigbinary/neeto-atoms 1.0.141 → 1.0.143-beta1
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/{Alert-DWdha6In.js → Alert-BSP9oI1z.js} +2 -2
- package/dist/{Alert-DWdha6In.js.map → Alert-BSP9oI1z.js.map} +1 -1
- package/dist/{Button-ZssOVkG0.js → Button-hshHbjPF.js} +2 -1
- package/dist/Button-hshHbjPF.js.map +1 -0
- package/dist/{ColorPicker-BvWNd8Tp.js → ColorPicker-g9siUaIe.js} +3 -3
- package/dist/ColorPicker-g9siUaIe.js.map +1 -0
- package/dist/{Combobox-CrcrQlgz.js → Combobox-LxuMoLF5.js} +3 -3
- package/dist/{Combobox-CrcrQlgz.js.map → Combobox-LxuMoLF5.js.map} +1 -1
- package/dist/{DataTable-8hVysQPv.js → DataTable-BAf51Sfw.js} +5 -5
- package/dist/{DataTable-8hVysQPv.js.map → DataTable-BAf51Sfw.js.map} +1 -1
- package/dist/{Empty-XqdCD2dj.js → Empty-B4iQJlmf.js} +3 -3
- package/dist/{Empty-XqdCD2dj.js.map → Empty-B4iQJlmf.js.map} +1 -1
- package/dist/{HelpIcon-TkvMVF4n.js → HelpIcon-CEHRtxZ5.js} +3 -3
- package/dist/{HelpIcon-TkvMVF4n.js.map → HelpIcon-CEHRtxZ5.js.map} +1 -1
- package/dist/{Label-DrjtHwMk.js → Label-C2ZO0-dt.js} +2 -2
- package/dist/{Label-DrjtHwMk.js.map → Label-C2ZO0-dt.js.map} +1 -1
- package/dist/{Popover-BHGvcdV2.js → Popover-B0QALwsd.js} +2 -2
- package/dist/{Popover-BHGvcdV2.js.map → Popover-B0QALwsd.js.map} +1 -1
- package/dist/{Select-B6Yn7BFi.js → Select-DCVlTRBI.js} +2 -2
- package/dist/{Select-B6Yn7BFi.js.map → Select-DCVlTRBI.js.map} +1 -1
- package/dist/{Tree-D95PpI3W.js → Tree-Cf0rLcX9.js} +3 -3
- package/dist/{Tree-D95PpI3W.js.map → Tree-Cf0rLcX9.js.map} +1 -1
- package/dist/{TreeSelect-LTSl-QJA.js → TreeSelect-BV18q8UD.js} +2 -2
- package/dist/{TreeSelect-LTSl-QJA.js.map → TreeSelect-BV18q8UD.js.map} +1 -1
- package/dist/{Typography-CmILccNh.js → Typography-Bu78IBJy.js} +5 -2
- package/dist/Typography-Bu78IBJy.js.map +1 -0
- package/dist/{button-DTkEk06V.js → button-D5-pwGwG.js} +2 -1
- package/dist/button-D5-pwGwG.js.map +1 -0
- package/dist/cjs/{Alert-BUPMvhfY.js → Alert-Q_dXiT50.js} +2 -2
- package/dist/cjs/{Alert-BUPMvhfY.js.map → Alert-Q_dXiT50.js.map} +1 -1
- package/dist/cjs/{Button-BQ4rpzsl.js → Button-B6ygc4Gi.js} +2 -1
- package/dist/cjs/Button-B6ygc4Gi.js.map +1 -0
- package/dist/cjs/{ColorPicker-Dh58otnF.js → ColorPicker-CODJ0QKs.js} +3 -3
- package/dist/cjs/ColorPicker-CODJ0QKs.js.map +1 -0
- package/dist/cjs/{Combobox-B3KzI_J_.js → Combobox-CUS3FpS8.js} +3 -3
- package/dist/cjs/{Combobox-B3KzI_J_.js.map → Combobox-CUS3FpS8.js.map} +1 -1
- package/dist/cjs/{DataTable-DAoZP73Q.js → DataTable-KvsmFjeu.js} +5 -5
- package/dist/cjs/{DataTable-DAoZP73Q.js.map → DataTable-KvsmFjeu.js.map} +1 -1
- package/dist/cjs/{Empty-DGvhPdiG.js → Empty-Bwpsj82B.js} +3 -3
- package/dist/cjs/{Empty-DGvhPdiG.js.map → Empty-Bwpsj82B.js.map} +1 -1
- package/dist/cjs/{HelpIcon-CULBhXS7.js → HelpIcon-39gUuk1F.js} +3 -3
- package/dist/cjs/{HelpIcon-CULBhXS7.js.map → HelpIcon-39gUuk1F.js.map} +1 -1
- package/dist/cjs/{Label-D_FsFUcl.js → Label-BLgCH5sc.js} +2 -2
- package/dist/cjs/{Label-D_FsFUcl.js.map → Label-BLgCH5sc.js.map} +1 -1
- package/dist/cjs/{Popover-5BUgIW60.js → Popover-BY8Afql0.js} +2 -2
- package/dist/cjs/{Popover-5BUgIW60.js.map → Popover-BY8Afql0.js.map} +1 -1
- package/dist/cjs/{Select-0JzGuzUW.js → Select-DReP9RU1.js} +2 -2
- package/dist/cjs/{Select-0JzGuzUW.js.map → Select-DReP9RU1.js.map} +1 -1
- package/dist/cjs/{Tree-BCeV70TF.js → Tree-D1QjLPS9.js} +3 -3
- package/dist/cjs/{Tree-BCeV70TF.js.map → Tree-D1QjLPS9.js.map} +1 -1
- package/dist/cjs/{TreeSelect-B8ScKK9l.js → TreeSelect-CrLmpq26.js} +2 -2
- package/dist/cjs/{TreeSelect-B8ScKK9l.js.map → TreeSelect-CrLmpq26.js.map} +1 -1
- package/dist/cjs/{Typography-BW6xEk10.js → Typography-Ctlu_0Qy.js} +5 -2
- package/dist/cjs/Typography-Ctlu_0Qy.js.map +1 -0
- package/dist/cjs/{button-CDZTqJzs.js → button-UCo5fJnC.js} +2 -1
- package/dist/cjs/button-UCo5fJnC.js.map +1 -0
- package/dist/cjs/components/Alert.js +4 -4
- package/dist/cjs/components/Button.js +2 -2
- package/dist/cjs/components/Checkbox.js +5 -5
- package/dist/cjs/components/ColorPicker.js +2 -2
- package/dist/cjs/components/DataTable.js +5 -5
- package/dist/cjs/components/DatePicker.js +5 -5
- package/dist/cjs/components/Dialog.js +2 -2
- package/dist/cjs/components/DropdownMenu.js +2 -2
- package/dist/cjs/components/Empty.js +4 -4
- package/dist/cjs/components/Input.js +6 -6
- package/dist/cjs/components/Label.js +6 -6
- package/dist/cjs/components/MultiEmailInput.js +5 -5
- package/dist/cjs/components/Pagination.js +1 -1
- package/dist/cjs/components/Popover.js +2 -2
- package/dist/cjs/components/RadioGroup.js +5 -5
- package/dist/cjs/components/Select.js +8 -8
- package/dist/cjs/components/Sheet.js +2 -2
- package/dist/cjs/components/Slider.js +5 -5
- package/dist/cjs/components/Switch.js +5 -5
- package/dist/cjs/components/Textarea.js +5 -5
- package/dist/cjs/components/TimePicker.js +5 -5
- package/dist/cjs/components/Tree.js +1 -1
- package/dist/cjs/components/TreeSelect.js +7 -7
- package/dist/cjs/components/Typography.js +1 -1
- package/dist/cjs/components/index.js +17 -17
- package/dist/cjs/{dialog-Bnk4GUFC.js → dialog-D7OSycGe.js} +2 -2
- package/dist/cjs/{dialog-Bnk4GUFC.js.map → dialog-D7OSycGe.js.map} +1 -1
- package/dist/cjs/formik/ActionBlock.js +2 -2
- package/dist/cjs/formik/BlockNavigation.js +43 -11
- package/dist/cjs/formik/BlockNavigation.js.map +1 -1
- package/dist/cjs/formik/Button.js +2 -2
- package/dist/cjs/formik/Checkbox.js +5 -5
- package/dist/cjs/formik/Form.js +2 -2
- package/dist/cjs/formik/Form.js.map +1 -1
- package/dist/cjs/formik/Input.js +6 -6
- package/dist/cjs/formik/MultiEmailInput.js +5 -5
- package/dist/cjs/formik/RadioGroup.js +5 -5
- package/dist/cjs/formik/Select.js +8 -8
- package/dist/cjs/formik/Slider.js +5 -5
- package/dist/cjs/formik/Switch.js +5 -5
- package/dist/cjs/formik/Textarea.js +5 -5
- package/dist/cjs/formik/TreeSelect.js +7 -7
- package/dist/cjs/formik/index.js +11 -11
- package/dist/cjs/index.js +17 -17
- package/dist/cjs/{input-group-BU6uw1MA.js → input-group-Cr4T8woC.js} +2 -2
- package/dist/cjs/{input-group-BU6uw1MA.js.map → input-group-Cr4T8woC.js.map} +1 -1
- package/dist/cjs/primitives/AlertDialog.js +1 -1
- package/dist/cjs/primitives/Button.js +5 -1
- package/dist/cjs/primitives/Button.js.map +1 -1
- package/dist/cjs/primitives/Calendar.js +1 -1
- package/dist/cjs/primitives/Carousel.js +1 -1
- package/dist/cjs/primitives/Checkbox.js +6 -2
- package/dist/cjs/primitives/Checkbox.js.map +1 -1
- package/dist/cjs/primitives/Combobox.js +3 -3
- package/dist/cjs/primitives/Command.js +3 -3
- package/dist/cjs/primitives/Dialog.js +2 -2
- package/dist/cjs/primitives/Empty.js +14 -1
- package/dist/cjs/primitives/Empty.js.map +1 -1
- package/dist/cjs/primitives/Field.js +19 -6
- package/dist/cjs/primitives/Field.js.map +1 -1
- package/dist/cjs/primitives/InputGroup.js +2 -2
- package/dist/cjs/primitives/Item.js +14 -1
- package/dist/cjs/primitives/Item.js.map +1 -1
- package/dist/cjs/primitives/Pagination.js +1 -1
- package/dist/cjs/primitives/RadioGroup.js +3 -3
- package/dist/cjs/primitives/RadioGroup.js.map +1 -1
- package/dist/cjs/primitives/Sheet.js +2 -2
- package/dist/cjs/primitives/Sidebar.js +2 -2
- package/dist/cjs/primitives/Switch.js +2 -2
- package/dist/cjs/primitives/Switch.js.map +1 -1
- package/dist/cjs/primitives/index.js +9 -9
- package/dist/cjs/{sheet-CQ82jJkC.js → sheet-C33j5mif.js} +2 -2
- package/dist/cjs/{sheet-CQ82jJkC.js.map → sheet-C33j5mif.js.map} +1 -1
- package/dist/components/Alert.js +4 -4
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button.js +2 -2
- package/dist/components/Checkbox.js +5 -5
- package/dist/components/ColorPicker.js +2 -2
- package/dist/components/DataTable.js +5 -5
- package/dist/components/DatePicker.js +5 -5
- package/dist/components/Dialog.js +2 -2
- package/dist/components/DropdownMenu.js +2 -2
- package/dist/components/Empty.js +4 -4
- package/dist/components/Input.js +6 -6
- package/dist/components/Label.js +6 -6
- package/dist/components/MultiEmailInput.js +5 -5
- package/dist/components/Pagination.js +1 -1
- package/dist/components/Popover.js +2 -2
- package/dist/components/RadioGroup.js +5 -5
- package/dist/components/Select.js +8 -8
- package/dist/components/Sheet.js +2 -2
- package/dist/components/Slider.js +5 -5
- package/dist/components/Switch.js +5 -5
- package/dist/components/Textarea.js +5 -5
- package/dist/components/TimePicker.js +5 -5
- package/dist/components/Tree.js +1 -1
- package/dist/components/TreeSelect.js +7 -7
- package/dist/components/Typography.js +1 -1
- package/dist/components/index.js +17 -17
- package/dist/{dialog-BG8Tjl78.js → dialog-CT2j-JaR.js} +2 -2
- package/dist/{dialog-BG8Tjl78.js.map → dialog-CT2j-JaR.js.map} +1 -1
- package/dist/formik/ActionBlock.js +2 -2
- package/dist/formik/BlockNavigation/BlockNavigationAlert.d.ts +10 -3
- package/dist/formik/BlockNavigation/index.d.ts +2 -2
- package/dist/formik/BlockNavigation.js +43 -11
- package/dist/formik/BlockNavigation.js.map +1 -1
- package/dist/formik/Button.js +2 -2
- package/dist/formik/Checkbox.js +5 -5
- package/dist/formik/Form.js +2 -2
- package/dist/formik/Form.js.map +1 -1
- package/dist/formik/Input.js +6 -6
- package/dist/formik/MultiEmailInput.js +5 -5
- package/dist/formik/RadioGroup.js +5 -5
- package/dist/formik/Select.js +8 -8
- package/dist/formik/Slider.js +5 -5
- package/dist/formik/Switch.js +5 -5
- package/dist/formik/Textarea.js +5 -5
- package/dist/formik/TreeSelect.js +7 -7
- package/dist/formik/index.js +11 -11
- package/dist/index.css +16 -4
- package/dist/index.js +17 -17
- package/dist/{input-group-CFQrWXbU.js → input-group-kccDxDZ0.js} +2 -2
- package/dist/{input-group-CFQrWXbU.js.map → input-group-kccDxDZ0.js.map} +1 -1
- package/dist/primitives/AlertDialog.js +1 -1
- package/dist/primitives/Button.js +6 -2
- package/dist/primitives/Button.js.map +1 -1
- package/dist/primitives/Calendar.js +1 -1
- package/dist/primitives/Carousel.js +1 -1
- package/dist/primitives/Checkbox.js +6 -2
- package/dist/primitives/Checkbox.js.map +1 -1
- package/dist/primitives/Combobox.js +3 -3
- package/dist/primitives/Command.js +3 -3
- package/dist/primitives/Dialog.js +2 -2
- package/dist/primitives/Empty.d.ts +1 -1
- package/dist/primitives/Empty.js +14 -1
- package/dist/primitives/Empty.js.map +1 -1
- package/dist/primitives/Field.d.ts +1 -1
- package/dist/primitives/Field.js +19 -6
- package/dist/primitives/Field.js.map +1 -1
- package/dist/primitives/InputGroup.js +2 -2
- package/dist/primitives/Item.d.ts +1 -1
- package/dist/primitives/Item.js +14 -1
- package/dist/primitives/Item.js.map +1 -1
- package/dist/primitives/Pagination.js +1 -1
- package/dist/primitives/RadioGroup.js +3 -3
- package/dist/primitives/RadioGroup.js.map +1 -1
- package/dist/primitives/Sheet.js +2 -2
- package/dist/primitives/Sidebar.js +2 -2
- package/dist/primitives/Switch.js +2 -2
- package/dist/primitives/Switch.js.map +1 -1
- package/dist/primitives/index.js +9 -9
- package/dist/shadcn/components/button.d.ts +2 -2
- package/dist/{sheet-BD8c3_Va.js → sheet-CNgGLv5u.js} +2 -2
- package/dist/{sheet-BD8c3_Va.js.map → sheet-CNgGLv5u.js.map} +1 -1
- package/package.json +2 -2
- package/CHANGELOG.md +0 -3
- package/dist/Button-ZssOVkG0.js.map +0 -1
- package/dist/ColorPicker-BvWNd8Tp.js.map +0 -1
- package/dist/Typography-CmILccNh.js.map +0 -1
- package/dist/button-DTkEk06V.js.map +0 -1
- package/dist/cjs/Button-BQ4rpzsl.js.map +0 -1
- package/dist/cjs/ColorPicker-Dh58otnF.js.map +0 -1
- package/dist/cjs/Typography-BW6xEk10.js.map +0 -1
- package/dist/cjs/button-CDZTqJzs.js.map +0 -1
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useFormikContext } from 'formik';
|
|
3
2
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
3
|
+
import { useFormikContext } from 'formik';
|
|
4
4
|
import { useHistory } from 'react-router-dom';
|
|
5
5
|
import { D as Dialog } from '../Dialog-ZTcfRPwU.js';
|
|
6
|
-
import { b as Button } from '../Button-
|
|
6
|
+
import { b as Button } from '../Button-hshHbjPF.js';
|
|
7
7
|
import '../utils-BJnb9o5c.js';
|
|
8
8
|
import '../primitives/Dialog.js';
|
|
9
9
|
import 'react-i18next';
|
|
10
|
-
import '../button-
|
|
10
|
+
import '../button-D5-pwGwG.js';
|
|
11
11
|
import '../index-Bo3AAQJp.js';
|
|
12
12
|
import '../index-CfriMyrd.js';
|
|
13
13
|
import '../index-BtkPdosV.js';
|
|
14
14
|
import '../useAriaHiddenCleanup-Qc0GmbER.js';
|
|
15
|
-
import '../dialog-
|
|
15
|
+
import '../dialog-CT2j-JaR.js';
|
|
16
16
|
import '../x-_o2T3n6D.js';
|
|
17
17
|
import '../createLucideIcon-C8ycilSN.js';
|
|
18
18
|
import '../DialogTrigger-a3diAOif.js';
|
|
@@ -82,7 +82,10 @@ const useNavPrompt = ({
|
|
|
82
82
|
unblockRef.current = history.block(
|
|
83
83
|
(transition, action) => {
|
|
84
84
|
setIsBlocked(true);
|
|
85
|
-
navRef.current = {
|
|
85
|
+
navRef.current = {
|
|
86
|
+
transition: `${transition.pathname}${transition.search ?? ""}${transition.hash ?? ""}`,
|
|
87
|
+
action
|
|
88
|
+
};
|
|
86
89
|
return false;
|
|
87
90
|
}
|
|
88
91
|
);
|
|
@@ -97,24 +100,27 @@ const useNavPrompt = ({
|
|
|
97
100
|
|
|
98
101
|
const BlockNavigationAlert = ({
|
|
99
102
|
isOpen = false,
|
|
103
|
+
isSaving = false,
|
|
104
|
+
saveAndContinue = true,
|
|
100
105
|
onClose,
|
|
101
106
|
onSubmit,
|
|
102
107
|
onDiscardChanges,
|
|
103
108
|
title = "You have unsaved changes",
|
|
104
109
|
message = "Are you sure you want to leave? All unsaved changes will be lost.",
|
|
105
110
|
cancelButtonLabel = "Discard and leave",
|
|
106
|
-
submitButtonLabel
|
|
111
|
+
submitButtonLabel
|
|
107
112
|
}) => {
|
|
108
113
|
const submitButtonRef = useRef(null);
|
|
114
|
+
const primaryButtonLabel = submitButtonLabel ?? (saveAndContinue ? "Save and continue" : "Stay on this page");
|
|
109
115
|
return /* @__PURE__ */ jsxs(
|
|
110
116
|
Dialog,
|
|
111
117
|
{
|
|
112
118
|
isOpen,
|
|
113
119
|
onClose: onClose ?? (() => {
|
|
114
120
|
}),
|
|
115
|
-
closeButton:
|
|
116
|
-
closeOnEsc:
|
|
117
|
-
closeOnOutsideClick:
|
|
121
|
+
closeButton: !isSaving,
|
|
122
|
+
closeOnEsc: !isSaving,
|
|
123
|
+
closeOnOutsideClick: !isSaving,
|
|
118
124
|
initialFocusRef: submitButtonRef,
|
|
119
125
|
size: "medium",
|
|
120
126
|
"data-testid": "alert-box",
|
|
@@ -133,6 +139,7 @@ const BlockNavigationAlert = ({
|
|
|
133
139
|
Button,
|
|
134
140
|
{
|
|
135
141
|
"data-testid": "alert-cancel-button",
|
|
142
|
+
disabled: isSaving,
|
|
136
143
|
label: cancelButtonLabel,
|
|
137
144
|
variant: "destructive",
|
|
138
145
|
onClick: onDiscardChanges
|
|
@@ -142,7 +149,8 @@ const BlockNavigationAlert = ({
|
|
|
142
149
|
Button,
|
|
143
150
|
{
|
|
144
151
|
"data-testid": "alert-submit-button",
|
|
145
|
-
label:
|
|
152
|
+
label: primaryButtonLabel,
|
|
153
|
+
loading: isSaving,
|
|
146
154
|
ref: submitButtonRef,
|
|
147
155
|
onClick: onSubmit
|
|
148
156
|
}
|
|
@@ -156,8 +164,10 @@ BlockNavigationAlert.displayName = "BlockNavigationAlert";
|
|
|
156
164
|
|
|
157
165
|
const FormikBlockNavigation = ({
|
|
158
166
|
isDirty = false,
|
|
167
|
+
saveAndContinue = true,
|
|
159
168
|
...otherProps
|
|
160
169
|
}) => {
|
|
170
|
+
const [isSaving, setIsSaving] = useState(false);
|
|
161
171
|
const formikContext = useFormikContext();
|
|
162
172
|
const shouldBlock = isDirty || Boolean(formikContext) && Boolean(formikContext.dirty);
|
|
163
173
|
const { isBlocked, continueNavigation, hidePrompt } = useNavPrompt({
|
|
@@ -168,13 +178,35 @@ const FormikBlockNavigation = ({
|
|
|
168
178
|
hidePrompt();
|
|
169
179
|
continueNavigation();
|
|
170
180
|
};
|
|
181
|
+
const handleSaveAndContinue = async () => {
|
|
182
|
+
if (!formikContext) {
|
|
183
|
+
hidePrompt();
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
setIsSaving(true);
|
|
187
|
+
try {
|
|
188
|
+
const errors = await formikContext.validateForm();
|
|
189
|
+
if (Object.keys(errors).length > 0) {
|
|
190
|
+
await formikContext.submitForm();
|
|
191
|
+
hidePrompt();
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
await formikContext.submitForm();
|
|
195
|
+
continueNavigation();
|
|
196
|
+
} catch {
|
|
197
|
+
hidePrompt();
|
|
198
|
+
} finally {
|
|
199
|
+
setIsSaving(false);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
171
202
|
return /* @__PURE__ */ jsx(
|
|
172
203
|
BlockNavigationAlert,
|
|
173
204
|
{
|
|
205
|
+
...{ isSaving, saveAndContinue },
|
|
174
206
|
isOpen: isBlocked,
|
|
175
207
|
onClose: hidePrompt,
|
|
176
208
|
onDiscardChanges: handleDiscardChanges,
|
|
177
|
-
onSubmit: hidePrompt,
|
|
209
|
+
onSubmit: saveAndContinue ? handleSaveAndContinue : hidePrompt,
|
|
178
210
|
...otherProps
|
|
179
211
|
}
|
|
180
212
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockNavigation.js","sources":["../../src/formik/BlockNavigation/hooks/useNavPrompt.ts","../../src/formik/BlockNavigation/BlockNavigationAlert.tsx","../../src/formik/BlockNavigation/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { useHistory } from \"react-router-dom\";\n\ninterface UseNavPromptOptions {\n /** Whether navigation should be blocked. */\n shouldBlock?: boolean;\n}\n\ninterface UseNavPromptReturn {\n /** Whether a navigation attempt is currently blocked. */\n isBlocked: boolean;\n /** Unblock and continue the pending navigation. */\n continueNavigation: () => void;\n /** Dismiss the prompt without navigating. */\n hidePrompt: () => void;\n}\n\nconst useNavPrompt = ({\n shouldBlock = true,\n}: UseNavPromptOptions): UseNavPromptReturn => {\n const [isBlocked, setIsBlocked] = useState(false);\n\n const history = useHistory();\n\n const unblockRef = useRef<(() => void) | undefined>(undefined);\n const navRef = useRef<{ transition: string; action: string } | null>(null);\n\n const handleNavigation = useCallback(\n (action: string, transition: string) => {\n switch (action) {\n case \"PUSH\":\n history.push(transition);\n break;\n case \"REPLACE\":\n history.replace(transition);\n break;\n case \"POP\":\n history.goBack();\n break;\n }\n },\n [history]\n );\n\n const continueNavigation = useCallback(() => {\n if (isBlocked && unblockRef.current) {\n unblockRef.current();\n setIsBlocked(false);\n if (navRef.current) {\n const { action, transition } = navRef.current;\n handleNavigation(action, transition);\n }\n }\n }, [isBlocked, handleNavigation]);\n\n const hidePrompt = useCallback(() => setIsBlocked(false), []);\n\n useEffect(() => {\n if (shouldBlock) {\n unblockRef.current = history.block(\n (transition: { pathname: string }, action: string) => {\n setIsBlocked(true);\n navRef.current = { transition: transition.pathname, action };\n\n return false;\n }\n ) as unknown as () => void;\n\n return () => {\n unblockRef.current?.();\n };\n }\n\n return undefined;\n }, [shouldBlock, history]);\n\n return { isBlocked, continueNavigation, hidePrompt };\n};\n\nexport { useNavPrompt };\nexport type { UseNavPromptOptions, UseNavPromptReturn };\n","import { useRef } from \"react\";\n\nimport { Button } from \"src/components/Button\";\nimport { Dialog } from \"src/components/Dialog\";\n\nexport interface BlockNavigationAlertProps {\n /** Whether the alert dialog is open. */\n isOpen?: boolean;\n /** Called when the dialog should close. */\n onClose?: () => void;\n /** Called when the user chooses to stay. */\n onSubmit?: () => void;\n /** Called when the user chooses to discard and leave. */\n onDiscardChanges?: () => void;\n /** Custom title for the alert. */\n title?: string;\n /** Custom message for the alert body. */\n message?: string;\n /** Custom label for the discard/cancel button. */\n cancelButtonLabel?: string;\n /** Custom label for the stay/submit button. */\n submitButtonLabel?: string;\n}\n\nconst BlockNavigationAlert = ({\n isOpen = false,\n onClose,\n onSubmit,\n onDiscardChanges,\n title = \"You have unsaved changes\",\n message = \"Are you sure you want to leave? All unsaved changes will be lost.\",\n cancelButtonLabel = \"Discard and leave\",\n submitButtonLabel = \"Stay on this page\",\n}: BlockNavigationAlertProps) => {\n const submitButtonRef = useRef<HTMLButtonElement>(null);\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose ?? (() => {})}\n closeButton\n closeOnEsc\n closeOnOutsideClick\n initialFocusRef={submitButtonRef}\n size=\"medium\"\n data-testid=\"alert-box\"\n >\n <Dialog.Header>\n <Dialog.Title data-testid=\"alert-title\">{title}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <p\n data-testid=\"alert-message\"\n className=\"text-sm text-muted-foreground\"\n >\n {message}\n </p>\n </Dialog.Body>\n <Dialog.Footer className=\"flex items-center justify-end gap-2\">\n <Button\n data-testid=\"alert-cancel-button\"\n label={cancelButtonLabel}\n variant=\"destructive\"\n onClick={onDiscardChanges}\n />\n <Button\n data-testid=\"alert-submit-button\"\n label={submitButtonLabel}\n ref={submitButtonRef}\n onClick={onSubmit}\n />\n </Dialog.Footer>\n </Dialog>\n );\n};\n\nBlockNavigationAlert.displayName = \"BlockNavigationAlert\";\n\nexport { BlockNavigationAlert };\n","import { useFormikContext } from \"formik\";\n\nimport { useNavPrompt } from \"./hooks/useNavPrompt\";\n\nimport {\n BlockNavigationAlert,\n type BlockNavigationAlertProps,\n} from \"./BlockNavigationAlert\";\n\nexport interface FormikBlockNavigationProps extends Omit<\n BlockNavigationAlertProps,\n \"isOpen\" | \"onClose\" | \"onSubmit\" | \"onDiscardChanges\"\n> {\n /** Force the navigation block regardless of Formik dirty state. */\n isDirty?: boolean;\n}\n\nconst FormikBlockNavigation = ({\n isDirty = false,\n ...otherProps\n}: FormikBlockNavigationProps) => {\n const formikContext = useFormikContext();\n const shouldBlock =\n isDirty || (Boolean(formikContext) && Boolean(formikContext.dirty));\n\n const { isBlocked, continueNavigation, hidePrompt } = useNavPrompt({\n shouldBlock,\n });\n\n const handleDiscardChanges = () => {\n if (formikContext) formikContext.resetForm();\n hidePrompt();\n continueNavigation();\n };\n\n return (\n <BlockNavigationAlert\n isOpen={isBlocked}\n onClose={hidePrompt}\n onDiscardChanges={handleDiscardChanges}\n onSubmit={hidePrompt}\n {...otherProps}\n />\n );\n};\n\nFormikBlockNavigation.displayName = \"FormikBlockNavigation\";\n\nexport { FormikBlockNavigation };\nexport type { BlockNavigationAlertProps };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BlockNavigation.js","sources":["../../src/formik/BlockNavigation/hooks/useNavPrompt.ts","../../src/formik/BlockNavigation/BlockNavigationAlert.tsx","../../src/formik/BlockNavigation/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { useHistory } from \"react-router-dom\";\n\ninterface UseNavPromptOptions {\n /** Whether navigation should be blocked. */\n shouldBlock?: boolean;\n}\n\ninterface UseNavPromptReturn {\n /** Whether a navigation attempt is currently blocked. */\n isBlocked: boolean;\n /** Unblock and continue the pending navigation. */\n continueNavigation: () => void;\n /** Dismiss the prompt without navigating. */\n hidePrompt: () => void;\n}\n\nconst useNavPrompt = ({\n shouldBlock = true,\n}: UseNavPromptOptions): UseNavPromptReturn => {\n const [isBlocked, setIsBlocked] = useState(false);\n\n const history = useHistory();\n\n const unblockRef = useRef<(() => void) | undefined>(undefined);\n const navRef = useRef<{ transition: string; action: string } | null>(null);\n\n const handleNavigation = useCallback(\n (action: string, transition: string) => {\n switch (action) {\n case \"PUSH\":\n history.push(transition);\n break;\n case \"REPLACE\":\n history.replace(transition);\n break;\n case \"POP\":\n history.goBack();\n break;\n }\n },\n [history]\n );\n\n const continueNavigation = useCallback(() => {\n if (isBlocked && unblockRef.current) {\n unblockRef.current();\n setIsBlocked(false);\n if (navRef.current) {\n const { action, transition } = navRef.current;\n handleNavigation(action, transition);\n }\n }\n }, [isBlocked, handleNavigation]);\n\n const hidePrompt = useCallback(() => setIsBlocked(false), []);\n\n useEffect(() => {\n if (shouldBlock) {\n unblockRef.current = history.block(\n (\n transition: { pathname: string; search?: string; hash?: string },\n action: string\n ) => {\n setIsBlocked(true);\n navRef.current = {\n transition: `${transition.pathname}${transition.search ?? \"\"}${\n transition.hash ?? \"\"\n }`,\n action,\n };\n\n return false;\n }\n ) as unknown as () => void;\n\n return () => {\n unblockRef.current?.();\n };\n }\n\n return undefined;\n }, [shouldBlock, history]);\n\n return { isBlocked, continueNavigation, hidePrompt };\n};\n\nexport { useNavPrompt };\nexport type { UseNavPromptOptions, UseNavPromptReturn };\n","import { useRef } from \"react\";\n\nimport { Button } from \"src/components/Button\";\nimport { Dialog } from \"src/components/Dialog\";\n\nexport interface BlockNavigationAlertProps {\n /** Whether the alert dialog is open. */\n isOpen?: boolean;\n /** Whether the form is being saved. Shows a loader on the primary button and\n * prevents the dialog from being dismissed. */\n isSaving?: boolean;\n /** Whether the primary button saves the form before resuming navigation.\n * Defaults to true; pass false for the older \"Stay on this page\" behaviour. */\n saveAndContinue?: boolean;\n /** Called when the dialog should close. */\n onClose?: () => void;\n /** Called when the user chooses to save and continue, or to stay. */\n onSubmit?: () => void;\n /** Called when the user chooses to discard and leave. */\n onDiscardChanges?: () => void;\n /** Custom title for the alert. */\n title?: string;\n /** Custom message for the alert body. */\n message?: string;\n /** Custom label for the discard/cancel button. */\n cancelButtonLabel?: string;\n /** Custom label for the primary button. Defaults to \"Save and continue\" when\n * saveAndContinue is enabled and \"Stay on this page\" otherwise. */\n submitButtonLabel?: string;\n}\n\nconst BlockNavigationAlert = ({\n isOpen = false,\n isSaving = false,\n saveAndContinue = true,\n onClose,\n onSubmit,\n onDiscardChanges,\n title = \"You have unsaved changes\",\n message = \"Are you sure you want to leave? All unsaved changes will be lost.\",\n cancelButtonLabel = \"Discard and leave\",\n submitButtonLabel,\n}: BlockNavigationAlertProps) => {\n const submitButtonRef = useRef<HTMLButtonElement>(null);\n\n const primaryButtonLabel =\n submitButtonLabel ??\n (saveAndContinue ? \"Save and continue\" : \"Stay on this page\");\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose ?? (() => {})}\n closeButton={!isSaving}\n closeOnEsc={!isSaving}\n closeOnOutsideClick={!isSaving}\n initialFocusRef={submitButtonRef}\n size=\"medium\"\n data-testid=\"alert-box\"\n >\n <Dialog.Header>\n <Dialog.Title data-testid=\"alert-title\">{title}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <p\n data-testid=\"alert-message\"\n className=\"text-sm text-muted-foreground\"\n >\n {message}\n </p>\n </Dialog.Body>\n <Dialog.Footer className=\"flex items-center justify-end gap-2\">\n <Button\n data-testid=\"alert-cancel-button\"\n disabled={isSaving}\n label={cancelButtonLabel}\n variant=\"destructive\"\n onClick={onDiscardChanges}\n />\n <Button\n data-testid=\"alert-submit-button\"\n label={primaryButtonLabel}\n loading={isSaving}\n ref={submitButtonRef}\n onClick={onSubmit}\n />\n </Dialog.Footer>\n </Dialog>\n );\n};\n\nBlockNavigationAlert.displayName = \"BlockNavigationAlert\";\n\nexport { BlockNavigationAlert };\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\n\nimport { useNavPrompt } from \"./hooks/useNavPrompt\";\n\nimport {\n BlockNavigationAlert,\n type BlockNavigationAlertProps,\n} from \"./BlockNavigationAlert\";\n\nexport interface FormikBlockNavigationProps extends Omit<\n BlockNavigationAlertProps,\n \"isOpen\" | \"isSaving\" | \"onClose\" | \"onSubmit\" | \"onDiscardChanges\"\n> {\n /** Force the navigation block regardless of Formik dirty state. */\n isDirty?: boolean;\n}\n\nconst FormikBlockNavigation = ({\n isDirty = false,\n saveAndContinue = true,\n ...otherProps\n}: FormikBlockNavigationProps) => {\n const [isSaving, setIsSaving] = useState(false);\n\n const formikContext = useFormikContext();\n const shouldBlock =\n isDirty || (Boolean(formikContext) && Boolean(formikContext.dirty));\n\n const { isBlocked, continueNavigation, hidePrompt } = useNavPrompt({\n shouldBlock,\n });\n\n const handleDiscardChanges = () => {\n if (formikContext) formikContext.resetForm();\n hidePrompt();\n continueNavigation();\n };\n\n const handleSaveAndContinue = async () => {\n if (!formikContext) {\n hidePrompt();\n\n return;\n }\n\n setIsSaving(true);\n try {\n const errors = await formikContext.validateForm();\n if (Object.keys(errors).length > 0) {\n await formikContext.submitForm();\n hidePrompt();\n\n return;\n }\n\n await formikContext.submitForm();\n continueNavigation();\n } catch {\n hidePrompt();\n } finally {\n setIsSaving(false);\n }\n };\n\n return (\n <BlockNavigationAlert\n {...{ isSaving, saveAndContinue }}\n isOpen={isBlocked}\n onClose={hidePrompt}\n onDiscardChanges={handleDiscardChanges}\n onSubmit={saveAndContinue ? handleSaveAndContinue : hidePrompt}\n {...otherProps}\n />\n );\n};\n\nFormikBlockNavigation.displayName = \"FormikBlockNavigation\";\n\nexport { FormikBlockNavigation };\nexport type { BlockNavigationAlertProps };\n"],"names":[],"mappings":"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"}
|
package/dist/formik/Button.js
CHANGED
|
@@ -2,12 +2,12 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
3
|
import { useFormikContext } from 'formik';
|
|
4
4
|
import { equals } from 'ramda';
|
|
5
|
-
import { b as Button } from '../Button-
|
|
5
|
+
import { b as Button } from '../Button-hshHbjPF.js';
|
|
6
6
|
import 'react-router-dom';
|
|
7
7
|
import '../utils-BJnb9o5c.js';
|
|
8
8
|
import '../renderIcon-C6twJSqH.js';
|
|
9
9
|
import '../primitives/Button.js';
|
|
10
|
-
import '../button-
|
|
10
|
+
import '../button-D5-pwGwG.js';
|
|
11
11
|
import '../index-Bo3AAQJp.js';
|
|
12
12
|
import '../index-CfriMyrd.js';
|
|
13
13
|
import '../index-BtkPdosV.js';
|
package/dist/formik/Checkbox.js
CHANGED
|
@@ -20,7 +20,7 @@ import 'react-dom';
|
|
|
20
20
|
import '../fieldIds-VpluAAMl.js';
|
|
21
21
|
import '../hyphenize-TRhMI0tl.js';
|
|
22
22
|
import '../primitives/Field.js';
|
|
23
|
-
import '../HelpIcon-
|
|
23
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
24
24
|
import '../primitives/Tooltip.js';
|
|
25
25
|
import '../tooltip-BUYRFmEv.js';
|
|
26
26
|
import '../index-BNPynZWM.js';
|
|
@@ -32,15 +32,15 @@ import '../floating-ui.utils.dom-Bw_Rc4bg.js';
|
|
|
32
32
|
import '../index-fV_U4ZJM.js';
|
|
33
33
|
import '../index-CSggBaQF.js';
|
|
34
34
|
import '../renderIcon-C6twJSqH.js';
|
|
35
|
-
import '../Popover-
|
|
35
|
+
import '../Popover-B0QALwsd.js';
|
|
36
36
|
import '../index-Bo3AAQJp.js';
|
|
37
37
|
import '../primitives/HoverCard.js';
|
|
38
|
-
import '../Typography-
|
|
38
|
+
import '../Typography-Bu78IBJy.js';
|
|
39
39
|
import '../index-CfriMyrd.js';
|
|
40
|
-
import '../Button-
|
|
40
|
+
import '../Button-hshHbjPF.js';
|
|
41
41
|
import 'react-router-dom';
|
|
42
42
|
import '../primitives/Button.js';
|
|
43
|
-
import '../button-
|
|
43
|
+
import '../button-D5-pwGwG.js';
|
|
44
44
|
import '../primitives/Spinner.js';
|
|
45
45
|
import 'react-i18next';
|
|
46
46
|
import '../loader-circle-DycHUAWN.js';
|
package/dist/formik/Form.js
CHANGED
|
@@ -76,11 +76,11 @@ const FormWrapper = forwardRef(
|
|
|
76
76
|
scrollToError(formRef, errors, status);
|
|
77
77
|
}
|
|
78
78
|
} else {
|
|
79
|
-
submitForm();
|
|
79
|
+
await submitForm();
|
|
80
80
|
}
|
|
81
81
|
} catch (error) {
|
|
82
82
|
console.error(
|
|
83
|
-
"An unhandled error was caught
|
|
83
|
+
"An unhandled error was caught while validating or submitting the form",
|
|
84
84
|
error
|
|
85
85
|
);
|
|
86
86
|
}
|
package/dist/formik/Form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sources":["../../src/formik/Form/ScrollToErrorField/utils.ts","../../src/formik/Form/ScrollToErrorField/index.tsx","../../src/formik/Form/FormWrapper.tsx","../../src/formik/Form/index.tsx"],"sourcesContent":["import { is } from \"ramda\";\n\nconst transformObjectToDotNotation = (\n object: Record<string, unknown>,\n prefix = \"\"\n): string[] => {\n const result: string[] = [];\n\n Object.entries(object).forEach(([key, value]) => {\n if (!value) return;\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (is(Object, value)) {\n result.push(\n ...transformObjectToDotNotation(\n value as Record<string, unknown>,\n nextKey\n )\n );\n } else {\n result.push(nextKey);\n }\n });\n\n return result;\n};\n\nconst getErrorFieldName = (\n formikErrors: Record<string, unknown>\n): string | undefined => transformObjectToDotNotation(formikErrors)?.[0];\n\nexport const getFieldsWithServerError = (\n status: Record<string, unknown> = {}\n): string[] =>\n Object.keys(status).filter(\n fieldName => status[fieldName] != null && status[fieldName] !== \"\"\n );\n\nexport const scrollToError = (\n formRef: React.RefObject<HTMLFormElement | null>,\n errors: Record<string, unknown>,\n status: Record<string, unknown>\n): void => {\n const fieldErrorName = getErrorFieldName(errors);\n const [fieldWithServerError] = getFieldsWithServerError(status);\n\n if (!fieldErrorName && !fieldWithServerError) return;\n\n const errorFieldName = fieldErrorName || fieldWithServerError;\n const errorFormElement = formRef.current?.querySelector(\n `[name=\"${errorFieldName}\"]`\n );\n\n errorFormElement?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n};\n","import { useEffect } from \"react\";\n\nimport { useFormikContext } from \"formik\";\n\nimport { getFieldsWithServerError, scrollToError } from \"./utils\";\n\ninterface ScrollToErrorFieldProps {\n formRef: React.RefObject<HTMLFormElement | null>;\n}\n\nconst ScrollToErrorField = ({ formRef }: ScrollToErrorFieldProps) => {\n const { submitCount, isValid, errors, status } = useFormikContext();\n\n useEffect(() => {\n const fieldsWithServerError = getFieldsWithServerError(status);\n if (!formRef.current || (isValid && fieldsWithServerError.length === 0)) {\n return;\n }\n\n scrollToError(formRef, errors as Record<string, unknown>, status);\n }, [submitCount]);\n\n return null;\n};\n\nexport default ScrollToErrorField;\n","import React, { useCallback, forwardRef, useRef } from \"react\";\n\nimport { Form as FormikForm, useFormikContext } from \"formik\";\n\nimport ScrollToErrorField from \"./ScrollToErrorField\";\nimport {\n getFieldsWithServerError,\n scrollToError,\n} from \"./ScrollToErrorField/utils\";\n\ninterface FormWrapperProps {\n className?: string;\n formProps?: React.ComponentProps<\"form\">;\n children: React.ReactNode;\n scrollToErrorField: boolean;\n}\n\nconst FormWrapper = forwardRef<HTMLFormElement, FormWrapperProps>(\n ({ className, formProps, children, scrollToErrorField }, ref) => {\n const { validateForm, setErrors, setTouched, submitForm, ...formikBag } =\n useFormikContext();\n\n const { dirty: isFormDirty, isSubmitting, status } = formikBag;\n\n const formRefForScrollToErrorField = useRef<HTMLFormElement>(null);\n const formRef =\n (ref as React.RefObject<HTMLFormElement | null>) ||\n formRefForScrollToErrorField;\n\n const handleKeyDown = useCallback(\n async (event: React.KeyboardEvent<HTMLFormElement>) => {\n const target = event.target as HTMLElement & { editor?: unknown };\n const isEventFromEditorOrTextarea =\n target.tagName === \"TEXTAREA\" || target.editor;\n\n if (event.key !== \"Enter\") return;\n if (isEventFromEditorOrTextarea && !event.metaKey) return;\n\n event.preventDefault();\n\n if (event.shiftKey) return;\n if (!isFormDirty || isSubmitting) return;\n\n try {\n const errors = await validateForm();\n const fieldStatuses = getFieldsWithServerError(status);\n\n if (\n Object.keys(errors).length > 0 ||\n Object.keys(fieldStatuses).length > 0\n ) {\n setErrors(errors);\n setTouched({ ...errors, ...status });\n if (scrollToErrorField) {\n scrollToError(formRef, errors as Record<string, unknown>, status);\n }\n } else {\n submitForm();\n }\n } catch (error) {\n console.error(\n \"An unhandled error was caught from validateForm()\",\n error\n );\n }\n },\n [\n validateForm,\n setErrors,\n setTouched,\n isFormDirty,\n isSubmitting,\n submitForm,\n status,\n scrollToErrorField,\n formRef,\n ]\n );\n\n return (\n <FormikForm\n {...{ className }}\n noValidate\n ref={formRef}\n onKeyDown={handleKeyDown}\n {...formProps}\n >\n {scrollToErrorField && <ScrollToErrorField {...{ formRef }} />}\n {children}\n </FormikForm>\n );\n }\n);\n\nFormWrapper.displayName = \"FormWrapper\";\n\nexport default FormWrapper;\n","import React, { forwardRef, useRef } from \"react\";\n\nimport { Formik, FormikConfig, FormikProps, FormikValues } from \"formik\";\n\nimport FormWrapper from \"./FormWrapper\";\nimport { getFieldsWithServerError } from \"./ScrollToErrorField/utils\";\n\nexport interface FormProps<T extends FormikValues = FormikValues> {\n /** Formik configuration: initialValues, validationSchema, onSubmit, etc. */\n formikProps: FormikConfig<T>;\n /** Props forwarded to the HTML form element. */\n formProps?: React.ComponentProps<\"form\">;\n /** Auto-scroll to the first error field on submit. */\n scrollToErrorField?: boolean;\n /** Additional class name for the form wrapper. */\n className?: string;\n /** Render children directly or as a function receiving FormikProps. */\n children: React.ReactNode | ((props: FormikProps<T>) => React.ReactNode);\n}\n\nconst Form = forwardRef<HTMLFormElement, FormProps>(\n (\n { className, children, formikProps, formProps, scrollToErrorField = false },\n ref\n ) => {\n const formikRef = useRef<FormikProps<FormikValues>>(null);\n\n const handleSubmit: FormikConfig<FormikValues>[\"onSubmit\"] = (\n values,\n actions\n ) => {\n const fieldsWithServerError = getFieldsWithServerError(\n formikRef.current?.status\n );\n\n if (fieldsWithServerError.length > 0) {\n actions.setSubmitting(false);\n\n return undefined;\n }\n\n return formikProps.onSubmit(values, actions);\n };\n\n return (\n <Formik\n innerRef={formikRef as React.Ref<FormikProps<FormikValues>>}\n {...formikProps}\n onSubmit={handleSubmit}\n >\n {props => (\n <FormWrapper {...{ className, formProps, ref, scrollToErrorField }}>\n {typeof children === \"function\" ? children(props) : children}\n </FormWrapper>\n )}\n </Formik>\n );\n }\n);\n\nForm.displayName = \"Form\";\n\nexport { Form };\n"],"names":["FormikForm"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Form.js","sources":["../../src/formik/Form/ScrollToErrorField/utils.ts","../../src/formik/Form/ScrollToErrorField/index.tsx","../../src/formik/Form/FormWrapper.tsx","../../src/formik/Form/index.tsx"],"sourcesContent":["import { is } from \"ramda\";\n\nconst transformObjectToDotNotation = (\n object: Record<string, unknown>,\n prefix = \"\"\n): string[] => {\n const result: string[] = [];\n\n Object.entries(object).forEach(([key, value]) => {\n if (!value) return;\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (is(Object, value)) {\n result.push(\n ...transformObjectToDotNotation(\n value as Record<string, unknown>,\n nextKey\n )\n );\n } else {\n result.push(nextKey);\n }\n });\n\n return result;\n};\n\nconst getErrorFieldName = (\n formikErrors: Record<string, unknown>\n): string | undefined => transformObjectToDotNotation(formikErrors)?.[0];\n\nexport const getFieldsWithServerError = (\n status: Record<string, unknown> = {}\n): string[] =>\n Object.keys(status).filter(\n fieldName => status[fieldName] != null && status[fieldName] !== \"\"\n );\n\nexport const scrollToError = (\n formRef: React.RefObject<HTMLFormElement | null>,\n errors: Record<string, unknown>,\n status: Record<string, unknown>\n): void => {\n const fieldErrorName = getErrorFieldName(errors);\n const [fieldWithServerError] = getFieldsWithServerError(status);\n\n if (!fieldErrorName && !fieldWithServerError) return;\n\n const errorFieldName = fieldErrorName || fieldWithServerError;\n const errorFormElement = formRef.current?.querySelector(\n `[name=\"${errorFieldName}\"]`\n );\n\n errorFormElement?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n};\n","import { useEffect } from \"react\";\n\nimport { useFormikContext } from \"formik\";\n\nimport { getFieldsWithServerError, scrollToError } from \"./utils\";\n\ninterface ScrollToErrorFieldProps {\n formRef: React.RefObject<HTMLFormElement | null>;\n}\n\nconst ScrollToErrorField = ({ formRef }: ScrollToErrorFieldProps) => {\n const { submitCount, isValid, errors, status } = useFormikContext();\n\n useEffect(() => {\n const fieldsWithServerError = getFieldsWithServerError(status);\n if (!formRef.current || (isValid && fieldsWithServerError.length === 0)) {\n return;\n }\n\n scrollToError(formRef, errors as Record<string, unknown>, status);\n }, [submitCount]);\n\n return null;\n};\n\nexport default ScrollToErrorField;\n","import React, { useCallback, forwardRef, useRef } from \"react\";\n\nimport { Form as FormikForm, useFormikContext } from \"formik\";\n\nimport ScrollToErrorField from \"./ScrollToErrorField\";\nimport {\n getFieldsWithServerError,\n scrollToError,\n} from \"./ScrollToErrorField/utils\";\n\ninterface FormWrapperProps {\n className?: string;\n formProps?: React.ComponentProps<\"form\">;\n children: React.ReactNode;\n scrollToErrorField: boolean;\n}\n\nconst FormWrapper = forwardRef<HTMLFormElement, FormWrapperProps>(\n ({ className, formProps, children, scrollToErrorField }, ref) => {\n const { validateForm, setErrors, setTouched, submitForm, ...formikBag } =\n useFormikContext();\n\n const { dirty: isFormDirty, isSubmitting, status } = formikBag;\n\n const formRefForScrollToErrorField = useRef<HTMLFormElement>(null);\n const formRef =\n (ref as React.RefObject<HTMLFormElement | null>) ||\n formRefForScrollToErrorField;\n\n const handleKeyDown = useCallback(\n async (event: React.KeyboardEvent<HTMLFormElement>) => {\n const target = event.target as HTMLElement & { editor?: unknown };\n const isEventFromEditorOrTextarea =\n target.tagName === \"TEXTAREA\" || target.editor;\n\n if (event.key !== \"Enter\") return;\n if (isEventFromEditorOrTextarea && !event.metaKey) return;\n\n event.preventDefault();\n\n if (event.shiftKey) return;\n if (!isFormDirty || isSubmitting) return;\n\n try {\n const errors = await validateForm();\n const fieldStatuses = getFieldsWithServerError(status);\n\n if (\n Object.keys(errors).length > 0 ||\n Object.keys(fieldStatuses).length > 0\n ) {\n setErrors(errors);\n setTouched({ ...errors, ...status });\n if (scrollToErrorField) {\n scrollToError(formRef, errors as Record<string, unknown>, status);\n }\n } else {\n await submitForm();\n }\n } catch (error) {\n console.error(\n \"An unhandled error was caught while validating or submitting the form\",\n error\n );\n }\n },\n [\n validateForm,\n setErrors,\n setTouched,\n isFormDirty,\n isSubmitting,\n submitForm,\n status,\n scrollToErrorField,\n formRef,\n ]\n );\n\n return (\n <FormikForm\n {...{ className }}\n noValidate\n ref={formRef}\n onKeyDown={handleKeyDown}\n {...formProps}\n >\n {scrollToErrorField && <ScrollToErrorField {...{ formRef }} />}\n {children}\n </FormikForm>\n );\n }\n);\n\nFormWrapper.displayName = \"FormWrapper\";\n\nexport default FormWrapper;\n","import React, { forwardRef, useRef } from \"react\";\n\nimport { Formik, FormikConfig, FormikProps, FormikValues } from \"formik\";\n\nimport FormWrapper from \"./FormWrapper\";\nimport { getFieldsWithServerError } from \"./ScrollToErrorField/utils\";\n\nexport interface FormProps<T extends FormikValues = FormikValues> {\n /** Formik configuration: initialValues, validationSchema, onSubmit, etc. */\n formikProps: FormikConfig<T>;\n /** Props forwarded to the HTML form element. */\n formProps?: React.ComponentProps<\"form\">;\n /** Auto-scroll to the first error field on submit. */\n scrollToErrorField?: boolean;\n /** Additional class name for the form wrapper. */\n className?: string;\n /** Render children directly or as a function receiving FormikProps. */\n children: React.ReactNode | ((props: FormikProps<T>) => React.ReactNode);\n}\n\nconst Form = forwardRef<HTMLFormElement, FormProps>(\n (\n { className, children, formikProps, formProps, scrollToErrorField = false },\n ref\n ) => {\n const formikRef = useRef<FormikProps<FormikValues>>(null);\n\n const handleSubmit: FormikConfig<FormikValues>[\"onSubmit\"] = (\n values,\n actions\n ) => {\n const fieldsWithServerError = getFieldsWithServerError(\n formikRef.current?.status\n );\n\n if (fieldsWithServerError.length > 0) {\n actions.setSubmitting(false);\n\n return undefined;\n }\n\n return formikProps.onSubmit(values, actions);\n };\n\n return (\n <Formik\n innerRef={formikRef as React.Ref<FormikProps<FormikValues>>}\n {...formikProps}\n onSubmit={handleSubmit}\n >\n {props => (\n <FormWrapper {...{ className, formProps, ref, scrollToErrorField }}>\n {typeof children === \"function\" ? children(props) : children}\n </FormWrapper>\n )}\n </Formik>\n );\n }\n);\n\nForm.displayName = \"Form\";\n\nexport { Form };\n"],"names":["FormikForm"],"mappings":"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"}
|
package/dist/formik/Input.js
CHANGED
|
@@ -5,7 +5,7 @@ import { dissoc } from 'ramda';
|
|
|
5
5
|
import { I as Input } from '../Input-Dm5ILPH3.js';
|
|
6
6
|
import '../utils-BJnb9o5c.js';
|
|
7
7
|
import '../primitives/Field.js';
|
|
8
|
-
import '../HelpIcon-
|
|
8
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
9
9
|
import '../primitives/Tooltip.js';
|
|
10
10
|
import '../tooltip-BUYRFmEv.js';
|
|
11
11
|
import '../index-DNzunGHb.js';
|
|
@@ -27,22 +27,22 @@ import '../index-Cor698lu.js';
|
|
|
27
27
|
import '../index-CSggBaQF.js';
|
|
28
28
|
import '../renderIcon-C6twJSqH.js';
|
|
29
29
|
import '../createLucideIcon-C8ycilSN.js';
|
|
30
|
-
import '../Popover-
|
|
30
|
+
import '../Popover-B0QALwsd.js';
|
|
31
31
|
import '../index-Bo3AAQJp.js';
|
|
32
32
|
import '../primitives/HoverCard.js';
|
|
33
|
-
import '../Typography-
|
|
33
|
+
import '../Typography-Bu78IBJy.js';
|
|
34
34
|
import '../index-CfriMyrd.js';
|
|
35
|
-
import '../Button-
|
|
35
|
+
import '../Button-hshHbjPF.js';
|
|
36
36
|
import 'react-router-dom';
|
|
37
37
|
import '../primitives/Button.js';
|
|
38
|
-
import '../button-
|
|
38
|
+
import '../button-D5-pwGwG.js';
|
|
39
39
|
import '../primitives/Spinner.js';
|
|
40
40
|
import 'react-i18next';
|
|
41
41
|
import '../loader-circle-DycHUAWN.js';
|
|
42
42
|
import '../label-YEsizr2c.js';
|
|
43
43
|
import '../separator-ByRsc-y-.js';
|
|
44
44
|
import '../primitives/InputGroup.js';
|
|
45
|
-
import '../input-group-
|
|
45
|
+
import '../input-group-kccDxDZ0.js';
|
|
46
46
|
import '../input-BNPBqcmC.js';
|
|
47
47
|
import '../textarea-ByEw7FT-.js';
|
|
48
48
|
import '../fieldIds-VpluAAMl.js';
|
|
@@ -6,7 +6,7 @@ import { M as MultiEmailInput } from '../MultiEmailInput-CLBZnyXh.js';
|
|
|
6
6
|
import 'react-i18next';
|
|
7
7
|
import '../utils-BJnb9o5c.js';
|
|
8
8
|
import '../primitives/Field.js';
|
|
9
|
-
import '../HelpIcon-
|
|
9
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
10
10
|
import '../primitives/Tooltip.js';
|
|
11
11
|
import '../tooltip-BUYRFmEv.js';
|
|
12
12
|
import '../index-DNzunGHb.js';
|
|
@@ -28,15 +28,15 @@ import '../index-Cor698lu.js';
|
|
|
28
28
|
import '../index-CSggBaQF.js';
|
|
29
29
|
import '../renderIcon-C6twJSqH.js';
|
|
30
30
|
import '../createLucideIcon-C8ycilSN.js';
|
|
31
|
-
import '../Popover-
|
|
31
|
+
import '../Popover-B0QALwsd.js';
|
|
32
32
|
import '../index-Bo3AAQJp.js';
|
|
33
33
|
import '../primitives/HoverCard.js';
|
|
34
|
-
import '../Typography-
|
|
34
|
+
import '../Typography-Bu78IBJy.js';
|
|
35
35
|
import '../index-CfriMyrd.js';
|
|
36
|
-
import '../Button-
|
|
36
|
+
import '../Button-hshHbjPF.js';
|
|
37
37
|
import 'react-router-dom';
|
|
38
38
|
import '../primitives/Button.js';
|
|
39
|
-
import '../button-
|
|
39
|
+
import '../button-D5-pwGwG.js';
|
|
40
40
|
import '../primitives/Spinner.js';
|
|
41
41
|
import '../loader-circle-DycHUAWN.js';
|
|
42
42
|
import '../label-YEsizr2c.js';
|
|
@@ -23,7 +23,7 @@ import '../index-yFgkK_AM.js';
|
|
|
23
23
|
import '../primitives/Label.js';
|
|
24
24
|
import '../label-YEsizr2c.js';
|
|
25
25
|
import '../primitives/Field.js';
|
|
26
|
-
import '../HelpIcon-
|
|
26
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
27
27
|
import '../primitives/Tooltip.js';
|
|
28
28
|
import '../tooltip-BUYRFmEv.js';
|
|
29
29
|
import '../index-BNPynZWM.js';
|
|
@@ -34,15 +34,15 @@ import '../index-fV_U4ZJM.js';
|
|
|
34
34
|
import '../index-CSggBaQF.js';
|
|
35
35
|
import '../renderIcon-C6twJSqH.js';
|
|
36
36
|
import '../createLucideIcon-C8ycilSN.js';
|
|
37
|
-
import '../Popover-
|
|
37
|
+
import '../Popover-B0QALwsd.js';
|
|
38
38
|
import '../index-Bo3AAQJp.js';
|
|
39
39
|
import '../primitives/HoverCard.js';
|
|
40
|
-
import '../Typography-
|
|
40
|
+
import '../Typography-Bu78IBJy.js';
|
|
41
41
|
import '../index-CfriMyrd.js';
|
|
42
|
-
import '../Button-
|
|
42
|
+
import '../Button-hshHbjPF.js';
|
|
43
43
|
import 'react-router-dom';
|
|
44
44
|
import '../primitives/Button.js';
|
|
45
|
-
import '../button-
|
|
45
|
+
import '../button-D5-pwGwG.js';
|
|
46
46
|
import '../primitives/Spinner.js';
|
|
47
47
|
import 'react-i18next';
|
|
48
48
|
import '../loader-circle-DycHUAWN.js';
|
package/dist/formik/Select.js
CHANGED
|
@@ -2,17 +2,17 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
3
|
import { useField, useFormikContext, getIn } from 'formik';
|
|
4
4
|
import { dissoc } from 'ramda';
|
|
5
|
-
import { S as Select } from '../Select-
|
|
5
|
+
import { S as Select } from '../Select-DCVlTRBI.js';
|
|
6
6
|
import '../fieldIds-VpluAAMl.js';
|
|
7
7
|
import '../hyphenize-TRhMI0tl.js';
|
|
8
|
-
import '../Combobox-
|
|
8
|
+
import '../Combobox-LxuMoLF5.js';
|
|
9
9
|
import '../utils-BJnb9o5c.js';
|
|
10
|
-
import '../button-
|
|
10
|
+
import '../button-D5-pwGwG.js';
|
|
11
11
|
import '../index-Bo3AAQJp.js';
|
|
12
12
|
import '../index-CfriMyrd.js';
|
|
13
13
|
import '../index-BtkPdosV.js';
|
|
14
14
|
import '../useAriaHiddenCleanup-Qc0GmbER.js';
|
|
15
|
-
import '../input-group-
|
|
15
|
+
import '../input-group-kccDxDZ0.js';
|
|
16
16
|
import '../input-BNPBqcmC.js';
|
|
17
17
|
import '../textarea-ByEw7FT-.js';
|
|
18
18
|
import '../chevron-down-BNi0ntys.js';
|
|
@@ -28,7 +28,7 @@ import '../with-selector-Dv0G_V_o.js';
|
|
|
28
28
|
import '../floating-ui.react-dom-BtFUJRfb.js';
|
|
29
29
|
import '../SelectFieldWrapper-D370CD4o.js';
|
|
30
30
|
import '../primitives/Field.js';
|
|
31
|
-
import '../HelpIcon-
|
|
31
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
32
32
|
import '../primitives/Tooltip.js';
|
|
33
33
|
import '../tooltip-BUYRFmEv.js';
|
|
34
34
|
import '../index-DNzunGHb.js';
|
|
@@ -45,10 +45,10 @@ import '../index-yFgkK_AM.js';
|
|
|
45
45
|
import '../index-Cor698lu.js';
|
|
46
46
|
import '../index-CSggBaQF.js';
|
|
47
47
|
import '../renderIcon-C6twJSqH.js';
|
|
48
|
-
import '../Popover-
|
|
48
|
+
import '../Popover-B0QALwsd.js';
|
|
49
49
|
import '../primitives/HoverCard.js';
|
|
50
|
-
import '../Typography-
|
|
51
|
-
import '../Button-
|
|
50
|
+
import '../Typography-Bu78IBJy.js';
|
|
51
|
+
import '../Button-hshHbjPF.js';
|
|
52
52
|
import 'react-router-dom';
|
|
53
53
|
import '../primitives/Button.js';
|
|
54
54
|
import '../primitives/Spinner.js';
|
package/dist/formik/Slider.js
CHANGED
|
@@ -18,7 +18,7 @@ import '../index-DhnfW8wQ.js';
|
|
|
18
18
|
import 'react-dom';
|
|
19
19
|
import '../index-Dd1i1d2M.js';
|
|
20
20
|
import '../primitives/Field.js';
|
|
21
|
-
import '../HelpIcon-
|
|
21
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
22
22
|
import '../primitives/Tooltip.js';
|
|
23
23
|
import '../tooltip-BUYRFmEv.js';
|
|
24
24
|
import '../index-BNPynZWM.js';
|
|
@@ -32,15 +32,15 @@ import '../index-yFgkK_AM.js';
|
|
|
32
32
|
import '../index-CSggBaQF.js';
|
|
33
33
|
import '../renderIcon-C6twJSqH.js';
|
|
34
34
|
import '../createLucideIcon-C8ycilSN.js';
|
|
35
|
-
import '../Popover-
|
|
35
|
+
import '../Popover-B0QALwsd.js';
|
|
36
36
|
import '../index-Bo3AAQJp.js';
|
|
37
37
|
import '../primitives/HoverCard.js';
|
|
38
|
-
import '../Typography-
|
|
38
|
+
import '../Typography-Bu78IBJy.js';
|
|
39
39
|
import '../index-CfriMyrd.js';
|
|
40
|
-
import '../Button-
|
|
40
|
+
import '../Button-hshHbjPF.js';
|
|
41
41
|
import 'react-router-dom';
|
|
42
42
|
import '../primitives/Button.js';
|
|
43
|
-
import '../button-
|
|
43
|
+
import '../button-D5-pwGwG.js';
|
|
44
44
|
import '../primitives/Spinner.js';
|
|
45
45
|
import 'react-i18next';
|
|
46
46
|
import '../loader-circle-DycHUAWN.js';
|
package/dist/formik/Switch.js
CHANGED
|
@@ -5,7 +5,7 @@ import { S as Switch } from '../Switch-C9fqpoNR.js';
|
|
|
5
5
|
import 'react';
|
|
6
6
|
import '../primitives/Field.js';
|
|
7
7
|
import '../utils-BJnb9o5c.js';
|
|
8
|
-
import '../HelpIcon-
|
|
8
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
9
9
|
import '../primitives/Tooltip.js';
|
|
10
10
|
import '../tooltip-BUYRFmEv.js';
|
|
11
11
|
import '../index-DNzunGHb.js';
|
|
@@ -27,15 +27,15 @@ import '../index-Cor698lu.js';
|
|
|
27
27
|
import '../index-CSggBaQF.js';
|
|
28
28
|
import '../renderIcon-C6twJSqH.js';
|
|
29
29
|
import '../createLucideIcon-C8ycilSN.js';
|
|
30
|
-
import '../Popover-
|
|
30
|
+
import '../Popover-B0QALwsd.js';
|
|
31
31
|
import '../index-Bo3AAQJp.js';
|
|
32
32
|
import '../primitives/HoverCard.js';
|
|
33
|
-
import '../Typography-
|
|
33
|
+
import '../Typography-Bu78IBJy.js';
|
|
34
34
|
import '../index-CfriMyrd.js';
|
|
35
|
-
import '../Button-
|
|
35
|
+
import '../Button-hshHbjPF.js';
|
|
36
36
|
import 'react-router-dom';
|
|
37
37
|
import '../primitives/Button.js';
|
|
38
|
-
import '../button-
|
|
38
|
+
import '../button-D5-pwGwG.js';
|
|
39
39
|
import '../primitives/Spinner.js';
|
|
40
40
|
import 'react-i18next';
|
|
41
41
|
import '../loader-circle-DycHUAWN.js';
|
package/dist/formik/Textarea.js
CHANGED
|
@@ -5,7 +5,7 @@ import { dissoc } from 'ramda';
|
|
|
5
5
|
import { T as Textarea } from '../Textarea-CUe09-sr.js';
|
|
6
6
|
import '../utils-BJnb9o5c.js';
|
|
7
7
|
import '../primitives/Field.js';
|
|
8
|
-
import '../HelpIcon-
|
|
8
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
9
9
|
import '../primitives/Tooltip.js';
|
|
10
10
|
import '../tooltip-BUYRFmEv.js';
|
|
11
11
|
import '../index-DNzunGHb.js';
|
|
@@ -27,15 +27,15 @@ import '../index-Cor698lu.js';
|
|
|
27
27
|
import '../index-CSggBaQF.js';
|
|
28
28
|
import '../renderIcon-C6twJSqH.js';
|
|
29
29
|
import '../createLucideIcon-C8ycilSN.js';
|
|
30
|
-
import '../Popover-
|
|
30
|
+
import '../Popover-B0QALwsd.js';
|
|
31
31
|
import '../index-Bo3AAQJp.js';
|
|
32
32
|
import '../primitives/HoverCard.js';
|
|
33
|
-
import '../Typography-
|
|
33
|
+
import '../Typography-Bu78IBJy.js';
|
|
34
34
|
import '../index-CfriMyrd.js';
|
|
35
|
-
import '../Button-
|
|
35
|
+
import '../Button-hshHbjPF.js';
|
|
36
36
|
import 'react-router-dom';
|
|
37
37
|
import '../primitives/Button.js';
|
|
38
|
-
import '../button-
|
|
38
|
+
import '../button-D5-pwGwG.js';
|
|
39
39
|
import '../primitives/Spinner.js';
|
|
40
40
|
import 'react-i18next';
|
|
41
41
|
import '../loader-circle-DycHUAWN.js';
|
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
3
|
import { useField, useFormikContext, getIn } from 'formik';
|
|
4
4
|
import { dissoc } from 'ramda';
|
|
5
|
-
import { T as TreeSelect } from '../TreeSelect-
|
|
5
|
+
import { T as TreeSelect } from '../TreeSelect-BV18q8UD.js';
|
|
6
6
|
import '../utils-BJnb9o5c.js';
|
|
7
7
|
import '../primitives/Popover.js';
|
|
8
8
|
import '../index-DNzunGHb.js';
|
|
@@ -24,27 +24,27 @@ import '../index-yFgkK_AM.js';
|
|
|
24
24
|
import '../index-Cor698lu.js';
|
|
25
25
|
import '../SelectFieldWrapper-D370CD4o.js';
|
|
26
26
|
import '../primitives/Field.js';
|
|
27
|
-
import '../HelpIcon-
|
|
27
|
+
import '../HelpIcon-CEHRtxZ5.js';
|
|
28
28
|
import '../primitives/Tooltip.js';
|
|
29
29
|
import '../tooltip-BUYRFmEv.js';
|
|
30
30
|
import '../index-CSggBaQF.js';
|
|
31
31
|
import '../renderIcon-C6twJSqH.js';
|
|
32
32
|
import '../createLucideIcon-C8ycilSN.js';
|
|
33
|
-
import '../Popover-
|
|
33
|
+
import '../Popover-B0QALwsd.js';
|
|
34
34
|
import '../index-Bo3AAQJp.js';
|
|
35
35
|
import '../primitives/HoverCard.js';
|
|
36
|
-
import '../Typography-
|
|
36
|
+
import '../Typography-Bu78IBJy.js';
|
|
37
37
|
import '../index-CfriMyrd.js';
|
|
38
|
-
import '../Button-
|
|
38
|
+
import '../Button-hshHbjPF.js';
|
|
39
39
|
import 'react-router-dom';
|
|
40
40
|
import '../primitives/Button.js';
|
|
41
|
-
import '../button-
|
|
41
|
+
import '../button-D5-pwGwG.js';
|
|
42
42
|
import '../primitives/Spinner.js';
|
|
43
43
|
import 'react-i18next';
|
|
44
44
|
import '../loader-circle-DycHUAWN.js';
|
|
45
45
|
import '../label-YEsizr2c.js';
|
|
46
46
|
import '../separator-ByRsc-y-.js';
|
|
47
|
-
import '../Tree-
|
|
47
|
+
import '../Tree-Cf0rLcX9.js';
|
|
48
48
|
import '../chevron-down-BNi0ntys.js';
|
|
49
49
|
import '../chevron-right-DQnrO-ek.js';
|
|
50
50
|
import '../primitives/Checkbox.js';
|