@payloadcms/ui 4.0.0-internal.cd69eef → 4.0.0-internal.d1cc1d3
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/css/app.css +121 -0
- package/dist/css/forms.css +0 -6
- package/dist/css/spacing.css +11 -3
- package/dist/css/z-index.css +1 -0
- package/dist/elements/AddNewRelation/index.css +0 -1
- package/dist/elements/AppHeader/index.css +0 -3
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +5 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +2 -0
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +65 -24
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
- package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
- package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
- package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
- package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/index.js +17 -1
- package/dist/elements/ClipboardAction/index.js.map +1 -1
- package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
- package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
- package/dist/elements/ClipboardAction/types.d.ts +3 -0
- package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/types.js.map +1 -1
- package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
- package/dist/elements/CodeEditor/index.css +0 -5
- package/dist/elements/CommandPalette/index.css +0 -7
- package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
- package/dist/elements/CreateDocumentButton/index.js +4 -1
- package/dist/elements/CreateDocumentButton/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +1 -0
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +16 -1
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +2 -2
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
- package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
- package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
- package/dist/elements/FileManager/FilePreview/index.css +3 -3
- package/dist/elements/FileManager/index.css +36 -23
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +15 -4
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
- package/dist/elements/InputStepper/index.css +0 -1
- package/dist/elements/Locked/index.css +0 -8
- package/dist/elements/Locked/index.d.ts.map +1 -1
- package/dist/elements/Locked/index.js +70 -64
- package/dist/elements/Locked/index.js.map +1 -1
- package/dist/elements/MiniCarousel/index.css +39 -37
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.css +0 -5
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
- package/dist/elements/NavGroup/index.css +0 -1
- package/dist/elements/PreviewButton/index.d.ts +1 -2
- package/dist/elements/PreviewButton/index.d.ts.map +1 -1
- package/dist/elements/PreviewButton/index.js +11 -5
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewSizes/index.css +8 -9
- package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
- package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
- package/dist/elements/ReactSelect/index.css +0 -3
- package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
- package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/Pagination.js +27 -77
- package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
- package/dist/elements/RelationshipTable/index.css +0 -2
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +36 -3
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.css +4 -0
- package/dist/elements/RenderTitle/index.d.ts.map +1 -1
- package/dist/elements/RenderTitle/index.js +18 -13
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/SelectRow/index.d.ts +4 -3
- package/dist/elements/SelectRow/index.d.ts.map +1 -1
- package/dist/elements/SelectRow/index.js +10 -7
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/SidebarToggle/index.css +0 -17
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +42 -38
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/Table/OrderableRow.d.ts +3 -1
- package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
- package/dist/elements/Table/OrderableRow.js +17 -1
- package/dist/elements/Table/OrderableRow.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +19 -2
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/index.css +1 -0
- package/dist/elements/TableSection/index.css +0 -1
- package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
- package/dist/elements/TimezonePicker/index.js +5 -1
- package/dist/elements/TimezonePicker/index.js.map +1 -1
- package/dist/elements/Tooltip/index.css +15 -34
- package/dist/elements/Tooltip/index.d.ts +11 -3
- package/dist/elements/Tooltip/index.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +151 -85
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Upload/index.css +0 -5
- package/dist/exports/client/index.d.ts +3 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -1
- package/dist/exports/client/index.js.map +3 -3
- package/dist/exports/shared/index.d.ts +1 -0
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +97 -160
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +134 -195
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +2 -0
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +23 -20
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.js +3 -3
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +2 -0
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +32 -26
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.css +37 -73
- package/dist/fields/FieldError/index.css +0 -9
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js +19 -9
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/Join/index.css +9 -0
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +13 -9
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.css +0 -7
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +32 -14
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
- package/dist/fields/Slug/index.css +0 -1
- package/dist/fields/Slug/index.d.ts.map +1 -1
- package/dist/fields/Slug/index.js +75 -111
- package/dist/fields/Slug/index.js.map +1 -1
- package/dist/fields/Upload/index.css +19 -4
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +3 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +6 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +1 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/RenderFields/index.css +16 -2
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js +2 -2
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +12 -4
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/DocumentTitle/index.d.ts +1 -0
- package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
- package/dist/providers/DocumentTitle/index.js +2 -0
- package/dist/providers/DocumentTitle/index.js.map +1 -1
- package/dist/providers/Embed/index.d.ts +24 -0
- package/dist/providers/Embed/index.d.ts.map +1 -0
- package/dist/providers/Embed/index.js +105 -0
- package/dist/providers/Embed/index.js.map +1 -0
- package/dist/providers/FormErrorHandler/index.d.ts +20 -0
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
- package/dist/providers/FormErrorHandler/index.js +6 -0
- package/dist/providers/FormErrorHandler/index.js.map +1 -0
- package/dist/providers/Root/index.d.ts +1 -0
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +33 -27
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/SidebarTabs/index.d.ts +3 -2
- package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
- package/dist/providers/SidebarTabs/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
- package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
- package/dist/providers/Theme/index.d.ts +5 -2
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +109 -96
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Theme/shared.d.ts +3 -0
- package/dist/providers/Theme/shared.d.ts.map +1 -0
- package/dist/providers/Theme/shared.js +2 -0
- package/dist/providers/Theme/shared.js.map +1 -0
- package/dist/providers/UploadHandlers/index.js +2 -2
- package/dist/providers/UploadHandlers/index.js.map +1 -1
- package/dist/styles.css +13 -10
- package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
- package/dist/utilities/combineFieldLabel.js +5 -1
- package/dist/utilities/combineFieldLabel.js.map +1 -1
- package/dist/utilities/generateFieldID.d.ts +1 -1
- package/dist/utilities/generateFieldID.d.ts.map +1 -1
- package/dist/utilities/generateFieldID.js +2 -2
- package/dist/utilities/generateFieldID.js.map +1 -1
- package/dist/utilities/getLanguageDir.d.ts +12 -0
- package/dist/utilities/getLanguageDir.d.ts.map +1 -0
- package/dist/utilities/getLanguageDir.js +12 -0
- package/dist/utilities/getLanguageDir.js.map +1 -0
- package/dist/utilities/getRequestEmbed.d.ts +14 -0
- package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
- package/dist/utilities/getRequestEmbed.js +10 -0
- package/dist/utilities/getRequestEmbed.js.map +1 -0
- package/dist/utilities/getRequestTheme.d.ts +1 -1
- package/dist/utilities/getRequestTheme.d.ts.map +1 -1
- package/dist/utilities/getRequestTheme.js +1 -1
- package/dist/utilities/getRequestTheme.js.map +1 -1
- package/dist/utilities/handleServerFunctions.d.ts +32 -8
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +17 -37
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +18 -2
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +25 -7
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/utilities/slugify.d.ts.map +1 -1
- package/dist/utilities/slugify.js +49 -6
- package/dist/utilities/slugify.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +0 -8
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
- package/dist/views/Edit/index.css +61 -53
- package/dist/views/HierarchyList/index.css +1 -1
- package/dist/views/List/index.css +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +4 -0
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Logout/index.d.ts.map +1 -1
- package/dist/views/Logout/index.js +11 -0
- package/dist/views/Logout/index.js.map +1 -1
- package/dist/views/Root/index.d.ts +12 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +10 -3
- package/dist/views/Root/index.js.map +1 -1
- package/package.json +5 -10
- package/dist/elements/RelationshipTable/Pagination.css +0 -39
- package/dist/scss/app.scss +0 -183
- package/dist/scss/colors.scss +0 -191
- package/dist/scss/custom.css +0 -1
- package/dist/scss/queries.scss +0 -27
- package/dist/scss/styles.scss +0 -9
- package/dist/scss/svg.scss +0 -10
- package/dist/scss/toastify.scss +0 -61
- package/dist/scss/vars.scss +0 -192
- package/dist/scss/z-index.scss +0 -9
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
5
|
import React, { useCallback, useState } from 'react';
|
|
6
|
+
import { toast } from 'sonner';
|
|
7
7
|
import { Button } from '../../elements/Button/index.js';
|
|
8
8
|
import { FieldDescription } from '../../fields/FieldDescription/index.js';
|
|
9
9
|
import { FieldError } from '../../fields/FieldError/index.js';
|
|
@@ -15,6 +15,7 @@ import { LockIcon } from '../../icons/Lock/index.js';
|
|
|
15
15
|
import { LockOpenIcon } from '../../icons/LockOpen/index.js';
|
|
16
16
|
import { RefreshIcon } from '../../icons/Refresh/index.js';
|
|
17
17
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
18
|
+
import { useLocale } from '../../providers/Locale/index.js';
|
|
18
19
|
import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
|
|
19
20
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
20
21
|
import './index.css';
|
|
@@ -22,12 +23,10 @@ const baseClass = 'slug-field-component';
|
|
|
22
23
|
/**
|
|
23
24
|
* @experimental This component is experimental and may change or be removed in the future. Use at your own risk.
|
|
24
25
|
*/
|
|
25
|
-
const SlugFieldComponent =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
path
|
|
30
|
-
} = t0;
|
|
26
|
+
const SlugFieldComponent = ({
|
|
27
|
+
field,
|
|
28
|
+
path
|
|
29
|
+
}) => {
|
|
31
30
|
const {
|
|
32
31
|
admin,
|
|
33
32
|
label,
|
|
@@ -44,159 +43,124 @@ const SlugFieldComponent = t0 => {
|
|
|
44
43
|
t
|
|
45
44
|
} = useTranslation();
|
|
46
45
|
const {
|
|
46
|
+
id,
|
|
47
47
|
collectionSlug,
|
|
48
48
|
globalSlug
|
|
49
49
|
} = useDocumentInfo();
|
|
50
50
|
const {
|
|
51
51
|
slugify
|
|
52
52
|
} = useServerFunctions();
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
t2 = {
|
|
57
|
-
path: t1
|
|
58
|
-
};
|
|
59
|
-
$[0] = t1;
|
|
60
|
-
$[1] = t2;
|
|
61
|
-
} else {
|
|
62
|
-
t2 = $[1];
|
|
63
|
-
}
|
|
53
|
+
const {
|
|
54
|
+
code: locale
|
|
55
|
+
} = useLocale();
|
|
64
56
|
const {
|
|
65
57
|
path: fieldPath,
|
|
66
58
|
setValue,
|
|
67
59
|
showError,
|
|
68
60
|
value
|
|
69
|
-
} = useField(
|
|
61
|
+
} = useField({
|
|
62
|
+
path: path || field.name
|
|
63
|
+
});
|
|
70
64
|
const {
|
|
71
65
|
getData,
|
|
72
66
|
getDataByPath
|
|
73
67
|
} = useForm();
|
|
74
68
|
const [isLocked, setIsLocked] = useState(true);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
69
|
+
/**
|
|
70
|
+
* This method allows the user to generate their slug on demand, e.g. when they click the "generate" button.
|
|
71
|
+
* It uses the `slugify` server function to gain access to their custom slugify function defined in their field config.
|
|
72
|
+
*/
|
|
73
|
+
const handleGenerate = useCallback(async e => {
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
const valueToSlugify = useAsSlug ? getDataByPath(useAsSlug) : undefined;
|
|
76
|
+
let formattedSlug;
|
|
77
|
+
try {
|
|
78
|
+
formattedSlug = await slugify({
|
|
79
|
+
id: id ?? undefined,
|
|
81
80
|
collectionSlug,
|
|
82
81
|
data: getData(),
|
|
83
82
|
globalSlug,
|
|
83
|
+
locale,
|
|
84
84
|
path: fieldPath,
|
|
85
85
|
valueToSlugify
|
|
86
86
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
111
|
-
t4 = e_0 => {
|
|
112
|
-
e_0.preventDefault();
|
|
113
|
-
setIsLocked(_temp);
|
|
114
|
-
};
|
|
115
|
-
$[12] = t4;
|
|
116
|
-
} else {
|
|
117
|
-
t4 = $[12];
|
|
118
|
-
}
|
|
119
|
-
const toggleLock = t4;
|
|
120
|
-
let t5;
|
|
121
|
-
if ($[13] !== setValue) {
|
|
122
|
-
t5 = e_1 => {
|
|
123
|
-
setValue(e_1.target.value);
|
|
124
|
-
};
|
|
125
|
-
$[13] = setValue;
|
|
126
|
-
$[14] = t5;
|
|
127
|
-
} else {
|
|
128
|
-
t5 = $[14];
|
|
129
|
-
}
|
|
130
|
-
const handleChange = t5;
|
|
87
|
+
} catch (_err) {
|
|
88
|
+
toast.error(t('error:unspecific'));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// Empty only comes back for globals (no counter fallback) — keep the current value. For
|
|
92
|
+
// collections the server returns the `<singular>-N` fallback when there's no source.
|
|
93
|
+
if (formattedSlug === null || formattedSlug === undefined || formattedSlug === '') {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The result may be the same as the current value, and if so, we don't want to trigger a re-render.
|
|
98
|
+
*/
|
|
99
|
+
if (value !== formattedSlug) {
|
|
100
|
+
setValue(formattedSlug);
|
|
101
|
+
}
|
|
102
|
+
}, [setValue, value, useAsSlug, getData, slugify, getDataByPath, id, collectionSlug, globalSlug, locale, fieldPath, t]);
|
|
103
|
+
const toggleLock = useCallback(e_0 => {
|
|
104
|
+
e_0.preventDefault();
|
|
105
|
+
setIsLocked(prev => !prev);
|
|
106
|
+
}, []);
|
|
107
|
+
const handleChange = useCallback(e_1 => {
|
|
108
|
+
setValue(e_1.target.value);
|
|
109
|
+
}, [setValue]);
|
|
131
110
|
const isReadOnly = Boolean(readOnlyFromProps || isLocked);
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
path: fieldPath,
|
|
140
|
-
showError
|
|
141
|
-
});
|
|
142
|
-
const t9 = showError && "form-input-group-error";
|
|
143
|
-
let t10;
|
|
144
|
-
if ($[15] !== t9) {
|
|
145
|
-
t10 = ["form-input-group", `${baseClass}__input-container`, t9].filter(Boolean);
|
|
146
|
-
$[15] = t9;
|
|
147
|
-
$[16] = t10;
|
|
148
|
-
} else {
|
|
149
|
-
t10 = $[16];
|
|
150
|
-
}
|
|
151
|
-
return _jsxs("div", {
|
|
152
|
-
className: t6,
|
|
153
|
-
children: [t7, _jsxs("div", {
|
|
111
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
112
|
+
className: ['field-type', baseClass, showError && `${baseClass}--error`, isLocked && `${baseClass}--locked`, readOnlyFromProps && `${baseClass}--read-only`].filter(Boolean).join(' '),
|
|
113
|
+
children: [/*#__PURE__*/_jsx(FieldLabel, {
|
|
114
|
+
htmlFor: `field-${fieldPath}`,
|
|
115
|
+
label: label,
|
|
116
|
+
required: required
|
|
117
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
154
118
|
className: `${baseClass}__wrap`,
|
|
155
|
-
children: [
|
|
156
|
-
|
|
157
|
-
|
|
119
|
+
children: [/*#__PURE__*/_jsx(FieldError, {
|
|
120
|
+
path: fieldPath,
|
|
121
|
+
showError: showError
|
|
122
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
123
|
+
className: ['form-input-group', `${baseClass}__input-container`, showError && 'form-input-group-error'].filter(Boolean).join(' '),
|
|
124
|
+
children: [/*#__PURE__*/_jsx("input", {
|
|
158
125
|
"aria-label": getTranslation(label, i18n) || path,
|
|
159
126
|
className: `form-input ${baseClass}__input`,
|
|
160
127
|
disabled: isReadOnly,
|
|
161
|
-
id: `field-${fieldPath?.replace(/\./g,
|
|
128
|
+
id: `field-${fieldPath?.replace(/\./g, '__')}`,
|
|
162
129
|
name: fieldPath,
|
|
163
130
|
onChange: handleChange,
|
|
164
131
|
placeholder: getTranslation(placeholder, i18n),
|
|
165
132
|
type: "text",
|
|
166
|
-
value: value ||
|
|
167
|
-
}), !readOnlyFromProps && _jsxs("div", {
|
|
133
|
+
value: value || ''
|
|
134
|
+
}), !readOnlyFromProps && /*#__PURE__*/_jsxs("div", {
|
|
168
135
|
className: `${baseClass}__actions`,
|
|
169
|
-
children: [!isLocked && _jsx(Button, {
|
|
170
|
-
"aria-label": t(
|
|
136
|
+
children: [!isLocked && /*#__PURE__*/_jsx(Button, {
|
|
137
|
+
"aria-label": t('authentication:generate'),
|
|
171
138
|
buttonStyle: "ghost",
|
|
172
139
|
className: `${baseClass}__action-btn`,
|
|
173
|
-
icon: _jsx(RefreshIcon, {}),
|
|
174
|
-
id: `field-${fieldPath?.replace(/\./g,
|
|
140
|
+
icon: /*#__PURE__*/_jsx(RefreshIcon, {}),
|
|
141
|
+
id: `field-${fieldPath?.replace(/\./g, '__')}-generate`,
|
|
175
142
|
margin: false,
|
|
176
143
|
onClick: handleGenerate
|
|
177
|
-
}), _jsx(Button, {
|
|
178
|
-
"aria-label": isLocked ? t(
|
|
144
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
145
|
+
"aria-label": isLocked ? t('general:unlock') : t('general:lock'),
|
|
179
146
|
buttonStyle: "ghost",
|
|
180
147
|
className: `${baseClass}__action-btn`,
|
|
181
|
-
icon: isLocked ? _jsx(LockIcon, {
|
|
148
|
+
icon: isLocked ? /*#__PURE__*/_jsx(LockIcon, {
|
|
182
149
|
size: 16
|
|
183
|
-
}) : _jsx(LockOpenIcon, {
|
|
150
|
+
}) : /*#__PURE__*/_jsx(LockOpenIcon, {
|
|
184
151
|
size: 16
|
|
185
152
|
}),
|
|
186
|
-
id: `field-${fieldPath?.replace(/\./g,
|
|
153
|
+
id: `field-${fieldPath?.replace(/\./g, '__')}-lock`,
|
|
187
154
|
margin: false,
|
|
188
155
|
onClick: toggleLock
|
|
189
156
|
})]
|
|
190
157
|
})]
|
|
191
|
-
}), _jsx(FieldDescription, {
|
|
192
|
-
description,
|
|
158
|
+
}), /*#__PURE__*/_jsx(FieldDescription, {
|
|
159
|
+
description: description,
|
|
193
160
|
path: fieldPath
|
|
194
161
|
})]
|
|
195
162
|
})]
|
|
196
163
|
});
|
|
197
164
|
};
|
|
198
165
|
export const SlugField = withCondition(SlugFieldComponent);
|
|
199
|
-
function _temp(prev) {
|
|
200
|
-
return !prev;
|
|
201
|
-
}
|
|
202
166
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useCallback","useState","Button","FieldDescription","FieldError","FieldLabel","useForm","useField","withCondition","LockIcon","LockOpenIcon","RefreshIcon","useDocumentInfo","useServerFunctions","useTranslation","baseClass","SlugFieldComponent","t0","$","field","path","admin","label","required","useAsSlug","description","placeholder","readOnly","readOnlyFromProps","i18n","t","collectionSlug","globalSlug","slugify","t1","name","t2","fieldPath","setValue","showError","value","getData","getDataByPath","isLocked","setIsLocked","t3","e","preventDefault","valueToSlugify","formattedSlug","data","undefined","handleGenerate","t4","Symbol","for","e_0","_temp","toggleLock","t5","e_1","target","handleChange","isReadOnly","Boolean","t6","filter","join","t7","_jsx","htmlFor","t8","t9","t10","_jsxs","className","children","disabled","id","replace","onChange","type","buttonStyle","icon","margin","onClick","size","SlugField","prev"],"sources":["../../../src/fields/Slug/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SlugFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useState } from 'react'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { LockIcon } from '../../icons/Lock/index.js'\nimport { LockOpenIcon } from '../../icons/LockOpen/index.js'\nimport { RefreshIcon } from '../../icons/Refresh/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.css'\n\nconst baseClass = 'slug-field-component'\n\ntype SlugFieldProps = {\n readonly field: SlugFieldClient\n readonly path?: string\n}\n\n/**\n * @experimental This component is experimental and may change or be removed in the future. Use at your own risk.\n */\nconst SlugFieldComponent: React.FC<SlugFieldProps> = ({ field, path }) => {\n const { admin, label, required, useAsSlug } = field\n const { description, placeholder, readOnly: readOnlyFromProps } = admin || {}\n\n const { i18n, t } = useTranslation()\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const { slugify } = useServerFunctions()\n\n const {\n path: fieldPath,\n setValue,\n showError,\n value,\n } = useField<string>({ path: path || field.name })\n\n const { getData, getDataByPath } = useForm()\n\n const [isLocked, setIsLocked] = useState(true)\n\n /**\n * This method allows the user to generate their slug on demand, e.g. when they click the \"generate\" button.\n * It uses the `slugify` server function to gain access to their custom slugify function defined in their field config.\n */\n const handleGenerate = useCallback(\n async (e: React.MouseEvent<Element>) => {\n e.preventDefault()\n\n const valueToSlugify = getDataByPath(useAsSlug)\n\n const formattedSlug = await slugify({\n collectionSlug,\n data: getData(),\n globalSlug,\n path: fieldPath,\n valueToSlugify,\n })\n\n if (formattedSlug === null || formattedSlug === undefined) {\n setValue('')\n return\n }\n\n /**\n * The result may be the same as the current value, and if so, we don't want to trigger a re-render.\n */\n if (value !== formattedSlug) {\n setValue(formattedSlug)\n }\n },\n [\n setValue,\n value,\n useAsSlug,\n getData,\n slugify,\n getDataByPath,\n collectionSlug,\n globalSlug,\n fieldPath,\n ],\n )\n\n const toggleLock = useCallback((e: React.MouseEvent<Element>) => {\n e.preventDefault()\n setIsLocked((prev) => !prev)\n }, [])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n },\n [setValue],\n )\n\n const isReadOnly = Boolean(readOnlyFromProps || isLocked)\n\n return (\n <div\n className={[\n 'field-type',\n baseClass,\n showError && `${baseClass}--error`,\n isLocked && `${baseClass}--locked`,\n readOnlyFromProps && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <FieldLabel htmlFor={`field-${fieldPath}`} label={label} required={required} />\n <div className={`${baseClass}__wrap`}>\n <FieldError path={fieldPath} showError={showError} />\n\n <div\n className={[\n 'form-input-group',\n `${baseClass}__input-container`,\n showError && 'form-input-group-error',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <input\n aria-label={getTranslation(label, i18n) || path}\n className={`form-input ${baseClass}__input`}\n disabled={isReadOnly}\n id={`field-${fieldPath?.replace(/\\./g, '__')}`}\n name={fieldPath}\n onChange={handleChange}\n placeholder={getTranslation(placeholder, i18n)}\n type=\"text\"\n value={value || ''}\n />\n\n {!readOnlyFromProps && (\n <div className={`${baseClass}__actions`}>\n {!isLocked && (\n <Button\n aria-label={t('authentication:generate')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__action-btn`}\n icon={<RefreshIcon />}\n id={`field-${fieldPath?.replace(/\\./g, '__')}-generate`}\n margin={false}\n onClick={handleGenerate}\n />\n )}\n <Button\n aria-label={isLocked ? t('general:unlock') : t('general:lock')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__action-btn`}\n icon={isLocked ? <LockIcon size={16} /> : <LockOpenIcon size={16} />}\n id={`field-${fieldPath?.replace(/\\./g, '__')}-lock`}\n margin={false}\n onClick={toggleLock}\n />\n </div>\n )}\n </div>\n\n <FieldDescription description={description} path={fieldPath} />\n </div>\n </div>\n )\n}\n\nexport const SlugField = withCondition(SlugFieldComponent)\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","React","useCallback","useState","toast","Button","FieldDescription","FieldError","FieldLabel","useForm","useField","withCondition","LockIcon","LockOpenIcon","RefreshIcon","useDocumentInfo","useLocale","useServerFunctions","useTranslation","baseClass","SlugFieldComponent","field","path","admin","label","required","useAsSlug","description","placeholder","readOnly","readOnlyFromProps","i18n","t","id","collectionSlug","globalSlug","slugify","code","locale","fieldPath","setValue","showError","value","name","getData","getDataByPath","isLocked","setIsLocked","handleGenerate","e","preventDefault","valueToSlugify","undefined","formattedSlug","data","_err","error","toggleLock","prev","handleChange","target","isReadOnly","Boolean","_jsxs","className","filter","join","_jsx","htmlFor","disabled","replace","onChange","type","buttonStyle","icon","margin","onClick","size","SlugField"],"sources":["../../../src/fields/Slug/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SlugFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { LockIcon } from '../../icons/Lock/index.js'\nimport { LockOpenIcon } from '../../icons/LockOpen/index.js'\nimport { RefreshIcon } from '../../icons/Refresh/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.css'\n\nconst baseClass = 'slug-field-component'\n\ntype SlugFieldProps = {\n readonly field: SlugFieldClient\n readonly path?: string\n}\n\n/**\n * @experimental This component is experimental and may change or be removed in the future. Use at your own risk.\n */\nconst SlugFieldComponent: React.FC<SlugFieldProps> = ({ field, path }) => {\n const { admin, label, required, useAsSlug } = field\n const { description, placeholder, readOnly: readOnlyFromProps } = admin || {}\n\n const { i18n, t } = useTranslation()\n\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const { slugify } = useServerFunctions()\n\n const { code: locale } = useLocale()\n\n const {\n path: fieldPath,\n setValue,\n showError,\n value,\n } = useField<string>({ path: path || field.name })\n\n const { getData, getDataByPath } = useForm()\n\n const [isLocked, setIsLocked] = useState(true)\n\n /**\n * This method allows the user to generate their slug on demand, e.g. when they click the \"generate\" button.\n * It uses the `slugify` server function to gain access to their custom slugify function defined in their field config.\n */\n const handleGenerate = useCallback(\n async (e: React.MouseEvent<Element>) => {\n e.preventDefault()\n\n const valueToSlugify = useAsSlug ? getDataByPath(useAsSlug) : undefined\n\n let formattedSlug: null | string | undefined\n\n try {\n formattedSlug = await slugify({\n id: id ?? undefined,\n collectionSlug,\n data: getData(),\n globalSlug,\n locale,\n path: fieldPath,\n valueToSlugify,\n })\n } catch (_err) {\n toast.error(t('error:unspecific'))\n return\n }\n\n // Empty only comes back for globals (no counter fallback) — keep the current value. For\n // collections the server returns the `<singular>-N` fallback when there's no source.\n if (formattedSlug === null || formattedSlug === undefined || formattedSlug === '') {\n return\n }\n\n /**\n * The result may be the same as the current value, and if so, we don't want to trigger a re-render.\n */\n if (value !== formattedSlug) {\n setValue(formattedSlug)\n }\n },\n [\n setValue,\n value,\n useAsSlug,\n getData,\n slugify,\n getDataByPath,\n id,\n collectionSlug,\n globalSlug,\n locale,\n fieldPath,\n t,\n ],\n )\n\n const toggleLock = useCallback((e: React.MouseEvent<Element>) => {\n e.preventDefault()\n setIsLocked((prev) => !prev)\n }, [])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n },\n [setValue],\n )\n\n const isReadOnly = Boolean(readOnlyFromProps || isLocked)\n\n return (\n <div\n className={[\n 'field-type',\n baseClass,\n showError && `${baseClass}--error`,\n isLocked && `${baseClass}--locked`,\n readOnlyFromProps && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <FieldLabel htmlFor={`field-${fieldPath}`} label={label} required={required} />\n <div className={`${baseClass}__wrap`}>\n <FieldError path={fieldPath} showError={showError} />\n\n <div\n className={[\n 'form-input-group',\n `${baseClass}__input-container`,\n showError && 'form-input-group-error',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <input\n aria-label={getTranslation(label, i18n) || path}\n className={`form-input ${baseClass}__input`}\n disabled={isReadOnly}\n id={`field-${fieldPath?.replace(/\\./g, '__')}`}\n name={fieldPath}\n onChange={handleChange}\n placeholder={getTranslation(placeholder, i18n)}\n type=\"text\"\n value={value || ''}\n />\n\n {!readOnlyFromProps && (\n <div className={`${baseClass}__actions`}>\n {!isLocked && (\n <Button\n aria-label={t('authentication:generate')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__action-btn`}\n icon={<RefreshIcon />}\n id={`field-${fieldPath?.replace(/\\./g, '__')}-generate`}\n margin={false}\n onClick={handleGenerate}\n />\n )}\n <Button\n aria-label={isLocked ? t('general:unlock') : t('general:lock')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__action-btn`}\n icon={isLocked ? <LockIcon size={16} /> : <LockOpenIcon size={16} />}\n id={`field-${fieldPath?.replace(/\\./g, '__')}-lock`}\n margin={false}\n onClick={toggleLock}\n />\n </div>\n )}\n </div>\n\n <FieldDescription description={description} path={fieldPath} />\n </div>\n </div>\n )\n}\n\nexport const SlugField = withCondition(SlugFieldComponent)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,13 +3,20 @@
|
|
|
3
3
|
display: flex;
|
|
4
4
|
flex-direction: column;
|
|
5
5
|
gap: var(--spacer-2);
|
|
6
|
+
container-type: inline-size;
|
|
7
|
+
container-name: upload-dropzone;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.upload__dropzoneAndUpload .dropzone.dropzone--style-default {
|
|
11
|
+
padding-block: 0;
|
|
6
12
|
}
|
|
7
13
|
|
|
8
14
|
.upload__dropzoneContent {
|
|
9
15
|
display: flex;
|
|
10
16
|
align-items: center;
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
flex-wrap: wrap;
|
|
18
|
+
row-gap: var(--spacer-2);
|
|
19
|
+
padding: var(--spacer-3);
|
|
13
20
|
gap: var(--spacer-2);
|
|
14
21
|
width: 100%;
|
|
15
22
|
}
|
|
@@ -18,6 +25,13 @@
|
|
|
18
25
|
display: flex;
|
|
19
26
|
align-items: center;
|
|
20
27
|
gap: var(--spacer-2);
|
|
28
|
+
flex-wrap: wrap;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@supports (flex-wrap: balance) {
|
|
32
|
+
.upload__dropzoneContent__buttons {
|
|
33
|
+
flex-wrap: balance;
|
|
34
|
+
}
|
|
21
35
|
}
|
|
22
36
|
|
|
23
37
|
.upload__dropzoneContent__orText {
|
|
@@ -26,6 +40,7 @@
|
|
|
26
40
|
}
|
|
27
41
|
|
|
28
42
|
.upload__dragAndDropText {
|
|
43
|
+
display: none;
|
|
29
44
|
flex-shrink: 0;
|
|
30
45
|
margin: 0;
|
|
31
46
|
text-transform: lowercase;
|
|
@@ -43,9 +58,9 @@
|
|
|
43
58
|
border: var(--stroke-width-small) solid var(--color-border);
|
|
44
59
|
}
|
|
45
60
|
|
|
46
|
-
@
|
|
61
|
+
@container upload-dropzone (min-width: 400px) {
|
|
47
62
|
.upload__dragAndDropText {
|
|
48
|
-
display:
|
|
63
|
+
display: block;
|
|
49
64
|
}
|
|
50
65
|
}
|
|
51
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,SAAS,EAAO,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAO7C;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,SAAS,EAAO,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAO7C;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CA0b7E"}
|
|
@@ -207,7 +207,9 @@ export function fieldReducer(state, action) {
|
|
|
207
207
|
currentState: state || {},
|
|
208
208
|
incomingState: serverState
|
|
209
209
|
});
|
|
210
|
-
prevStateRef
|
|
210
|
+
if (prevStateRef) {
|
|
211
|
+
prevStateRef.current = newState;
|
|
212
|
+
}
|
|
211
213
|
return newState;
|
|
212
214
|
}
|
|
213
215
|
case 'MOVE_ROW':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldReducer.js","names":["ObjectIdImport","dequal","deepCopyObjectSimpleWithoutReactComponents","mergeServerFormState","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","blockType","path","rowIndex","rowIndexFromArgs","subFieldState","rows","length","withNewRow","newRow","id","value","toHexString","isLoading","splice","initialValue","valid","remainingFields","siblingRows","newState","passesCondition","disableFormData","errorPaths","errors","forEach","message","fieldPath","errorMessage","segments","split","push","fieldErrorPath","parentPath","slice","join","Object","entries","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","newRows","newRowID","customComponents","RowLabel","newRowState","key","keys","filter","endsWith","idState","newNestedFieldID","isValid","parseInt","parentFieldPath","parentFieldRows","acceptValues","prevStateRef","serverState","currentState","incomingState","current","moveFromIndex","moveToIndex","topLevelRows","copyOfMovingRow","rowsWithinField","copyOfMovingRow2","rowsMetadata","rowIndexArg","Math","max","min","undefined","collapsed","optimize","newField","oldField","sanitize","field","values","updatedRows","isModified","_","fieldWithoutIsModified","formState"],"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["'use client'\nimport type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObjectSimpleWithoutReactComponents } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { mergeServerFormState } from './mergeServerFormState.js'\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n isLoading: true,\n }\n\n if (blockType) {\n newRow.blockType = blockType\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [`${path}.${rowIndex}.id`]: {\n initialValue: newRow.id,\n passesCondition: true,\n valid: true,\n value: newRow.id,\n },\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ message, path: fieldPath }) => {\n newState[fieldPath] = {\n ...(newState[fieldPath] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = fieldPath.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: fieldPath,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n /**\n * Duplicates a row in an array or blocks field.\n * It needs to manipulate two distinct parts of the form state:\n * - The `rows` property of the parent field, e.g. `array.rows`, `blocks.rows`, etc.\n * - The row's state, e.g. `array.0.id`, `array.0.text`, etc.\n */\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // 1. Duplicate the `rows` property of the parent field, e.g. `array.rows`, `blocks.rows`, etc.\n const newRows = [...(state[path].rows || [])]\n\n const newRow = deepCopyObjectSimpleWithoutReactComponents(newRows[rowIndex])\n\n const newRowID = new ObjectId().toHexString()\n\n if (newRow.id) {\n newRow.id = newRowID\n }\n\n if (newRows[rowIndex]?.customComponents?.RowLabel) {\n newRow.customComponents = {\n RowLabel: newRows[rowIndex].customComponents.RowLabel,\n }\n }\n\n // 2. Duplicate the row's state, e.g. `array.0.id`, `array.0.text`, etc.\n const newRowState = deepCopyObjectSimpleWithoutReactComponents(rows[rowIndex])\n\n // Ensure that `id` in form state exactly matches the row id on the parent field\n if (newRowState.id) {\n newRowState.id.value = newRowID\n newRowState.id.initialValue = newRowID\n }\n\n // Generate new ids for all nested id fields, e.g. `array.0.nestedArray.0.id`\n for (const key of Object.keys(newRowState).filter((key) => key.endsWith('.id'))) {\n const idState = newRowState[key]\n\n const newNestedFieldID = new ObjectId().toHexString()\n\n if (idState && typeof idState.value === 'string' && ObjectId.isValid(idState.value)) {\n newRowState[key].value = newNestedFieldID\n newRowState[key].initialValue = newNestedFieldID\n\n // Apply the ID to its corresponding parent field's rows, e.g. `array.0.nestedArray.rows[0].id`\n const segments = key.split('.')\n const rowIndex = parseInt(segments[segments.length - 2], 10)\n const parentFieldPath = segments.slice(0, segments.length - 2).join('.')\n const parentFieldRows = newRowState?.[parentFieldPath]?.rows\n\n if (newRowState[parentFieldPath] && Array.isArray(parentFieldRows)) {\n if (!parentFieldRows[rowIndex]) {\n parentFieldRows[rowIndex] = {\n id: newNestedFieldID,\n }\n } else {\n parentFieldRows[rowIndex].id = newNestedFieldID\n }\n }\n }\n }\n\n // If there are subfields\n if (Object.keys(newRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, newRowState)\n newRows.splice(rowIndex + 1, 0, newRow)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: newRows,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MERGE_SERVER_STATE': {\n const { acceptValues, prevStateRef, serverState } = action\n\n const newState = mergeServerFormState({\n acceptValues,\n currentState: state || {},\n incomingState: serverState,\n })\n\n prevStateRef.current = newState\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n\n // Handle moving rows on the top-level, i.e. `array.0.text` -> `array.1.text`\n const { remainingFields, rows: topLevelRows } = separateRows(path, state)\n const copyOfMovingRow = topLevelRows[moveFromIndex]\n topLevelRows.splice(moveFromIndex, 1)\n topLevelRows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowsWithinField = [...(state[path]?.rows || [])]\n const copyOfMovingRow2 = { ...rowsWithinField[moveFromIndex] }\n rowsWithinField.splice(moveFromIndex, 1)\n rowsWithinField.splice(moveToIndex, 0, copyOfMovingRow2)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, topLevelRows),\n [path]: {\n ...state[path],\n rows: rowsWithinField,\n },\n }\n\n return newState\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) {\n delete newState[action.path]\n }\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState: FormState = {}\n\n for (const [path, newField] of Object.entries(action.state)) {\n const oldField = state[path]\n\n if (newField.valid !== false) {\n newField.valid = true\n }\n if (newField.passesCondition !== false) {\n newField.passesCondition = true\n }\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n }\n\n return newState\n }\n\n // TODO: Remove this in 4.0 - this is a temporary fix to prevent a breaking change\n if (action.sanitize) {\n for (const field of Object.values(action.state)) {\n if (field.valid !== false) {\n field.valid = true\n }\n if (field.passesCondition !== false) {\n field.passesCondition = true\n }\n }\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { path, updatedRows } = action\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { path, updatedRows } = action\n\n const newState = {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n ...(key === 'value' ? { isModified: true } : {}),\n }\n }\n\n return field\n },\n state?.[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n // reset `isModified` in all other fields\n // Use destructuring instead of delete to avoid mutating field objects\n // shared with the previous state (shallow copy shares references)\n if ('value' in action) {\n for (const [path, field] of Object.entries(newState)) {\n if (path !== action.path && 'isModified' in field) {\n const { isModified: _, ...fieldWithoutIsModified } = field\n newState[path] = fieldWithoutIsModified as typeof field\n }\n }\n }\n\n return newState\n }\n\n case 'UPDATE_MANY': {\n const newState = { ...state }\n\n Object.entries(action.formState).forEach(([path, field]) => {\n newState[path] = field\n })\n\n return newState\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"AAAA;;AAGA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,MAAM,QAAQ,cAAa,CAAC;AACrC,SAASC,0CAA0C,QAAQ;AAI3D,SAASC,oBAAoB,QAAQ;AACrC,SAASC,WAAW,EAAEC,YAAY,QAAQ;AAE1C,MAAMC,QAAA,GAAW,aAAaN,cAAA,GAAiBA,cAAA,CAAeO,OAAO,GAAGP,cAAA;AAExE;;;AAGA,OAAO,SAASQ,aAAaC,KAAgB,EAAEC,MAAmB;EAChE,QAAQA,MAAA,CAAOC,IAAI;IACjB,KAAK;MAAW;QACd,MAAM;UAAEC,SAAS;UAAEC,IAAI;UAAEC,QAAA,EAAUC,gBAAgB;UAAEC,aAAA,GAAgB,CAAC;QAAC,CAAE,GAAGN,MAAA;QAE5E,MAAMI,QAAA,GACJ,OAAOC,gBAAA,KAAqB,WAAWA,gBAAA,GAAmBN,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,EAAMC,MAAA,IAAU;QAEzF,MAAMC,UAAA,GAAa,C,IAAKV,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,IAAQ,EAAE,EAAE;QAEjD,MAAMG,MAAA,GAAc;UAClBC,EAAA,EAAIL,aAAC,EAAeK,EAAA,EAAIC,KAAA,IAAoB,IAAIhB,QAAA,GAAWiB,WAAW;UACtEC,SAAA,EAAW;QACb;QAEA,IAAIZ,SAAA,EAAW;UACbQ,MAAA,CAAOR,SAAS,GAAGA,SAAA;QACrB;QAEAO,UAAA,CAAWM,MAAM,CAACX,QAAA,EAAU,GAAGM,MAAA;QAE/B,IAAIR,SAAA,EAAW;UACbI,aAAA,CAAcJ,SAAS,GAAG;YACxBc,YAAA,EAAcd,SAAA;YACde,KAAA,EAAO;YACPL,KAAA,EAAOV;UACT;QACF;QAEA;QACA,MAAM;UAAEgB,eAAe;UAAEX,IAAA,EAAMY;QAAW,CAAE,GAAGxB,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QAElEoB,WAAA,CAAYJ,MAAM,CAACX,QAAA,EAAU,GAAGE,aAAA;QAEhC,MAAMc,QAAA,GAAsB;UAC1B,GAAGF,eAAe;UAClB,GAAGxB,WAAA,CAAYS,IAAA,EAAMgB,WAAA,CAAY;UACjC,CAAC,GAAGhB,IAAA,IAAQC,QAAA,KAAa,GAAG;YAC1BY,YAAA,EAAcN,MAAA,CAAOC,EAAE;YACvBU,eAAA,EAAiB;YACjBJ,KAAA,EAAO;YACPL,KAAA,EAAOF,MAAA,CAAOC;UAChB;UACA,CAACR,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdmB,eAAA,EAAiB;YACjBf,IAAA,EAAME,UAAA;YACNG,KAAA,EAAOO,WAAA,CAAYX;UACrB;QACF;QAEA,OAAOY,QAAA;MACT;IAEA,KAAK;MAAqB;QACxB,IAAIA,QAAA,GAAW;UAAE,GAAGrB;QAAM;QAE1B,MAAMwB,UAAA,GAA+D,EAAE;QAEvEvB,MAAA,CAAOwB,MAAM,CAACC,OAAO,CAAC,CAAC;UAAEC,OAAO;UAAEvB,IAAA,EAAMwB;QAAS,CAAE;UACjDP,QAAQ,CAACO,SAAA,CAAU,GAAG;YACpB,IAAIP,QAAQ,CAACO,SAAA,CAAU,IAAI;cACzBX,YAAA,EAAc;cACdJ,KAAA,EAAO;YACT,CAAC;YACDgB,YAAA,EAAcF,OAAA;YACdT,KAAA,EAAO;UACT;UAEA,MAAMY,QAAA,GAAWF,SAAA,CAAUG,KAAK,CAAC;UACjC,IAAID,QAAA,CAASrB,MAAM,GAAG,GAAG;YACvBe,UAAA,CAAWQ,IAAI,CAAC;cACdC,cAAA,EAAgBL,SAAA;cAChBM,UAAA,EAAYJ,QAAA,CAASK,KAAK,CAAC,GAAGL,QAAA,CAASrB,MAAM,GAAG,GAAG2B,IAAI,CAAC;YAC1D;UACF;QACF;QAEAf,QAAA,GAAWgB,MAAA,CAAOC,OAAO,CAACjB,QAAA,EAAUkB,MAAM,CAAC,CAACC,GAAA,EAAK,CAACpC,IAAA,EAAMqC,UAAA,CAAW;UACjE,MAAMC,eAAA,GAAkBlB,UAAA,CAAWe,MAAM,CAAC,CAACI,QAAA,EAAU;YAAEV,cAAc;YAAEC;UAAU,CAAE;YACjF,IAAIA,UAAA,CAAWU,UAAU,CAACxC,IAAA,GAAO;cAC/BuC,QAAA,CAASX,IAAI,CAACC,cAAA;YAChB;YACA,OAAOU,QAAA;UACT,GAAG,EAAE;UAEL,IAAIE,OAAA,GAAU;UAEd,IAAIH,eAAA,CAAgBjC,MAAM,GAAG,GAAG;YAC9B,MAAMqC,aAAA,GAAgBC,KAAA,CAAMC,OAAO,CAACP,UAAA,CAAWjB,UAAU,IAAIiB,UAAA,CAAWjB,UAAU,GAAG,EAAE;YAEvFkB,eAAA,CAAgBhB,OAAO,CAAEO,cAAA;cACvB,IAAI,CAACa,aAAA,CAAcG,QAAQ,CAAChB,cAAA,GAAiB;gBAC3Ca,aAAA,CAAcd,IAAI,CAACC,cAAA;gBACnBY,OAAA,GAAU;cACZ;YACF;YAEA,IAAIA,OAAA,EAAS;cACXL,GAAG,CAACpC,IAAA,CAAK,GAAG;gBACV,GAAGqC,UAAU;gBACbjB,UAAA,EAAYsB;cACd;YACF;UACF;UAEA,IAAI,CAACD,OAAA,EAAS;YACZL,GAAG,CAACpC,IAAA,CAAK,GAAGqC,UAAA;UACd;UAEA,OAAOD,GAAA;QACT,GAAG,CAAC;QAEJ,OAAOnB,QAAA;MACT;IAEA;;;;;;IAMA,KAAK;MAAiB;QACpB,MAAM;UAAEjB,IAAI;UAAEC;QAAQ,CAAE,GAAGJ,MAAA;QAC3B,MAAM;UAAEkB,eAAe;UAAEX;QAAI,CAAE,GAAGZ,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QAErD;QACA,MAAMkD,OAAA,GAAU,C,IAAKlD,KAAK,CAACI,IAAA,CAAK,CAACI,IAAI,IAAI,EAAE,EAAE;QAE7C,MAAMG,MAAA,GAASlB,0CAAA,CAA2CyD,OAAO,CAAC7C,QAAA,CAAS;QAE3E,MAAM8C,QAAA,GAAW,IAAItD,QAAA,GAAWiB,WAAW;QAE3C,IAAIH,MAAA,CAAOC,EAAE,EAAE;UACbD,MAAA,CAAOC,EAAE,GAAGuC,QAAA;QACd;QAEA,IAAID,OAAO,CAAC7C,QAAA,CAAS,EAAE+C,gBAAA,EAAkBC,QAAA,EAAU;UACjD1C,MAAA,CAAOyC,gBAAgB,GAAG;YACxBC,QAAA,EAAUH,OAAO,CAAC7C,QAAA,CAAS,CAAC+C,gBAAgB,CAACC;UAC/C;QACF;QAEA;QACA,MAAMC,WAAA,GAAc7D,0CAAA,CAA2Ce,IAAI,CAACH,QAAA,CAAS;QAE7E;QACA,IAAIiD,WAAA,CAAY1C,EAAE,EAAE;UAClB0C,WAAA,CAAY1C,EAAE,CAACC,KAAK,GAAGsC,QAAA;UACvBG,WAAA,CAAY1C,EAAE,CAACK,YAAY,GAAGkC,QAAA;QAChC;QAEA;QACA,KAAK,MAAMI,GAAA,IAAOlB,MAAA,CAAOmB,IAAI,CAACF,WAAA,EAAaG,MAAM,CAAEF,GAAA,IAAQA,GAAA,CAAIG,QAAQ,CAAC,SAAS;UAC/E,MAAMC,OAAA,GAAUL,WAAW,CAACC,GAAA,CAAI;UAEhC,MAAMK,gBAAA,GAAmB,IAAI/D,QAAA,GAAWiB,WAAW;UAEnD,IAAI6C,OAAA,IAAW,OAAOA,OAAA,CAAQ9C,KAAK,KAAK,YAAYhB,QAAA,CAASgE,OAAO,CAACF,OAAA,CAAQ9C,KAAK,GAAG;YACnFyC,WAAW,CAACC,GAAA,CAAI,CAAC1C,KAAK,GAAG+C,gBAAA;YACzBN,WAAW,CAACC,GAAA,CAAI,CAACtC,YAAY,GAAG2C,gBAAA;YAEhC;YACA,MAAM9B,QAAA,GAAWyB,GAAA,CAAIxB,KAAK,CAAC;YAC3B,MAAM1B,QAAA,GAAWyD,QAAA,CAAShC,QAAQ,CAACA,QAAA,CAASrB,MAAM,GAAG,EAAE,EAAE;YACzD,MAAMsD,eAAA,GAAkBjC,QAAA,CAASK,KAAK,CAAC,GAAGL,QAAA,CAASrB,MAAM,GAAG,GAAG2B,IAAI,CAAC;YACpE,MAAM4B,eAAA,GAAkBV,WAAA,GAAcS,eAAA,CAAgB,EAAEvD,IAAA;YAExD,IAAI8C,WAAW,CAACS,eAAA,CAAgB,IAAIhB,KAAA,CAAMC,OAAO,CAACgB,eAAA,GAAkB;cAClE,IAAI,CAACA,eAAe,CAAC3D,QAAA,CAAS,EAAE;gBAC9B2D,eAAe,CAAC3D,QAAA,CAAS,GAAG;kBAC1BO,EAAA,EAAIgD;gBACN;cACF,OAAO;gBACLI,eAAe,CAAC3D,QAAA,CAAS,CAACO,EAAE,GAAGgD,gBAAA;cACjC;YACF;UACF;QACF;QAEA;QACA,IAAIvB,MAAA,CAAOmB,IAAI,CAACF,WAAA,EAAa7C,MAAM,GAAG,GAAG;UACvC;UACAD,IAAA,CAAKQ,MAAM,CAACX,QAAA,GAAW,GAAG,GAAGiD,WAAA;UAC7BJ,OAAA,CAAQlC,MAAM,CAACX,QAAA,GAAW,GAAG,GAAGM,MAAA;QAClC;QAEA,MAAMU,QAAA,GAAW;UACf,GAAGF,eAAe;UAClB,GAAGxB,WAAA,CAAYS,IAAA,EAAMI,IAAA,CAAK;UAC1B,CAACJ,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdmB,eAAA,EAAiB;YACjBf,IAAA,EAAM0C,OAAA;YACNrC,KAAA,EAAOL,IAAA,CAAKC;UACd;QACF;QAEA,OAAOY,QAAA;MACT;IAEA,KAAK;MAAsB;QACzB,MAAM;UAAE4C,YAAY;UAAEC,YAAY;UAAEC;QAAW,CAAE,GAAGlE,MAAA;QAEpD,MAAMoB,QAAA,GAAW3B,oBAAA,CAAqB;UACpCuE,YAAA;UACAG,YAAA,EAAcpE,KAAA,IAAS,CAAC;UACxBqE,aAAA,EAAeF;QACjB;QAEAD,YAAA,CAAaI,OAAO,GAAGjD,QAAA;QAEvB,OAAOA,QAAA;MACT;IAEA,KAAK;MAAY;QACf,MAAM;UAAEkD,aAAa;UAAEC,WAAW;UAAEpE;QAAI,CAAE,GAAGH,MAAA;QAE7C;QACA,MAAM;UAAEkB,eAAe;UAAEX,IAAA,EAAMiE;QAAY,CAAE,GAAG7E,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QACnE,MAAM0E,eAAA,GAAkBD,YAAY,CAACF,aAAA,CAAc;QACnDE,YAAA,CAAazD,MAAM,CAACuD,aAAA,EAAe;QACnCE,YAAA,CAAazD,MAAM,CAACwD,WAAA,EAAa,GAAGE,eAAA;QAEpC;QACA,MAAMC,eAAA,GAAkB,C,IAAK3E,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,IAAQ,EAAE,EAAE;QACtD,MAAMoE,gBAAA,GAAmB;UAAE,GAAGD,eAAe,CAACJ,aAAA;QAAe;QAC7DI,eAAA,CAAgB3D,MAAM,CAACuD,aAAA,EAAe;QACtCI,eAAA,CAAgB3D,MAAM,CAACwD,WAAA,EAAa,GAAGI,gBAAA;QAEvC,MAAMvD,QAAA,GAAW;UACf,GAAGF,eAAe;UAClB,GAAGxB,WAAA,CAAYS,IAAA,EAAMqE,YAAA,CAAa;UAClC,CAACrE,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdI,IAAA,EAAMmE;UACR;QACF;QAEA,OAAOtD,QAAA;MACT;IAEA,KAAK;MAAU;QACb,MAAMA,QAAA,GAAW;UAAE,GAAGrB;QAAM;QAC5B,IAAIqB,QAAQ,CAACpB,MAAA,CAAOG,IAAI,CAAC,EAAE;UACzB,OAAOiB,QAAQ,CAACpB,MAAA,CAAOG,IAAI,CAAC;QAC9B;QACA,OAAOiB,QAAA;MACT;IAEA,KAAK;MAAc;QACjB,MAAM;UAAEjB,IAAI;UAAEC;QAAQ,CAAE,GAAGJ,MAAA;QAC3B,MAAM;UAAEkB,eAAe;UAAEX;QAAI,CAAE,GAAGZ,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QACrD,MAAM6E,YAAA,GAAe,C,IAAK7E,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,IAAQ,EAAE,EAAE;QAEnDA,IAAA,CAAKQ,MAAM,CAACX,QAAA,EAAU;QACtBwE,YAAA,CAAa7D,MAAM,CAACX,QAAA,EAAU;QAE9B,MAAMgB,QAAA,GAAsB;UAC1B,GAAGF,eAAe;UAClB,CAACf,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdmB,eAAA,EAAiBf,IAAA,CAAKC,MAAM,GAAG;YAC/BD,IAAA,EAAMqE,YAAA;YACNhE,KAAA,EAAOL,IAAA,CAAKC;UACd;UACA,GAAGd,WAAA,CAAYS,IAAA,EAAMI,IAAA;QACvB;QAEA,OAAOa,QAAA;MACT;IAEA,KAAK;MAAe;QAClB,MAAM;UAAElB,SAAS;UAAEC,IAAI;UAAEC,QAAA,EAAUyE,WAAW;UAAEvE,aAAA,GAAgB,CAAC;QAAC,CAAE,GAAGN,MAAA;QAEvE,MAAM;UAAEkB,eAAe;UAAEX,IAAA,EAAMY;QAAW,CAAE,GAAGxB,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QAClE,MAAMK,QAAA,GAAW0E,IAAA,CAAKC,GAAG,CAAC,GAAGD,IAAA,CAAKE,GAAG,CAACH,WAAA,EAAa1D,WAAA,EAAaX,MAAA,GAAS,KAAK;QAE9E,MAAMoE,YAAA,GAAe,C,IAAK7E,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,IAAQ,EAAE,EAAE;QACnDqE,YAAY,CAACxE,QAAA,CAAS,GAAG;UACvBO,EAAA,EAAI,IAAIf,QAAA,GAAWiB,WAAW;UAC9BX,SAAA,EAAWA,SAAA,IAAa+E,SAAA;UACxBC,SAAA,EAAW;QACb;QAEA,IAAIhF,SAAA,EAAW;UACbI,aAAA,CAAcJ,SAAS,GAAG;YACxBc,YAAA,EAAcd,SAAA;YACde,KAAA,EAAO;YACPL,KAAA,EAAOV;UACT;QACF;QAEA;QACAiB,WAAW,CAACf,QAAA,CAAS,GAAGE,aAAA;QAExB,MAAMc,QAAA,GAAsB;UAC1B,GAAGF,eAAe;UAClB,GAAGxB,WAAA,CAAYS,IAAA,EAAMgB,WAAA,CAAY;UACjC,CAAChB,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdmB,eAAA,EAAiB;YACjBf,IAAA,EAAMqE,YAAA;YACNhE,KAAA,EAAOO,WAAA,CAAYX;UACrB;QACF;QAEA,OAAOY,QAAA;MACT;IAEA,KAAK;MAAiB;QACpB,IAAIpB,MAAA,CAAOmF,QAAQ,KAAK,OAAO;UAC7B;UACA;UACA;UACA;UACA;UACA,MAAM/D,QAAA,GAAsB,CAAC;UAE7B,KAAK,MAAM,CAACjB,IAAA,EAAMiF,QAAA,CAAS,IAAIhD,MAAA,CAAOC,OAAO,CAACrC,MAAA,CAAOD,KAAK,GAAG;YAC3D,MAAMsF,QAAA,GAAWtF,KAAK,CAACI,IAAA,CAAK;YAE5B,IAAIiF,QAAA,CAASnE,KAAK,KAAK,OAAO;cAC5BmE,QAAA,CAASnE,KAAK,GAAG;YACnB;YACA,IAAImE,QAAA,CAAS/D,eAAe,KAAK,OAAO;cACtC+D,QAAA,CAAS/D,eAAe,GAAG;YAC7B;YAEA,IAAI,CAAC9B,MAAA,CAAO8F,QAAA,EAAUD,QAAA,GAAW;cAC/BhE,QAAQ,CAACjB,IAAA,CAAK,GAAGiF,QAAA;YACnB,OAAO,IAAIC,QAAA,EAAU;cACnBjE,QAAQ,CAACjB,IAAA,CAAK,GAAGkF,QAAA;YACnB;UACF;UAEA,OAAOjE,QAAA;QACT;QAEA;QACA,IAAIpB,MAAA,CAAOsF,QAAQ,EAAE;UACnB,KAAK,MAAMC,KAAA,IAASnD,MAAA,CAAOoD,MAAM,CAACxF,MAAA,CAAOD,KAAK,GAAG;YAC/C,IAAIwF,KAAA,CAAMtE,KAAK,KAAK,OAAO;cACzBsE,KAAA,CAAMtE,KAAK,GAAG;YAChB;YACA,IAAIsE,KAAA,CAAMlE,eAAe,KAAK,OAAO;cACnCkE,KAAA,CAAMlE,eAAe,GAAG;YAC1B;UACF;QACF;QACA;QACA,OAAOrB,MAAA,CAAOD,KAAK;MACrB;IAEA,KAAK;MAA0B;QAC7B,MAAM;UAAEI,IAAI;UAAEsF;QAAW,CAAE,GAAGzF,MAAA;QAE9B,OAAO;UACL,GAAGD,KAAK;UACR,CAACI,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdI,IAAA,EAAMkF;UACR;QACF;MACF;IAEA,KAAK;MAAqB;QACxB,MAAM;UAAEtF,IAAI;UAAEsF;QAAW,CAAE,GAAGzF,MAAA;QAE9B,MAAMoB,QAAA,GAAW;UACf,GAAGrB,KAAK;UACR,CAACI,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdI,IAAA,EAAMkF;UACR;QACF;QAEA,OAAOrE,QAAA;MACT;IAEA,KAAK;MAAU;QACb,MAAMgE,QAAA,GAAWhD,MAAA,CAAOC,OAAO,CAACrC,MAAA,EAAQsC,MAAM,CAC5C,CAACiD,KAAA,EAAO,CAACjC,GAAA,EAAK1C,KAAA,CAAM;UAClB,IACE,CACE,mBACA,gBACA,gBACA,QACA,SACA,YACA,QACD,CAACoC,QAAQ,CAACM,GAAA,GACX;YACA,OAAO;cACL,GAAGiC,KAAK;cACR,CAACjC,GAAA,GAAM1C,KAAA;cACP,IAAI0C,GAAA,KAAQ,UAAU;gBAAEoC,UAAA,EAAY;cAAK,IAAI,CAAC,CAAC;YACjD;UACF;UAEA,OAAOH,KAAA;QACT,GACAxF,KAAA,GAAQC,MAAA,CAAOG,IAAI,CAAC,IAAK,CAAC;QAG5B,MAAMiB,QAAA,GAAW;UACf,GAAGrB,KAAK;UACR,CAACC,MAAA,CAAOG,IAAI,GAAGiF;QACjB;QAEA;QACA;QACA;QACA,IAAI,WAAWpF,MAAA,EAAQ;UACrB,KAAK,MAAM,CAACG,IAAA,EAAMoF,KAAA,CAAM,IAAInD,MAAA,CAAOC,OAAO,CAACjB,QAAA,GAAW;YACpD,IAAIjB,IAAA,KAASH,MAAA,CAAOG,IAAI,IAAI,gBAAgBoF,KAAA,EAAO;cACjD,MAAM;gBAAEG,UAAA,EAAYC,CAAC;gBAAE,GAAGC;cAAA,CAAwB,GAAGL,KAAA;cACrDnE,QAAQ,CAACjB,IAAA,CAAK,GAAGyF,sBAAA;YACnB;UACF;QACF;QAEA,OAAOxE,QAAA;MACT;IAEA,KAAK;MAAe;QAClB,MAAMA,QAAA,GAAW;UAAE,GAAGrB;QAAM;QAE5BqC,MAAA,CAAOC,OAAO,CAACrC,MAAA,CAAO6F,SAAS,EAAEpE,OAAO,CAAC,CAAC,CAACtB,IAAA,EAAMoF,KAAA,CAAM;UACrDnE,QAAQ,CAACjB,IAAA,CAAK,GAAGoF,KAAA;QACnB;QAEA,OAAOnE,QAAA;MACT;IAEA;MAAS;QACP,OAAOrB,KAAA;MACT;EACF;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"fieldReducer.js","names":["ObjectIdImport","dequal","deepCopyObjectSimpleWithoutReactComponents","mergeServerFormState","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","blockType","path","rowIndex","rowIndexFromArgs","subFieldState","rows","length","withNewRow","newRow","id","value","toHexString","isLoading","splice","initialValue","valid","remainingFields","siblingRows","newState","passesCondition","disableFormData","errorPaths","errors","forEach","message","fieldPath","errorMessage","segments","split","push","fieldErrorPath","parentPath","slice","join","Object","entries","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","newRows","newRowID","customComponents","RowLabel","newRowState","key","keys","filter","endsWith","idState","newNestedFieldID","isValid","parseInt","parentFieldPath","parentFieldRows","acceptValues","prevStateRef","serverState","currentState","incomingState","current","moveFromIndex","moveToIndex","topLevelRows","copyOfMovingRow","rowsWithinField","copyOfMovingRow2","rowsMetadata","rowIndexArg","Math","max","min","undefined","collapsed","optimize","newField","oldField","sanitize","field","values","updatedRows","isModified","_","fieldWithoutIsModified","formState"],"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["'use client'\nimport type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObjectSimpleWithoutReactComponents } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { mergeServerFormState } from './mergeServerFormState.js'\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n isLoading: true,\n }\n\n if (blockType) {\n newRow.blockType = blockType\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [`${path}.${rowIndex}.id`]: {\n initialValue: newRow.id,\n passesCondition: true,\n valid: true,\n value: newRow.id,\n },\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ message, path: fieldPath }) => {\n newState[fieldPath] = {\n ...(newState[fieldPath] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = fieldPath.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: fieldPath,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n /**\n * Duplicates a row in an array or blocks field.\n * It needs to manipulate two distinct parts of the form state:\n * - The `rows` property of the parent field, e.g. `array.rows`, `blocks.rows`, etc.\n * - The row's state, e.g. `array.0.id`, `array.0.text`, etc.\n */\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // 1. Duplicate the `rows` property of the parent field, e.g. `array.rows`, `blocks.rows`, etc.\n const newRows = [...(state[path].rows || [])]\n\n const newRow = deepCopyObjectSimpleWithoutReactComponents(newRows[rowIndex])\n\n const newRowID = new ObjectId().toHexString()\n\n if (newRow.id) {\n newRow.id = newRowID\n }\n\n if (newRows[rowIndex]?.customComponents?.RowLabel) {\n newRow.customComponents = {\n RowLabel: newRows[rowIndex].customComponents.RowLabel,\n }\n }\n\n // 2. Duplicate the row's state, e.g. `array.0.id`, `array.0.text`, etc.\n const newRowState = deepCopyObjectSimpleWithoutReactComponents(rows[rowIndex])\n\n // Ensure that `id` in form state exactly matches the row id on the parent field\n if (newRowState.id) {\n newRowState.id.value = newRowID\n newRowState.id.initialValue = newRowID\n }\n\n // Generate new ids for all nested id fields, e.g. `array.0.nestedArray.0.id`\n for (const key of Object.keys(newRowState).filter((key) => key.endsWith('.id'))) {\n const idState = newRowState[key]\n\n const newNestedFieldID = new ObjectId().toHexString()\n\n if (idState && typeof idState.value === 'string' && ObjectId.isValid(idState.value)) {\n newRowState[key].value = newNestedFieldID\n newRowState[key].initialValue = newNestedFieldID\n\n // Apply the ID to its corresponding parent field's rows, e.g. `array.0.nestedArray.rows[0].id`\n const segments = key.split('.')\n const rowIndex = parseInt(segments[segments.length - 2], 10)\n const parentFieldPath = segments.slice(0, segments.length - 2).join('.')\n const parentFieldRows = newRowState?.[parentFieldPath]?.rows\n\n if (newRowState[parentFieldPath] && Array.isArray(parentFieldRows)) {\n if (!parentFieldRows[rowIndex]) {\n parentFieldRows[rowIndex] = {\n id: newNestedFieldID,\n }\n } else {\n parentFieldRows[rowIndex].id = newNestedFieldID\n }\n }\n }\n }\n\n // If there are subfields\n if (Object.keys(newRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, newRowState)\n newRows.splice(rowIndex + 1, 0, newRow)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: newRows,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MERGE_SERVER_STATE': {\n const { acceptValues, prevStateRef, serverState } = action\n\n const newState = mergeServerFormState({\n acceptValues,\n currentState: state || {},\n incomingState: serverState,\n })\n\n if (prevStateRef) {\n prevStateRef.current = newState\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n\n // Handle moving rows on the top-level, i.e. `array.0.text` -> `array.1.text`\n const { remainingFields, rows: topLevelRows } = separateRows(path, state)\n const copyOfMovingRow = topLevelRows[moveFromIndex]\n topLevelRows.splice(moveFromIndex, 1)\n topLevelRows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowsWithinField = [...(state[path]?.rows || [])]\n const copyOfMovingRow2 = { ...rowsWithinField[moveFromIndex] }\n rowsWithinField.splice(moveFromIndex, 1)\n rowsWithinField.splice(moveToIndex, 0, copyOfMovingRow2)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, topLevelRows),\n [path]: {\n ...state[path],\n rows: rowsWithinField,\n },\n }\n\n return newState\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) {\n delete newState[action.path]\n }\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState: FormState = {}\n\n for (const [path, newField] of Object.entries(action.state)) {\n const oldField = state[path]\n\n if (newField.valid !== false) {\n newField.valid = true\n }\n if (newField.passesCondition !== false) {\n newField.passesCondition = true\n }\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n }\n\n return newState\n }\n\n // TODO: Remove this in 4.0 - this is a temporary fix to prevent a breaking change\n if (action.sanitize) {\n for (const field of Object.values(action.state)) {\n if (field.valid !== false) {\n field.valid = true\n }\n if (field.passesCondition !== false) {\n field.passesCondition = true\n }\n }\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { path, updatedRows } = action\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { path, updatedRows } = action\n\n const newState = {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n ...(key === 'value' ? { isModified: true } : {}),\n }\n }\n\n return field\n },\n state?.[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n // reset `isModified` in all other fields\n // Use destructuring instead of delete to avoid mutating field objects\n // shared with the previous state (shallow copy shares references)\n if ('value' in action) {\n for (const [path, field] of Object.entries(newState)) {\n if (path !== action.path && 'isModified' in field) {\n const { isModified: _, ...fieldWithoutIsModified } = field\n newState[path] = fieldWithoutIsModified as typeof field\n }\n }\n }\n\n return newState\n }\n\n case 'UPDATE_MANY': {\n const newState = { ...state }\n\n Object.entries(action.formState).forEach(([path, field]) => {\n newState[path] = field\n })\n\n return newState\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAGV,SAAS,EAIV,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAGV,SAAS,EAIV,MAAM,YAAY,CAAA;AAsCnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA01BpC,CAAA;AAED,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
package/dist/forms/Form/index.js
CHANGED
|
@@ -14,6 +14,7 @@ import { useThrottledEffect } from '../../hooks/useThrottledEffect.js';
|
|
|
14
14
|
import { useAuth } from '../../providers/Auth/index.js';
|
|
15
15
|
import { useConfig } from '../../providers/Config/index.js';
|
|
16
16
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
17
|
+
import { useFormErrorHandler } from '../../providers/FormErrorHandler/index.js';
|
|
17
18
|
import { useLocale } from '../../providers/Locale/index.js';
|
|
18
19
|
import { useOperation } from '../../providers/Operation/index.js';
|
|
19
20
|
import { useRouter } from '../../providers/RouterAdapter/index.js';
|
|
@@ -74,6 +75,7 @@ export const Form = props => {
|
|
|
74
75
|
refreshCookie,
|
|
75
76
|
user
|
|
76
77
|
} = useAuth();
|
|
78
|
+
const onNonFieldError = useFormErrorHandler();
|
|
77
79
|
const operation = useOperation();
|
|
78
80
|
const {
|
|
79
81
|
queueTask
|
|
@@ -409,6 +411,9 @@ export const Form = props => {
|
|
|
409
411
|
errors: fieldErrors
|
|
410
412
|
});
|
|
411
413
|
nonFieldErrors.forEach(err_1 => {
|
|
414
|
+
if (onNonFieldError?.(err_1)) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
412
417
|
errorToast(/*#__PURE__*/_jsx(FieldErrorsToast, {
|
|
413
418
|
errorMessage: err_1.message || t('error:unknown')
|
|
414
419
|
}));
|
|
@@ -429,7 +434,7 @@ export const Form = props => {
|
|
|
429
434
|
setDisabled(false);
|
|
430
435
|
errorToast(err.message);
|
|
431
436
|
}
|
|
432
|
-
}, [beforeSubmit, startRouteTransition, action, disableSuccessStatus, disableValidationOnSubmit, disabled, dispatchFields, handleResponse, method, onSubmit, onSuccess, redirect, router, t, i18n, validateDrafts, waitForAutocomplete, setModified, setSubmitted]);
|
|
437
|
+
}, [beforeSubmit, startRouteTransition, action, disableSuccessStatus, disableValidationOnSubmit, disabled, dispatchFields, handleResponse, method, onSubmit, onSuccess, redirect, router, t, i18n, validateDrafts, waitForAutocomplete, setModified, setSubmitted, onNonFieldError]);
|
|
433
438
|
const getFields = useCallback(() => contextRef.current.fields, []);
|
|
434
439
|
const getField = useCallback(path_0 => contextRef.current.fields[path_0], []);
|
|
435
440
|
const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), []);
|