@strapi/content-manager 5.42.1 → 5.43.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/admin/hooks/useDocumentActions.js +5 -5
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +6 -6
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.js +37 -19
- package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.mjs +38 -20
- package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +29 -4
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +10 -4
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +30 -20
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +30 -20
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +19 -0
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +19 -0
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +34 -9
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +34 -9
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +22 -5
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +26 -9
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +19 -8
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +19 -8
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +37 -25
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +38 -26
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js +3 -0
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +3 -0
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js +3 -2
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +3 -2
- package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
- package/dist/admin/services/documents.js +32 -7
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +32 -8
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/hooks/usePersistentQueryParams.d.ts +6 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +3 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +2 -0
- package/dist/admin/src/pages/ListConfiguration/ListConfigurationPage.d.ts +1 -1
- package/dist/admin/src/pages/ListView/components/TableCells/CellValue.d.ts +2 -1
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +22 -17
- package/dist/admin/src/services/homepage.d.ts +1 -1
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/translations/nl.json.js +180 -11
- package/dist/admin/translations/nl.json.js.map +1 -1
- package/dist/admin/translations/nl.json.mjs +180 -11
- package/dist/admin/translations/nl.json.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +32 -1
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +33 -2
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/routes/admin.js +21 -0
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +21 -0
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts +1 -0
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentActions.js","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n tours,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n Menu,\n ButtonProps,\n Tooltip,\n IconButton,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { Create, Publish } from '../../../../../shared/contracts/collection-types';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, useDocument } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { usePreviewContext } from '../../../preview/pages/Preview';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport {\n useGetDraftRelationCountQuery,\n useUpdateDocumentMutation,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n label: string;\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst connectRelationToParent = (\n parentDataToUpdate: AnyData | undefined,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n /*\n * Check if the fieldToConnect is already present in the parentDataToUpdate.\n * This happens in particular when in the parentDocument you have created\n * a new component without saving.\n */\n const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n const fieldToConnectPath = isFieldPresent\n ? fieldToConnect\n : // Compute the path to the parent object\n fieldToConnect.split('.').slice(0, -1).join('.');\n const fieldToConnectValue = isFieldPresent\n ? {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n }\n : {\n [fieldToConnect.split('.').pop()!]: {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n disconnect: [],\n },\n // In case the object was not present you need to pass the componentUID of the parent document\n __component: fieldToConnectUID,\n };\n const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n if (action.position === undefined) {\n return true;\n }\n\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('panel');\n });\n\n if (!primaryAction) {\n return null;\n }\n\n const addHintTooltip = (action: Action, children: React.ReactNode) => {\n return !action.disabled ? (\n <Tooltip\n label={formatMessage(\n {\n id: 'content-manager.containers.EditView.saveHint',\n defaultMessage: 'Ctrl / Cmd + Enter to {action}',\n },\n {\n action: action.label,\n }\n )}\n >\n <Flex width=\"100%\">{children}</Flex>\n </Tooltip>\n ) : (\n children\n );\n };\n\n const primaryActionContent = (\n <>\n <Flex flex={1} alignItems=\"stretch\" direction=\"column\">\n {primaryAction.label === 'Publish'\n ? addHintTooltip(\n primaryAction,\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n )\n : addHintTooltip(\n primaryAction,\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n buttonType=\"submit\"\n />\n )}\n </Flex>\n\n {restActions.length > 0 ? (\n <DocumentActionsMenu\n actions={restActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n />\n ) : null}\n </>\n );\n\n return (\n <Flex direction={{ initial: 'row', large: 'column' }} gap={2} alignItems=\"stretch\" width=\"100%\">\n <tours.contentManager.Publish>\n {isDesktop ? <Flex gap={2}>{primaryActionContent}</Flex> : primaryActionContent}\n </tours.contentManager.Publish>\n {secondaryAction ? (\n <Flex flex={1} order={{ initial: -1, large: 0 }} alignItems=\"stretch\" direction=\"column\">\n {secondaryAction.label === 'Publish' ? (\n <tours.contentManager.Publish>\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n </tours.contentManager.Publish>\n ) : (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n buttonType=\"submit\"\n />\n )}\n </Flex>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Action {\n buttonType?: 'button' | 'submit' | 'reset';\n}\n\nconst DocumentActionButton = ({ buttonType = 'button', ...action }: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: Action) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n type={buttonType}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.dialog?.variant ?? action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n actions: Action[];\n children?: React.ReactNode;\n label?: string;\n variant?: 'ghost' | 'tertiary';\n}\n\nconst DocumentActionsMenu = ({\n actions,\n children,\n label,\n variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n setIsOpen(false);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (!isDisabled) {\n setIsOpen(open);\n }\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={handleOpenChange}>\n <Menu.Trigger\n ref={triggerRef}\n disabled={isDisabled}\n label={\n label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })\n }\n tag={IconButton}\n icon={<More />}\n variant={variant}\n />\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\" maxWidth=\"25rem\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const {\n currentDocument: { schema },\n } = useDocumentContext('PublishAction');\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const { canPublish, canReadFields } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n );\n const { publish, isLoading } = useDocumentActions();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ rawQuery }] = useQueryParams();\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const formValues = useForm('PublishAction', ({ values }) => values);\n const initialValues = useForm('PublishAction', ({ initialValues }) => initialValues);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n const {\n currentDocument: { components },\n } = useDocumentContext('PublishAction');\n\n // need to discriminate if the publish is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('PublishAction', () => true, false);\n const fromRelationModal = relationContext != undefined;\n\n const dispatch = useRelationModal('PublishAction', (state) => state.dispatch);\n const fieldToConnect = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'PublishAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('PublishAction', (state) => state.rootDocumentMeta);\n\n const dispatchGuidedTour = useGuidedTour('PublishAction', (s) => s.dispatch);\n\n const { currentDocumentMeta } = useDocumentContext('PublishAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const idToPublish = currentDocumentMeta.documentId || id;\n\n React.useEffect(() => {\n if (isErrorDraftRelations) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('error.records.fetch-draft-relatons'),\n defaultMessage: 'An error occurred while fetching draft relations on this document.',\n }),\n });\n }\n }, [isErrorDraftRelations, toggleNotification, formatMessage]);\n\n React.useEffect(() => {\n const localDraftRelations = new Set();\n\n /**\n * Extracts draft relations from the provided data object.\n * It checks for a connect array of relations.\n * If a relation has a status of 'draft', its id is added to the localDraftRelations set.\n */\n const extractDraftRelations = (data: Omit<RelationsFormValue, 'disconnect'>) => {\n const relations = data.connect || [];\n relations.forEach((relation) => {\n if (relation.status === 'draft') {\n localDraftRelations.add(relation.id);\n }\n });\n };\n\n /**\n * Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.\n * If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.\n * It recursively calls itself for any non-null objects it contains.\n */\n const traverseAndExtract = (data: { [field: string]: any }) => {\n Object.entries(data).forEach(([key, value]) => {\n if (key === 'connect' && Array.isArray(value)) {\n extractDraftRelations({ connect: value });\n } else if (typeof value === 'object' && value !== null) {\n traverseAndExtract(value);\n }\n });\n };\n\n if (!documentId || modified) {\n traverseAndExtract(formValues);\n setLocalCountOfDraftRelations(localDraftRelations.size);\n }\n }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);\n\n React.useEffect(() => {\n if (!document || !document.documentId || isListView) {\n return;\n }\n\n const fetchDraftRelationsCount = async () => {\n const { data, error } = await countDraftRelations({\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n });\n\n if (error) {\n throw error;\n }\n\n if (data) {\n setServerCountOfDraftRelations(data.data);\n }\n };\n\n fetchDraftRelationsCount();\n }, [\n isListView,\n document,\n documentId,\n countDraftRelations,\n collectionType,\n model,\n currentDocumentMeta.params,\n ]);\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { getInitialFormValues } = useDoc();\n\n const isDocumentPublished =\n (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n document?.status !== 'modified';\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n const { data: filteredData } = handleInvisibleAttributes(transformData(formValues), {\n schema,\n components,\n });\n const { errors } = await validate(true, {\n ...filteredData,\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField =\n schema &&\n Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\n // For components, check if any of the component fields are readable\n if (attribute.type === 'component') {\n const componentFields = (canReadFields ?? []).filter((field) =>\n field.startsWith(`${fieldName}.`)\n );\n return componentFields.length === 0;\n }\n\n // For regular fields, check if the field itself is readable\n return attribute?.required && !(canReadFields ?? []).includes(fieldName);\n });\n\n if (hasUnreadableRequiredField) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error.unreadable-required-field',\n defaultMessage:\n 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.',\n }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n }\n return;\n }\n // filteredData is already used for validation, so use it for publishing as well\n const data = filteredData;\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n // Reset form with current values as new initial values (clears errors/submitting and sets modified to false)\n if ('data' in res) {\n resetForm(formValues);\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n }\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n if (idToPublish === 'create' && !fromRelationModal) {\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (fromRelationModal) {\n const newRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: metaDocumentToUpdate.collectionType,\n model: metaDocumentToUpdate.model,\n documentId:\n metaDocumentToUpdate.collectionType !== SINGLE_TYPES\n ? metaDocumentToUpdate.documentId\n : undefined,\n params: metaDocumentToUpdate.params,\n data: dataToUpdate,\n });\n\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: newRelation, shouldBypassConfirmation: true },\n });\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } finally {\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n const hasDraftRelations = enableDraftRelationsCount && totalDraftRelations > 0;\n\n // Auto-publish on CMD+Enter on macOS, and CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n if (!schema?.options?.draftAndPublish) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n if (!hasDraftRelations) {\n performPublish();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [hasDraftRelations, performPublish, schema?.options?.draftAndPublish]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n loading: isLoading,\n position: ['panel', 'preview', 'relation-modal'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const dispatchGuidedTour = useGuidedTour('UpdateAction', (s) => s.dispatch);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { create, update, clone, isLoading } = useDocumentActions();\n const {\n currentDocument: { components },\n } = useDocumentContext('UpdateAction');\n const [{ rawQuery }] = useQueryParams();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const { getInitialFormValues } = useDoc();\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const initialValues = useForm('UpdateAction', ({ initialValues }) => initialValues);\n const document = useForm('UpdateAction', ({ values }) => values);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n // need to discriminate if the update is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('UpdateAction', () => true, false);\n const relationalModalSchema = useRelationModal(\n 'UpdateAction',\n (state) => state.currentDocument.schema,\n false\n );\n const fieldToConnect = useRelationModal(\n 'UpdateAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'UpdateAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('UpdateAction', (state) => state.rootDocumentMeta);\n const fromRelationModal = relationContext != undefined;\n\n const { currentDocumentMeta } = useDocumentContext('UpdateAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { schema } = useDoc();\n\n const handleUpdate = async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n const { errors } = await validate(true, {\n status: 'draft',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(document)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm(document);\n }\n } else {\n const { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await create(\n {\n model,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n if (fromRelationModal) {\n const createdRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: parentDocumentMetaToUpdate.collectionType,\n model: parentDocumentMetaToUpdate.model,\n documentId:\n parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES\n ? parentDocumentMetaToUpdate.documentId\n : undefined,\n params: parentDocumentMetaToUpdate.params,\n data: {\n ...dataToUpdate,\n },\n });\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: createdRelation, shouldBypassConfirmation: true },\n });\n } else {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true, relative: 'path' }\n );\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n return {\n loading: isLoading,\n /**\n * Disabled when:\n * - the form is submitting\n * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n * - the active tab is the published tab\n */\n disabled: isSubmitting || (!modified && !isCloning) || activeTab === 'published',\n label: formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n }),\n onClick: handleUpdate,\n position: ['panel', 'preview', 'relation-modal'],\n };\n};\n\nUpdateAction.type = 'update';\nUpdateAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n KEEP: 'keep',\n DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n const { unpublish } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { toggleNotification } = useNotification();\n const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n const isDocumentModified = document?.status === 'modified';\n\n const handleChange = (value: string) => {\n setShouldKeepDraft(value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n };\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled:\n !canPublish ||\n activeTab === 'published' ||\n (document?.status !== 'published' && document?.status !== 'modified'),\n label: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n icon: <Cross />,\n onClick: async () => {\n /**\n * return if there's no id & we're in a collection type, or the status modified\n * for either collection type because we use a dialog to handle the process in\n * the latter case.\n */\n if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n if (!documentId) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n return;\n }\n\n await unpublish({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n dialog: isDocumentModified\n ? {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n <Flex width=\"100%\" direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n <Radio.Group\n defaultValue={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n name=\"discard-options\"\n aria-label={formatMessage({\n id: 'content-manager.actions.unpublish.dialog.radio-label',\n defaultMessage: 'Choose an option to unpublish the document.',\n })}\n onValueChange={handleChange}\n >\n <Radio.Item checked={shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.KEEP}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n defaultMessage: 'Keep draft',\n })}\n </Radio.Item>\n <Radio.Item checked={!shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n defaultMessage: 'Replace draft',\n })}\n </Radio.Item>\n </Radio.Group>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n await unpublish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n !shouldKeepDraft\n );\n },\n }\n : undefined,\n variant: 'danger',\n position: ['panel', 'table-row'],\n };\n};\n\nUnpublishAction.type = 'unpublish';\nUnpublishAction.position = 'panel';\n\nconst DiscardAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n const { discard, isLoading } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n label: formatMessage({\n id: 'content-manager.actions.discard.label',\n defaultMessage: 'Discard changes',\n }),\n icon: <Cross />,\n position: ['panel', 'table-row'],\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.discard.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n await discard({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n },\n };\n};\n\nDiscardAction.type = 'discard';\nDiscardAction.position = 'panel';\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DocumentActionButton, DEFAULT_ACTIONS };\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n"],"names":["connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","isFieldPresent","get","fieldToConnectPath","split","slice","join","fieldToConnectValue","connect","id","documentId","locale","pop","disconnect","__component","objectToConnect","set","merge","DocumentActions","actions","formatMessage","useIntl","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","addHintTooltip","children","disabled","_jsx","Tooltip","label","defaultMessage","Flex","width","primaryActionContent","_jsxs","_Fragment","flex","alignItems","direction","DocumentActionButton","variant","buttonType","length","DocumentActionsMenu","initial","large","gap","tours","contentManager","Publish","order","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","type","title","message","content","status","timeout","onClose","preventDefault","handleClose","Button","startIcon","icon","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","setIsOpen","isDisabled","every","triggerRef","useRef","handleOpenChange","open","Menu","Root","onOpenChange","Trigger","ref","tag","IconButton","More","Content","maxHeight","popoverPlacement","maxWidth","map","Item","onSelect","display","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","formValues","values","initialValues","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","size","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","performPublish","filteredData","handleInvisibleAttributes","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","componentFields","field","startsWith","required","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","options","draftAndPublish","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","count","UpdateAction","cloneMatch","create","update","clone","relationalModalSchema","handleUpdate","origin","relative","createdRelation","replace","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","WarningCircle","height","fill","Typography","textAlign","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","canUpdate","discard","DEFAULT_ACTIONS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DocumentActions.js","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n tours,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n Menu,\n ButtonProps,\n Tooltip,\n IconButton,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { Create, Publish } from '../../../../../shared/contracts/collection-types';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, useDocument } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { usePreviewContext } from '../../../preview/pages/Preview';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport {\n useGetDraftRelationCountQuery,\n useUpdateDocumentMutation,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n label: string;\n type?: 'publish' | 'update' | 'unpublish' | 'discard';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst connectRelationToParent = (\n parentDataToUpdate: AnyData | undefined,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n /*\n * Check if the fieldToConnect is already present in the parentDataToUpdate.\n * This happens in particular when in the parentDocument you have created\n * a new component without saving.\n */\n const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n const fieldToConnectPath = isFieldPresent\n ? fieldToConnect\n : // Compute the path to the parent object\n fieldToConnect.split('.').slice(0, -1).join('.');\n const fieldToConnectValue = isFieldPresent\n ? {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n }\n : {\n [fieldToConnect.split('.').pop()!]: {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n disconnect: [],\n },\n // In case the object was not present you need to pass the componentUID of the parent document\n __component: fieldToConnectUID,\n };\n const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n if (action.position === undefined) {\n return true;\n }\n\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('panel');\n });\n\n if (!primaryAction) {\n return null;\n }\n\n const addHintTooltip = (action: Action, children: React.ReactNode) => {\n return !action.disabled ? (\n <Tooltip\n label={formatMessage(\n {\n id: 'content-manager.containers.EditView.saveHint',\n defaultMessage: 'Ctrl / Cmd + Enter to {action}',\n },\n {\n action: action.label,\n }\n )}\n >\n <Flex width=\"100%\">{children}</Flex>\n </Tooltip>\n ) : (\n children\n );\n };\n\n const primaryActionContent = (\n <>\n <Flex flex={1} alignItems=\"stretch\" direction=\"column\">\n {addHintTooltip(\n primaryAction,\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n buttonType={primaryAction.type === 'publish' ? undefined : 'submit'}\n />\n )}\n </Flex>\n\n {restActions.length > 0 ? (\n <DocumentActionsMenu\n actions={restActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n />\n ) : null}\n </>\n );\n\n return (\n <Flex direction={{ initial: 'row', large: 'column' }} gap={2} alignItems=\"stretch\" width=\"100%\">\n <tours.contentManager.Publish>\n {isDesktop ? <Flex gap={2}>{primaryActionContent}</Flex> : primaryActionContent}\n </tours.contentManager.Publish>\n {secondaryAction ? (\n <Flex flex={1} order={{ initial: -1, large: 0 }} alignItems=\"stretch\" direction=\"column\">\n {secondaryAction.type === 'publish' ? (\n <tours.contentManager.Publish>\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n </tours.contentManager.Publish>\n ) : (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n buttonType=\"submit\"\n />\n )}\n </Flex>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Omit<Action, 'type'> {\n buttonType?: 'button' | 'submit' | 'reset';\n type?: DocumentActionDescription['type'];\n}\n\nconst DocumentActionButton = ({ buttonType = 'button', ...action }: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: DocumentActionButtonProps) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n type={buttonType}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.dialog?.variant ?? action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n actions: Action[];\n children?: React.ReactNode;\n label?: string;\n variant?: 'ghost' | 'tertiary';\n}\n\nconst DocumentActionsMenu = ({\n actions,\n children,\n label,\n variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n setIsOpen(false);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (!isDisabled) {\n setIsOpen(open);\n }\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={handleOpenChange}>\n <Menu.Trigger\n ref={triggerRef}\n disabled={isDisabled}\n label={\n label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })\n }\n tag={IconButton}\n icon={<More />}\n variant={variant}\n />\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\" maxWidth=\"25rem\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const {\n currentDocument: { schema },\n } = useDocumentContext('PublishAction');\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const { canPublish, canReadFields } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n );\n const { publish, isLoading } = useDocumentActions();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ rawQuery }] = useQueryParams();\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const getValues = useForm('PublishAction', (state) => state.getValues);\n const formValues = useForm('PublishAction', ({ values }) => values);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n const {\n currentDocument: { components },\n } = useDocumentContext('PublishAction');\n\n // need to discriminate if the publish is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('PublishAction', () => true, false);\n const fromRelationModal = relationContext != undefined;\n\n const dispatch = useRelationModal('PublishAction', (state) => state.dispatch);\n const fieldToConnect = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'PublishAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('PublishAction', (state) => state.rootDocumentMeta);\n\n const dispatchGuidedTour = useGuidedTour('PublishAction', (s) => s.dispatch);\n\n const { currentDocumentMeta } = useDocumentContext('PublishAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const idToPublish = currentDocumentMeta.documentId || id;\n\n React.useEffect(() => {\n if (isErrorDraftRelations) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('error.records.fetch-draft-relatons'),\n defaultMessage: 'An error occurred while fetching draft relations on this document.',\n }),\n });\n }\n }, [isErrorDraftRelations, toggleNotification, formatMessage]);\n\n React.useEffect(() => {\n const localDraftRelations = new Set();\n\n /**\n * Extracts draft relations from the provided data object.\n * It checks for a connect array of relations.\n * If a relation has a status of 'draft', its id is added to the localDraftRelations set.\n */\n const extractDraftRelations = (data: Omit<RelationsFormValue, 'disconnect'>) => {\n const relations = data.connect || [];\n relations.forEach((relation) => {\n if (relation.status === 'draft') {\n localDraftRelations.add(relation.id);\n }\n });\n };\n\n /**\n * Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.\n * If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.\n * It recursively calls itself for any non-null objects it contains.\n */\n const traverseAndExtract = (data: { [field: string]: any }) => {\n Object.entries(data).forEach(([key, value]) => {\n if (key === 'connect' && Array.isArray(value)) {\n extractDraftRelations({ connect: value });\n } else if (typeof value === 'object' && value !== null) {\n traverseAndExtract(value);\n }\n });\n };\n\n if (!documentId || modified) {\n traverseAndExtract(formValues);\n setLocalCountOfDraftRelations(localDraftRelations.size);\n }\n }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);\n\n React.useEffect(() => {\n if (!document || !document.documentId || isListView) {\n return;\n }\n\n const fetchDraftRelationsCount = async () => {\n const { data, error } = await countDraftRelations({\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n });\n\n if (error) {\n throw error;\n }\n\n if (data) {\n setServerCountOfDraftRelations(data.data);\n }\n };\n\n fetchDraftRelationsCount();\n }, [\n isListView,\n document,\n documentId,\n countDraftRelations,\n collectionType,\n model,\n currentDocumentMeta.params,\n ]);\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { getInitialFormValues } = useDoc();\n\n const isDocumentPublished =\n (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n document?.status !== 'modified';\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n /**\n * Yield one microtask so React can flush any pending field updates from the same task\n * (common with fast local runners / Playwright) before we read values and validate.\n * TODO: replace with an explicit form flush contract when we can (same concern as Save flow).\n */\n await Promise.resolve();\n\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField =\n schema &&\n Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\n // For components, check if any of the component fields are readable\n if (attribute.type === 'component') {\n const componentFields = (canReadFields ?? []).filter((field) =>\n field.startsWith(`${fieldName}.`)\n );\n return componentFields.length === 0;\n }\n\n // For regular fields, check if the field itself is readable\n return attribute?.required && !(canReadFields ?? []).includes(fieldName);\n });\n\n if (hasUnreadableRequiredField) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error.unreadable-required-field',\n defaultMessage:\n 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.',\n }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n }\n return;\n }\n\n const { data } = handleInvisibleAttributes(transformData(getValues()), {\n schema,\n components,\n });\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n // Reset form with current values as new initial values (clears errors/submitting and sets modified to false)\n if ('data' in res) {\n resetForm(getValues());\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n }\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n if (idToPublish === 'create' && !fromRelationModal) {\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (fromRelationModal) {\n const newRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: metaDocumentToUpdate.collectionType,\n model: metaDocumentToUpdate.model,\n documentId:\n metaDocumentToUpdate.collectionType !== SINGLE_TYPES\n ? metaDocumentToUpdate.documentId\n : undefined,\n params: metaDocumentToUpdate.params,\n data: dataToUpdate,\n });\n\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: newRelation, shouldBypassConfirmation: true },\n });\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } finally {\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n const hasDraftRelations = enableDraftRelationsCount && totalDraftRelations > 0;\n\n // Auto-publish on CMD+Enter on macOS, and CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n if (!schema?.options?.draftAndPublish) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n if (!hasDraftRelations) {\n performPublish();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [hasDraftRelations, performPublish, schema?.options?.draftAndPublish]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n type: 'publish',\n loading: isLoading,\n position: ['panel', 'preview', 'relation-modal'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const dispatchGuidedTour = useGuidedTour('UpdateAction', (s) => s.dispatch);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { create, update, clone, isLoading } = useDocumentActions();\n const {\n currentDocument: { components },\n } = useDocumentContext('UpdateAction');\n const [{ rawQuery }] = useQueryParams();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const { getInitialFormValues } = useDoc();\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const initialValues = useForm('UpdateAction', ({ initialValues }) => initialValues);\n const getValues = useForm('UpdateAction', (state) => state.getValues);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n // need to discriminate if the update is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('UpdateAction', () => true, false);\n const relationalModalSchema = useRelationModal(\n 'UpdateAction',\n (state) => state.currentDocument.schema,\n false\n );\n const fieldToConnect = useRelationModal(\n 'UpdateAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'UpdateAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('UpdateAction', (state) => state.rootDocumentMeta);\n const fromRelationModal = relationContext != undefined;\n\n const { currentDocumentMeta } = useDocumentContext('UpdateAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { schema } = useDoc();\n\n const handleUpdate = async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n // Blur the active element so inputs that debounce into the form (e.g. blocks editor) flush\n // before validate/getValues — on fast clients Save can otherwise read stale field state.\n // Use the global DOM document — form values are not in scope here (avoid shadowing `document`).\n (globalThis.document?.activeElement as HTMLElement | undefined)?.blur();\n\n // Yield microtasks so batched React updates after blur/onChange can settle before validate\n // (same idea as performPublish; two ticks vs one gives a bit more room after focus/blur).\n // TODO: replace with an explicit field/form flush contract when available.\n await Promise.resolve();\n await Promise.resolve();\n\n const { errors } = await validate(true, {\n status: 'draft',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n\n const latestValues = getValues();\n\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(latestValues)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const { data } = handleInvisibleAttributes(transformData(latestValues), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm(latestValues);\n }\n } else {\n const { data } = handleInvisibleAttributes(transformData(latestValues), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await create(\n {\n model,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n if (fromRelationModal) {\n const createdRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: parentDocumentMetaToUpdate.collectionType,\n model: parentDocumentMetaToUpdate.model,\n documentId:\n parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES\n ? parentDocumentMetaToUpdate.documentId\n : undefined,\n params: parentDocumentMetaToUpdate.params,\n data: {\n ...dataToUpdate,\n },\n });\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: createdRelation, shouldBypassConfirmation: true },\n });\n } else {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true, relative: 'path' }\n );\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n return {\n loading: isLoading,\n /**\n * Disabled when:\n * - the form is submitting\n * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n * - the active tab is the published tab\n */\n disabled: isSubmitting || (!modified && !isCloning) || activeTab === 'published',\n label: formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n }),\n onClick: handleUpdate,\n position: ['panel', 'preview', 'relation-modal'],\n };\n};\n\nUpdateAction.type = 'update';\nUpdateAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n KEEP: 'keep',\n DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n const { unpublish } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { toggleNotification } = useNotification();\n const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n const isDocumentModified = document?.status === 'modified';\n\n const handleChange = (value: string) => {\n setShouldKeepDraft(value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n };\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled:\n !canPublish ||\n activeTab === 'published' ||\n (document?.status !== 'published' && document?.status !== 'modified'),\n label: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n icon: <Cross />,\n onClick: async () => {\n /**\n * return if there's no id & we're in a collection type, or the status modified\n * for either collection type because we use a dialog to handle the process in\n * the latter case.\n */\n if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n if (!documentId) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n return;\n }\n\n await unpublish({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n dialog: isDocumentModified\n ? {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n <Flex width=\"100%\" direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n <Radio.Group\n defaultValue={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n name=\"discard-options\"\n aria-label={formatMessage({\n id: 'content-manager.actions.unpublish.dialog.radio-label',\n defaultMessage: 'Choose an option to unpublish the document.',\n })}\n onValueChange={handleChange}\n >\n <Radio.Item checked={shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.KEEP}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n defaultMessage: 'Keep draft',\n })}\n </Radio.Item>\n <Radio.Item checked={!shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n defaultMessage: 'Replace draft',\n })}\n </Radio.Item>\n </Radio.Group>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n await unpublish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n !shouldKeepDraft\n );\n },\n }\n : undefined,\n variant: 'danger',\n position: ['panel', 'table-row'],\n };\n};\n\nUnpublishAction.type = 'unpublish';\nUnpublishAction.position = 'panel';\n\nconst DiscardAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n const { discard, isLoading } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n label: formatMessage({\n id: 'content-manager.actions.discard.label',\n defaultMessage: 'Discard changes',\n }),\n icon: <Cross />,\n position: ['panel', 'table-row'],\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.discard.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n await discard({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n },\n };\n};\n\nDiscardAction.type = 'discard';\nDiscardAction.position = 'panel';\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DocumentActionButton, DEFAULT_ACTIONS };\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n"],"names":["connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","isFieldPresent","get","fieldToConnectPath","split","slice","join","fieldToConnectValue","connect","id","documentId","locale","pop","disconnect","__component","objectToConnect","set","merge","DocumentActions","actions","formatMessage","useIntl","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","addHintTooltip","children","disabled","_jsx","Tooltip","label","defaultMessage","Flex","width","primaryActionContent","_jsxs","_Fragment","flex","alignItems","direction","DocumentActionButton","variant","buttonType","type","length","DocumentActionsMenu","initial","large","gap","tours","contentManager","Publish","order","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","title","message","content","status","timeout","onClose","preventDefault","handleClose","Button","startIcon","icon","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","setIsOpen","isDisabled","every","triggerRef","useRef","handleOpenChange","open","Menu","Root","onOpenChange","Trigger","ref","tag","IconButton","More","Content","maxHeight","popoverPlacement","maxWidth","map","Item","onSelect","display","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","getValues","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","size","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","performPublish","Promise","resolve","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","componentFields","field","startsWith","required","handleInvisibleAttributes","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","options","draftAndPublish","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","handleUpdate","globalThis","activeElement","blur","latestValues","origin","relative","createdRelation","replace","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","WarningCircle","height","fill","Typography","textAlign","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","canUpdate","discard","DEFAULT_ACTIONS"],"mappings":"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"}
|
|
@@ -90,13 +90,10 @@ const DocumentActions = ({ actions })=>{
|
|
|
90
90
|
flex: 1,
|
|
91
91
|
alignItems: "stretch",
|
|
92
92
|
direction: "column",
|
|
93
|
-
children:
|
|
94
|
-
...primaryAction,
|
|
95
|
-
variant: primaryAction.variant || 'default'
|
|
96
|
-
})) : addHintTooltip(primaryAction, /*#__PURE__*/ jsx(DocumentActionButton, {
|
|
93
|
+
children: addHintTooltip(primaryAction, /*#__PURE__*/ jsx(DocumentActionButton, {
|
|
97
94
|
...primaryAction,
|
|
98
95
|
variant: primaryAction.variant || 'default',
|
|
99
|
-
buttonType:
|
|
96
|
+
buttonType: primaryAction.type === 'publish' ? undefined : 'submit'
|
|
100
97
|
}))
|
|
101
98
|
}),
|
|
102
99
|
restActions.length > 0 ? /*#__PURE__*/ jsx(DocumentActionsMenu, {
|
|
@@ -131,7 +128,7 @@ const DocumentActions = ({ actions })=>{
|
|
|
131
128
|
},
|
|
132
129
|
alignItems: "stretch",
|
|
133
130
|
direction: "column",
|
|
134
|
-
children: secondaryAction.
|
|
131
|
+
children: secondaryAction.type === 'publish' ? /*#__PURE__*/ jsx(tours.contentManager.Publish, {
|
|
135
132
|
children: /*#__PURE__*/ jsx(DocumentActionButton, {
|
|
136
133
|
...secondaryAction,
|
|
137
134
|
variant: secondaryAction.variant || 'secondary'
|
|
@@ -418,8 +415,8 @@ const transformData = (data)=>{
|
|
|
418
415
|
const isSubmitting = useForm('PublishAction', ({ isSubmitting })=>isSubmitting);
|
|
419
416
|
const validate = useForm('PublishAction', (state)=>state.validate);
|
|
420
417
|
const setErrors = useForm('PublishAction', (state)=>state.setErrors);
|
|
418
|
+
const getValues = useForm('PublishAction', (state)=>state.getValues);
|
|
421
419
|
const formValues = useForm('PublishAction', ({ values })=>values);
|
|
422
|
-
useForm('PublishAction', ({ initialValues })=>initialValues);
|
|
423
420
|
const resetForm = useForm('PublishAction', ({ resetForm })=>resetForm);
|
|
424
421
|
const { currentDocument: { components } } = useDocumentContext('PublishAction');
|
|
425
422
|
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
@@ -532,12 +529,12 @@ const transformData = (data)=>{
|
|
|
532
529
|
const performPublish = async ()=>{
|
|
533
530
|
setSubmitting(true);
|
|
534
531
|
try {
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
532
|
+
/**
|
|
533
|
+
* Yield one microtask so React can flush any pending field updates from the same task
|
|
534
|
+
* (common with fast local runners / Playwright) before we read values and validate.
|
|
535
|
+
* TODO: replace with an explicit form flush contract when we can (same concern as Save flow).
|
|
536
|
+
*/ await Promise.resolve();
|
|
539
537
|
const { errors } = await validate(true, {
|
|
540
|
-
...filteredData,
|
|
541
538
|
status: 'published'
|
|
542
539
|
});
|
|
543
540
|
if (errors) {
|
|
@@ -570,8 +567,10 @@ const transformData = (data)=>{
|
|
|
570
567
|
}
|
|
571
568
|
return;
|
|
572
569
|
}
|
|
573
|
-
|
|
574
|
-
|
|
570
|
+
const { data } = handleInvisibleAttributes(transformData(getValues()), {
|
|
571
|
+
schema,
|
|
572
|
+
components
|
|
573
|
+
});
|
|
575
574
|
const res = await publish({
|
|
576
575
|
collectionType,
|
|
577
576
|
model,
|
|
@@ -580,7 +579,7 @@ const transformData = (data)=>{
|
|
|
580
579
|
}, data);
|
|
581
580
|
// Reset form with current values as new initial values (clears errors/submitting and sets modified to false)
|
|
582
581
|
if ('data' in res) {
|
|
583
|
-
resetForm(
|
|
582
|
+
resetForm(getValues());
|
|
584
583
|
dispatchGuidedTour({
|
|
585
584
|
type: 'set_completed_actions',
|
|
586
585
|
payload: [
|
|
@@ -686,6 +685,7 @@ const transformData = (data)=>{
|
|
|
686
685
|
return null;
|
|
687
686
|
}
|
|
688
687
|
return {
|
|
688
|
+
type: 'publish',
|
|
689
689
|
loading: isLoading,
|
|
690
690
|
position: [
|
|
691
691
|
'panel',
|
|
@@ -751,7 +751,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
751
751
|
const modified = useForm('UpdateAction', ({ modified })=>modified);
|
|
752
752
|
const setSubmitting = useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
|
|
753
753
|
const initialValues = useForm('UpdateAction', ({ initialValues })=>initialValues);
|
|
754
|
-
const
|
|
754
|
+
const getValues = useForm('UpdateAction', (state)=>state.getValues);
|
|
755
755
|
const validate = useForm('UpdateAction', (state)=>state.validate);
|
|
756
756
|
const setErrors = useForm('UpdateAction', (state)=>state.setErrors);
|
|
757
757
|
const resetForm = useForm('UpdateAction', ({ resetForm })=>resetForm);
|
|
@@ -783,6 +783,15 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
783
783
|
if (!modified) {
|
|
784
784
|
return;
|
|
785
785
|
}
|
|
786
|
+
// Blur the active element so inputs that debounce into the form (e.g. blocks editor) flush
|
|
787
|
+
// before validate/getValues — on fast clients Save can otherwise read stale field state.
|
|
788
|
+
// Use the global DOM document — form values are not in scope here (avoid shadowing `document`).
|
|
789
|
+
globalThis.document?.activeElement?.blur();
|
|
790
|
+
// Yield microtasks so batched React updates after blur/onChange can settle before validate
|
|
791
|
+
// (same idea as performPublish; two ticks vs one gives a bit more room after focus/blur).
|
|
792
|
+
// TODO: replace with an explicit field/form flush contract when available.
|
|
793
|
+
await Promise.resolve();
|
|
794
|
+
await Promise.resolve();
|
|
786
795
|
const { errors } = await validate(true, {
|
|
787
796
|
status: 'draft'
|
|
788
797
|
});
|
|
@@ -796,12 +805,13 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
796
805
|
});
|
|
797
806
|
return;
|
|
798
807
|
}
|
|
808
|
+
const latestValues = getValues();
|
|
799
809
|
if (isCloning) {
|
|
800
810
|
const res = await clone({
|
|
801
811
|
model,
|
|
802
812
|
documentId: cloneMatch.params.origin,
|
|
803
813
|
params: currentDocumentMeta.params
|
|
804
|
-
}, transformData(
|
|
814
|
+
}, transformData(latestValues));
|
|
805
815
|
if ('data' in res) {
|
|
806
816
|
navigate({
|
|
807
817
|
pathname: `../${res.data.documentId}`,
|
|
@@ -813,7 +823,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
813
823
|
setErrors(formatValidationErrors(res.error));
|
|
814
824
|
}
|
|
815
825
|
} else if (documentId || collectionType === SINGLE_TYPES) {
|
|
816
|
-
const { data } = handleInvisibleAttributes(transformData(
|
|
826
|
+
const { data } = handleInvisibleAttributes(transformData(latestValues), {
|
|
817
827
|
schema: fromRelationModal ? relationalModalSchema : schema,
|
|
818
828
|
initialValues,
|
|
819
829
|
components
|
|
@@ -827,10 +837,10 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
827
837
|
if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
828
838
|
setErrors(formatValidationErrors(res.error));
|
|
829
839
|
} else {
|
|
830
|
-
resetForm(
|
|
840
|
+
resetForm(latestValues);
|
|
831
841
|
}
|
|
832
842
|
} else {
|
|
833
|
-
const { data } = handleInvisibleAttributes(transformData(
|
|
843
|
+
const { data } = handleInvisibleAttributes(transformData(latestValues), {
|
|
834
844
|
schema: fromRelationModal ? relationalModalSchema : schema,
|
|
835
845
|
initialValues,
|
|
836
846
|
components
|