@payloadcms/ui 3.0.0-canary.a0b06af → 3.0.0-canary.ac498e7
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/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 +1 -1
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +1 -1
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +53 -28
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Banner/index.scss +4 -4
- package/dist/elements/CodeEditor/types.d.ts +2 -2
- package/dist/elements/CodeEditor/types.d.ts.map +1 -1
- package/dist/elements/CodeEditor/types.js.map +1 -1
- package/dist/elements/Collapsible/index.d.ts +1 -1
- package/dist/elements/Collapsible/index.d.ts.map +1 -1
- package/dist/elements/Collapsible/index.js +1 -1
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/Collapsible/index.scss +13 -47
- package/dist/elements/DatePicker/index.scss +3 -1
- package/dist/elements/DatePicker/types.d.ts +2 -2
- package/dist/elements/DatePicker/types.d.ts.map +1 -1
- package/dist/elements/DatePicker/types.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +7 -3
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +5 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +0 -6
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +4 -4
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/index.d.ts +1 -2
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +46 -48
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts +2 -2
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts +4 -4
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
- package/dist/elements/Drawer/types.d.ts +2 -2
- package/dist/elements/Drawer/types.d.ts.map +1 -1
- package/dist/elements/Drawer/types.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +10 -6
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/index.d.ts +1 -2
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditUpload/index.d.ts +3 -6
- package/dist/elements/EditUpload/index.d.ts.map +1 -1
- package/dist/elements/EditUpload/index.js +20 -25
- package/dist/elements/EditUpload/index.js.map +1 -1
- package/dist/elements/ErrorPill/index.scss +2 -14
- package/dist/elements/FieldSelect/index.d.ts +1 -2
- package/dist/elements/FieldSelect/index.d.ts.map +1 -1
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/FileDetails/index.d.ts +2 -2
- package/dist/elements/FileDetails/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/index.js.map +1 -1
- package/dist/elements/GenerateConfirmation/index.scss +1 -0
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts +1 -2
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +38 -3
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListDrawer/types.d.ts +2 -2
- package/dist/elements/ListDrawer/types.d.ts.map +1 -1
- package/dist/elements/ListDrawer/types.js.map +1 -1
- package/dist/elements/Localizer/index.d.ts.map +1 -1
- package/dist/elements/Localizer/index.js +6 -13
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/Logout/index.d.ts.map +1 -1
- package/dist/elements/Logout/index.js +6 -3
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/Pill/index.d.ts +2 -2
- package/dist/elements/Pill/index.d.ts.map +1 -1
- package/dist/elements/Pill/index.js.map +1 -1
- package/dist/elements/Pill/index.scss +9 -21
- package/dist/elements/PreviewSizes/index.d.ts +4 -4
- package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
- package/dist/elements/PreviewSizes/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +16 -0
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/ReactSelect/Control/index.js +0 -1
- package/dist/elements/ReactSelect/Control/index.js.map +1 -1
- package/dist/elements/ReactSelect/DropdownIndicator/index.d.ts +2 -2
- package/dist/elements/ReactSelect/DropdownIndicator/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/DropdownIndicator/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValueRemove/index.d.ts +2 -2
- package/dist/elements/ReactSelect/MultiValueRemove/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
- package/dist/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/index.js +0 -1
- package/dist/elements/ReactSelect/index.js.map +1 -1
- package/dist/elements/ReactSelect/index.scss +9 -2
- package/dist/elements/ReactSelect/types.d.ts +1 -1
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/SearchFilter/index.d.ts +5 -3
- package/dist/elements/SearchFilter/index.d.ts.map +1 -1
- package/dist/elements/SearchFilter/index.js +14 -53
- package/dist/elements/SearchFilter/index.js.map +1 -1
- package/dist/elements/SortColumn/index.d.ts +2 -2
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/Status/index.scss +1 -0
- package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
- package/dist/elements/StayLoggedIn/index.js +6 -2
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/StepNav/types.d.ts +2 -2
- package/dist/elements/StepNav/types.d.ts.map +1 -1
- package/dist/elements/StepNav/types.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +0 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +5 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/index.d.ts +1 -2
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts +1 -2
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js +0 -1
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/filterFields.d.ts +1 -1
- package/dist/elements/TableColumns/filterFields.d.ts.map +1 -1
- package/dist/elements/TableColumns/filterFields.js.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.d.ts +2 -2
- package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +13 -28
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +11 -5
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.scss +2 -2
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +4 -2
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.d.ts +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.js +3 -3
- package/dist/elements/WhereBuilder/reduceFieldMap.js.map +1 -1
- package/dist/elements/WhereBuilder/types.d.ts +1 -2
- package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/types.js.map +1 -1
- package/dist/elements/WhereBuilder/validateWhereQuery.js +0 -1
- package/dist/elements/WhereBuilder/validateWhereQuery.js.map +1 -1
- package/dist/elements/withMergedProps/index.js +8 -2
- package/dist/elements/withMergedProps/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +6 -7
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +18 -18
- package/dist/exports/client/index.js.map +4 -4
- 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 +4 -5
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts +1 -14
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +3 -1
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +4 -5
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +5 -1
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts +2 -3
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +2 -3
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +1 -1
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts +1 -14
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +2 -2
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +1 -1
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.d.ts +1 -1
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js +4 -3
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Checkbox/index.scss +2 -1
- package/dist/fields/Code/index.d.ts +1 -9
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +3 -3
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Code/index.scss +3 -21
- package/dist/fields/Collapsible/index.d.ts +1 -7
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js +2 -2
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/Collapsible/index.scss +0 -4
- package/dist/fields/DateTime/index.d.ts +1 -9
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +3 -3
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts +1 -9
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js +2 -2
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/FieldDescription/index.d.ts +2 -2
- package/dist/fields/FieldDescription/index.d.ts.map +1 -1
- package/dist/fields/FieldDescription/index.js.map +1 -1
- package/dist/fields/FieldError/index.d.ts +2 -2
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/FieldError/index.scss +6 -5
- package/dist/fields/FieldLabel/index.d.ts +2 -2
- package/dist/fields/FieldLabel/index.d.ts.map +1 -1
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Group/index.d.ts +2 -10
- package/dist/fields/Group/index.d.ts.map +1 -1
- package/dist/fields/Group/index.js +2 -2
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Hidden/index.d.ts +2 -9
- package/dist/fields/Hidden/index.d.ts.map +1 -1
- package/dist/fields/Hidden/index.js +2 -2
- package/dist/fields/Hidden/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts +1 -9
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +2 -7
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/JSON/index.scss +6 -25
- package/dist/fields/Number/index.d.ts +1 -14
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js +3 -5
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts +3 -4
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js +2 -2
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Point/index.d.ts +2 -9
- package/dist/fields/Point/index.d.ts.map +1 -1
- package/dist/fields/Point/index.js +8 -8
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/Point/index.scss +4 -0
- package/dist/fields/RadioGroup/Radio/index.d.ts +2 -3
- package/dist/fields/RadioGroup/Radio/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts +1 -12
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js +9 -8
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.scss +7 -0
- package/dist/fields/Relationship/index.d.ts +1 -2
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +2 -2
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/index.scss +2 -2
- package/dist/fields/Relationship/types.d.ts +1 -11
- package/dist/fields/Relationship/types.d.ts.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/RichText/index.d.ts +2 -8
- package/dist/fields/RichText/index.d.ts.map +1 -1
- package/dist/fields/RichText/index.js.map +1 -1
- package/dist/fields/Row/index.d.ts +1 -2
- package/dist/fields/Row/index.d.ts.map +1 -1
- package/dist/fields/Row/index.js +2 -2
- package/dist/fields/Row/index.js.map +1 -1
- package/dist/fields/Row/index.scss +1 -5
- package/dist/fields/Select/Input.d.ts +3 -4
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js +0 -5
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts +1 -13
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +3 -3
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.d.ts +1 -1
- package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts +1 -9
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +24 -24
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/index.d.ts +3 -2
- package/dist/fields/Text/index.d.ts.map +1 -1
- package/dist/fields/Text/index.js +2 -2
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +3 -17
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/index.d.ts +3 -2
- package/dist/fields/Textarea/index.d.ts.map +1 -1
- package/dist/fields/Textarea/index.js +3 -3
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Textarea/types.d.ts +3 -13
- package/dist/fields/Textarea/types.d.ts.map +1 -1
- package/dist/fields/Textarea/types.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts +7 -4
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +2 -2
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/index.d.ts +1 -1
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js +20 -5
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/shared/index.d.ts +1 -25
- package/dist/fields/shared/index.d.ts.map +1 -1
- package/dist/fields/shared/index.js.map +1 -1
- package/dist/forms/Form/createNestedFieldPath.d.ts +1 -2
- package/dist/forms/Form/createNestedFieldPath.d.ts.map +1 -1
- package/dist/forms/Form/createNestedFieldPath.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +6 -3
- 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 -16
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +7 -7
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.d.ts +4 -3
- package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/types.d.ts +1 -2
- package/dist/forms/RenderFields/types.d.ts.map +1 -1
- package/dist/forms/RenderFields/types.js.map +1 -1
- package/dist/forms/RowLabel/Context/index.d.ts +2 -2
- package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
- package/dist/forms/RowLabel/Context/index.js.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +40 -19
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
- package/dist/forms/buildStateFromSchema/buildStateFromSchema.spec.js +1 -1
- package/dist/forms/buildStateFromSchema/buildStateFromSchema.spec.js.map +1 -1
- package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.d.ts +2 -2
- package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.d.ts.map +1 -1
- package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.js.map +1 -1
- package/dist/graphics/Account/index.d.ts.map +1 -1
- package/dist/graphics/Account/index.js +5 -1
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/hooks/useHotkey.js +1 -1
- package/dist/hooks/useHotkey.js.map +1 -1
- package/dist/hooks/useIntersect.js +1 -1
- package/dist/hooks/useIntersect.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +5 -1
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
- package/dist/hooks/useThrottledEffect.js +1 -1
- package/dist/hooks/useThrottledEffect.js.map +1 -1
- package/dist/hooks/useUseAsTitle.d.ts +1 -2
- package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
- package/dist/hooks/useUseAsTitle.js.map +1 -1
- package/dist/providers/Auth/index.d.ts +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +47 -76
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/actions.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/actions.js +3 -3
- package/dist/providers/ComponentMap/buildComponentMap/actions.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/collections.js +8 -8
- package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +1 -2
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.js +129 -95
- package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/index.js +2 -2
- package/dist/providers/ComponentMap/buildComponentMap/index.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts +3 -57
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.js.map +1 -1
- package/dist/providers/ComponentMap/index.d.ts +2 -1
- package/dist/providers/ComponentMap/index.d.ts.map +1 -1
- package/dist/providers/ComponentMap/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts +2 -2
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +58 -16
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/types.d.ts +6 -6
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/providers/ListInfo/index.d.ts +2 -2
- package/dist/providers/ListInfo/index.d.ts.map +1 -1
- package/dist/providers/ListInfo/index.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts +2 -2
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/UploadEdits/index.d.ts +12 -0
- package/dist/providers/UploadEdits/index.d.ts.map +1 -0
- package/dist/providers/UploadEdits/index.js +30 -0
- package/dist/providers/UploadEdits/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/utilities/api.d.ts +2 -2
- package/dist/utilities/api.d.ts.map +1 -1
- package/dist/utilities/api.js.map +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +3 -4
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/flattenFieldMap.d.ts +1 -1
- package/dist/utilities/flattenFieldMap.d.ts.map +1 -1
- package/dist/utilities/flattenFieldMap.js.map +1 -1
- package/dist/utilities/formatAdminURL.d.ts +8 -0
- package/dist/utilities/formatAdminURL.d.ts.map +1 -0
- package/dist/utilities/formatAdminURL.js +15 -0
- package/dist/utilities/formatAdminURL.js.map +1 -0
- package/package.json +4 -4
- package/dist/fields/Checkbox/types.d.ts +0 -12
- package/dist/fields/Checkbox/types.d.ts.map +0 -1
- package/dist/fields/Checkbox/types.js +0 -3
- package/dist/fields/Checkbox/types.js.map +0 -1
- package/dist/fields/Row/types.d.ts +0 -12
- package/dist/fields/Row/types.d.ts.map +0 -1
- package/dist/fields/Row/types.js +0 -3
- package/dist/fields/Row/types.js.map +0 -1
- package/dist/fields/Upload/types.d.ts +0 -10
- package/dist/fields/Upload/types.d.ts.map +0 -1
- package/dist/fields/Upload/types.js +0 -3
- package/dist/fields/Upload/types.js.map +0 -1
- package/dist/providers/FormQueryParams/index.d.ts +0 -13
- package/dist/providers/FormQueryParams/index.d.ts.map +0 -1
- package/dist/providers/FormQueryParams/index.js +0 -53
- package/dist/providers/FormQueryParams/index.js.map +0 -1
- package/dist/providers/FormQueryParams/types.d.ts +0 -16
- package/dist/providers/FormQueryParams/types.d.ts.map +0 -1
- package/dist/providers/FormQueryParams/types.js +0 -3
- package/dist/providers/FormQueryParams/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/Upload/index.tsx"],"sourcesContent":["'use client'\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Upload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { UploadFieldProps } from 'payload'\n\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { UploadInputProps } from './Input.js'\n\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { UploadInput } from './Input.js'\nimport './index.scss'\n\nexport { UploadFieldProps, UploadInput }\nexport type { UploadInputProps }\n\nconst UploadComponent: React.FC<UploadFieldProps> = (props) => {\n const {\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n label,\n labelProps,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n relationTo,\n required,\n style,\n validate,\n width,\n } = props\n\n const {\n collections,\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n\n const { permissions } = useAuth()\n\n const collection = collections.find((coll) => coll.slug === relationTo)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n\n // Checks if the user has permissions to create a new document in the related collection\n const canCreate = useMemo(() => {\n if (permissions?.collections && permissions.collections?.[relationTo]?.create) {\n if (permissions.collections[relationTo].create?.permission === true) {\n return true\n }\n }\n\n return false\n }, [relationTo, permissions])\n\n const { filterOptions, formInitializing, formProcessing, path, setValue, showError, value } =\n useField<string>({\n path: pathFromContext ?? pathFromProps,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formProcessing || formInitializing\n\n const onChange = useCallback(\n (incomingValue) => {\n const incomingID = incomingValue?.id || incomingValue\n setValue(incomingID)\n },\n [setValue],\n )\n\n if (collection.upload) {\n return (\n <UploadInput\n CustomDescription={CustomDescription}\n CustomError={CustomError}\n CustomLabel={CustomLabel}\n allowNewUpload={canCreate}\n api={apiRoute}\n className={className}\n collection={collection}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n filterOptions={filterOptions}\n label={label}\n labelProps={labelProps}\n onChange={onChange}\n path={path}\n readOnly={disabled}\n relationTo={relationTo}\n required={required}\n serverURL={serverURL}\n showError={showError}\n style={style}\n value={value}\n width={width}\n />\n )\n }\n\n return null\n}\n\nexport const UploadField = withCondition(UploadComponent)\n"],"names":["React","useCallback","useMemo","useFieldProps","useField","withCondition","useAuth","useConfig","UploadInput","UploadComponent","props","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","label","labelProps","path","pathFromProps","readOnly","readOnlyFromProps","relationTo","required","style","validate","width","collections","routes","api","apiRoute","serverURL","permissions","collection","find","coll","slug","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","canCreate","create","permission","filterOptions","formInitializing","formProcessing","setValue","showError","disabled","onChange","incomingValue","incomingID","id","upload","allowNewUpload","UploadField"],"mappings":"AAAA;;AAIA,OAAOA,SAASC,WAAW,EAAEC,OAAO,QAAQ,QAAO;AAInD,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,OAAO,QAAQ,gCAA+B;AACvD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,WAAW,QAAQ,aAAY;AACxC,OAAO,eAAc;AAErB,SAA2BA,WAAW,GAAE;AAGxC,MAAMC,kBAA8C,CAACC;IACnD,MAAM,EACJC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,MAAMC,aAAa,EACnBC,UAAUC,iBAAiB,EAC3BC,UAAU,EACVC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGjB;IAEJ,MAAM,EACJkB,WAAW,EACXC,QAAQ,EAAEC,KAAKC,QAAQ,EAAE,EACzBC,SAAS,EACV,GAAGzB;IAEJ,MAAM,EAAE0B,WAAW,EAAE,GAAG3B;IAExB,MAAM4B,aAAaN,YAAYO,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAKd;IAE5D,MAAMe,mBAAmBrC,YACvB,CAACsC,OAAOC;QACN,IAAI,OAAOd,aAAa,YAAY;YAClC,OAAOA,SAASa,OAAO;gBAAE,GAAGC,OAAO;gBAAEhB;YAAS;QAChD;IACF,GACA;QAACE;QAAUF;KAAS;IAGtB,MAAM,EAAEL,MAAMsB,eAAe,EAAEpB,UAAUqB,mBAAmB,EAAE,GAAGvC;IAEjE,wFAAwF;IACxF,MAAMwC,YAAYzC,QAAQ;QACxB,IAAI+B,aAAaL,eAAeK,YAAYL,WAAW,EAAE,CAACL,WAAW,EAAEqB,QAAQ;YAC7E,IAAIX,YAAYL,WAAW,CAACL,WAAW,CAACqB,MAAM,EAAEC,eAAe,MAAM;gBACnE,OAAO;YACT;QACF;QAEA,OAAO;IACT,GAAG;QAACtB;QAAYU;KAAY;IAE5B,MAAM,EAAEa,aAAa,EAAEC,gBAAgB,EAAEC,cAAc,EAAE7B,IAAI,EAAE8B,QAAQ,EAAEC,SAAS,EAAEX,KAAK,EAAE,GACzFnC,SAAiB;QACfe,MAAMsB,mBAAmBrB;QACzBM,UAAUY;IACZ;IAEF,MAAMa,WAAW7B,qBAAqBoB,uBAAuBM,kBAAkBD;IAE/E,MAAMK,WAAWnD,YACf,CAACoD;QACC,MAAMC,aAAaD,eAAeE,MAAMF;QACxCJ,SAASK;IACX,GACA;QAACL;KAAS;IAGZ,IAAIf,WAAWsB,MAAM,EAAE;QACrB,qBACE,KAAChD;YACCG,mBAAmBA;YACnBC,aAAaA;YACbC,aAAaA;YACb4C,gBAAgBd;YAChBb,KAAKC;YACLjB,WAAWA;YACXoB,YAAYA;YACZnB,kBAAkBA;YAClBC,YAAYA;YACZ8B,eAAeA;YACf7B,OAAOA;YACPC,YAAYA;YACZkC,UAAUA;YACVjC,MAAMA;YACNE,UAAU8B;YACV5B,YAAYA;YACZC,UAAUA;YACVQ,WAAWA;YACXkB,WAAWA;YACXzB,OAAOA;YACPc,OAAOA;YACPZ,OAAOA;;IAGb;IAEA,OAAO;AACT;AAEA,OAAO,MAAM+B,cAAcrD,cAAcI,iBAAgB"}
|
|
@@ -1,29 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Locale, SanitizedLocalizationConfig } from 'payload';
|
|
2
2
|
export declare const fieldBaseClass = "field-type";
|
|
3
|
-
export type FormFieldBase = {
|
|
4
|
-
AfterInput?: React.ReactNode;
|
|
5
|
-
BeforeInput?: React.ReactNode;
|
|
6
|
-
CustomDescription?: React.ReactNode;
|
|
7
|
-
CustomError?: React.ReactNode;
|
|
8
|
-
CustomLabel?: React.ReactNode;
|
|
9
|
-
className?: string;
|
|
10
|
-
custom?: Record<string, any>;
|
|
11
|
-
descriptionProps?: FieldDescriptionProps;
|
|
12
|
-
disabled?: boolean;
|
|
13
|
-
docPreferences?: DocumentPreferences;
|
|
14
|
-
errorProps?: ErrorProps;
|
|
15
|
-
label?: LabelProps['label'];
|
|
16
|
-
labelProps?: SanitizedLabelProps;
|
|
17
|
-
locale?: Locale;
|
|
18
|
-
localized?: boolean;
|
|
19
|
-
path?: string;
|
|
20
|
-
readOnly?: boolean;
|
|
21
|
-
required?: boolean;
|
|
22
|
-
rtl?: boolean;
|
|
23
|
-
style?: React.CSSProperties;
|
|
24
|
-
user?: User;
|
|
25
|
-
validate?: Validate;
|
|
26
|
-
};
|
|
27
3
|
/**
|
|
28
4
|
* Determines whether a field should be displayed as right-to-left (RTL) based on its configuration, payload's localization configuration and the adming user's currently enabled locale.
|
|
29
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/shared/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/shared/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAElE,eAAO,MAAM,cAAc,eAAe,CAAA;AAE1C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,cAAc,EACd,QAAQ,EACR,MAAM,EACN,kBAAkB,GACnB,EAAE;IACD,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;CACjD,WAiBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/shared/index.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/shared/index.tsx"],"sourcesContent":["import type { Locale, SanitizedLocalizationConfig } from 'payload'\n\nexport const fieldBaseClass = 'field-type'\n\n/**\n * Determines whether a field should be displayed as right-to-left (RTL) based on its configuration, payload's localization configuration and the adming user's currently enabled locale.\n\n * @returns Whether the field should be displayed as RTL.\n */\nexport function isFieldRTL({\n fieldLocalized,\n fieldRTL,\n locale,\n localizationConfig,\n}: {\n fieldLocalized: boolean\n fieldRTL: boolean\n locale: Locale\n localizationConfig?: SanitizedLocalizationConfig\n}) {\n const hasMultipleLocales =\n locale &&\n localizationConfig &&\n localizationConfig.locales &&\n localizationConfig.locales.length > 1\n\n const isCurrentLocaleDefaultLocale = locale?.code === localizationConfig?.defaultLocale\n\n return (\n (fieldRTL !== false &&\n locale?.rtl === true &&\n (fieldLocalized ||\n (!fieldLocalized && !hasMultipleLocales) || // If there is only one locale which is also rtl, that field is rtl too\n (!fieldLocalized && isCurrentLocaleDefaultLocale))) || // If the current locale is the default locale, but the field is not localized, that field is rtl too\n fieldRTL === true\n ) // If fieldRTL is true. This should be useful for when no localization is set at all in the payload config, but you still want fields to be rtl.\n}\n"],"names":["fieldBaseClass","isFieldRTL","fieldLocalized","fieldRTL","locale","localizationConfig","hasMultipleLocales","locales","length","isCurrentLocaleDefaultLocale","code","defaultLocale","rtl"],"mappings":"AAEA,OAAO,MAAMA,iBAAiB,aAAY;AAE1C;;;;CAIC,GACD,OAAO,SAASC,WAAW,EACzBC,cAAc,EACdC,QAAQ,EACRC,MAAM,EACNC,kBAAkB,EAMnB;IACC,MAAMC,qBACJF,UACAC,sBACAA,mBAAmBE,OAAO,IAC1BF,mBAAmBE,OAAO,CAACC,MAAM,GAAG;IAEtC,MAAMC,+BAA+BL,QAAQM,SAASL,oBAAoBM;IAE1E,OACE,AAACR,aAAa,SACZC,QAAQQ,QAAQ,QACfV,CAAAA,kBACE,CAACA,kBAAkB,CAACI,sBAAuB,uEAAuE;IAClH,CAACJ,kBAAkBO,4BAA4B,KAAO,qGAAqG;IAChKN,aAAa,KACb,gJAAgJ;;AACpJ"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { Field } from 'payload';
|
|
2
|
-
import type { MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js';
|
|
1
|
+
import type { Field, MappedField } from 'payload';
|
|
3
2
|
export declare const createNestedFieldPath: (parentPath: string, field: Field) => string;
|
|
4
3
|
export declare const createNestedClientFieldPath: (parentPath: string, field: MappedField) => string;
|
|
5
4
|
//# sourceMappingURL=createNestedFieldPath.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNestedFieldPath.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/createNestedFieldPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"createNestedFieldPath.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/createNestedFieldPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIjD,eAAO,MAAM,qBAAqB,eAAgB,MAAM,SAAS,KAAK,KAAG,MAcxE,CAAA;AAED,eAAO,MAAM,2BAA2B,eAAgB,MAAM,SAAS,WAAW,KAAG,MAYpF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/forms/Form/createNestedFieldPath.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\
|
|
1
|
+
{"version":3,"sources":["../../../src/forms/Form/createNestedFieldPath.ts"],"sourcesContent":["import type { Field, MappedField } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\nexport const createNestedFieldPath = (parentPath: string, field: Field): string => {\n if (parentPath) {\n if (fieldAffectsData(field)) {\n return `${parentPath}.${field.name}`\n }\n\n return parentPath\n }\n\n if (fieldAffectsData(field)) {\n return field.name\n }\n\n return ''\n}\n\nexport const createNestedClientFieldPath = (parentPath: string, field: MappedField): string => {\n if (parentPath) {\n if (field.isFieldAffectingData) {\n return `${parentPath}.${field.name}`\n }\n }\n\n if (field.isFieldAffectingData) {\n return field.name\n }\n\n return field.name\n}\n"],"names":["fieldAffectsData","createNestedFieldPath","parentPath","field","name","createNestedClientFieldPath","isFieldAffectingData"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ,iBAAgB;AAEjD,OAAO,MAAMC,wBAAwB,CAACC,YAAoBC;IACxD,IAAID,YAAY;QACd,IAAIF,iBAAiBG,QAAQ;YAC3B,OAAO,CAAC,EAAED,WAAW,CAAC,EAAEC,MAAMC,IAAI,CAAC,CAAC;QACtC;QAEA,OAAOF;IACT;IAEA,IAAIF,iBAAiBG,QAAQ;QAC3B,OAAOA,MAAMC,IAAI;IACnB;IAEA,OAAO;AACT,EAAC;AAED,OAAO,MAAMC,8BAA8B,CAACH,YAAoBC;IAC9D,IAAID,YAAY;QACd,IAAIC,MAAMG,oBAAoB,EAAE;YAC9B,OAAO,CAAC,EAAEJ,WAAW,CAAC,EAAEC,MAAMC,IAAI,CAAC,CAAC;QACtC;IACF;IAEA,IAAID,MAAMG,oBAAoB,EAAE;QAC9B,OAAOH,MAAMC,IAAI;IACnB;IAEA,OAAOD,MAAMC,IAAI;AACnB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AAAA,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":"AAAA,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,CA6W7E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ObjectIdImport from 'bson-objectid';
|
|
2
2
|
import { dequal } from 'dequal/lite'; // lite: no need for Map and Set support
|
|
3
|
-
import { deepCopyObject } from 'payload/shared';
|
|
3
|
+
import { deepCopyObject, deepCopyObjectSimple } from 'payload/shared';
|
|
4
4
|
import { flattenRows, separateRows } from './rows.js';
|
|
5
5
|
const ObjectId = ObjectIdImport.default || ObjectIdImport;
|
|
6
6
|
/**
|
|
@@ -213,10 +213,13 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
|
|
|
213
213
|
const rowsMetadata = [
|
|
214
214
|
...state[path].rows || []
|
|
215
215
|
];
|
|
216
|
-
const duplicateRowMetadata =
|
|
216
|
+
const duplicateRowMetadata = deepCopyObjectSimple(rowsMetadata[rowIndex]);
|
|
217
217
|
if (duplicateRowMetadata.id) duplicateRowMetadata.id = new ObjectId().toHexString();
|
|
218
218
|
const duplicateRowState = deepCopyObject(rows[rowIndex]);
|
|
219
|
-
if (duplicateRowState.id)
|
|
219
|
+
if (duplicateRowState.id) {
|
|
220
|
+
duplicateRowState.id.value = new ObjectId().toHexString();
|
|
221
|
+
duplicateRowState.id.initialValue = new ObjectId().toHexString();
|
|
222
|
+
}
|
|
220
223
|
// If there are subfields
|
|
221
224
|
if (Object.keys(duplicateRowState).length > 0) {
|
|
222
225
|
// Add new object containing subfield names to unflattenedRows array
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["import 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 { deepCopyObject } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\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 '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 = {}\n\n Object.entries(action.state).forEach(([path, field]) => {\n const oldField = state[path]\n const newField = field\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n })\n return newState\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) delete newState[action.path]\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(({ field, message }) => {\n newState[field] = {\n ...(newState[field] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = field.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: field,\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 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 }\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 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 '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 blockType: blockType || undefined,\n collapsed: false,\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 siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\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 '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 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path].rows || [])]\n\n const duplicateRowMetadata = deepCopyObject(rowsMetadata[rowIndex])\n if (duplicateRowMetadata.id) duplicateRowMetadata.id = new ObjectId().toHexString()\n\n const duplicateRowState = deepCopyObject(rows[rowIndex])\n if (duplicateRowState.id) duplicateRowState.id = new ObjectId().toHexString()\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // copy the row to move\n const copyOfMovingRow = rows[moveFromIndex]\n // delete the row by index\n rows.splice(moveFromIndex, 1)\n // insert row copyOfMovingRow back in\n rows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowStateCopy = [...(state[path]?.rows || [])]\n const movingRowState = { ...rowStateCopy[moveFromIndex] }\n rowStateCopy.splice(moveFromIndex, 1)\n rowStateCopy.splice(moveToIndex, 0, movingRowState)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n rows: rowStateCopy,\n },\n }\n\n return newState\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { collapsed, path, rowID, setDocFieldPreferences } = action\n\n const arrayState = state[path]\n\n const { collapsedRowIDs, matchedIndex } = state[path].rows.reduce(\n (acc, row, index) => {\n const isMatchingRow = row.id === rowID\n if (isMatchingRow) acc.matchedIndex = index\n\n if (!isMatchingRow && row.collapsed) acc.collapsedRowIDs.push(row.id)\n else if (isMatchingRow && collapsed) acc.collapsedRowIDs.push(row.id)\n\n return acc\n },\n {\n collapsedRowIDs: [],\n matchedIndex: undefined,\n },\n )\n\n if (matchedIndex > -1) {\n arrayState.rows[matchedIndex].collapsed = collapsed\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n }\n\n const newState = {\n ...state,\n [path]: {\n ...arrayState,\n },\n }\n\n return newState\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { collapsed, path, setDocFieldPreferences } = action\n\n const { collapsedRowIDs, rows } = state[path].rows.reduce(\n (acc, row) => {\n if (collapsed) acc.collapsedRowIDs.push(row.id)\n\n acc.rows.push({\n ...row,\n collapsed,\n })\n\n return acc\n },\n {\n collapsedRowIDs: [],\n rows: [],\n },\n )\n\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows,\n },\n }\n }\n\n default: {\n return state\n }\n }\n}\n"],"names":["ObjectIdImport","dequal","deepCopyObject","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","optimize","newState","Object","entries","forEach","path","field","oldField","newField","errorPaths","errors","message","initialValue","value","errorMessage","valid","segments","split","length","push","fieldErrorPath","parentPath","slice","join","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","key","rowIndex","remainingFields","rows","rowsMetadata","splice","disableFormData","blockType","rowIndexFromArgs","subFieldState","withNewRow","newRow","id","toHexString","undefined","collapsed","siblingRows","rowIndexArg","Math","max","min","duplicateRowMetadata","duplicateRowState","keys","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","rowID","setDocFieldPreferences","arrayState","collapsedRowIDs","matchedIndex","row","index","isMatchingRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["import 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 { deepCopyObject, deepCopyObjectSimple } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\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 '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 = {}\n\n Object.entries(action.state).forEach(([path, field]) => {\n const oldField = state[path]\n const newField = field\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n })\n return newState\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) delete newState[action.path]\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(({ field, message }) => {\n newState[field] = {\n ...(newState[field] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = field.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: field,\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 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 }\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 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 '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 blockType: blockType || undefined,\n collapsed: false,\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 siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\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 '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 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path].rows || [])]\n\n const duplicateRowMetadata = deepCopyObjectSimple(rowsMetadata[rowIndex])\n if (duplicateRowMetadata.id) duplicateRowMetadata.id = new ObjectId().toHexString()\n\n const duplicateRowState = deepCopyObject(rows[rowIndex])\n if (duplicateRowState.id) {\n duplicateRowState.id.value = new ObjectId().toHexString()\n duplicateRowState.id.initialValue = new ObjectId().toHexString()\n }\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // copy the row to move\n const copyOfMovingRow = rows[moveFromIndex]\n // delete the row by index\n rows.splice(moveFromIndex, 1)\n // insert row copyOfMovingRow back in\n rows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowStateCopy = [...(state[path]?.rows || [])]\n const movingRowState = { ...rowStateCopy[moveFromIndex] }\n rowStateCopy.splice(moveFromIndex, 1)\n rowStateCopy.splice(moveToIndex, 0, movingRowState)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n rows: rowStateCopy,\n },\n }\n\n return newState\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { collapsed, path, rowID, setDocFieldPreferences } = action\n\n const arrayState = state[path]\n\n const { collapsedRowIDs, matchedIndex } = state[path].rows.reduce(\n (acc, row, index) => {\n const isMatchingRow = row.id === rowID\n if (isMatchingRow) acc.matchedIndex = index\n\n if (!isMatchingRow && row.collapsed) acc.collapsedRowIDs.push(row.id)\n else if (isMatchingRow && collapsed) acc.collapsedRowIDs.push(row.id)\n\n return acc\n },\n {\n collapsedRowIDs: [],\n matchedIndex: undefined,\n },\n )\n\n if (matchedIndex > -1) {\n arrayState.rows[matchedIndex].collapsed = collapsed\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n }\n\n const newState = {\n ...state,\n [path]: {\n ...arrayState,\n },\n }\n\n return newState\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { collapsed, path, setDocFieldPreferences } = action\n\n const { collapsedRowIDs, rows } = state[path].rows.reduce(\n (acc, row) => {\n if (collapsed) acc.collapsedRowIDs.push(row.id)\n\n acc.rows.push({\n ...row,\n collapsed,\n })\n\n return acc\n },\n {\n collapsedRowIDs: [],\n rows: [],\n },\n )\n\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows,\n },\n }\n }\n\n default: {\n return state\n }\n }\n}\n"],"names":["ObjectIdImport","dequal","deepCopyObject","deepCopyObjectSimple","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","optimize","newState","Object","entries","forEach","path","field","oldField","newField","errorPaths","errors","message","initialValue","value","errorMessage","valid","segments","split","length","push","fieldErrorPath","parentPath","slice","join","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","key","rowIndex","remainingFields","rows","rowsMetadata","splice","disableFormData","blockType","rowIndexFromArgs","subFieldState","withNewRow","newRow","id","toHexString","undefined","collapsed","siblingRows","rowIndexArg","Math","max","min","duplicateRowMetadata","duplicateRowState","keys","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","rowID","setDocFieldPreferences","arrayState","collapsedRowIDs","matchedIndex","row","index","isMatchingRow"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"
|
|
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,EAEV,SAAS,EAGV,MAAM,YAAY,CAAA;AA4BnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA4lBpC,CAAA;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,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
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
|
|
3
|
+
import { dequal } from 'dequal/lite'; // lite: no need for Map and Set support
|
|
4
4
|
import { useRouter } from 'next/navigation.js';
|
|
5
5
|
import { serialize } from 'object-to-formdata';
|
|
6
6
|
import { getDataByPath as getDataByPathFunc, getSiblingData as getSiblingDataFunc, reduceFieldsToValues, wait } from 'payload/shared';
|
|
7
|
-
import * as qs from 'qs-esm';
|
|
8
7
|
import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
|
|
9
8
|
import { toast } from 'sonner';
|
|
10
9
|
import { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js';
|
|
@@ -12,7 +11,6 @@ import { useThrottledEffect } from '../../hooks/useThrottledEffect.js';
|
|
|
12
11
|
import { useAuth } from '../../providers/Auth/index.js';
|
|
13
12
|
import { useConfig } from '../../providers/Config/index.js';
|
|
14
13
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
15
|
-
import { useFormQueryParams } from '../../providers/FormQueryParams/index.js';
|
|
16
14
|
import { useLocale } from '../../providers/Locale/index.js';
|
|
17
15
|
import { useOperation } from '../../providers/Operation/index.js';
|
|
18
16
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
@@ -34,7 +32,6 @@ export const Form = (props)=>{
|
|
|
34
32
|
const { i18n, t } = useTranslation();
|
|
35
33
|
const { refreshCookie, user } = useAuth();
|
|
36
34
|
const operation = useOperation();
|
|
37
|
-
const { formQueryParams } = useFormQueryParams();
|
|
38
35
|
const config = useConfig();
|
|
39
36
|
const { routes: { api: apiRoute }, serverURL } = config;
|
|
40
37
|
const [disabled, setDisabled] = useState(disabledFromProps || false);
|
|
@@ -105,7 +102,7 @@ export const Form = (props)=>{
|
|
|
105
102
|
config
|
|
106
103
|
]);
|
|
107
104
|
const submit = useCallback(async (options = {}, e)=>{
|
|
108
|
-
const { action: actionArg, method: methodToUse = method, overrides = {}, skipValidation } = options;
|
|
105
|
+
const { action: actionArg = action, method: methodToUse = method, overrides = {}, skipValidation } = options;
|
|
109
106
|
if (disabled) {
|
|
110
107
|
if (e) {
|
|
111
108
|
e.preventDefault();
|
|
@@ -191,11 +188,8 @@ export const Form = (props)=>{
|
|
|
191
188
|
const formData = contextRef.current.createFormData(overrides);
|
|
192
189
|
try {
|
|
193
190
|
let res;
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
})}` : null);
|
|
197
|
-
if (actionEndpoint) {
|
|
198
|
-
res = await requests[methodToUse.toLowerCase()](actionEndpoint, {
|
|
191
|
+
if (typeof actionArg === 'string') {
|
|
192
|
+
res = await requests[methodToUse.toLowerCase()](actionArg, {
|
|
199
193
|
body: formData,
|
|
200
194
|
headers: {
|
|
201
195
|
'Accept-Language': i18n.language
|
|
@@ -300,8 +294,7 @@ export const Form = (props)=>{
|
|
|
300
294
|
router,
|
|
301
295
|
t,
|
|
302
296
|
i18n,
|
|
303
|
-
waitForAutocomplete
|
|
304
|
-
formQueryParams
|
|
297
|
+
waitForAutocomplete
|
|
305
298
|
]);
|
|
306
299
|
const getFields = useCallback(()=>contextRef.current.fields, []);
|
|
307
300
|
const getField = useCallback((path)=>contextRef.current.fields[path], []);
|
|
@@ -534,11 +527,8 @@ export const Form = (props)=>{
|
|
|
534
527
|
onChange,
|
|
535
528
|
modified
|
|
536
529
|
]);
|
|
537
|
-
const actionString = typeof action === 'string' ? `${action}${qs.stringify(formQueryParams, {
|
|
538
|
-
addQueryPrefix: true
|
|
539
|
-
})}` : '';
|
|
540
530
|
return /*#__PURE__*/ _jsx("form", {
|
|
541
|
-
action:
|
|
531
|
+
action: action,
|
|
542
532
|
className: classes,
|
|
543
533
|
method: method,
|
|
544
534
|
noValidate: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport {\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled: disabledFromProps,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n handleResponse,\n initialState, // fully formed initial field state\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { formQueryParams } = useFormQueryParams()\n\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n const [initializing, setInitializing] = useState(initializingFromProps)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if (typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n id,\n config,\n data,\n operation,\n siblingData: contextRef.current.getSiblingData(path),\n t,\n user,\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [id, user, operation, t, dispatchFields, config])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let successToast, errorToast\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableSuccessStatus || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) await wait(100)\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const data = {\n ...reduceFieldsToValues(fields, true),\n ...overrides,\n }\n\n onSubmit(fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n const actionEndpoint =\n actionArg ||\n (typeof action === 'string'\n ? `${action}${qs.stringify(formQueryParams, { addQueryPrefix: true })}`\n : null)\n\n if (actionEndpoint) {\n res = await requests[methodToUse.toLowerCase()](actionEndpoint, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) json = await res.json()\n if (res.status < 400) {\n if (typeof onSuccess === 'function') await onSuccess(json)\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n errorToast(json.message)\n\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n } catch (err) {\n console.error('Error submitting form', err)\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n fields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n formQueryParams,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const newState = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data,\n globalSlug,\n operation,\n schemaPath: collectionSlug || globalSlug,\n },\n serverURL,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [apiRoute, collectionSlug, dispatchFields, globalSlug, id, operation, serverURL],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const getFieldStateBySchemaPath = useCallback(\n async ({ data, schemaPath }) => {\n const fieldSchema = await getFormState({\n apiRoute,\n body: {\n collectionSlug,\n data,\n globalSlug,\n schemaPath,\n },\n serverURL,\n })\n return fieldSchema\n },\n [apiRoute, collectionSlug, globalSlug, serverURL],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'ADD_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') setDisabled(disabledFromProps)\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps)\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({ type: 'REPLACE_STATE', optimize: false, state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n useDebouncedEffect(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n revalidatedFormState = await onChangeFn({\n formState: revalidatedFormState,\n })\n }\n\n const { changed, newState } = mergeServerFormState(\n contextRef.current.fields || {},\n revalidatedFormState,\n )\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n }\n\n if (modified) void executeOnChange()\n },\n 150,\n // Make sure we trigger this whenever modified changes (not just when `fields` changes), otherwise we will miss merging server form state for the first form update/onChange. Here's why:\n // `fields` updates before `modified`, because setModified is in a setTimeout. So on the first change, modified is false, so we don't trigger the effect even though we should.\n [contextRef.current.fields, dispatchFields, onChange, modified],\n )\n\n const actionString =\n typeof action === 'string'\n ? `${action}${qs.stringify(formQueryParams, { addQueryPrefix: true })}`\n : ''\n\n return (\n <form\n action={method ? actionString : (action as string)}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"names":["dequal","useRouter","serialize","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","qs","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormQueryParams","useLocale","useOperation","useTranslation","requests","getFormState","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","globalSlug","action","beforeSubmit","children","className","disableSuccessStatus","disableValidationOnSubmit","disabled","disabledFromProps","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","formQueryParams","config","routes","api","apiRoute","serverURL","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","successToast","errorToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","every","formData","createFormData","res","actionEndpoint","stringify","addQueryPrefix","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","optimize","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","actionString","form","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload'\n\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport {\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled: disabledFromProps,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n handleResponse,\n initialState, // fully formed initial field state\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n const [initializing, setInitializing] = useState(initializingFromProps)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if (typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n id,\n config,\n data,\n operation,\n siblingData: contextRef.current.getSiblingData(path),\n t,\n user,\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [id, user, operation, t, dispatchFields, config])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg = action,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let successToast, errorToast\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableSuccessStatus || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) await wait(100)\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const data = {\n ...reduceFieldsToValues(fields, true),\n ...overrides,\n }\n\n onSubmit(fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) json = await res.json()\n if (res.status < 400) {\n if (typeof onSuccess === 'function') await onSuccess(json)\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n errorToast(json.message)\n\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n } catch (err) {\n console.error('Error submitting form', err)\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n fields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const newState = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data,\n globalSlug,\n operation,\n schemaPath: collectionSlug || globalSlug,\n },\n serverURL,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [apiRoute, collectionSlug, dispatchFields, globalSlug, id, operation, serverURL],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const getFieldStateBySchemaPath = useCallback(\n async ({ data, schemaPath }) => {\n const fieldSchema = await getFormState({\n apiRoute,\n body: {\n collectionSlug,\n data,\n globalSlug,\n schemaPath,\n },\n serverURL,\n })\n return fieldSchema\n },\n [apiRoute, collectionSlug, globalSlug, serverURL],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'ADD_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') setDisabled(disabledFromProps)\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps)\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({ type: 'REPLACE_STATE', optimize: false, state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n useDebouncedEffect(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n revalidatedFormState = await onChangeFn({\n formState: revalidatedFormState,\n })\n }\n\n const { changed, newState } = mergeServerFormState(\n contextRef.current.fields || {},\n revalidatedFormState,\n )\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n }\n\n if (modified) void executeOnChange()\n },\n 150,\n // Make sure we trigger this whenever modified changes (not just when `fields` changes), otherwise we will miss merging server form state for the first form update/onChange. Here's why:\n // `fields` updates before `modified`, because setModified is in a setTimeout. So on the first change, modified is false, so we don't trigger the effect even though we should.\n [contextRef.current.fields, dispatchFields, onChange, modified],\n )\n\n return (\n <form\n action={action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"names":["dequal","useRouter","serialize","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useTranslation","requests","getFormState","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","globalSlug","action","beforeSubmit","children","className","disableSuccessStatus","disableValidationOnSubmit","disabled","disabledFromProps","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","config","routes","api","apiRoute","serverURL","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","successToast","errorToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","every","formData","createFormData","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","stringify","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","optimize","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","form","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"mappings":"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"}
|
|
@@ -4,12 +4,7 @@ import type { Dispatch } from 'react';
|
|
|
4
4
|
export type Preferences = {
|
|
5
5
|
[key: string]: unknown;
|
|
6
6
|
};
|
|
7
|
-
export type FormProps =
|
|
8
|
-
action: (formData: FormData) => Promise<void>;
|
|
9
|
-
} | {
|
|
10
|
-
action?: string;
|
|
11
|
-
method?: 'DELETE' | 'GET' | 'PATCH' | 'POST';
|
|
12
|
-
}) & {
|
|
7
|
+
export type FormProps = {
|
|
13
8
|
beforeSubmit?: ((args: {
|
|
14
9
|
formState: FormState;
|
|
15
10
|
}) => Promise<FormState>)[];
|
|
@@ -42,7 +37,12 @@ export type FormProps = ({
|
|
|
42
37
|
uuid?: string;
|
|
43
38
|
validationOperation?: 'create' | 'update';
|
|
44
39
|
waitForAutocomplete?: boolean;
|
|
45
|
-
}
|
|
40
|
+
} & ({
|
|
41
|
+
action: (formData: FormData) => Promise<void>;
|
|
42
|
+
} | {
|
|
43
|
+
action?: string;
|
|
44
|
+
method?: 'DELETE' | 'GET' | 'PATCH' | 'POST';
|
|
45
|
+
});
|
|
46
46
|
export type SubmitOptions = {
|
|
47
47
|
action?: string;
|
|
48
48
|
method?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErC,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/forms/Form/types.ts"],"sourcesContent":["import type { Data, Field, FormField, FormState, User } from 'payload'\nimport type React from 'react'\nimport type { Dispatch } from 'react'\n\nexport type Preferences = {\n [key: string]: unknown\n}\n\nexport type FormProps =
|
|
1
|
+
{"version":3,"sources":["../../../src/forms/Form/types.ts"],"sourcesContent":["import type { Data, Field, FormField, FormState, User } from 'payload'\nimport type React from 'react'\nimport type { Dispatch } from 'react'\n\nexport type Preferences = {\n [key: string]: unknown\n}\n\nexport type FormProps = {\n beforeSubmit?: ((args: { formState: FormState }) => Promise<FormState>)[]\n children?: React.ReactNode\n className?: string\n disableSuccessStatus?: boolean\n /**\n * If you would like to solely leverage server-side validation on submit,\n * you can disable checks that the form makes before it submits\n */\n disableValidationOnSubmit?: boolean\n disabled?: boolean\n /**\n * By default, the form will get the field schema (not data) from the current document. If you pass this in, you can override that behavior.\n * This is very useful for sub-forms, where the form's field schema is not necessarily the field schema of the current document (e.g. for the Blocks\n * feature of the Lexical Rich Text field)\n */\n fields?: Field[]\n handleResponse?: (\n res: Response,\n successToast: (value: string) => void,\n errorToast: (value: string) => void,\n ) => void\n initialState?: FormState\n isInitializing?: boolean\n log?: boolean\n onChange?: ((args: { formState: FormState }) => Promise<FormState>)[]\n onSubmit?: (fields: FormState, data: Data) => void\n onSuccess?: (json: unknown) => Promise<void> | void\n redirect?: string\n submitted?: boolean\n uuid?: string\n validationOperation?: 'create' | 'update'\n waitForAutocomplete?: boolean\n} & (\n | {\n action: (formData: FormData) => Promise<void>\n }\n | {\n action?: string\n method?: 'DELETE' | 'GET' | 'PATCH' | 'POST'\n }\n)\n\nexport type SubmitOptions = {\n action?: string\n method?: string\n overrides?: Record<string, unknown>\n skipValidation?: boolean\n}\n\nexport type DispatchFields = React.Dispatch<any>\nexport type Submit = (\n options?: SubmitOptions,\n e?: React.FormEvent<HTMLFormElement>,\n) => Promise<void>\nexport type ValidateForm = () => Promise<boolean>\nexport type CreateFormData = (overrides?: any) => FormData\nexport type GetFields = () => FormState\nexport type GetField = (path: string) => FormField\nexport type GetData = () => Data\nexport type GetSiblingData = (path: string) => Data\nexport type GetDataByPath = <T = unknown>(path: string) => T\nexport type SetModified = (modified: boolean) => void\nexport type SetSubmitted = (submitted: boolean) => void\nexport type SetProcessing = (processing: boolean) => void\n\nexport type Reset = (data: unknown) => Promise<void>\n\nexport type REPLACE_STATE = {\n optimize?: boolean\n state: FormState\n type: 'REPLACE_STATE'\n}\n\nexport type REMOVE = {\n path: string\n type: 'REMOVE'\n}\n\nexport type MODIFY_CONDITION = {\n path: string\n result: boolean\n type: 'MODIFY_CONDITION'\n user: User\n}\n\nexport type UPDATE = {\n path: string\n type: 'UPDATE'\n} & Partial<FormField>\n\nexport type REMOVE_ROW = {\n path: string\n rowIndex: number\n type: 'REMOVE_ROW'\n}\n\nexport type ADD_ROW = {\n blockType?: string\n path: string\n rowIndex?: number\n subFieldState?: FormState\n type: 'ADD_ROW'\n}\n\nexport type REPLACE_ROW = {\n blockType?: string\n path: string\n rowIndex: number\n subFieldState?: FormState\n type: 'REPLACE_ROW'\n}\n\nexport type DUPLICATE_ROW = {\n path: string\n rowIndex: number\n type: 'DUPLICATE_ROW'\n}\n\nexport type MOVE_ROW = {\n moveFromIndex: number\n moveToIndex: number\n path: string\n type: 'MOVE_ROW'\n}\n\nexport type ADD_SERVER_ERRORS = {\n errors: {\n field: string\n message: string\n }[]\n type: 'ADD_SERVER_ERRORS'\n}\n\nexport type SET_ROW_COLLAPSED = {\n collapsed: boolean\n path: string\n rowID: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ROW_COLLAPSED'\n}\n\nexport type SET_ALL_ROWS_COLLAPSED = {\n collapsed: boolean\n path: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ALL_ROWS_COLLAPSED'\n}\n\nexport type FieldAction =\n | ADD_ROW\n | ADD_SERVER_ERRORS\n | DUPLICATE_ROW\n | MODIFY_CONDITION\n | MOVE_ROW\n | REMOVE\n | REMOVE_ROW\n | REPLACE_ROW\n | REPLACE_STATE\n | SET_ALL_ROWS_COLLAPSED\n | SET_ROW_COLLAPSED\n | UPDATE\n\nexport type FormFieldsContext = [FormState, Dispatch<FieldAction>]\n\nexport type Context = {\n addFieldRow: ({\n data,\n path,\n rowIndex,\n schemaPath,\n }: {\n data?: Data\n path: string\n /*\n * by default the new row will be added to the end of the list\n */\n rowIndex?: number\n schemaPath: string\n }) => Promise<void>\n buildRowErrors: () => void\n createFormData: CreateFormData\n disabled: boolean\n dispatchFields: Dispatch<FieldAction>\n /**\n * Form context fields may be outdated and should not be relied on. Instead, prefer `useFormFields`.\n */\n fields: FormState\n formRef: React.MutableRefObject<HTMLFormElement>\n getData: GetData\n getDataByPath: GetDataByPath\n getField: GetField\n getFields: GetFields\n getSiblingData: GetSiblingData\n initializing: boolean\n removeFieldRow: ({ path, rowIndex }: { path: string; rowIndex: number }) => void\n replaceFieldRow: ({\n data,\n path,\n rowIndex,\n schemaPath,\n }: {\n data?: Data\n path: string\n rowIndex: number\n schemaPath: string\n }) => Promise<void>\n replaceState: (state: FormState) => void\n reset: Reset\n setDisabled: (disabled: boolean) => void\n setModified: SetModified\n setProcessing: SetProcessing\n setSubmitted: SetSubmitted\n submit: Submit\n uuid?: string\n validateForm: ValidateForm\n}\n"],"names":[],"mappings":"AA6KA,WAmDC"}
|