@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":["c","_c","getFieldPermissions","React","Fragment","useCallback","useEffect","useMemo","useState","toast","Button","EmailAndUsernameFields","CheckboxField","ConfirmPasswordField","PasswordField","useFormFields","useFormModified","useAuth","useConfig","useDocumentInfo","useTranslation","APIKey","baseClass","Auth","props","$","className","collectionSlug","disableLocalStrategy","email","loginWithUsername","operation","readOnly","requirePassword","setValidateBeforeSubmit","useAPIKey","username","verify","permissions","changingPassword","setChangingPassword","enableAPIKey","_temp","dispatchFields","_temp2","modified","i18n","t","docPermissions","isEditing","isInitializing","config","t0","routes","t1","serverURL","api","showPasswordFields","showUnlock","hasPasswordFieldOverride","fields","hasLoginFieldOverride","passwordPermissions","field","name","type","parentName","create","update","hasEmailAndUsernameFields","requireEmail","allowEmailLogin","emailPermission","usernamePermission","enableFields","disabled","apiKeyPermissions","apiKeyReadOnly","enableAPIKeyReadOnly","canReadApiKey","read","t2","bb0","collection","collections","Boolean","unlock","undefined","hasPermissionToUnlock","t3","changingPassword_0","errorMessage","path","valid","handleChangePassword","t4","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","t5","t6","t7","filter","t8","value","_jsx","children","_jsxs","admin","label","schemaPath","enabled","t9","join","autoComplete","required","indexPath","parentPath","parentSchemaPath","buttonStyle","onClick","size","id","reducer"],"sources":["../../../../src/views/Edit/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport { getFieldPermissions } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { EmailAndUsernameFields } from '../../../elements/EmailAndUsername/index.js'\nimport { CheckboxField } from '../../../fields/Checkbox/index.js'\nimport { ConfirmPasswordField } from '../../../fields/ConfirmPassword/index.js'\nimport { PasswordField } from '../../../fields/Password/index.js'\nimport { useFormFields, useFormModified } from '../../../forms/Form/context.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { APIKey } from './APIKey.js'\nimport './index.scss'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const { permissions } = useAuth()\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { docPermissions, isEditing, isInitializing } = useDocumentInfo()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n let showPasswordFields = true\n let showUnlock = true\n const hasPasswordFieldOverride =\n typeof docPermissions.fields === 'object' && 'password' in docPermissions.fields\n const hasLoginFieldOverride =\n typeof docPermissions.fields === 'object' &&\n ('username' in docPermissions.fields || 'email' in docPermissions.fields)\n\n if (hasPasswordFieldOverride) {\n const { permissions: passwordPermissions } = getFieldPermissions({\n field: { name: 'password', type: 'text' },\n operation,\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (operation === 'create') {\n showPasswordFields =\n passwordPermissions === true ||\n (typeof passwordPermissions === 'object' && passwordPermissions.create)\n } else {\n showPasswordFields =\n passwordPermissions === true ||\n (typeof passwordPermissions === 'object' && passwordPermissions.update)\n }\n }\n\n if (hasLoginFieldOverride) {\n const hasEmailAndUsernameFields =\n loginWithUsername && (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin)\n\n const { operation: emailPermission } = getFieldPermissions({\n field: { name: 'email', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n const { operation: usernamePermission } = getFieldPermissions({\n field: { name: 'username', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (hasEmailAndUsernameFields) {\n showUnlock = usernamePermission || emailPermission\n } else if (loginWithUsername && !hasEmailAndUsernameFields) {\n showUnlock = usernamePermission\n } else {\n showUnlock = emailPermission\n }\n }\n\n const enableFields =\n (!disableLocalStrategy ||\n (typeof disableLocalStrategy === 'object' && disableLocalStrategy.enableFields === true)) &&\n (showUnlock || showPasswordFields)\n\n const disabled = readOnly || isInitializing\n\n const apiKeyPermissions =\n docPermissions?.fields === true ? true : docPermissions?.fields?.enableAPIKey\n\n const apiKeyReadOnly =\n readOnly ||\n apiKeyPermissions === true ||\n (apiKeyPermissions && typeof apiKeyPermissions === 'object' && !apiKeyPermissions?.update)\n\n const enableAPIKeyReadOnly =\n readOnly || (apiKeyPermissions !== true && !apiKeyPermissions?.update)\n\n const canReadApiKey = apiKeyPermissions === true || apiKeyPermissions?.read\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n const collection = permissions?.collections?.[collectionSlug]\n\n if (collection) {\n return Boolean('unlock' in collection ? collection.unlock : undefined)\n }\n\n return false\n }, [permissions, collectionSlug])\n\n const handleChangePassword = useCallback(\n (changingPassword: boolean) => {\n if (changingPassword) {\n setValidateBeforeSubmit(true)\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'confirm-password',\n valid: false,\n })\n } else {\n setValidateBeforeSubmit(false)\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(changingPassword)\n },\n [dispatchFields, t, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = `${serverURL}${api}/${collectionSlug}/unlock`\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n if (disableLocalStrategy && !enableFields && !useAPIKey) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {enableFields && (\n <React.Fragment>\n <EmailAndUsernameFields\n loginWithUsername={loginWithUsername}\n operation={operation}\n permissions={docPermissions?.fields}\n readOnly={readOnly}\n t={t}\n />\n {(changingPassword || requirePassword) && (!disableLocalStrategy || !enableFields) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n autoComplete=\"new-password\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n indexPath=\"\"\n parentPath=\"\"\n parentSchemaPath=\"\"\n path=\"password\"\n schemaPath=\"password\"\n />\n <ConfirmPasswordField disabled={readOnly} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => handleChangePassword(false)}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!changingPassword &&\n !requirePassword &&\n !disableLocalStrategy &&\n showPasswordFields && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"medium\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled || !showUnlock}\n onClick={() => void unlock()}\n size=\"medium\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n {canReadApiKey && (\n <Fragment>\n <CheckboxField\n field={{\n name: 'enableAPIKey',\n admin: { disabled, readOnly: enableAPIKeyReadOnly },\n label: t('authentication:enableAPIKey'),\n }}\n path=\"enableAPIKey\"\n schemaPath={`${collectionSlug}.enableAPIKey`}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={apiKeyReadOnly} />\n </Fragment>\n )}\n </div>\n )}\n {verify && isEditing && (\n <CheckboxField\n field={{\n name: '_verified',\n admin: { disabled, readOnly },\n label: t('authentication:verified'),\n }}\n path=\"_verified\"\n schemaPath={`${collectionSlug}._verified`}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","getFieldPermissions","React","Fragment","useCallback","useEffect","useMemo","useState","toast","Button","EmailAndUsernameFields","CheckboxField","ConfirmPasswordField","PasswordField","useFormFields","useFormModified","useAuth","useConfig","useDocumentInfo","useTranslation","APIKey","baseClass","Auth","props","$","className","collectionSlug","disableLocalStrategy","email","loginWithUsername","operation","readOnly","requirePassword","setValidateBeforeSubmit","useAPIKey","username","verify","permissions","changingPassword","setChangingPassword","enableAPIKey","_temp","dispatchFields","_temp2","modified","i18n","t","docPermissions","isEditing","isInitializing","isTrashed","config","t0","routes","t1","serverURL","api","showPasswordFields","showUnlock","hasPasswordFieldOverride","fields","hasLoginFieldOverride","passwordPermissions","field","name","type","parentName","create","update","hasEmailAndUsernameFields","requireEmail","allowEmailLogin","emailPermission","usernamePermission","enableFields","disabled","apiKeyPermissions","apiKeyReadOnly","enableAPIKeyReadOnly","canReadApiKey","read","t2","bb0","collection","collections","Boolean","unlock","undefined","hasPermissionToUnlock","t3","changingPassword_0","errorMessage","path","valid","handleChangePassword","t4","url","response","fetch","body","JSON","stringify","credentials","headers","language","method","status","success","error","t5","t6","t7","filter","t8","value","_jsx","children","_jsxs","admin","label","schemaPath","enabled","t9","join","autoComplete","required","indexPath","parentPath","parentSchemaPath","buttonStyle","onClick","size","id","reducer"],"sources":["../../../../src/views/Edit/Auth/index.tsx"],"sourcesContent":["'use client'\n\nimport { getFieldPermissions } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { EmailAndUsernameFields } from '../../../elements/EmailAndUsername/index.js'\nimport { CheckboxField } from '../../../fields/Checkbox/index.js'\nimport { ConfirmPasswordField } from '../../../fields/ConfirmPassword/index.js'\nimport { PasswordField } from '../../../fields/Password/index.js'\nimport { useFormFields, useFormModified } from '../../../forms/Form/context.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { APIKey } from './APIKey.js'\nimport './index.scss'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const { permissions } = useAuth()\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { docPermissions, isEditing, isInitializing, isTrashed } = useDocumentInfo()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n let showPasswordFields = true\n let showUnlock = true\n const hasPasswordFieldOverride =\n typeof docPermissions.fields === 'object' && 'password' in docPermissions.fields\n const hasLoginFieldOverride =\n typeof docPermissions.fields === 'object' &&\n ('username' in docPermissions.fields || 'email' in docPermissions.fields)\n\n if (hasPasswordFieldOverride) {\n const { permissions: passwordPermissions } = getFieldPermissions({\n field: { name: 'password', type: 'text' },\n operation,\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (operation === 'create') {\n showPasswordFields =\n passwordPermissions === true ||\n (typeof passwordPermissions === 'object' && passwordPermissions.create)\n } else {\n showPasswordFields =\n passwordPermissions === true ||\n (typeof passwordPermissions === 'object' && passwordPermissions.update)\n }\n }\n\n if (hasLoginFieldOverride) {\n const hasEmailAndUsernameFields =\n loginWithUsername && (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin)\n\n const { operation: emailPermission } = getFieldPermissions({\n field: { name: 'email', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n const { operation: usernamePermission } = getFieldPermissions({\n field: { name: 'username', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (hasEmailAndUsernameFields) {\n showUnlock = usernamePermission || emailPermission\n } else if (loginWithUsername && !hasEmailAndUsernameFields) {\n showUnlock = usernamePermission\n } else {\n showUnlock = emailPermission\n }\n }\n\n const enableFields =\n (!disableLocalStrategy ||\n (typeof disableLocalStrategy === 'object' && disableLocalStrategy.enableFields === true)) &&\n (showUnlock || showPasswordFields)\n\n const disabled = readOnly || isInitializing || isTrashed\n\n const apiKeyPermissions =\n docPermissions?.fields === true ? true : docPermissions?.fields?.enableAPIKey\n\n const apiKeyReadOnly =\n readOnly ||\n apiKeyPermissions === true ||\n (apiKeyPermissions && typeof apiKeyPermissions === 'object' && !apiKeyPermissions?.update)\n\n const enableAPIKeyReadOnly =\n readOnly || (apiKeyPermissions !== true && !apiKeyPermissions?.update)\n\n const canReadApiKey = apiKeyPermissions === true || apiKeyPermissions?.read\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n const collection = permissions?.collections?.[collectionSlug]\n\n if (collection) {\n return Boolean('unlock' in collection ? collection.unlock : undefined)\n }\n\n return false\n }, [permissions, collectionSlug])\n\n const handleChangePassword = useCallback(\n (changingPassword: boolean) => {\n if (changingPassword) {\n setValidateBeforeSubmit(true)\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'confirm-password',\n valid: false,\n })\n } else {\n setValidateBeforeSubmit(false)\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(changingPassword)\n },\n [dispatchFields, t, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = `${serverURL}${api}/${collectionSlug}/unlock`\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, serverURL, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n if (disableLocalStrategy && !enableFields && !useAPIKey) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {enableFields && (\n <React.Fragment>\n <EmailAndUsernameFields\n loginWithUsername={loginWithUsername}\n operation={operation}\n permissions={docPermissions?.fields}\n readOnly={readOnly || isTrashed}\n t={t}\n />\n {(changingPassword || requirePassword) && (!disableLocalStrategy || !enableFields) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n autoComplete=\"new-password\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n indexPath=\"\"\n parentPath=\"\"\n parentSchemaPath=\"\"\n path=\"password\"\n schemaPath=\"password\"\n />\n <ConfirmPasswordField disabled={readOnly || isTrashed} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n onClick={() => handleChangePassword(false)}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!changingPassword &&\n !requirePassword &&\n !disableLocalStrategy &&\n showPasswordFields && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"medium\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled || !showUnlock}\n onClick={() => void unlock()}\n size=\"medium\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n {canReadApiKey && (\n <Fragment>\n <CheckboxField\n field={{\n name: 'enableAPIKey',\n admin: { disabled, readOnly: enableAPIKeyReadOnly },\n label: t('authentication:enableAPIKey'),\n }}\n path=\"enableAPIKey\"\n schemaPath={`${collectionSlug}.enableAPIKey`}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={apiKeyReadOnly} />\n </Fragment>\n )}\n </div>\n )}\n {verify && isEditing && (\n <CheckboxField\n field={{\n name: '_verified',\n admin: { disabled, readOnly },\n label: t('authentication:verified'),\n }}\n path=\"_verified\"\n schemaPath={`${collectionSlug}._verified`}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ export declare const SetDocumentStepNav: React.FC<{
|
|
|
4
4
|
globalLabel?: SanitizedGlobalConfig['label'];
|
|
5
5
|
globalSlug?: SanitizedGlobalConfig['slug'];
|
|
6
6
|
id?: number | string;
|
|
7
|
+
isTrashed?: boolean;
|
|
7
8
|
pluralLabel?: SanitizedCollectionConfig['labels']['plural'];
|
|
8
9
|
useAsTitle?: SanitizedCollectionConfig['admin']['useAsTitle'];
|
|
9
10
|
view?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/SetDocumentStepNav/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAe/E,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC5C,UAAU,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC1C,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC3D,UAAU,CAAC,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/SetDocumentStepNav/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAe/E,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC5C,UAAU,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC1C,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC3D,UAAU,CAAC,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CA4GA,CAAA"}
|
|
@@ -11,11 +11,12 @@ import { useDocumentTitle } from '../../../providers/DocumentTitle/index.js';
|
|
|
11
11
|
import { useEntityVisibility } from '../../../providers/EntityVisibility/index.js';
|
|
12
12
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
13
13
|
export const SetDocumentStepNav = props => {
|
|
14
|
-
const $ = _c(
|
|
14
|
+
const $ = _c(21);
|
|
15
15
|
const {
|
|
16
16
|
id,
|
|
17
17
|
collectionSlug,
|
|
18
18
|
globalSlug,
|
|
19
|
+
isTrashed,
|
|
19
20
|
pluralLabel,
|
|
20
21
|
useAsTitle
|
|
21
22
|
} = props;
|
|
@@ -62,7 +63,7 @@ export const SetDocumentStepNav = props => {
|
|
|
62
63
|
} = t2;
|
|
63
64
|
let t3;
|
|
64
65
|
let t4;
|
|
65
|
-
if ($[4] !== adminRoute || $[5] !== collectionSlug || $[6] !== globalSlug || $[7] !== i18n || $[8] !== id || $[9] !== isEditing || $[10] !== isInitializing || $[11] !==
|
|
66
|
+
if ($[4] !== adminRoute || $[5] !== collectionSlug || $[6] !== globalSlug || $[7] !== i18n || $[8] !== id || $[9] !== isEditing || $[10] !== isInitializing || $[11] !== isTrashed || $[12] !== isVisible || $[13] !== pluralLabel || $[14] !== setStepNav || $[15] !== t || $[16] !== title || $[17] !== useAsTitle || $[18] !== view) {
|
|
66
67
|
t3 = () => {
|
|
67
68
|
const nav = [];
|
|
68
69
|
if (!isInitializing) {
|
|
@@ -74,12 +75,21 @@ export const SetDocumentStepNav = props => {
|
|
|
74
75
|
path: `/collections/${collectionSlug}`
|
|
75
76
|
}) : undefined
|
|
76
77
|
});
|
|
78
|
+
if (isTrashed) {
|
|
79
|
+
nav.push({
|
|
80
|
+
label: t("general:trash"),
|
|
81
|
+
url: isVisible ? formatAdminURL({
|
|
82
|
+
adminRoute,
|
|
83
|
+
path: `/collections/${collectionSlug}/trash`
|
|
84
|
+
}) : undefined
|
|
85
|
+
});
|
|
86
|
+
}
|
|
77
87
|
if (isEditing) {
|
|
78
88
|
nav.push({
|
|
79
89
|
label: useAsTitle && useAsTitle !== "id" && title || `${id}`,
|
|
80
90
|
url: isVisible ? formatAdminURL({
|
|
81
91
|
adminRoute,
|
|
82
|
-
path: `/collections/${collectionSlug}/${id}`
|
|
92
|
+
path: isTrashed ? `/collections/${collectionSlug}/trash/${id}` : `/collections/${collectionSlug}/${id}`
|
|
83
93
|
}) : undefined
|
|
84
94
|
});
|
|
85
95
|
} else {
|
|
@@ -106,7 +116,7 @@ export const SetDocumentStepNav = props => {
|
|
|
106
116
|
setStepNav(nav);
|
|
107
117
|
}
|
|
108
118
|
};
|
|
109
|
-
t4 = [setStepNav, isInitializing, isEditing, pluralLabel, id, useAsTitle, adminRoute, t, i18n, title, collectionSlug, globalSlug, view, isVisible];
|
|
119
|
+
t4 = [setStepNav, isInitializing, isEditing, pluralLabel, id, isTrashed, useAsTitle, adminRoute, t, i18n, title, collectionSlug, globalSlug, view, isVisible];
|
|
110
120
|
$[4] = adminRoute;
|
|
111
121
|
$[5] = collectionSlug;
|
|
112
122
|
$[6] = globalSlug;
|
|
@@ -114,18 +124,19 @@ export const SetDocumentStepNav = props => {
|
|
|
114
124
|
$[8] = id;
|
|
115
125
|
$[9] = isEditing;
|
|
116
126
|
$[10] = isInitializing;
|
|
117
|
-
$[11] =
|
|
118
|
-
$[12] =
|
|
119
|
-
$[13] =
|
|
120
|
-
$[14] =
|
|
121
|
-
$[15] =
|
|
122
|
-
$[16] =
|
|
123
|
-
$[17] =
|
|
124
|
-
$[18] =
|
|
125
|
-
$[19] =
|
|
127
|
+
$[11] = isTrashed;
|
|
128
|
+
$[12] = isVisible;
|
|
129
|
+
$[13] = pluralLabel;
|
|
130
|
+
$[14] = setStepNav;
|
|
131
|
+
$[15] = t;
|
|
132
|
+
$[16] = title;
|
|
133
|
+
$[17] = useAsTitle;
|
|
134
|
+
$[18] = view;
|
|
135
|
+
$[19] = t3;
|
|
136
|
+
$[20] = t4;
|
|
126
137
|
} else {
|
|
127
|
-
t3 = $[
|
|
128
|
-
t4 = $[
|
|
138
|
+
t3 = $[19];
|
|
139
|
+
t4 = $[20];
|
|
129
140
|
}
|
|
130
141
|
useEffect(t3, t4);
|
|
131
142
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","formatAdminURL","useEffect","useStepNav","useConfig","useDocumentInfo","useDocumentTitle","useEntityVisibility","useTranslation","SetDocumentStepNav","props","$","id","collectionSlug","globalSlug","pluralLabel","useAsTitle","view","undefined","isEditing","isInitializing","title","isEntityVisible","t0","isVisible","setStepNav","i18n","t","config","t1","routes","t2","admin","adminRoute","t3","t4","nav","push","label","url","path"],"sources":["../../../../src/views/Edit/SetDocumentStepNav/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport { useEffect } from 'react'\n\nimport type { StepNavItem } from '../../../elements/StepNav/index.js'\n\nimport { useStepNav } from '../../../elements/StepNav/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../../providers/DocumentTitle/index.js'\nimport { useEntityVisibility } from '../../../providers/EntityVisibility/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nexport const SetDocumentStepNav: React.FC<{\n collectionSlug?: SanitizedCollectionConfig['slug']\n globalLabel?: SanitizedGlobalConfig['label']\n globalSlug?: SanitizedGlobalConfig['slug']\n id?: number | string\n pluralLabel?: SanitizedCollectionConfig['labels']['plural']\n useAsTitle?: SanitizedCollectionConfig['admin']['useAsTitle']\n view?: string\n}> = (props) => {\n const { id, collectionSlug, globalSlug, pluralLabel, useAsTitle } = props\n\n const view: string | undefined = props?.view || undefined\n\n const { isEditing, isInitializing } = useDocumentInfo()\n const { title } = useDocumentTitle()\n\n const { isEntityVisible } = useEntityVisibility()\n const isVisible = isEntityVisible({ collectionSlug, globalSlug })\n\n const { setStepNav } = useStepNav()\n\n const { i18n, t } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n useEffect(() => {\n const nav: StepNavItem[] = []\n\n if (!isInitializing) {\n if (collectionSlug) {\n nav.push({\n label: getTranslation(pluralLabel, i18n),\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n })\n\n if (isEditing) {\n nav.push({\n label: (useAsTitle && useAsTitle !== 'id' && title) || `${id}`,\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${id}`,\n })\n : undefined,\n })\n } else {\n nav.push({\n label: t('general:createNew'),\n })\n }\n } else if (globalSlug) {\n nav.push({\n label: title,\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/globals/${globalSlug}`,\n })\n : undefined,\n })\n }\n\n if (view) {\n nav.push({\n label: view,\n })\n }\n\n setStepNav(nav)\n }\n }, [\n setStepNav,\n isInitializing,\n isEditing,\n pluralLabel,\n id,\n useAsTitle,\n adminRoute,\n t,\n i18n,\n title,\n collectionSlug,\n globalSlug,\n view,\n isVisible,\n ])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAI1B,SAASC,UAAU,QAAQ;AAC3B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,cAAc,QAAQ;AAE/B,OAAO,MAAMC,kBAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","getTranslation","formatAdminURL","useEffect","useStepNav","useConfig","useDocumentInfo","useDocumentTitle","useEntityVisibility","useTranslation","SetDocumentStepNav","props","$","id","collectionSlug","globalSlug","isTrashed","pluralLabel","useAsTitle","view","undefined","isEditing","isInitializing","title","isEntityVisible","t0","isVisible","setStepNav","i18n","t","config","t1","routes","t2","admin","adminRoute","t3","t4","nav","push","label","url","path"],"sources":["../../../../src/views/Edit/SetDocumentStepNav/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport { useEffect } from 'react'\n\nimport type { StepNavItem } from '../../../elements/StepNav/index.js'\n\nimport { useStepNav } from '../../../elements/StepNav/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../../providers/DocumentTitle/index.js'\nimport { useEntityVisibility } from '../../../providers/EntityVisibility/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nexport const SetDocumentStepNav: React.FC<{\n collectionSlug?: SanitizedCollectionConfig['slug']\n globalLabel?: SanitizedGlobalConfig['label']\n globalSlug?: SanitizedGlobalConfig['slug']\n id?: number | string\n isTrashed?: boolean\n pluralLabel?: SanitizedCollectionConfig['labels']['plural']\n useAsTitle?: SanitizedCollectionConfig['admin']['useAsTitle']\n view?: string\n}> = (props) => {\n const { id, collectionSlug, globalSlug, isTrashed, pluralLabel, useAsTitle } = props\n\n const view: string | undefined = props?.view || undefined\n\n const { isEditing, isInitializing } = useDocumentInfo()\n const { title } = useDocumentTitle()\n\n const { isEntityVisible } = useEntityVisibility()\n const isVisible = isEntityVisible({ collectionSlug, globalSlug })\n\n const { setStepNav } = useStepNav()\n\n const { i18n, t } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n useEffect(() => {\n const nav: StepNavItem[] = []\n\n if (!isInitializing) {\n if (collectionSlug) {\n // Collection label\n nav.push({\n label: getTranslation(pluralLabel, i18n),\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n })\n\n // Trash breadcrumb (if in trash view)\n if (isTrashed) {\n nav.push({\n label: t('general:trash'),\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n })\n : undefined,\n })\n }\n\n // Document label\n if (isEditing) {\n nav.push({\n label: (useAsTitle && useAsTitle !== 'id' && title) || `${id}`,\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: isTrashed\n ? `/collections/${collectionSlug}/trash/${id}`\n : `/collections/${collectionSlug}/${id}`,\n })\n : undefined,\n })\n } else {\n nav.push({\n label: t('general:createNew'),\n })\n }\n } else if (globalSlug) {\n nav.push({\n label: title,\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/globals/${globalSlug}`,\n })\n : undefined,\n })\n }\n\n // Fallback view (used for versions, previews, etc.)\n if (view) {\n nav.push({\n label: view,\n })\n }\n\n setStepNav(nav)\n }\n }, [\n setStepNav,\n isInitializing,\n isEditing,\n pluralLabel,\n id,\n isTrashed,\n useAsTitle,\n adminRoute,\n t,\n i18n,\n title,\n collectionSlug,\n globalSlug,\n view,\n isVisible,\n ])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,uBAAuB,EAAa,MAAM,SAAS,CAAA;AAI7E,OAAO,KAAsE,MAAM,OAAO,CAAA;AAiC1F,OAAO,cAAc,CAAA;AAOrB,wBAAgB,eAAe,CAAC,EAC9B,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,EAAE,YAAY,EACpB,cAAc,GACf,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,uBAAuB,EAAa,MAAM,SAAS,CAAA;AAI7E,OAAO,KAAsE,MAAM,OAAO,CAAA;AAiC1F,OAAO,cAAc,CAAA;AAOrB,wBAAgB,eAAe,CAAC,EAC9B,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,EAAE,YAAY,EACpB,cAAc,GACf,EAAE,uBAAuB,qBA2lBzB"}
|
package/dist/views/Edit/index.js
CHANGED
|
@@ -62,6 +62,7 @@ export function DefaultEditView({
|
|
|
62
62
|
disableLeaveWithoutSaving,
|
|
63
63
|
docPermissions,
|
|
64
64
|
documentIsLocked,
|
|
65
|
+
documentLockState,
|
|
65
66
|
getDocPermissions,
|
|
66
67
|
getDocPreferences,
|
|
67
68
|
globalSlug,
|
|
@@ -71,10 +72,12 @@ export function DefaultEditView({
|
|
|
71
72
|
initialState,
|
|
72
73
|
isEditing,
|
|
73
74
|
isInitializing,
|
|
75
|
+
isTrashed,
|
|
74
76
|
lastUpdateTime,
|
|
75
77
|
redirectAfterCreate,
|
|
76
78
|
redirectAfterDelete,
|
|
77
79
|
redirectAfterDuplicate,
|
|
80
|
+
redirectAfterRestore,
|
|
78
81
|
savedDocumentData,
|
|
79
82
|
setCurrentEditor,
|
|
80
83
|
setDocumentIsLocked,
|
|
@@ -87,6 +90,7 @@ export function DefaultEditView({
|
|
|
87
90
|
drawerSlug,
|
|
88
91
|
onDelete,
|
|
89
92
|
onDuplicate,
|
|
93
|
+
onRestore,
|
|
90
94
|
onSave: onSaveFromContext
|
|
91
95
|
} = useDocumentDrawerContext();
|
|
92
96
|
const isInDrawer = Boolean(drawerSlug);
|
|
@@ -153,11 +157,6 @@ export function DefaultEditView({
|
|
|
153
157
|
const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now());
|
|
154
158
|
const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds;
|
|
155
159
|
const isLockExpired = Date.now() > lockExpiryTime;
|
|
156
|
-
const documentLockStateRef = useRef({
|
|
157
|
-
hasShownLockedModal: false,
|
|
158
|
-
isLocked: false,
|
|
159
|
-
user: null
|
|
160
|
-
});
|
|
161
160
|
const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug]);
|
|
162
161
|
const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {
|
|
163
162
|
if (operation === 'create' && auth && !auth.disableLocalStrategy) {
|
|
@@ -165,25 +164,50 @@ export function DefaultEditView({
|
|
|
165
164
|
}
|
|
166
165
|
return false;
|
|
167
166
|
});
|
|
167
|
+
const nextHrefRef = React.useRef(null);
|
|
168
168
|
const handleDocumentLocking = useCallback(lockedState => {
|
|
169
169
|
setDocumentIsLocked(true);
|
|
170
|
-
const previousOwnerID = typeof
|
|
170
|
+
const previousOwnerID = typeof documentLockState.current?.user === 'object' ? documentLockState.current?.user?.id : documentLockState.current?.user;
|
|
171
171
|
if (lockedState) {
|
|
172
172
|
const lockedUserID = typeof lockedState.user === 'string' || typeof lockedState.user === 'number' ? lockedState.user : lockedState.user.id;
|
|
173
|
-
if (!
|
|
173
|
+
if (!documentLockState.current || lockedUserID !== previousOwnerID) {
|
|
174
174
|
if (previousOwnerID === user.id && lockedUserID !== user.id) {
|
|
175
175
|
setShowTakeOverModal(true);
|
|
176
|
-
|
|
176
|
+
documentLockState.current.hasShownLockedModal = true;
|
|
177
177
|
}
|
|
178
|
-
|
|
179
|
-
hasShownLockedModal:
|
|
178
|
+
documentLockState.current = {
|
|
179
|
+
hasShownLockedModal: documentLockState.current?.hasShownLockedModal || false,
|
|
180
180
|
isLocked: true,
|
|
181
181
|
user: lockedState.user
|
|
182
182
|
};
|
|
183
183
|
setCurrentEditor(lockedState.user);
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
}, [setCurrentEditor, setDocumentIsLocked, user?.id]);
|
|
186
|
+
}, [documentLockState, setCurrentEditor, setDocumentIsLocked, user?.id]);
|
|
187
|
+
const handlePrevent = useCallback(nextHref => {
|
|
188
|
+
nextHrefRef.current = nextHref;
|
|
189
|
+
}, []);
|
|
190
|
+
const handleLeaveConfirm = useCallback(async () => {
|
|
191
|
+
const lockUser = documentLockState.current?.user;
|
|
192
|
+
const isLockOwnedByCurrentUser = typeof lockUser === 'object' ? lockUser?.id === user?.id : lockUser === user?.id;
|
|
193
|
+
if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {
|
|
194
|
+
// Check where user is trying to go
|
|
195
|
+
const nextPath = nextHrefRef.current ? new URL(nextHrefRef.current).pathname : '';
|
|
196
|
+
const isInternalView = ['/preview', '/api', '/versions'].some(path => nextPath.includes(path));
|
|
197
|
+
// Only retain the lock if the user is still viewing the document
|
|
198
|
+
if (!isInternalView) {
|
|
199
|
+
if (isLockOwnedByCurrentUser) {
|
|
200
|
+
try {
|
|
201
|
+
await unlockDocument(id, collectionSlug ?? globalSlug);
|
|
202
|
+
setDocumentIsLocked(false);
|
|
203
|
+
setCurrentEditor(null);
|
|
204
|
+
} catch (err) {
|
|
205
|
+
console.error('Failed to unlock before leave', err);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}, [collectionSlug, documentIsLocked, documentLockState, globalSlug, id, isLockingEnabled, setCurrentEditor, setDocumentIsLocked, unlockDocument, user?.id]);
|
|
187
211
|
const onSave = useCallback(async json => {
|
|
188
212
|
const controller = handleAbortRef(abortOnSaveRef);
|
|
189
213
|
const document = json?.doc || json?.result;
|
|
@@ -259,10 +283,7 @@ export function DefaultEditView({
|
|
|
259
283
|
setEditSessionStartTime(currentTime);
|
|
260
284
|
}
|
|
261
285
|
const docPreferences_0 = await getDocPreferences();
|
|
262
|
-
const {
|
|
263
|
-
lockedState: lockedState_0,
|
|
264
|
-
state: state_0
|
|
265
|
-
} = await getFormState({
|
|
286
|
+
const result = await getFormState({
|
|
266
287
|
id,
|
|
267
288
|
collectionSlug,
|
|
268
289
|
docPermissions,
|
|
@@ -279,6 +300,13 @@ export function DefaultEditView({
|
|
|
279
300
|
signal: controller_0.signal,
|
|
280
301
|
updateLastEdited
|
|
281
302
|
});
|
|
303
|
+
if (!result) {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const {
|
|
307
|
+
lockedState: lockedState_0,
|
|
308
|
+
state: state_0
|
|
309
|
+
} = result;
|
|
282
310
|
if (isLockingEnabled) {
|
|
283
311
|
handleDocumentLocking(lockedState_0);
|
|
284
312
|
}
|
|
@@ -288,21 +316,9 @@ export function DefaultEditView({
|
|
|
288
316
|
// Clean up when the component unmounts or when the document is unlocked
|
|
289
317
|
useEffect(() => {
|
|
290
318
|
return () => {
|
|
291
|
-
if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {
|
|
292
|
-
// Only retain the lock if the user is still viewing the document
|
|
293
|
-
const shouldUnlockDocument = !['preview', 'api', 'versions'].some(path => window.location.pathname.includes(path));
|
|
294
|
-
if (shouldUnlockDocument) {
|
|
295
|
-
// Check if this user is still the current editor
|
|
296
|
-
if (typeof documentLockStateRef.current?.user === 'object' ? documentLockStateRef.current?.user?.id === user?.id : documentLockStateRef.current?.user === user?.id) {
|
|
297
|
-
void unlockDocument(id, collectionSlug ?? globalSlug);
|
|
298
|
-
setDocumentIsLocked(false);
|
|
299
|
-
setCurrentEditor(null);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
319
|
setShowTakeOverModal(false);
|
|
304
320
|
};
|
|
305
|
-
}, [
|
|
321
|
+
}, []);
|
|
306
322
|
useEffect(() => {
|
|
307
323
|
const abortOnChange = abortOnChangeRef.current;
|
|
308
324
|
const abortOnSave = abortOnSaveRef.current;
|
|
@@ -311,7 +327,7 @@ export function DefaultEditView({
|
|
|
311
327
|
abortAndIgnore(abortOnSave);
|
|
312
328
|
};
|
|
313
329
|
}, []);
|
|
314
|
-
const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && (typeof currentEditor === 'object' ? currentEditor.id !== user?.id : currentEditor !== user?.id) && !isReadOnlyForIncomingUser && !showTakeOverModal && !
|
|
330
|
+
const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && (typeof currentEditor === 'object' ? currentEditor.id !== user?.id : currentEditor !== user?.id) && !isReadOnlyForIncomingUser && !showTakeOverModal && !documentLockState.current?.hasShownLockedModal && !isLockExpired;
|
|
315
331
|
const isFolderCollection = config.folders && collectionSlug === config.folders?.slug;
|
|
316
332
|
return /*#__PURE__*/_jsx("main", {
|
|
317
333
|
className: [baseClass, (id || globalSlug) && `${baseClass}--is-editing`, globalSlug && `global-edit--${globalSlug}`, collectionSlug && `collection-edit--${collectionSlug}`, isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`].filter(Boolean).join(' '),
|
|
@@ -320,7 +336,7 @@ export function DefaultEditView({
|
|
|
320
336
|
children: /*#__PURE__*/_jsxs(Form, {
|
|
321
337
|
action: action,
|
|
322
338
|
className: `${baseClass}__form`,
|
|
323
|
-
disabled: isReadOnlyForIncomingUser || isInitializing || !hasSavePermission,
|
|
339
|
+
disabled: isReadOnlyForIncomingUser || isInitializing || !hasSavePermission || isTrashed,
|
|
324
340
|
disableValidationOnSubmit: !validateBeforeSubmit,
|
|
325
341
|
initialState: !isInitializing && initialState,
|
|
326
342
|
isDocumentForm: true,
|
|
@@ -342,7 +358,7 @@ export function DefaultEditView({
|
|
|
342
358
|
setIsReadOnlyForIncomingUser(true);
|
|
343
359
|
setShowTakeOverModal(false);
|
|
344
360
|
},
|
|
345
|
-
onTakeOver: () => handleTakeOver(id, collectionSlug, globalSlug, user, false, updateDocumentEditor, setCurrentEditor,
|
|
361
|
+
onTakeOver: () => handleTakeOver(id, collectionSlug, globalSlug, user, false, updateDocumentEditor, setCurrentEditor, documentLockState, isLockingEnabled),
|
|
346
362
|
updatedAt: lastUpdateTime,
|
|
347
363
|
user: currentEditor
|
|
348
364
|
}), isLockingEnabled && showTakeOverModal && /*#__PURE__*/_jsx(DocumentTakeOver, {
|
|
@@ -355,10 +371,14 @@ export function DefaultEditView({
|
|
|
355
371
|
setIsReadOnlyForIncomingUser(true);
|
|
356
372
|
setShowTakeOverModal(false);
|
|
357
373
|
}
|
|
358
|
-
}), !isReadOnlyForIncomingUser && preventLeaveWithoutSaving && /*#__PURE__*/_jsx(LeaveWithoutSaving, {
|
|
374
|
+
}), !isReadOnlyForIncomingUser && preventLeaveWithoutSaving && /*#__PURE__*/_jsx(LeaveWithoutSaving, {
|
|
375
|
+
onConfirm: handleLeaveConfirm,
|
|
376
|
+
onPrevent: handlePrevent
|
|
377
|
+
}), !isInDrawer && /*#__PURE__*/_jsx(SetDocumentStepNav, {
|
|
359
378
|
collectionSlug: collectionConfig?.slug,
|
|
360
379
|
globalSlug: globalConfig?.slug,
|
|
361
380
|
id: id,
|
|
381
|
+
isTrashed: isTrashed,
|
|
362
382
|
pluralLabel: collectionConfig?.labels?.plural,
|
|
363
383
|
useAsTitle: collectionConfig?.admin?.useAsTitle
|
|
364
384
|
}), /*#__PURE__*/_jsx(SetDocumentTitle, {
|
|
@@ -376,7 +396,7 @@ export function DefaultEditView({
|
|
|
376
396
|
SaveDraftButton
|
|
377
397
|
},
|
|
378
398
|
data: savedDocumentData,
|
|
379
|
-
disableActions: disableActions || isFolderCollection,
|
|
399
|
+
disableActions: disableActions || isFolderCollection || isTrashed,
|
|
380
400
|
disableCreate: disableCreate,
|
|
381
401
|
EditMenuItems: EditMenuItems,
|
|
382
402
|
hasPublishPermission: hasPublishPermission,
|
|
@@ -384,15 +404,18 @@ export function DefaultEditView({
|
|
|
384
404
|
id: id,
|
|
385
405
|
isEditing: isEditing,
|
|
386
406
|
isInDrawer: isInDrawer,
|
|
407
|
+
isTrashed: isTrashed,
|
|
387
408
|
onDelete: onDelete,
|
|
388
409
|
onDrawerCreateNew: clearDoc,
|
|
389
410
|
onDuplicate: onDuplicate,
|
|
411
|
+
onRestore: onRestore,
|
|
390
412
|
onSave: onSave,
|
|
391
|
-
onTakeOver: () => handleTakeOver(id, collectionSlug, globalSlug, user, true, updateDocumentEditor, setCurrentEditor,
|
|
413
|
+
onTakeOver: () => handleTakeOver(id, collectionSlug, globalSlug, user, true, updateDocumentEditor, setCurrentEditor, documentLockState, isLockingEnabled, setIsReadOnlyForIncomingUser),
|
|
392
414
|
permissions: docPermissions,
|
|
393
415
|
readOnlyForIncomingUser: isReadOnlyForIncomingUser,
|
|
394
416
|
redirectAfterDelete: redirectAfterDelete,
|
|
395
417
|
redirectAfterDuplicate: redirectAfterDuplicate,
|
|
418
|
+
redirectAfterRestore: redirectAfterRestore,
|
|
396
419
|
slug: collectionConfig?.slug || globalConfig?.slug,
|
|
397
420
|
user: currentEditor
|
|
398
421
|
}), /*#__PURE__*/_jsxs("div", {
|
|
@@ -430,7 +453,8 @@ export function DefaultEditView({
|
|
|
430
453
|
docPermissions: docPermissions,
|
|
431
454
|
fields: docConfig.fields,
|
|
432
455
|
forceSidebarWrap: isLivePreviewing,
|
|
433
|
-
|
|
456
|
+
isTrashed: isTrashed,
|
|
457
|
+
readOnly: isReadOnlyForIncomingUser || !hasSavePermission || isTrashed,
|
|
434
458
|
schemaPathSegments: schemaPathSegments
|
|
435
459
|
}), AfterDocument]
|
|
436
460
|
}), isLivePreviewEnabled && !isInDrawer && /*#__PURE__*/_jsx(LivePreviewWindow, {
|