@bigbinary/neeto-atoms 1.0.138-beta1 → 1.0.139-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/{DataTable-DKYkrFfk.js → DataTable-8hVysQPv.js} +8 -4
- package/dist/DataTable-8hVysQPv.js.map +1 -0
- package/dist/{DatePicker-BYic3Ykm.js → DatePicker-Bvuu3hlt.js} +7 -13
- package/dist/DatePicker-Bvuu3hlt.js.map +1 -0
- package/dist/{HelpIcon-CB6wsVSF.js → HelpIcon-TkvMVF4n.js} +2 -1
- package/dist/HelpIcon-TkvMVF4n.js.map +1 -0
- package/dist/{Label-BUf6CzV9.js → Label-DrjtHwMk.js} +2 -2
- package/dist/{Label-BUf6CzV9.js.map → Label-DrjtHwMk.js.map} +1 -1
- package/dist/{Select-XgpTYRqO.js → Select-B6Yn7BFi.js} +4 -2
- package/dist/Select-B6Yn7BFi.js.map +1 -0
- package/dist/cjs/{DataTable-BXNU34g-.js → DataTable-DAoZP73Q.js} +8 -4
- package/dist/cjs/DataTable-DAoZP73Q.js.map +1 -0
- package/dist/cjs/{DatePicker-DD0RIq4-.js → DatePicker-BPfM0Sbs.js} +7 -13
- package/dist/cjs/DatePicker-BPfM0Sbs.js.map +1 -0
- package/dist/cjs/{HelpIcon-fsWWgStQ.js → HelpIcon-CULBhXS7.js} +2 -1
- package/dist/cjs/HelpIcon-CULBhXS7.js.map +1 -0
- package/dist/cjs/{Label-Dfq_eZzp.js → Label-D_FsFUcl.js} +2 -2
- package/dist/cjs/{Label-Dfq_eZzp.js.map → Label-D_FsFUcl.js.map} +1 -1
- package/dist/cjs/{Select-CdugYSdp.js → Select-0JzGuzUW.js} +4 -2
- package/dist/cjs/Select-0JzGuzUW.js.map +1 -0
- package/dist/cjs/components/Checkbox.js +1 -1
- package/dist/cjs/components/DataTable.js +1 -1
- package/dist/cjs/components/DatePicker.js +2 -2
- package/dist/cjs/components/DropdownMenu.js +3 -3
- package/dist/cjs/components/DropdownMenu.js.map +1 -1
- package/dist/cjs/components/Input.js +1 -1
- package/dist/cjs/components/Label.js +2 -2
- package/dist/cjs/components/MultiEmailInput.js +1 -1
- package/dist/cjs/components/RadioGroup.js +1 -1
- package/dist/cjs/components/Select.js +2 -2
- package/dist/cjs/components/Slider.js +1 -1
- package/dist/cjs/components/Switch.js +1 -1
- package/dist/cjs/components/Textarea.js +1 -1
- package/dist/cjs/components/TimePicker.js +1 -1
- package/dist/cjs/components/TreeSelect.js +1 -1
- package/dist/cjs/components/index.js +5 -5
- package/dist/cjs/formik/BlockNavigation.js +40 -8
- package/dist/cjs/formik/BlockNavigation.js.map +1 -1
- package/dist/cjs/formik/Checkbox.js +1 -1
- package/dist/cjs/formik/Form.js +2 -2
- package/dist/cjs/formik/Form.js.map +1 -1
- package/dist/cjs/formik/Input.js +1 -1
- package/dist/cjs/formik/MultiEmailInput.js +1 -1
- package/dist/cjs/formik/RadioGroup.js +1 -1
- package/dist/cjs/formik/Select.js +2 -2
- package/dist/cjs/formik/Slider.js +1 -1
- package/dist/cjs/formik/Switch.js +1 -1
- package/dist/cjs/formik/Textarea.js +1 -1
- package/dist/cjs/formik/TreeSelect.js +1 -1
- package/dist/cjs/formik/index.js +2 -2
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/primitives/Field.js +1 -1
- package/dist/cjs/primitives/index.js +1 -1
- package/dist/components/Checkbox.js +1 -1
- package/dist/components/DataTable/components/SelectionCheckbox.d.ts +2 -1
- package/dist/components/DataTable.js +1 -1
- package/dist/components/DatePicker/types.d.ts +2 -0
- package/dist/components/DatePicker.js +2 -2
- package/dist/components/DropdownMenu.js +3 -3
- package/dist/components/DropdownMenu.js.map +1 -1
- package/dist/components/Input.js +1 -1
- package/dist/components/Label.js +2 -2
- package/dist/components/MultiEmailInput.js +1 -1
- package/dist/components/RadioGroup.js +1 -1
- package/dist/components/Select.js +2 -2
- package/dist/components/Slider.js +1 -1
- package/dist/components/Switch.js +1 -1
- package/dist/components/Textarea.js +1 -1
- package/dist/components/TimePicker.js +1 -1
- package/dist/components/TreeSelect.js +1 -1
- package/dist/components/index.js +5 -5
- package/dist/formik/BlockNavigation/BlockNavigationAlert.d.ts +10 -3
- package/dist/formik/BlockNavigation/index.d.ts +2 -2
- package/dist/formik/BlockNavigation.js +40 -8
- package/dist/formik/BlockNavigation.js.map +1 -1
- package/dist/formik/Checkbox.js +1 -1
- package/dist/formik/Form.js +2 -2
- package/dist/formik/Form.js.map +1 -1
- package/dist/formik/Input.js +1 -1
- package/dist/formik/MultiEmailInput.js +1 -1
- package/dist/formik/RadioGroup.js +1 -1
- package/dist/formik/Select.js +2 -2
- package/dist/formik/Slider.js +1 -1
- package/dist/formik/Switch.js +1 -1
- package/dist/formik/Textarea.js +1 -1
- package/dist/formik/TreeSelect.js +1 -1
- package/dist/formik/index.js +2 -2
- package/dist/index.js +5 -5
- package/dist/primitives/Field.js +1 -1
- package/dist/primitives/index.js +1 -1
- package/dist/shared/HelpIcon.d.ts +2 -0
- package/package.json +1 -1
- package/dist/DataTable-DKYkrFfk.js.map +0 -1
- package/dist/DatePicker-BYic3Ykm.js.map +0 -1
- package/dist/HelpIcon-CB6wsVSF.js.map +0 -1
- package/dist/Select-XgpTYRqO.js.map +0 -1
- package/dist/cjs/DataTable-BXNU34g-.js.map +0 -1
- package/dist/cjs/DatePicker-DD0RIq4-.js.map +0 -1
- package/dist/cjs/HelpIcon-fsWWgStQ.js.map +0 -1
- package/dist/cjs/Select-CdugYSdp.js.map +0 -1
|
@@ -9,19 +9,19 @@ var Badge = require('../Badge-DAm1E10J.js');
|
|
|
9
9
|
var Callout = require('../Callout-Bci3POCo.js');
|
|
10
10
|
var Checkbox = require('../Checkbox-83g1FDsc.js');
|
|
11
11
|
var ColorPicker = require('../ColorPicker-Dh58otnF.js');
|
|
12
|
-
var DataTable = require('../DataTable-
|
|
13
|
-
var DatePicker = require('../DatePicker-
|
|
12
|
+
var DataTable = require('../DataTable-DAoZP73Q.js');
|
|
13
|
+
var DatePicker = require('../DatePicker-BPfM0Sbs.js');
|
|
14
14
|
var Dialog = require('../Dialog-B_FZwr_u.js');
|
|
15
15
|
var Empty = require('../Empty-DGvhPdiG.js');
|
|
16
16
|
var Input = require('../Input-DFvMBpiU.js');
|
|
17
17
|
var Kbd = require('../Kbd--A8Gl8TV.js');
|
|
18
|
-
var Label = require('../Label-
|
|
18
|
+
var Label = require('../Label-D_FsFUcl.js');
|
|
19
19
|
var MultiEmailInput = require('../MultiEmailInput-N9amBO6Q.js');
|
|
20
20
|
var Pagination = require('../Pagination-WyQlBpvK.js');
|
|
21
21
|
var Popover = require('../Popover-5BUgIW60.js');
|
|
22
22
|
var Progress = require('../Progress-n_VwK9_E.js');
|
|
23
23
|
var RadioGroup = require('../RadioGroup-B-u8rdbf.js');
|
|
24
|
-
var Select = require('../Select-
|
|
24
|
+
var Select = require('../Select-0JzGuzUW.js');
|
|
25
25
|
var Sheet = require('../Sheet-D-NWMprq.js');
|
|
26
26
|
var Slider = require('../Slider-DIUSlx_m.js');
|
|
27
27
|
var Spinner = require('../Spinner-DRoghJA8.js');
|
|
@@ -103,7 +103,7 @@ require('../primitives/Checkbox.js');
|
|
|
103
103
|
require('../index-CF951Pw9.js');
|
|
104
104
|
require('../fieldIds-DiVU6GVS.js');
|
|
105
105
|
require('../primitives/Field.js');
|
|
106
|
-
require('../HelpIcon-
|
|
106
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
107
107
|
require('../label-BdcX4_ud.js');
|
|
108
108
|
require('react-colorful');
|
|
109
109
|
require('../primitives/Popover.js');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var formik = require('formik');
|
|
5
4
|
var React = require('react');
|
|
5
|
+
var formik = require('formik');
|
|
6
6
|
var reactRouterDom = require('react-router-dom');
|
|
7
7
|
var Dialog = require('../Dialog-B_FZwr_u.js');
|
|
8
8
|
var Button = require('../Button-BQ4rpzsl.js');
|
|
@@ -84,7 +84,10 @@ const useNavPrompt = ({
|
|
|
84
84
|
unblockRef.current = history.block(
|
|
85
85
|
(transition, action) => {
|
|
86
86
|
setIsBlocked(true);
|
|
87
|
-
navRef.current = {
|
|
87
|
+
navRef.current = {
|
|
88
|
+
transition: `${transition.pathname}${transition.search ?? ""}${transition.hash ?? ""}`,
|
|
89
|
+
action
|
|
90
|
+
};
|
|
88
91
|
return false;
|
|
89
92
|
}
|
|
90
93
|
);
|
|
@@ -99,24 +102,27 @@ const useNavPrompt = ({
|
|
|
99
102
|
|
|
100
103
|
const BlockNavigationAlert = ({
|
|
101
104
|
isOpen = false,
|
|
105
|
+
isSaving = false,
|
|
106
|
+
saveAndContinue = true,
|
|
102
107
|
onClose,
|
|
103
108
|
onSubmit,
|
|
104
109
|
onDiscardChanges,
|
|
105
110
|
title = "You have unsaved changes",
|
|
106
111
|
message = "Are you sure you want to leave? All unsaved changes will be lost.",
|
|
107
112
|
cancelButtonLabel = "Discard and leave",
|
|
108
|
-
submitButtonLabel
|
|
113
|
+
submitButtonLabel
|
|
109
114
|
}) => {
|
|
110
115
|
const submitButtonRef = React.useRef(null);
|
|
116
|
+
const primaryButtonLabel = submitButtonLabel ?? (saveAndContinue ? "Save and continue" : "Stay on this page");
|
|
111
117
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
112
118
|
Dialog.Dialog,
|
|
113
119
|
{
|
|
114
120
|
isOpen,
|
|
115
121
|
onClose: onClose ?? (() => {
|
|
116
122
|
}),
|
|
117
|
-
closeButton:
|
|
118
|
-
closeOnEsc:
|
|
119
|
-
closeOnOutsideClick:
|
|
123
|
+
closeButton: !isSaving,
|
|
124
|
+
closeOnEsc: !isSaving,
|
|
125
|
+
closeOnOutsideClick: !isSaving,
|
|
120
126
|
initialFocusRef: submitButtonRef,
|
|
121
127
|
size: "medium",
|
|
122
128
|
"data-testid": "alert-box",
|
|
@@ -135,6 +141,7 @@ const BlockNavigationAlert = ({
|
|
|
135
141
|
Button.Button,
|
|
136
142
|
{
|
|
137
143
|
"data-testid": "alert-cancel-button",
|
|
144
|
+
disabled: isSaving,
|
|
138
145
|
label: cancelButtonLabel,
|
|
139
146
|
variant: "destructive",
|
|
140
147
|
onClick: onDiscardChanges
|
|
@@ -144,7 +151,8 @@ const BlockNavigationAlert = ({
|
|
|
144
151
|
Button.Button,
|
|
145
152
|
{
|
|
146
153
|
"data-testid": "alert-submit-button",
|
|
147
|
-
label:
|
|
154
|
+
label: primaryButtonLabel,
|
|
155
|
+
loading: isSaving,
|
|
148
156
|
ref: submitButtonRef,
|
|
149
157
|
onClick: onSubmit
|
|
150
158
|
}
|
|
@@ -158,8 +166,10 @@ BlockNavigationAlert.displayName = "BlockNavigationAlert";
|
|
|
158
166
|
|
|
159
167
|
const FormikBlockNavigation = ({
|
|
160
168
|
isDirty = false,
|
|
169
|
+
saveAndContinue = true,
|
|
161
170
|
...otherProps
|
|
162
171
|
}) => {
|
|
172
|
+
const [isSaving, setIsSaving] = React.useState(false);
|
|
163
173
|
const formikContext = formik.useFormikContext();
|
|
164
174
|
const shouldBlock = isDirty || Boolean(formikContext) && Boolean(formikContext.dirty);
|
|
165
175
|
const { isBlocked, continueNavigation, hidePrompt } = useNavPrompt({
|
|
@@ -170,13 +180,35 @@ const FormikBlockNavigation = ({
|
|
|
170
180
|
hidePrompt();
|
|
171
181
|
continueNavigation();
|
|
172
182
|
};
|
|
183
|
+
const handleSaveAndContinue = async () => {
|
|
184
|
+
if (!formikContext) {
|
|
185
|
+
hidePrompt();
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
setIsSaving(true);
|
|
189
|
+
try {
|
|
190
|
+
const errors = await formikContext.validateForm();
|
|
191
|
+
if (Object.keys(errors).length > 0) {
|
|
192
|
+
await formikContext.submitForm();
|
|
193
|
+
hidePrompt();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
await formikContext.submitForm();
|
|
197
|
+
continueNavigation();
|
|
198
|
+
} catch {
|
|
199
|
+
hidePrompt();
|
|
200
|
+
} finally {
|
|
201
|
+
setIsSaving(false);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
173
204
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
174
205
|
BlockNavigationAlert,
|
|
175
206
|
{
|
|
207
|
+
...{ isSaving, saveAndContinue },
|
|
176
208
|
isOpen: isBlocked,
|
|
177
209
|
onClose: hidePrompt,
|
|
178
210
|
onDiscardChanges: handleDiscardChanges,
|
|
179
|
-
onSubmit: hidePrompt,
|
|
211
|
+
onSubmit: saveAndContinue ? handleSaveAndContinue : hidePrompt,
|
|
180
212
|
...otherProps
|
|
181
213
|
}
|
|
182
214
|
);
|
|
@@ -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":["useState","useHistory","useRef","useCallback","useEffect","jsxs","Dialog","jsx","Button","useFormikContext"],"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":["useState","useHistory","useRef","useCallback","useEffect","jsxs","Dialog","jsx","Button","useFormikContext"],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ require('react-dom');
|
|
|
22
22
|
require('../fieldIds-DiVU6GVS.js');
|
|
23
23
|
require('../hyphenize-BTrVNVv3.js');
|
|
24
24
|
require('../primitives/Field.js');
|
|
25
|
-
require('../HelpIcon-
|
|
25
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
26
26
|
require('../primitives/Tooltip.js');
|
|
27
27
|
require('../tooltip-BFE6UArF.js');
|
|
28
28
|
require('../index-Bvu9MiFi.js');
|
package/dist/cjs/formik/Form.js
CHANGED
|
@@ -78,11 +78,11 @@ const FormWrapper = React.forwardRef(
|
|
|
78
78
|
scrollToError(formRef, errors, status);
|
|
79
79
|
}
|
|
80
80
|
} else {
|
|
81
|
-
submitForm();
|
|
81
|
+
await submitForm();
|
|
82
82
|
}
|
|
83
83
|
} catch (error) {
|
|
84
84
|
console.error(
|
|
85
|
-
"An unhandled error was caught
|
|
85
|
+
"An unhandled error was caught while validating or submitting the form",
|
|
86
86
|
error
|
|
87
87
|
);
|
|
88
88
|
}
|
|
@@ -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":["is","useFormikContext","useEffect","forwardRef","useRef","useCallback","jsxs","FormikForm","jsx","Formik"],"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":["is","useFormikContext","useEffect","forwardRef","useRef","useCallback","jsxs","FormikForm","jsx","Formik"],"mappings":"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"}
|
package/dist/cjs/formik/Input.js
CHANGED
|
@@ -7,7 +7,7 @@ var ramda = require('ramda');
|
|
|
7
7
|
var Input = require('../Input-DFvMBpiU.js');
|
|
8
8
|
require('../utils-BhM0B89p.js');
|
|
9
9
|
require('../primitives/Field.js');
|
|
10
|
-
require('../HelpIcon-
|
|
10
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
11
11
|
require('../primitives/Tooltip.js');
|
|
12
12
|
require('../tooltip-BFE6UArF.js');
|
|
13
13
|
require('../index-COPkC3I5.js');
|
|
@@ -8,7 +8,7 @@ var MultiEmailInput = require('../MultiEmailInput-N9amBO6Q.js');
|
|
|
8
8
|
require('react-i18next');
|
|
9
9
|
require('../utils-BhM0B89p.js');
|
|
10
10
|
require('../primitives/Field.js');
|
|
11
|
-
require('../HelpIcon-
|
|
11
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
12
12
|
require('../primitives/Tooltip.js');
|
|
13
13
|
require('../tooltip-BFE6UArF.js');
|
|
14
14
|
require('../index-COPkC3I5.js');
|
|
@@ -25,7 +25,7 @@ require('../index-DcCSSgb7.js');
|
|
|
25
25
|
require('../primitives/Label.js');
|
|
26
26
|
require('../label-BdcX4_ud.js');
|
|
27
27
|
require('../primitives/Field.js');
|
|
28
|
-
require('../HelpIcon-
|
|
28
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
29
29
|
require('../primitives/Tooltip.js');
|
|
30
30
|
require('../tooltip-BFE6UArF.js');
|
|
31
31
|
require('../index-Bvu9MiFi.js');
|
|
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var formik = require('formik');
|
|
6
6
|
var ramda = require('ramda');
|
|
7
|
-
var Select = require('../Select-
|
|
7
|
+
var Select = require('../Select-0JzGuzUW.js');
|
|
8
8
|
require('../fieldIds-DiVU6GVS.js');
|
|
9
9
|
require('../hyphenize-BTrVNVv3.js');
|
|
10
10
|
require('../Combobox-B3KzI_J_.js');
|
|
@@ -30,7 +30,7 @@ require('../with-selector-DeKHbQY7.js');
|
|
|
30
30
|
require('../floating-ui.react-dom--alWUjS1.js');
|
|
31
31
|
require('../SelectFieldWrapper-CIh_atln.js');
|
|
32
32
|
require('../primitives/Field.js');
|
|
33
|
-
require('../HelpIcon-
|
|
33
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
34
34
|
require('../primitives/Tooltip.js');
|
|
35
35
|
require('../tooltip-BFE6UArF.js');
|
|
36
36
|
require('../index-COPkC3I5.js');
|
|
@@ -20,7 +20,7 @@ require('../index-DMbj7vXd.js');
|
|
|
20
20
|
require('react-dom');
|
|
21
21
|
require('../index-Ch55j1or.js');
|
|
22
22
|
require('../primitives/Field.js');
|
|
23
|
-
require('../HelpIcon-
|
|
23
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
24
24
|
require('../primitives/Tooltip.js');
|
|
25
25
|
require('../tooltip-BFE6UArF.js');
|
|
26
26
|
require('../index-Bvu9MiFi.js');
|
|
@@ -7,7 +7,7 @@ var Switch = require('../Switch-BbRK3HUZ.js');
|
|
|
7
7
|
require('react');
|
|
8
8
|
require('../primitives/Field.js');
|
|
9
9
|
require('../utils-BhM0B89p.js');
|
|
10
|
-
require('../HelpIcon-
|
|
10
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
11
11
|
require('../primitives/Tooltip.js');
|
|
12
12
|
require('../tooltip-BFE6UArF.js');
|
|
13
13
|
require('../index-COPkC3I5.js');
|
|
@@ -7,7 +7,7 @@ var ramda = require('ramda');
|
|
|
7
7
|
var Textarea = require('../Textarea-bxleSw86.js');
|
|
8
8
|
require('../utils-BhM0B89p.js');
|
|
9
9
|
require('../primitives/Field.js');
|
|
10
|
-
require('../HelpIcon-
|
|
10
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
11
11
|
require('../primitives/Tooltip.js');
|
|
12
12
|
require('../tooltip-BFE6UArF.js');
|
|
13
13
|
require('../index-COPkC3I5.js');
|
|
@@ -26,7 +26,7 @@ require('../index-DcCSSgb7.js');
|
|
|
26
26
|
require('../index-CyrAgb4H.js');
|
|
27
27
|
require('../SelectFieldWrapper-CIh_atln.js');
|
|
28
28
|
require('../primitives/Field.js');
|
|
29
|
-
require('../HelpIcon-
|
|
29
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
30
30
|
require('../primitives/Tooltip.js');
|
|
31
31
|
require('../tooltip-BFE6UArF.js');
|
|
32
32
|
require('../index-CB9xFokC.js');
|
package/dist/cjs/formik/index.js
CHANGED
|
@@ -20,7 +20,7 @@ require('ramda');
|
|
|
20
20
|
require('../Input-DFvMBpiU.js');
|
|
21
21
|
require('../utils-BhM0B89p.js');
|
|
22
22
|
require('../primitives/Field.js');
|
|
23
|
-
require('../HelpIcon-
|
|
23
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
24
24
|
require('../primitives/Tooltip.js');
|
|
25
25
|
require('../tooltip-BFE6UArF.js');
|
|
26
26
|
require('../index-COPkC3I5.js');
|
|
@@ -65,7 +65,7 @@ require('../hyphenize-BTrVNVv3.js');
|
|
|
65
65
|
require('../withIconSize-C6LP0R7o.js');
|
|
66
66
|
require('../Textarea-bxleSw86.js');
|
|
67
67
|
require('../primitives/Textarea.js');
|
|
68
|
-
require('../Select-
|
|
68
|
+
require('../Select-0JzGuzUW.js');
|
|
69
69
|
require('../Combobox-B3KzI_J_.js');
|
|
70
70
|
require('../useAriaHiddenCleanup-8OeXq1T4.js');
|
|
71
71
|
require('../chevron-down-CPsWSS51.js');
|
package/dist/cjs/index.js
CHANGED
|
@@ -13,20 +13,20 @@ var Button = require('./Button-BQ4rpzsl.js');
|
|
|
13
13
|
var Callout = require('./Callout-Bci3POCo.js');
|
|
14
14
|
var Checkbox = require('./Checkbox-83g1FDsc.js');
|
|
15
15
|
var ColorPicker = require('./ColorPicker-Dh58otnF.js');
|
|
16
|
-
var DataTable = require('./DataTable-
|
|
17
|
-
var DatePicker = require('./DatePicker-
|
|
16
|
+
var DataTable = require('./DataTable-DAoZP73Q.js');
|
|
17
|
+
var DatePicker = require('./DatePicker-BPfM0Sbs.js');
|
|
18
18
|
var Dialog = require('./Dialog-B_FZwr_u.js');
|
|
19
19
|
var DirectionProvider = require('./DirectionProvider-BTtE4FcN.js');
|
|
20
20
|
var Empty = require('./Empty-DGvhPdiG.js');
|
|
21
21
|
var Input = require('./Input-DFvMBpiU.js');
|
|
22
22
|
var Kbd = require('./Kbd--A8Gl8TV.js');
|
|
23
|
-
var Label = require('./Label-
|
|
23
|
+
var Label = require('./Label-D_FsFUcl.js');
|
|
24
24
|
var MultiEmailInput = require('./MultiEmailInput-N9amBO6Q.js');
|
|
25
25
|
var Pagination = require('./Pagination-WyQlBpvK.js');
|
|
26
26
|
var Popover = require('./Popover-5BUgIW60.js');
|
|
27
27
|
var Progress = require('./Progress-n_VwK9_E.js');
|
|
28
28
|
var RadioGroup = require('./RadioGroup-B-u8rdbf.js');
|
|
29
|
-
var Select = require('./Select-
|
|
29
|
+
var Select = require('./Select-0JzGuzUW.js');
|
|
30
30
|
var Sheet = require('./Sheet-D-NWMprq.js');
|
|
31
31
|
var Slider = require('./Slider-DIUSlx_m.js');
|
|
32
32
|
var Spinner = require('./Spinner-DRoghJA8.js');
|
|
@@ -105,7 +105,7 @@ require('./primitives/Checkbox.js');
|
|
|
105
105
|
require('./index-CF951Pw9.js');
|
|
106
106
|
require('./fieldIds-DiVU6GVS.js');
|
|
107
107
|
require('./primitives/Field.js');
|
|
108
|
-
require('./HelpIcon-
|
|
108
|
+
require('./HelpIcon-CULBhXS7.js');
|
|
109
109
|
require('./label-BdcX4_ud.js');
|
|
110
110
|
require('react-colorful');
|
|
111
111
|
require('./primitives/Popover.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var utils = require('../utils-BhM0B89p.js');
|
|
5
|
-
var HelpIcon = require('../HelpIcon-
|
|
5
|
+
var HelpIcon = require('../HelpIcon-CULBhXS7.js');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var index = require('../index-vioSzJOw.js');
|
|
8
8
|
var label = require('../label-BdcX4_ud.js');
|
|
@@ -106,7 +106,7 @@ require('../dialog-Bnk4GUFC.js');
|
|
|
106
106
|
require('../index-CMFCdiR6.js');
|
|
107
107
|
require('../index-owSUsE-n.js');
|
|
108
108
|
require('../index-DoVhdseB.js');
|
|
109
|
-
require('../HelpIcon-
|
|
109
|
+
require('../HelpIcon-CULBhXS7.js');
|
|
110
110
|
require('../renderIcon-BRrpZu9a.js');
|
|
111
111
|
require('../Popover-5BUgIW60.js');
|
|
112
112
|
require('../Typography-BW6xEk10.js');
|
|
@@ -18,7 +18,7 @@ import 'react-dom';
|
|
|
18
18
|
import '../fieldIds-VpluAAMl.js';
|
|
19
19
|
import '../hyphenize-TRhMI0tl.js';
|
|
20
20
|
import '../primitives/Field.js';
|
|
21
|
-
import '../HelpIcon-
|
|
21
|
+
import '../HelpIcon-TkvMVF4n.js';
|
|
22
22
|
import '../primitives/Tooltip.js';
|
|
23
23
|
import '../tooltip-BUYRFmEv.js';
|
|
24
24
|
import '../index-BNPynZWM.js';
|
|
@@ -2,6 +2,7 @@ interface SelectionCheckboxProps {
|
|
|
2
2
|
checked: boolean | "indeterminate";
|
|
3
3
|
onCheckedChange: (checked: boolean, shiftKey: boolean) => void;
|
|
4
4
|
ariaLabel?: string;
|
|
5
|
+
dataTestId?: string;
|
|
5
6
|
}
|
|
6
|
-
export declare const SelectionCheckbox: ({ checked, onCheckedChange, ariaLabel, }: SelectionCheckboxProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const SelectionCheckbox: ({ checked, onCheckedChange, ariaLabel, dataTestId, }: SelectionCheckboxProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { D as DataTable, u as useColumnOrdering, a as useColumnPinning, b as useColumnVisibility, c as useTablePagination, d as useTableSelection, e as useTableSort } from '../DataTable-
|
|
1
|
+
export { D as DataTable, u as useColumnOrdering, a as useColumnPinning, b as useColumnVisibility, c as useTablePagination, d as useTableSelection, e as useTableSort } from '../DataTable-8hVysQPv.js';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
|
4
4
|
import 'react-dom';
|
|
@@ -77,4 +77,6 @@ export interface DatePickerProps {
|
|
|
77
77
|
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
78
78
|
/** Prefix for the field's testid family(input, error). Falls back to the hyphenized label. */
|
|
79
79
|
dataTestId?: string;
|
|
80
|
+
/** Overrides the input's `data-testid`. */
|
|
81
|
+
"data-testid"?: string;
|
|
80
82
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { D as DatePicker } from '../DatePicker-
|
|
1
|
+
export { D as DatePicker } from '../DatePicker-Bvuu3hlt.js';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
|
4
4
|
import '../primitives/Calendar.js';
|
|
@@ -39,7 +39,7 @@ import '@bigbinary/neeto-commons-frontend/utils';
|
|
|
39
39
|
import '../fieldIds-VpluAAMl.js';
|
|
40
40
|
import '../hyphenize-TRhMI0tl.js';
|
|
41
41
|
import '../primitives/Field.js';
|
|
42
|
-
import '../HelpIcon-
|
|
42
|
+
import '../HelpIcon-TkvMVF4n.js';
|
|
43
43
|
import '../primitives/Tooltip.js';
|
|
44
44
|
import '../tooltip-BUYRFmEv.js';
|
|
45
45
|
import '../index-CSggBaQF.js';
|
|
@@ -106,9 +106,9 @@ const SplitTrigger = forwardRef(
|
|
|
106
106
|
icon,
|
|
107
107
|
iconPosition: "left",
|
|
108
108
|
disabled,
|
|
109
|
+
"data-testid": "action-dropdown-btn",
|
|
109
110
|
...buttonProps,
|
|
110
|
-
onClick
|
|
111
|
-
"data-testid": "action-dropdown-btn"
|
|
111
|
+
onClick
|
|
112
112
|
}
|
|
113
113
|
),
|
|
114
114
|
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx(
|
|
@@ -171,8 +171,8 @@ const TriggerButton = forwardRef(
|
|
|
171
171
|
}
|
|
172
172
|
),
|
|
173
173
|
disabled,
|
|
174
|
-
"data-testid": `${hyphenize(label)}-dropdown-icon`,
|
|
175
174
|
...otherProps,
|
|
175
|
+
"data-testid": `${hyphenize(label)}-dropdown-icon`,
|
|
176
176
|
...buttonProps,
|
|
177
177
|
onClick,
|
|
178
178
|
className: cn(className, buttonProps?.className)
|