@payloadcms/ui 3.49.0-canary.7 → 3.49.0
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/ColumnSelector/index.js +1 -1
- package/dist/elements/ColumnSelector/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +65 -47
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.scss +10 -0
- package/dist/elements/DeleteMany/index.d.ts +17 -2
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +162 -49
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.scss +13 -0
- package/dist/elements/DocumentControls/index.d.ts +3 -0
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +24 -5
- 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 +4 -2
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/Provider.d.ts +4 -0
- package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +1 -0
- 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 -0
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +3 -1
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.d.ts +2 -0
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +7 -3
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/EditMany/index.d.ts +7 -2
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +39 -34
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/FolderView/Cell/index.client.d.ts +3 -2
- package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
- package/dist/elements/FolderView/Cell/index.client.js +3 -1
- package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
- package/dist/elements/FolderView/Cell/index.server.d.ts.map +1 -1
- package/dist/elements/FolderView/Cell/index.server.js +2 -1
- package/dist/elements/FolderView/Cell/index.server.js.map +1 -1
- package/dist/elements/GroupByBuilder/index.d.ts +9 -0
- package/dist/elements/GroupByBuilder/index.d.ts.map +1 -0
- package/dist/elements/GroupByBuilder/index.js +112 -0
- package/dist/elements/GroupByBuilder/index.js.map +1 -0
- package/dist/elements/GroupByBuilder/index.scss +39 -0
- package/dist/elements/LeaveWithoutSaving/index.d.ts +6 -1
- package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
- package/dist/elements/LeaveWithoutSaving/index.js +69 -49
- package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +28 -4
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/index.scss +4 -2
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +34 -15
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts +9 -3
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/ListDrawer/index.d.ts +19 -0
- package/dist/elements/ListDrawer/index.d.ts.map +1 -1
- package/dist/elements/ListDrawer/index.js +19 -0
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts +7 -0
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -0
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +164 -0
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -0
- package/dist/elements/ListHeader/TitleActions/index.d.ts +1 -0
- package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/index.js +1 -0
- package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
- package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts +10 -0
- package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts.map +1 -0
- package/dist/elements/ListHeaderTabs/ByFolderPill.js +70 -0
- package/dist/elements/ListHeaderTabs/ByFolderPill.js.map +1 -0
- package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts +9 -0
- package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts.map +1 -0
- package/dist/elements/ListHeaderTabs/DefaultListPill.js +68 -0
- package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +1 -0
- package/dist/elements/ListHeaderTabs/TrashPill.d.ts +6 -0
- package/dist/elements/ListHeaderTabs/TrashPill.d.ts.map +1 -0
- package/dist/elements/ListHeaderTabs/TrashPill.js +53 -0
- package/dist/elements/ListHeaderTabs/TrashPill.js.map +1 -0
- package/dist/elements/{ListFolderPills → ListHeaderTabs}/index.scss +1 -2
- package/dist/elements/ListSelection/index.scss +1 -1
- package/dist/elements/PageControls/GroupByPageControls.d.ts +16 -0
- package/dist/elements/PageControls/GroupByPageControls.d.ts.map +1 -0
- package/dist/elements/PageControls/GroupByPageControls.js +83 -0
- package/dist/elements/PageControls/GroupByPageControls.js.map +1 -0
- package/dist/elements/PageControls/index.d.ts +17 -0
- package/dist/elements/PageControls/index.d.ts.map +1 -0
- package/dist/elements/PageControls/index.js +70 -0
- package/dist/elements/PageControls/index.js.map +1 -0
- package/dist/elements/PageControls/index.scss +40 -0
- package/dist/elements/Pagination/ClickableArrow/index.scss +3 -3
- package/dist/elements/Pagination/index.js +1 -1
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/Pagination/index.scss +4 -4
- package/dist/elements/PermanentlyDeleteButton/index.d.ts +14 -0
- package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -0
- package/dist/elements/PermanentlyDeleteButton/index.js +147 -0
- package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -0
- package/dist/elements/PublishMany/DrawerContent.d.ts +2 -0
- package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +7 -3
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/PublishMany/index.d.ts +6 -1
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +38 -33
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/ReactSelect/types.d.ts +1 -0
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +16 -11
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.d.ts.map +1 -1
- package/dist/elements/RenderTitle/index.js +1 -0
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/RestoreButton/index.d.ts +15 -0
- package/dist/elements/RestoreButton/index.d.ts.map +1 -0
- package/dist/elements/RestoreButton/index.js +171 -0
- package/dist/elements/RestoreButton/index.js.map +1 -0
- package/dist/elements/RestoreButton/index.scss +25 -0
- package/dist/elements/RestoreMany/index.d.ts +9 -0
- package/dist/elements/RestoreMany/index.d.ts.map +1 -0
- package/dist/elements/RestoreMany/index.js +193 -0
- package/dist/elements/RestoreMany/index.js.map +1 -0
- package/dist/elements/RestoreMany/index.scss +25 -0
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +6 -4
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/StickyToolbar/index.d.ts +6 -0
- package/dist/elements/StickyToolbar/index.d.ts.map +1 -0
- package/dist/elements/StickyToolbar/index.js +11 -0
- package/dist/elements/StickyToolbar/index.js.map +1 -0
- package/dist/elements/StickyToolbar/index.scss +27 -0
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +10 -8
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts +2 -0
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +4 -3
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/index.d.ts +1 -0
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js +5 -4
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/TrashBanner/index.d.ts +4 -0
- package/dist/elements/TrashBanner/index.d.ts.map +1 -0
- package/dist/elements/TrashBanner/index.js +37 -0
- package/dist/elements/TrashBanner/index.js.map +1 -0
- package/dist/elements/TrashBanner/index.scss +20 -0
- package/dist/elements/UnpublishMany/DrawerContent.d.ts +2 -0
- package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +6 -2
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/UnpublishMany/index.d.ts +6 -1
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +38 -33
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/WhereBuilder/index.js +3 -3
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +2 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +24 -22
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +1 -0
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +2 -0
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Select/Input.d.ts +1 -0
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js +48 -45
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +7 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
- package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.js +2 -0
- package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
- package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/types.d.ts +1 -0
- package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
- package/dist/icons/Trash/index.d.ts +6 -0
- package/dist/icons/Trash/index.d.ts.map +1 -0
- package/dist/icons/Trash/index.js +22 -0
- package/dist/icons/Trash/index.js.map +1 -0
- package/dist/icons/Trash/index.scss +6 -0
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +6 -0
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/types.d.ts +7 -0
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +24 -13
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
- package/dist/providers/ListQuery/mergeQuery.js +15 -1
- package/dist/providers/ListQuery/mergeQuery.js.map +1 -1
- package/dist/providers/ListQuery/types.d.ts +7 -3
- package/dist/providers/ListQuery/types.d.ts.map +1 -1
- package/dist/providers/ListQuery/types.js.map +1 -1
- package/dist/providers/Selection/index.d.ts +6 -2
- package/dist/providers/Selection/index.d.ts.map +1 -1
- package/dist/providers/Selection/index.js +37 -19
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +1 -0
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts +2 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js +4 -2
- package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +3 -2
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.js +4 -2
- package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +2 -0
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/buildTableState.js +5 -7
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
- package/dist/utilities/copyDataFromLocale.js +29 -19
- package/dist/utilities/copyDataFromLocale.js.map +1 -1
- package/dist/{elements/WhereBuilder/reduceFields.d.ts → utilities/reduceFieldsToOptions.d.ts} +3 -3
- package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -0
- package/dist/{elements/WhereBuilder/reduceFields.js → utilities/reduceFieldsToOptions.js} +11 -11
- package/dist/utilities/reduceFieldsToOptions.js.map +1 -0
- package/dist/utilities/renderTable.d.ts +9 -3
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +63 -22
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/CollectionFolder/ListSelection/index.d.ts.map +1 -1
- package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -1
- package/dist/views/CollectionFolder/index.d.ts.map +1 -1
- package/dist/views/CollectionFolder/index.js +15 -5
- package/dist/views/CollectionFolder/index.js.map +1 -1
- package/dist/views/Edit/Auth/index.js +5 -4
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.d.ts +1 -0
- package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.js +26 -15
- package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +59 -35
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/List/GroupByHeader/index.d.ts +10 -0
- package/dist/views/List/GroupByHeader/index.d.ts.map +1 -0
- package/dist/views/List/GroupByHeader/index.js +29 -0
- package/dist/views/List/GroupByHeader/index.js.map +1 -0
- package/dist/views/List/GroupByHeader/index.scss +17 -0
- package/dist/views/List/ListHeader/index.d.ts +4 -2
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +30 -10
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.d.ts +5 -1
- package/dist/views/List/ListSelection/index.d.ts.map +1 -1
- package/dist/views/List/ListSelection/index.js +53 -30
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +122 -170
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/List/index.scss +12 -35
- package/package.json +5 -5
- package/dist/elements/ListFolderPills/index.d.ts +0 -10
- package/dist/elements/ListFolderPills/index.d.ts.map +0 -1
- package/dist/elements/ListFolderPills/index.js +0 -97
- package/dist/elements/ListFolderPills/index.js.map +0 -1
- package/dist/elements/WhereBuilder/reduceFields.d.ts.map +0 -1
- package/dist/elements/WhereBuilder/reduceFields.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","hoistQueryParamsToAnd","transformColumnsToPreferences","React","Fragment","useCallback","useEffect","useState","Pill","useEffectEvent","ChevronIcon","useAuth","useConfig","ListQueryProvider","useServerFunctions","TableColumnsProvider","useTranslation","AnimateHeight","ColumnSelector","useDocumentDrawer","RelationshipProvider","AddNewButton","DrawerLink","RelationshipTablePagination","baseClass","RelationshipTable","props","AfterInput","allowCreate","BeforeInput","disableTable","field","fieldPath","filterOptions","initialData","initialDataFromProps","initialDrawerData","Label","parent","relationTo","Table","setTable","config","getEntityConfig","permissions","docs","Array","isArray","reduce","acc","doc","id","i18n","t","query","setQuery","openColumnSelector","setOpenColumnSelector","collectionConfig","collectionSlug","isPolymorphic","selectedCollection","setSelectedCollection","undefined","isLoadingTable","setIsLoadingTable","data","setData","columnState","setColumnState","getTableState","renderTable","newQuery","limit","defaultLimit","admin","pagination","sort","defaultSort","where","defaultColumns","map","accessor","active","newData","state","newColumnState","NewTable","columns","enableRowSelections","orderableFieldName","orderable","collection","name","renderRowTypes","tableAppearance","handleTableRender","DocumentDrawer","closeDrawer","isDrawerOpen","openDrawer","onDrawerSave","args","foundDocIndex","findIndex","withNewOrUpdatedDoc","newDocs","onDrawerCreate","onDrawerDelete","filter","canCreate","collections","create","memoizedQuery","useMemo","_jsxs","className","_jsx","buttonStyle","icon","label","onClick","direction","pillStyle","size","length","labels","plural","singular","modifySearchParams","onQueryChange","replaceAll","LinkedCellOverride","height","slug","onSave"],"sources":["../../../src/elements/RelationshipTable/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { Pill } from '../../elements/Pill/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { AddNewButton } from './AddNewButton.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport './index.scss'\nimport { RelationshipTablePagination } from './Pagination.js'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly fieldPath?: string\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n fieldPath,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n\n const { permissions } = useAuth()\n\n const [initialData] = useState<PaginatedDocs>(() => {\n if (initialDataFromProps) {\n return {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n return [...acc, doc]\n }, [])\n : [],\n }\n }\n })\n\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n const [openColumnSelector, setOpenColumnSelector] = useState(false)\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const isPolymorphic = Array.isArray(relationTo)\n\n const [selectedCollection, setSelectedCollection] = useState(\n isPolymorphic ? undefined : relationTo,\n )\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n const [data, setData] = useState<PaginatedDocs>(initialData)\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (docs?: PaginatedDocs['docs']) => {\n const newQuery: ListQuery = {\n limit: field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to CollectionPreferences['columns']\n const defaultColumns = field.admin.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n docs,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes: true,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin.defaultColumns,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const [DocumentDrawer, , { closeDrawer, isDrawerOpen, openDrawer }] = useDocumentDrawer({\n collectionSlug: selectedCollection,\n })\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n const foundDocIndex = data?.docs?.findIndex((doc) => doc.id === args.doc.id)\n let withNewOrUpdatedDoc: PaginatedDocs['docs'] = undefined\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = args.doc\n withNewOrUpdatedDoc = newDocs\n } else {\n withNewOrUpdatedDoc = [args.doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedDoc)\n },\n [data?.docs, renderTable],\n )\n\n const onDrawerCreate = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n closeDrawer()\n\n void onDrawerSave(args)\n },\n [closeDrawer, onDrawerSave],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n void renderTable(newDocs)\n },\n [data?.docs, renderTable],\n )\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[isPolymorphic ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (isPolymorphic && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, isPolymorphic])\n\n useEffect(() => {\n if (isPolymorphic && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n const memoizedQuery = React.useMemo(\n () => ({\n columns: transformColumnsToPreferences(columnState)?.map(({ accessor }) => accessor),\n limit: field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort ?? collectionConfig?.defaultSort,\n }),\n [field, columnState, collectionConfig],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n <AddNewButton\n allowCreate={allowCreate !== false}\n baseClass={baseClass}\n buttonStyle=\"none\"\n className={`${baseClass}__add-new${isPolymorphic ? '-polymorphic' : ' doc-drawer__toggler'}`}\n collections={config.collections}\n i18n={i18n}\n icon={isPolymorphic ? 'plus' : undefined}\n label={i18n.t('fields:addNew')}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={openColumnSelector}\n className={`${baseClass}__toggle-columns ${\n openColumnSelector ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon direction={openColumnSelector ? 'up' : 'down'} />}\n onClick={() => setOpenColumnSelector(!openColumnSelector)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n </div>\n </div>\n {BeforeInput}\n {isLoadingTable ? (\n <p>{t('general:loading')}</p>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t('general:noResults', {\n label: isPolymorphic\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n </p>\n <AddNewButton\n allowCreate={canCreate}\n baseClass={baseClass}\n collections={config.collections}\n i18n={i18n}\n label={i18n.t('general:createNewLabel', {\n label: isPolymorphic\n ? i18n.t('general:document')\n : getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n </div>\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n data={data}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`\n }\n query={memoizedQuery}\n >\n <TableColumnsProvider\n collectionSlug={isPolymorphic ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink onDrawerDelete={onDrawerDelete} onDrawerSave={onDrawerSave} />\n }\n >\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={openColumnSelector ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <div className={`${baseClass}__columns-inner`}>\n {collectionConfig && (\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n )}\n </div>\n </AnimateHeight>\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer initialData={initialDrawerData} onSave={onDrawerCreate} />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","hoistQueryParamsToAnd","transformColumnsToPreferences","React","Fragment","useCallback","useEffect","useState","Pill","useEffectEvent","ChevronIcon","useAuth","useConfig","ListQueryProvider","useServerFunctions","TableColumnsProvider","useTranslation","AnimateHeight","ColumnSelector","useDocumentDrawer","RelationshipProvider","AddNewButton","DrawerLink","RelationshipTablePagination","baseClass","RelationshipTable","props","AfterInput","allowCreate","BeforeInput","disableTable","field","fieldPath","filterOptions","initialData","initialDataFromProps","initialDrawerData","Label","parent","relationTo","Table","setTable","config","getEntityConfig","permissions","docs","Array","isArray","reduce","acc","doc","id","i18n","t","query","setQuery","openColumnSelector","setOpenColumnSelector","collectionConfig","collectionSlug","isPolymorphic","selectedCollection","setSelectedCollection","undefined","isLoadingTable","setIsLoadingTable","data","setData","columnState","setColumnState","getTableState","renderTable","newQuery","limit","defaultLimit","admin","pagination","sort","defaultSort","where","defaultColumns","map","accessor","active","newData","state","newColumnState","NewTable","columns","enableRowSelections","orderableFieldName","orderable","collection","name","renderRowTypes","tableAppearance","handleTableRender","DocumentDrawer","closeDrawer","isDrawerOpen","openDrawer","onDrawerSave","args","foundDocIndex","findIndex","withNewOrUpdatedData","newDocs","onDrawerCreate","onDrawerDelete","filter","canCreate","collections","create","memoizedListQuery","useMemo","_jsxs","className","_jsx","buttonStyle","icon","label","onClick","direction","pillStyle","size","length","labels","plural","singular","modifySearchParams","onQueryChange","replaceAll","LinkedCellOverride","height","slug","onSave"],"sources":["../../../src/elements/RelationshipTable/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { Pill } from '../../elements/Pill/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { AddNewButton } from './AddNewButton.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport './index.scss'\nimport { RelationshipTablePagination } from './Pagination.js'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly fieldPath?: string\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n fieldPath,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n\n const { permissions } = useAuth()\n\n const [initialData] = useState<PaginatedDocs>(() => {\n if (initialDataFromProps) {\n return {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n return [...acc, doc]\n }, [])\n : [],\n }\n }\n })\n\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n const [openColumnSelector, setOpenColumnSelector] = useState(false)\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const isPolymorphic = Array.isArray(relationTo)\n\n const [selectedCollection, setSelectedCollection] = useState(\n isPolymorphic ? undefined : relationTo,\n )\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n const [data, setData] = useState<PaginatedDocs>(initialData)\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (data?: PaginatedDocs) => {\n const newQuery: ListQuery = {\n limit: field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to CollectionPreferences['columns']\n const defaultColumns = field.admin.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n data,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes: true,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin.defaultColumns,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const [DocumentDrawer, , { closeDrawer, isDrawerOpen, openDrawer }] = useDocumentDrawer({\n collectionSlug: selectedCollection,\n })\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n const foundDocIndex = data?.docs?.findIndex((doc) => doc.id === args.doc.id)\n const withNewOrUpdatedData: PaginatedDocs = { docs: [] } as PaginatedDocs\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = args.doc\n withNewOrUpdatedData.docs = newDocs\n } else {\n withNewOrUpdatedData.docs = [args.doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedData)\n },\n [data?.docs, renderTable],\n )\n\n const onDrawerCreate = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n closeDrawer()\n\n void onDrawerSave(args)\n },\n [closeDrawer, onDrawerSave],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n\n void renderTable({\n ...data,\n docs: newDocs,\n })\n },\n [data, renderTable],\n )\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[isPolymorphic ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (isPolymorphic && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, isPolymorphic])\n\n useEffect(() => {\n if (isPolymorphic && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n const memoizedListQuery = React.useMemo(\n () => ({\n columns: transformColumnsToPreferences(columnState)?.map(({ accessor }) => accessor),\n limit: field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort ?? collectionConfig?.defaultSort,\n }),\n [columnState, field, collectionConfig],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n <AddNewButton\n allowCreate={allowCreate !== false}\n baseClass={baseClass}\n buttonStyle=\"none\"\n className={`${baseClass}__add-new${isPolymorphic ? '-polymorphic' : ' doc-drawer__toggler'}`}\n collections={config.collections}\n i18n={i18n}\n icon={isPolymorphic ? 'plus' : undefined}\n label={i18n.t('fields:addNew')}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={openColumnSelector}\n className={`${baseClass}__toggle-columns ${\n openColumnSelector ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon direction={openColumnSelector ? 'up' : 'down'} />}\n onClick={() => setOpenColumnSelector(!openColumnSelector)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n </div>\n </div>\n {BeforeInput}\n {isLoadingTable ? (\n <p>{t('general:loading')}</p>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t('general:noResults', {\n label: isPolymorphic\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n </p>\n <AddNewButton\n allowCreate={canCreate}\n baseClass={baseClass}\n collections={config.collections}\n i18n={i18n}\n label={i18n.t('general:createNewLabel', {\n label: isPolymorphic\n ? i18n.t('general:document')\n : getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n </div>\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n data={data}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`\n }\n query={memoizedListQuery}\n >\n <TableColumnsProvider\n collectionSlug={isPolymorphic ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink onDrawerDelete={onDrawerDelete} onDrawerSave={onDrawerSave} />\n }\n >\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={openColumnSelector ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <div className={`${baseClass}__columns-inner`}>\n {collectionConfig && (\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n )}\n </div>\n </AnimateHeight>\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer initialData={initialDrawerData} onSave={onDrawerCreate} />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RenderTitle/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RenderTitle/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAgClD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","Fragment","useDocumentInfo","useDocumentTitle","IDLabel","baseClass","RenderTitle","props","$","className","element","t0","fallback","title","titleFromProps","undefined","id","isInitializing","titleFromContext","idAsTitle","Tag","t1","EmptySpace","_jsx","children","t2","t3","filter","Boolean","join"],"sources":["../../../src/elements/RenderTitle/index.tsx"],"sourcesContent":["'use client'\nimport React, { Fragment } from 'react'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { IDLabel } from '../IDLabel/index.js'\nimport './index.scss'\n\nconst baseClass = 'render-title'\n\nexport type RenderTitleProps = {\n className?: string\n element?: React.ElementType\n fallback?: string\n fallbackToID?: boolean\n title?: string\n}\n\nexport const RenderTitle: React.FC<RenderTitleProps> = (props) => {\n const { className, element = 'h1', fallback, title: titleFromProps } = props\n\n const { id, isInitializing } = useDocumentInfo()\n const { title: titleFromContext } = useDocumentTitle()\n\n const title = titleFromProps || titleFromContext || fallback\n\n const idAsTitle = title === id\n\n const Tag = element\n\n // Render and invisible character to prevent layout shift when the title populates from context\n const EmptySpace = <Fragment> </Fragment>\n\n return (\n <Tag\n className={[className, baseClass, idAsTitle && `${baseClass}--has-id`]\n .filter(Boolean)\n .join(' ')}\n title={title}\n >\n {isInitializing ? (\n EmptySpace\n ) : (\n <Fragment>\n {idAsTitle ? <IDLabel className={`${baseClass}__id`} id={id} /> : title || EmptySpace}\n </Fragment>\n )}\n </Tag>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,SAASC,eAAe,QAAQ;AAChC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,OAAO,QAAQ;AACxB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAUlB,OAAO,MAAMC,WAAA,GAA0CC,KAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACrD;IAAAU,SAAA;IAAAC,OAAA,EAAAC,EAAA;IAAAC,QAAA;IAAAC,KAAA,EAAAC;EAAA,IAAuEP,KAAA;EAApD,MAAAG,OAAA,GAAAC,EAAc,KAAAI,SAAA,GAAJ,IAAI,GAAdJ,EAAc;EAEjC;IAAAK,EAAA;IAAAC;EAAA,IAA+Bf,eAAA;EAC/B;IAAAW,KAAA,EAAAK;EAAA,IAAoCf,gBAAA;EAEpC,MAAAU,KAAA,GAAcC,cAAA,IAAkBI,gBAAA,IAAoBN,QAAA;EAEpD,MAAAO,SAAA,GAAkBN,KAAA,KAAUG,EAAA;EAE5B,MAAAI,GAAA,GAAYV,OAAA;EAAA,IAAAW,EAAA;EAAA,IAAAb,CAAA,QAAAY,GAAA,IAAAZ,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAQ,EAAA,IAAAR,CAAA,QAAAW,SAAA,IAAAX,CAAA,QAAAS,cAAA,IAAAT,CAAA,QAAAK,KAAA;IAGZ,MAAAS,UAAA,GAAmBC,IAAA,CAAAtB,QAAA;MAAAuB,QAAA,EAAU;IAAA,C;IAIS,MAAAC,EAAA,GAAAN,SAAA,IAAa,GAAAd,SAAA,UAAsB;IAAA,IAAAqB,EAAA;IAAA,IAAAlB,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAiB,EAAA;MAA1DC,EAAA,IAACjB,SAAA,EAAAJ,SAAA,EAAsBoB,EAAmC,EAAAE,MAAA,CAAAC,OAC3D;MAAApB,CAAA,MAAAC,SAAA;MAAAD,CAAA,MAAAiB,EAAA;MAAAjB,CAAA,MAAAkB,EAAA;IAAA;MAAAA,EAAA,GAAAlB,CAAA;IAAA;IAFZa,EAAA,GAAAE,IAAA,CAACH,GAAA;MAAAX,SAAA,EACYiB,EACD,CAAAG,IAAA,CACF;
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","Fragment","useDocumentInfo","useDocumentTitle","IDLabel","baseClass","RenderTitle","props","$","className","element","t0","fallback","title","titleFromProps","undefined","id","isInitializing","titleFromContext","idAsTitle","Tag","t1","EmptySpace","_jsx","children","t2","t3","filter","Boolean","join"],"sources":["../../../src/elements/RenderTitle/index.tsx"],"sourcesContent":["'use client'\nimport React, { Fragment } from 'react'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { IDLabel } from '../IDLabel/index.js'\nimport './index.scss'\n\nconst baseClass = 'render-title'\n\nexport type RenderTitleProps = {\n className?: string\n element?: React.ElementType\n fallback?: string\n fallbackToID?: boolean\n title?: string\n}\n\nexport const RenderTitle: React.FC<RenderTitleProps> = (props) => {\n const { className, element = 'h1', fallback, title: titleFromProps } = props\n\n const { id, isInitializing } = useDocumentInfo()\n const { title: titleFromContext } = useDocumentTitle()\n\n const title = titleFromProps || titleFromContext || fallback\n\n const idAsTitle = title === id\n\n const Tag = element\n\n // Render and invisible character to prevent layout shift when the title populates from context\n const EmptySpace = <Fragment> </Fragment>\n\n return (\n <Tag\n className={[className, baseClass, idAsTitle && `${baseClass}--has-id`]\n .filter(Boolean)\n .join(' ')}\n data-doc-id={id}\n title={title}\n >\n {isInitializing ? (\n EmptySpace\n ) : (\n <Fragment>\n {idAsTitle ? <IDLabel className={`${baseClass}__id`} id={id} /> : title || EmptySpace}\n </Fragment>\n )}\n </Tag>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,SAASC,eAAe,QAAQ;AAChC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,OAAO,QAAQ;AACxB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAUlB,OAAO,MAAMC,WAAA,GAA0CC,KAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACrD;IAAAU,SAAA;IAAAC,OAAA,EAAAC,EAAA;IAAAC,QAAA;IAAAC,KAAA,EAAAC;EAAA,IAAuEP,KAAA;EAApD,MAAAG,OAAA,GAAAC,EAAc,KAAAI,SAAA,GAAJ,IAAI,GAAdJ,EAAc;EAEjC;IAAAK,EAAA;IAAAC;EAAA,IAA+Bf,eAAA;EAC/B;IAAAW,KAAA,EAAAK;EAAA,IAAoCf,gBAAA;EAEpC,MAAAU,KAAA,GAAcC,cAAA,IAAkBI,gBAAA,IAAoBN,QAAA;EAEpD,MAAAO,SAAA,GAAkBN,KAAA,KAAUG,EAAA;EAE5B,MAAAI,GAAA,GAAYV,OAAA;EAAA,IAAAW,EAAA;EAAA,IAAAb,CAAA,QAAAY,GAAA,IAAAZ,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAQ,EAAA,IAAAR,CAAA,QAAAW,SAAA,IAAAX,CAAA,QAAAS,cAAA,IAAAT,CAAA,QAAAK,KAAA;IAGZ,MAAAS,UAAA,GAAmBC,IAAA,CAAAtB,QAAA;MAAAuB,QAAA,EAAU;IAAA,C;IAIS,MAAAC,EAAA,GAAAN,SAAA,IAAa,GAAAd,SAAA,UAAsB;IAAA,IAAAqB,EAAA;IAAA,IAAAlB,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAiB,EAAA;MAA1DC,EAAA,IAACjB,SAAA,EAAAJ,SAAA,EAAsBoB,EAAmC,EAAAE,MAAA,CAAAC,OAC3D;MAAApB,CAAA,MAAAC,SAAA;MAAAD,CAAA,MAAAiB,EAAA;MAAAjB,CAAA,MAAAkB,EAAA;IAAA;MAAAA,EAAA,GAAAlB,CAAA;IAAA;IAFZa,EAAA,GAAAE,IAAA,CAACH,GAAA;MAAAX,SAAA,EACYiB,EACD,CAAAG,IAAA,CACF;MAAA,eACKb,EAAA;MAAAH,KAAA;MAAAW,QAAA,EAGZP,cAAA,GACCK,UAAA,GAEAC,IAAA,CAAAtB,QAAA;QAAAuB,QAAA,EACGL,SAAA,GAAYI,IAAA,CAAAnB,OAAA;UAAAK,SAAA,EAAoB,GAAAJ,SAAA,MAAkB;UAAAW;QAAA,C,IAAeH,KAAA,IAASS;MAAA,C;;;;;;;;;;;;SAXjFD,E;CAgBJ","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SanitizedCollectionConfig } from 'payload';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
export type Props = {
|
|
6
|
+
readonly buttonId?: string;
|
|
7
|
+
readonly collectionSlug: SanitizedCollectionConfig['slug'];
|
|
8
|
+
readonly id?: string;
|
|
9
|
+
readonly onRestore?: DocumentDrawerContextType['onRestore'];
|
|
10
|
+
readonly redirectAfterRestore?: boolean;
|
|
11
|
+
readonly singularLabel: SanitizedCollectionConfig['labels']['singular'];
|
|
12
|
+
readonly title?: string;
|
|
13
|
+
};
|
|
14
|
+
export declare const RestoreButton: React.FC<Props>;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RestoreButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOxD,OAAO,KAA0C,MAAM,OAAO,CAAA;AAG9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAW9E,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC,WAAW,CAAC,CAAA;IAC3D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0KzC,CAAA"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { useModal } from '@faceless-ui/modal';
|
|
5
|
+
import { getTranslation } from '@payloadcms/translations';
|
|
6
|
+
import { useRouter } from 'next/navigation.js';
|
|
7
|
+
import { formatAdminURL } from 'payload/shared';
|
|
8
|
+
import * as qs from 'qs-esm';
|
|
9
|
+
import React, { Fragment, useCallback, useState } from 'react';
|
|
10
|
+
import { toast } from 'sonner';
|
|
11
|
+
import { CheckboxInput } from '../../fields/Checkbox/Input.js';
|
|
12
|
+
import { useConfig } from '../../providers/Config/index.js';
|
|
13
|
+
import { useDocumentTitle } from '../../providers/DocumentTitle/index.js';
|
|
14
|
+
import { useRouteTransition } from '../../providers/RouteTransition/index.js';
|
|
15
|
+
import { useTranslation } from '../../providers/Translation/index.js';
|
|
16
|
+
import { requests } from '../../utilities/api.js';
|
|
17
|
+
import { Button } from '../Button/index.js';
|
|
18
|
+
import { ConfirmationModal } from '../ConfirmationModal/index.js';
|
|
19
|
+
import { Translation } from '../Translation/index.js';
|
|
20
|
+
import './index.scss';
|
|
21
|
+
const baseClass = 'restore-button';
|
|
22
|
+
export const RestoreButton = props => {
|
|
23
|
+
const {
|
|
24
|
+
id,
|
|
25
|
+
buttonId,
|
|
26
|
+
collectionSlug,
|
|
27
|
+
onRestore,
|
|
28
|
+
redirectAfterRestore = true,
|
|
29
|
+
singularLabel,
|
|
30
|
+
title: titleFromProps
|
|
31
|
+
} = props;
|
|
32
|
+
const {
|
|
33
|
+
config: {
|
|
34
|
+
routes: {
|
|
35
|
+
admin: adminRoute,
|
|
36
|
+
api
|
|
37
|
+
},
|
|
38
|
+
serverURL
|
|
39
|
+
},
|
|
40
|
+
getEntityConfig
|
|
41
|
+
} = useConfig();
|
|
42
|
+
const collectionConfig = getEntityConfig({
|
|
43
|
+
collectionSlug
|
|
44
|
+
});
|
|
45
|
+
const router = useRouter();
|
|
46
|
+
const {
|
|
47
|
+
i18n,
|
|
48
|
+
t
|
|
49
|
+
} = useTranslation();
|
|
50
|
+
const {
|
|
51
|
+
title
|
|
52
|
+
} = useDocumentTitle();
|
|
53
|
+
const {
|
|
54
|
+
startRouteTransition
|
|
55
|
+
} = useRouteTransition();
|
|
56
|
+
const {
|
|
57
|
+
openModal
|
|
58
|
+
} = useModal();
|
|
59
|
+
const modalSlug = `restore-${id}`;
|
|
60
|
+
const [restoreAsPublished, setRestoreAsPublished] = useState(false);
|
|
61
|
+
const addDefaultError = useCallback(() => {
|
|
62
|
+
toast.error(t('error:restoringTitle', {
|
|
63
|
+
title
|
|
64
|
+
}));
|
|
65
|
+
}, [t, title]);
|
|
66
|
+
const handleRestore = useCallback(async () => {
|
|
67
|
+
try {
|
|
68
|
+
const url = `${serverURL}${api}/${collectionSlug}?${qs.stringify({
|
|
69
|
+
trash: true,
|
|
70
|
+
where: {
|
|
71
|
+
and: [{
|
|
72
|
+
id: {
|
|
73
|
+
equals: id
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
deletedAt: {
|
|
77
|
+
exists: true
|
|
78
|
+
}
|
|
79
|
+
}]
|
|
80
|
+
}
|
|
81
|
+
})}`;
|
|
82
|
+
const body = {
|
|
83
|
+
deletedAt: null
|
|
84
|
+
};
|
|
85
|
+
// Only include _status if drafts are enabled
|
|
86
|
+
if (collectionConfig?.versions?.drafts) {
|
|
87
|
+
body._status = restoreAsPublished ? 'published' : 'draft';
|
|
88
|
+
}
|
|
89
|
+
const res = await requests.patch(url, {
|
|
90
|
+
body: JSON.stringify(body),
|
|
91
|
+
headers: {
|
|
92
|
+
'Accept-Language': i18n.language,
|
|
93
|
+
'Content-Type': 'application/json'
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
const json = await res.json();
|
|
97
|
+
if (res.status < 400) {
|
|
98
|
+
toast.success(t('general:titleRestored', {
|
|
99
|
+
label: getTranslation(singularLabel, i18n),
|
|
100
|
+
title
|
|
101
|
+
}) || json.message);
|
|
102
|
+
if (redirectAfterRestore) {
|
|
103
|
+
return startRouteTransition(() => router.push(formatAdminURL({
|
|
104
|
+
adminRoute,
|
|
105
|
+
path: `/collections/${collectionSlug}/${id}`
|
|
106
|
+
})));
|
|
107
|
+
}
|
|
108
|
+
if (typeof onRestore === 'function') {
|
|
109
|
+
await onRestore({
|
|
110
|
+
id,
|
|
111
|
+
collectionConfig
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (json.errors) {
|
|
117
|
+
json.errors.forEach(error => toast.error(error.message));
|
|
118
|
+
} else {
|
|
119
|
+
addDefaultError();
|
|
120
|
+
}
|
|
121
|
+
} catch (_err) {
|
|
122
|
+
addDefaultError();
|
|
123
|
+
}
|
|
124
|
+
}, [serverURL, api, collectionSlug, id, t, singularLabel, addDefaultError, i18n, title, router, adminRoute, redirectAfterRestore, onRestore, collectionConfig, startRouteTransition, restoreAsPublished]);
|
|
125
|
+
if (id) {
|
|
126
|
+
return /*#__PURE__*/_jsxs(Fragment, {
|
|
127
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
128
|
+
buttonStyle: "primary",
|
|
129
|
+
id: buttonId,
|
|
130
|
+
onClick: () => {
|
|
131
|
+
openModal(modalSlug);
|
|
132
|
+
},
|
|
133
|
+
children: t('general:restore')
|
|
134
|
+
}, buttonId), /*#__PURE__*/_jsx(ConfirmationModal, {
|
|
135
|
+
body: /*#__PURE__*/_jsxs(Fragment, {
|
|
136
|
+
children: [/*#__PURE__*/_jsx(Translation, {
|
|
137
|
+
elements: {
|
|
138
|
+
'1': ({
|
|
139
|
+
children
|
|
140
|
+
}) => /*#__PURE__*/_jsx("strong", {
|
|
141
|
+
children: children
|
|
142
|
+
})
|
|
143
|
+
},
|
|
144
|
+
i18nKey: collectionConfig?.versions?.drafts ? 'general:aboutToRestoreAsDraft' : 'general:aboutToRestore',
|
|
145
|
+
t: t,
|
|
146
|
+
variables: {
|
|
147
|
+
label: getTranslation(singularLabel, i18n),
|
|
148
|
+
title: titleFromProps || title || id
|
|
149
|
+
}
|
|
150
|
+
}), collectionConfig?.versions?.drafts && /*#__PURE__*/_jsx("div", {
|
|
151
|
+
className: `${baseClass}__checkbox`,
|
|
152
|
+
children: /*#__PURE__*/_jsx(CheckboxInput, {
|
|
153
|
+
checked: restoreAsPublished,
|
|
154
|
+
id: "restore-as-published",
|
|
155
|
+
label: t('general:restoreAsPublished'),
|
|
156
|
+
name: "restore-as-published",
|
|
157
|
+
onToggle: e => setRestoreAsPublished(e.target.checked)
|
|
158
|
+
})
|
|
159
|
+
})]
|
|
160
|
+
}),
|
|
161
|
+
className: baseClass,
|
|
162
|
+
confirmingLabel: t('general:restoring'),
|
|
163
|
+
heading: t('general:confirmRestoration'),
|
|
164
|
+
modalSlug: modalSlug,
|
|
165
|
+
onConfirm: handleRestore
|
|
166
|
+
})]
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","qs","React","Fragment","useCallback","useState","toast","CheckboxInput","useConfig","useDocumentTitle","useRouteTransition","useTranslation","requests","Button","ConfirmationModal","Translation","baseClass","RestoreButton","props","id","buttonId","collectionSlug","onRestore","redirectAfterRestore","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","router","i18n","t","startRouteTransition","openModal","modalSlug","restoreAsPublished","setRestoreAsPublished","addDefaultError","error","handleRestore","url","stringify","trash","where","and","equals","deletedAt","exists","body","versions","drafts","_status","res","patch","JSON","headers","language","json","status","success","label","message","push","path","errors","forEach","_err","_jsxs","_jsx","buttonStyle","onClick","elements","1","children","i18nKey","variables","className","checked","name","onToggle","e","target","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/RestoreButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'restore-button'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onRestore?: DocumentDrawerContextType['onRestore']\n readonly redirectAfterRestore?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const RestoreButton: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onRestore,\n redirectAfterRestore = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `restore-${id}`\n\n const [restoreAsPublished, setRestoreAsPublished] = useState(false)\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:restoringTitle', { title }))\n }, [t, title])\n\n const handleRestore = useCallback(async () => {\n try {\n const url = `${serverURL}${api}/${collectionSlug}?${qs.stringify({\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n })}`\n\n const body: Record<string, unknown> = {\n deletedAt: null,\n }\n\n // Only include _status if drafts are enabled\n if (collectionConfig?.versions?.drafts) {\n body._status = restoreAsPublished ? 'published' : 'draft'\n }\n\n const res = await requests.patch(url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleRestored', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterRestore) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${id}`,\n }),\n ),\n )\n }\n\n if (typeof onRestore === 'function') {\n await onRestore({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterRestore,\n onRestore,\n collectionConfig,\n startRouteTransition,\n restoreAsPublished,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"primary\"\n id={buttonId}\n key={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:restore')}\n </Button>\n <ConfirmationModal\n body={\n <Fragment>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey={\n collectionConfig?.versions?.drafts\n ? 'general:aboutToRestoreAsDraft'\n : 'general:aboutToRestore'\n }\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n {collectionConfig?.versions?.drafts && (\n <div className={`${baseClass}__checkbox`}>\n <CheckboxInput\n checked={restoreAsPublished}\n id=\"restore-as-published\"\n label={t('general:restoreAsPublished')}\n name=\"restore-as-published\"\n onToggle={(e) => setRestoreAsPublished(e.target.checked)}\n />\n </div>\n )}\n </Fragment>\n }\n className={baseClass}\n confirmingLabel={t('general:restoring')}\n heading={t('general:confirmRestoration')}\n modalSlug={modalSlug}\n onConfirm={handleRestore}\n />\n </Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@import '../../scss/styles.scss';
|
|
2
|
+
|
|
3
|
+
@layer payload-default {
|
|
4
|
+
.restore-button {
|
|
5
|
+
@include blur-bg;
|
|
6
|
+
display: flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
height: 100%;
|
|
10
|
+
|
|
11
|
+
&__toggle {
|
|
12
|
+
@extend %btn-reset;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
&__checkbox {
|
|
16
|
+
padding: calc(var(--base) * 0.5) 0;
|
|
17
|
+
|
|
18
|
+
.checkbox-input {
|
|
19
|
+
label {
|
|
20
|
+
padding-bottom: 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ClientCollectionConfig, ViewTypes } from 'payload';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import './index.scss';
|
|
4
|
+
export type Props = {
|
|
5
|
+
collection: ClientCollectionConfig;
|
|
6
|
+
viewType?: ViewTypes;
|
|
7
|
+
};
|
|
8
|
+
export declare const RestoreMany: React.FC<Props>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RestoreMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAOvE,OAAO,KAAK,MAAM,OAAO,CAAA;AAczB,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,EAAE,sBAAsB,CAAA;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+KvC,CAAA"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { useModal } from '@faceless-ui/modal';
|
|
5
|
+
import { getTranslation } from '@payloadcms/translations';
|
|
6
|
+
import { useRouter, useSearchParams } from 'next/navigation.js';
|
|
7
|
+
import { mergeListSearchAndWhere } from 'payload/shared';
|
|
8
|
+
import * as qs from 'qs-esm';
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import { toast } from 'sonner';
|
|
11
|
+
import { CheckboxInput } from '../../fields/Checkbox/Input.js';
|
|
12
|
+
import { useAuth } from '../../providers/Auth/index.js';
|
|
13
|
+
import { useConfig } from '../../providers/Config/index.js';
|
|
14
|
+
import { useLocale } from '../../providers/Locale/index.js';
|
|
15
|
+
import { useRouteCache } from '../../providers/RouteCache/index.js';
|
|
16
|
+
import { SelectAllStatus, useSelection } from '../../providers/Selection/index.js';
|
|
17
|
+
import { useTranslation } from '../../providers/Translation/index.js';
|
|
18
|
+
import { requests } from '../../utilities/api.js';
|
|
19
|
+
import { parseSearchParams } from '../../utilities/parseSearchParams.js';
|
|
20
|
+
import { ConfirmationModal } from '../ConfirmationModal/index.js';
|
|
21
|
+
import { ListSelectionButton } from '../ListSelection/index.js';
|
|
22
|
+
import './index.scss';
|
|
23
|
+
const confirmManyRestoreDrawerSlug = `confirm-restore-many-docs`;
|
|
24
|
+
const baseClass = 'restore-many';
|
|
25
|
+
export const RestoreMany = props => {
|
|
26
|
+
const {
|
|
27
|
+
collection: {
|
|
28
|
+
slug
|
|
29
|
+
} = {},
|
|
30
|
+
viewType
|
|
31
|
+
} = props;
|
|
32
|
+
const {
|
|
33
|
+
permissions
|
|
34
|
+
} = useAuth();
|
|
35
|
+
const {
|
|
36
|
+
config: {
|
|
37
|
+
collections,
|
|
38
|
+
routes,
|
|
39
|
+
serverURL
|
|
40
|
+
}
|
|
41
|
+
} = useConfig();
|
|
42
|
+
const {
|
|
43
|
+
code: locale
|
|
44
|
+
} = useLocale();
|
|
45
|
+
const router = useRouter();
|
|
46
|
+
const {
|
|
47
|
+
clearRouteCache
|
|
48
|
+
} = useRouteCache();
|
|
49
|
+
const searchParams = useSearchParams();
|
|
50
|
+
const {
|
|
51
|
+
count,
|
|
52
|
+
getSelectedIds,
|
|
53
|
+
selectAll,
|
|
54
|
+
toggleAll
|
|
55
|
+
} = useSelection();
|
|
56
|
+
const {
|
|
57
|
+
openModal
|
|
58
|
+
} = useModal();
|
|
59
|
+
const {
|
|
60
|
+
i18n,
|
|
61
|
+
t
|
|
62
|
+
} = useTranslation();
|
|
63
|
+
const [restoreAsPublished, setRestoreAsPublished] = React.useState(false);
|
|
64
|
+
const collectionPermissions = permissions?.collections?.[slug];
|
|
65
|
+
const hasUpdatePermission = collectionPermissions?.update;
|
|
66
|
+
if (selectAll === SelectAllStatus.None || !hasUpdatePermission || viewType !== 'trash') {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const selectingAll = selectAll === SelectAllStatus.AllAvailable;
|
|
70
|
+
const selectedIDs = !selectingAll ? getSelectedIds() : [];
|
|
71
|
+
const baseWhere = parseSearchParams(searchParams)?.where;
|
|
72
|
+
const finalWhere = {
|
|
73
|
+
and: [...(Array.isArray(baseWhere?.and) ? baseWhere.and : baseWhere ? [baseWhere] : []), {
|
|
74
|
+
deletedAt: {
|
|
75
|
+
exists: true
|
|
76
|
+
}
|
|
77
|
+
}]
|
|
78
|
+
};
|
|
79
|
+
const handleRestore = async () => {
|
|
80
|
+
const collectionConfig = collections.find(c => c.slug === slug);
|
|
81
|
+
if (!collectionConfig) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
let whereConstraint;
|
|
85
|
+
if (selectingAll) {
|
|
86
|
+
whereConstraint = finalWhere;
|
|
87
|
+
} else {
|
|
88
|
+
whereConstraint = {
|
|
89
|
+
and: [{
|
|
90
|
+
id: {
|
|
91
|
+
in: selectedIDs
|
|
92
|
+
}
|
|
93
|
+
}, {
|
|
94
|
+
deletedAt: {
|
|
95
|
+
exists: true
|
|
96
|
+
}
|
|
97
|
+
}]
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const url = `${serverURL}${routes.api}/${slug}${qs.stringify({
|
|
101
|
+
limit: 0,
|
|
102
|
+
locale,
|
|
103
|
+
trash: true,
|
|
104
|
+
where: mergeListSearchAndWhere({
|
|
105
|
+
collectionConfig,
|
|
106
|
+
search: parseSearchParams(searchParams)?.search,
|
|
107
|
+
where: whereConstraint
|
|
108
|
+
})
|
|
109
|
+
}, {
|
|
110
|
+
addQueryPrefix: true
|
|
111
|
+
})}`;
|
|
112
|
+
const body = {
|
|
113
|
+
deletedAt: null
|
|
114
|
+
};
|
|
115
|
+
// Only include _status if drafts are enabled
|
|
116
|
+
if (collectionConfig?.versions?.drafts) {
|
|
117
|
+
body._status = restoreAsPublished ? 'published' : 'draft';
|
|
118
|
+
}
|
|
119
|
+
const restoreManyResponse = await requests.patch(url, {
|
|
120
|
+
body: JSON.stringify(body),
|
|
121
|
+
headers: {
|
|
122
|
+
'Accept-Language': i18n.language,
|
|
123
|
+
'Content-Type': 'application/json'
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
try {
|
|
127
|
+
const {
|
|
128
|
+
plural,
|
|
129
|
+
singular
|
|
130
|
+
} = collectionConfig.labels;
|
|
131
|
+
const json = await restoreManyResponse.json();
|
|
132
|
+
const restoredDocs = json?.docs?.length || 0;
|
|
133
|
+
const successLabel = restoredDocs > 1 ? plural : singular;
|
|
134
|
+
if (restoreManyResponse.status < 400 || restoredDocs > 0) {
|
|
135
|
+
toast.success(t('general:restoredCountSuccessfully', {
|
|
136
|
+
count: restoredDocs,
|
|
137
|
+
label: getTranslation(successLabel, i18n)
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
if (json?.errors?.length > 0) {
|
|
141
|
+
toast.error(json.message, {
|
|
142
|
+
description: json.errors.map(e => e.message).join('\n')
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
} catch (err) {
|
|
146
|
+
toast.error(t('error:unknown'));
|
|
147
|
+
}
|
|
148
|
+
toggleAll();
|
|
149
|
+
router.replace(qs.stringify({
|
|
150
|
+
...parseSearchParams(searchParams),
|
|
151
|
+
page: selectingAll ? '1' : undefined
|
|
152
|
+
}, {
|
|
153
|
+
addQueryPrefix: true
|
|
154
|
+
}));
|
|
155
|
+
clearRouteCache();
|
|
156
|
+
};
|
|
157
|
+
const collectionConfig_0 = collections.find(({
|
|
158
|
+
slug: s
|
|
159
|
+
}) => s === slug);
|
|
160
|
+
const labelString = getTranslation(count === 1 ? collectionConfig_0.labels.singular : collectionConfig_0.labels.plural, i18n);
|
|
161
|
+
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
162
|
+
children: [/*#__PURE__*/_jsx(ListSelectionButton, {
|
|
163
|
+
"aria-label": t('general:restore'),
|
|
164
|
+
className: "restore-documents__toggle",
|
|
165
|
+
onClick: () => {
|
|
166
|
+
openModal(confirmManyRestoreDrawerSlug);
|
|
167
|
+
},
|
|
168
|
+
children: t('general:restore')
|
|
169
|
+
}), /*#__PURE__*/_jsx(ConfirmationModal, {
|
|
170
|
+
body: /*#__PURE__*/_jsxs(React.Fragment, {
|
|
171
|
+
children: [t(collectionConfig_0?.versions?.drafts ? 'general:aboutToRestoreAsDraftCount' : 'general:aboutToRestoreCount', {
|
|
172
|
+
count,
|
|
173
|
+
label: labelString
|
|
174
|
+
}), collectionConfig_0?.versions?.drafts && /*#__PURE__*/_jsx("div", {
|
|
175
|
+
className: `${baseClass}__checkbox`,
|
|
176
|
+
children: /*#__PURE__*/_jsx(CheckboxInput, {
|
|
177
|
+
checked: restoreAsPublished,
|
|
178
|
+
id: "restore-as-published-many",
|
|
179
|
+
label: t('general:restoreAsPublished'),
|
|
180
|
+
name: "restore-as-published-many",
|
|
181
|
+
onToggle: e_0 => setRestoreAsPublished(e_0.target.checked)
|
|
182
|
+
})
|
|
183
|
+
})]
|
|
184
|
+
}),
|
|
185
|
+
className: baseClass,
|
|
186
|
+
confirmingLabel: t('general:restoring'),
|
|
187
|
+
heading: t('general:confirmRestoration'),
|
|
188
|
+
modalSlug: confirmManyRestoreDrawerSlug,
|
|
189
|
+
onConfirm: handleRestore
|
|
190
|
+
})]
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","useSearchParams","mergeListSearchAndWhere","qs","React","toast","CheckboxInput","useAuth","useConfig","useLocale","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","parseSearchParams","ConfirmationModal","ListSelectionButton","confirmManyRestoreDrawerSlug","baseClass","RestoreMany","props","collection","slug","viewType","permissions","config","collections","routes","serverURL","code","locale","router","clearRouteCache","searchParams","count","getSelectedIds","selectAll","toggleAll","openModal","i18n","t","restoreAsPublished","setRestoreAsPublished","useState","collectionPermissions","hasUpdatePermission","update","None","selectingAll","AllAvailable","selectedIDs","baseWhere","where","finalWhere","and","Array","isArray","deletedAt","exists","handleRestore","collectionConfig","find","c","whereConstraint","id","in","url","api","stringify","limit","trash","search","addQueryPrefix","body","versions","drafts","_status","restoreManyResponse","patch","JSON","headers","language","plural","singular","labels","json","restoredDocs","docs","length","successLabel","status","success","label","errors","error","message","description","map","e","join","err","replace","page","undefined","s","labelString","_jsxs","Fragment","_jsx","className","onClick","checked","name","onToggle","target","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/RestoreMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ViewTypes, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport './index.scss'\n\nconst confirmManyRestoreDrawerSlug = `confirm-restore-many-docs`\n\nconst baseClass = 'restore-many'\n\nexport type Props = {\n collection: ClientCollectionConfig\n viewType?: ViewTypes\n}\n\nexport const RestoreMany: React.FC<Props> = (props) => {\n const { collection: { slug } = {}, viewType } = props\n\n const { permissions } = useAuth()\n const {\n config: { collections, routes, serverURL },\n } = useConfig()\n const { code: locale } = useLocale()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n const searchParams = useSearchParams()\n const { count, getSelectedIds, selectAll, toggleAll } = useSelection()\n const { openModal } = useModal()\n\n const { i18n, t } = useTranslation()\n\n const [restoreAsPublished, setRestoreAsPublished] = React.useState(false)\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission || viewType !== 'trash') {\n return null\n }\n\n const selectingAll = selectAll === SelectAllStatus.AllAvailable\n const selectedIDs = !selectingAll ? getSelectedIds() : []\n\n const baseWhere = parseSearchParams(searchParams)?.where as Where\n\n const finalWhere = {\n and: [\n ...(Array.isArray(baseWhere?.and) ? baseWhere.and : baseWhere ? [baseWhere] : []),\n { deletedAt: { exists: true } },\n ],\n }\n\n const handleRestore = async () => {\n const collectionConfig = collections.find((c) => c.slug === slug)\n if (!collectionConfig) {\n return\n }\n\n let whereConstraint: Where\n\n if (selectingAll) {\n whereConstraint = finalWhere\n } else {\n whereConstraint = {\n and: [{ id: { in: selectedIDs } }, { deletedAt: { exists: true } }],\n }\n }\n\n const url = `${serverURL}${routes.api}/${slug}${qs.stringify(\n {\n limit: 0,\n locale,\n trash: true, // Ensure trashed docs are returned\n where: mergeListSearchAndWhere({\n collectionConfig,\n search: parseSearchParams(searchParams)?.search as string,\n where: whereConstraint,\n }),\n },\n { addQueryPrefix: true },\n )}`\n\n const body: Record<string, unknown> = {\n deletedAt: null,\n }\n\n // Only include _status if drafts are enabled\n if (collectionConfig?.versions?.drafts) {\n body._status = restoreAsPublished ? 'published' : 'draft'\n }\n\n const restoreManyResponse = await requests.patch(url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n try {\n const { plural, singular } = collectionConfig.labels\n const json = await restoreManyResponse.json()\n\n const restoredDocs = json?.docs?.length || 0\n const successLabel = restoredDocs > 1 ? plural : singular\n\n if (restoreManyResponse.status < 400 || restoredDocs > 0) {\n toast.success(\n t('general:restoredCountSuccessfully', {\n count: restoredDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((e) => e.message).join('\\n'),\n })\n }\n } catch (err) {\n toast.error(t('error:unknown'))\n }\n\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectingAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n }\n\n const collectionConfig = collections.find(({ slug: s }) => s === slug)\n\n const labelString = getTranslation(\n count === 1 ? collectionConfig.labels.singular : collectionConfig.labels.plural,\n i18n,\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:restore')}\n className=\"restore-documents__toggle\"\n onClick={() => {\n openModal(confirmManyRestoreDrawerSlug)\n }}\n >\n {t('general:restore')}\n </ListSelectionButton>\n <ConfirmationModal\n body={\n <React.Fragment>\n {t(\n collectionConfig?.versions?.drafts\n ? 'general:aboutToRestoreAsDraftCount'\n : 'general:aboutToRestoreCount',\n {\n count,\n label: labelString,\n },\n )}\n {collectionConfig?.versions?.drafts && (\n <div className={`${baseClass}__checkbox`}>\n <CheckboxInput\n checked={restoreAsPublished}\n id=\"restore-as-published-many\"\n label={t('general:restoreAsPublished')}\n name=\"restore-as-published-many\"\n onToggle={(e) => setRestoreAsPublished(e.target.checked)}\n />\n </div>\n )}\n </React.Fragment>\n }\n className={baseClass}\n confirmingLabel={t('general:restoring')}\n heading={t('general:confirmRestoration')}\n modalSlug={confirmManyRestoreDrawerSlug}\n onConfirm={handleRestore}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|