@strapi/content-manager 5.51.2 → 5.52.1

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.
Files changed (49) hide show
  1. package/dist/admin/pages/EditView/components/DocumentActions.js +3 -2
  2. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  3. package/dist/admin/pages/EditView/components/DocumentActions.mjs +3 -2
  4. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  5. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js +2 -2
  6. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  7. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +2 -2
  8. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js +2 -2
  10. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  11. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +2 -2
  12. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +3 -2
  14. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +3 -2
  16. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  17. package/dist/server/controllers/collection-types.js +16 -1
  18. package/dist/server/controllers/collection-types.js.map +1 -1
  19. package/dist/server/controllers/collection-types.mjs +16 -1
  20. package/dist/server/controllers/collection-types.mjs.map +1 -1
  21. package/dist/server/controllers/single-types.js +20 -3
  22. package/dist/server/controllers/single-types.js.map +1 -1
  23. package/dist/server/controllers/single-types.mjs +20 -3
  24. package/dist/server/controllers/single-types.mjs.map +1 -1
  25. package/dist/server/mcp/utils.js +4 -2
  26. package/dist/server/mcp/utils.js.map +1 -1
  27. package/dist/server/mcp/utils.mjs +4 -2
  28. package/dist/server/mcp/utils.mjs.map +1 -1
  29. package/dist/server/services/document-manager.js +3 -6
  30. package/dist/server/services/document-manager.js.map +1 -1
  31. package/dist/server/services/document-manager.mjs +4 -7
  32. package/dist/server/services/document-manager.mjs.map +1 -1
  33. package/dist/server/services/utils/draft-relations.js +5 -0
  34. package/dist/server/services/utils/draft-relations.js.map +1 -1
  35. package/dist/server/services/utils/draft-relations.mjs +5 -1
  36. package/dist/server/services/utils/draft-relations.mjs.map +1 -1
  37. package/dist/server/services/utils/populate.js +1 -2
  38. package/dist/server/services/utils/populate.js.map +1 -1
  39. package/dist/server/services/utils/populate.mjs +1 -2
  40. package/dist/server/services/utils/populate.mjs.map +1 -1
  41. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  42. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  43. package/dist/server/src/index.d.ts.map +1 -1
  44. package/dist/server/src/mcp/utils.d.ts +3 -1
  45. package/dist/server/src/mcp/utils.d.ts.map +1 -1
  46. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  47. package/dist/server/src/services/index.d.ts.map +1 -1
  48. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  49. package/package.json +9 -9
@@ -552,7 +552,7 @@ const prepareParentDataForRelationUpdate = (parentFormValues, fallbackParentForm
552
552
  schema
553
553
  ]);
554
554
  const fetchDraftRelationsCount = React__namespace.useCallback(async ()=>{
555
- if (!document?.documentId || isListView) {
555
+ if (!document?.documentId || isListView || !schema?.options?.draftAndPublish) {
556
556
  return;
557
557
  }
558
558
  setIsFetchingDraftRelations(true);
@@ -579,7 +579,8 @@ const prepareParentDataForRelationUpdate = (parentFormValues, fallbackParentForm
579
579
  document?.documentId,
580
580
  documentId,
581
581
  isListView,
582
- model
582
+ model,
583
+ schema?.options?.draftAndPublish
583
584
  ]);
584
585
  React__namespace.useEffect(()=>{
585
586
  fetchDraftRelationsCount();
@@ -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 { 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 { getIn, isObject, setIn } from '../../../utils/objects';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\nimport {\n countLocalDraftRelations,\n EMPTY_DRAFT_RELATION_COUNTS,\n getDraftRelationsPublishState,\n normalizeDraftRelationCounts,\n resolveDraftRelationCounts,\n type DraftRelationCounts,\n} from '../utils/draftRelationCounts';\nimport { getEditViewShortcut } from '../utils/keyboardShortcuts';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { DocumentActionComponent } from '../../../content-manager';\n\ntype PublishConfirmDialogScope = 'panel' | 'preview' | 'relation-modal';\n\nconst publishConfirmDialogOpeners = new Map<PublishConfirmDialogScope, () => void>();\n\nconst openPublishConfirmDialog = (scope: PublishConfirmDialogScope) => {\n publishConfirmDialogOpeners.get(scope)?.();\n};\n\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 * When set on a publish action with a dialog, registers an opener for the keyboard shortcut.\n */\n publishConfirmScope?: PublishConfirmDialogScope;\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n /**\n * When set, centers a warning icon above the dialog body (bulk publish / delete pattern).\n */\n bodyIcon?: 'danger' | 'default';\n variant?: ButtonProps['variant'];\n confirmLabel?: string;\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,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n const relationToConnect = {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\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 fieldValue = getIn<unknown>(parentDataToUpdate, fieldToConnect);\n const relationFieldValue = isObject(fieldValue) ? fieldValue : undefined;\n const isFieldPresent = relationFieldValue !== undefined;\n const fieldPath = fieldToConnect.split('.');\n const fieldName = fieldPath.at(-1);\n\n if (!fieldName) {\n return parentDataToUpdate;\n }\n\n const parentPath = fieldPath.slice(0, -1).join('.');\n const existingConnect: Array<typeof relationToConnect> = Array.isArray(\n relationFieldValue?.connect\n )\n ? (relationFieldValue.connect as Array<typeof relationToConnect>)\n : [];\n // A relation is identified by documentId and locale; numeric ids are not stable across locales.\n const connect = existingConnect.some(\n (relation) =>\n relation.documentId === relationToConnect.documentId &&\n relation.locale === relationToConnect.locale\n )\n ? existingConnect\n : [...existingConnect, relationToConnect];\n const relationValue = isFieldPresent\n ? {\n ...relationFieldValue,\n connect,\n }\n : {\n connect,\n disconnect: [],\n };\n const dataWithRelation = setIn(parentDataToUpdate, fieldToConnect, relationValue);\n\n if (!isFieldPresent && fieldToConnectUID && parentPath) {\n return setIn(dataWithRelation, `${parentPath}.__component`, fieldToConnectUID);\n }\n\n return dataWithRelation;\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 if (action.disabled) {\n return children;\n }\n\n const hint =\n action.type === 'publish'\n ? formatMessage({\n id: 'content-manager.containers.EditView.publishHint',\n defaultMessage: 'Ctrl / Cmd + Shift + Enter to publish',\n })\n : formatMessage({\n id: 'content-manager.containers.EditView.saveHint',\n defaultMessage: 'Ctrl / Cmd + Enter to save',\n });\n\n return (\n <Tooltip label={hint}>\n <Flex width=\"100%\">{children}</Flex>\n </Tooltip>\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 {addHintTooltip(\n secondaryAction,\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n )}\n </tours.contentManager.Publish>\n ) : (\n addHintTooltip(\n secondaryAction,\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n buttonType=\"submit\"\n />\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 React.useEffect(() => {\n const scope = action.publishConfirmScope;\n\n if (action.type !== 'publish' || !action.dialog || !scope) {\n return;\n }\n\n const open = () => setDialogId(action.id);\n publishConfirmDialogOpeners.set(scope, open);\n\n return () => {\n if (publishConfirmDialogOpeners.get(scope) === open) {\n publishConfirmDialogOpeners.delete(scope);\n }\n };\n }, [action.type, action.dialog, action.id, action.publishConfirmScope]);\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);\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 bodyIcon,\n confirmLabel,\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 const dialogBody = bodyIcon ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle\n width=\"24px\"\n height=\"24px\"\n fill={bodyIcon === 'danger' ? 'danger600' : 'primary600'}\n />\n </Flex>\n <Typography id=\"confirm-description\" tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {content}\n </Typography>\n </Flex>\n ) : (\n content\n );\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{dialogBody}</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 {confirmLabel ??\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: unknown): unknown => {\n if (Array.isArray(data)) {\n return data.map((value) => transformData(value));\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return Object.fromEntries(\n Object.entries(data).map(([key, value]) => [key, transformData(value)])\n );\n }\n\n return data;\n};\n\nconst transformDocumentData = (data: object): AnyData => transformData(data) as AnyData;\n\nconst prepareParentDataForRelationUpdate = (\n parentFormValues: AnyData | undefined,\n fallbackParentFormValues: AnyData | undefined,\n options: Parameters<typeof handleInvisibleAttributes>[1]\n) => {\n const parentDataToUpdate = parentFormValues ?? fallbackParentFormValues;\n\n if (!parentDataToUpdate) {\n return parentDataToUpdate;\n }\n\n const { data } = handleInvisibleAttributes(transformDocumentData(parentDataToUpdate), {\n ...options,\n // The live snapshot can omit saved invisible fields, so retain the parent's saved initial values.\n initialValues: fallbackParentFormValues,\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('PublishAction', (state) => state.onPreview, false);\n const [countDraftRelations, { isError: isErrorDraftRelations }] = useGetDraftRelationCountQuery();\n const [localDraftRelationCounts, setLocalDraftRelationCounts] =\n React.useState<DraftRelationCounts>(EMPTY_DRAFT_RELATION_COUNTS);\n const [serverDraftRelationCounts, setServerDraftRelationCounts] =\n React.useState<DraftRelationCounts>(EMPTY_DRAFT_RELATION_COUNTS);\n const [isFetchingDraftRelations, setIsFetchingDraftRelations] = React.useState(false);\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 const isRelationModalOpen = useRelationModal(\n 'PublishAction',\n (state) => state.state.isModalOpen,\n false\n );\n const publishConfirmScope: PublishConfirmDialogScope = fromRelationModal\n ? 'relation-modal'\n : onPreview\n ? 'preview'\n : 'panel';\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 getParentFormValues = useRelationModal(\n 'PublishAction',\n (state) => state.state.getParentFormValues,\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 setLocalDraftRelationCounts(\n countLocalDraftRelations(formValues as AnyData, schema, components, model)\n );\n }, [components, formValues, model, schema]);\n\n const fetchDraftRelationsCount = React.useCallback(async () => {\n if (!document?.documentId || isListView) {\n return;\n }\n\n setIsFetchingDraftRelations(true);\n\n try {\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 setServerDraftRelationCounts(normalizeDraftRelationCounts(data));\n }\n } finally {\n setIsFetchingDraftRelations(false);\n }\n }, [\n collectionType,\n countDraftRelations,\n currentDocumentMeta.params,\n document?.documentId,\n documentId,\n isListView,\n model,\n ]);\n\n React.useEffect(() => {\n fetchDraftRelationsCount();\n }, [fetchDraftRelationsCount, document?.updatedAt]);\n\n React.useEffect(() => {\n const handleWindowFocus = () => {\n fetchDraftRelationsCount();\n };\n\n window.addEventListener('focus', handleWindowFocus);\n\n return () => {\n window.removeEventListener('focus', handleWindowFocus);\n };\n }, [fetchDraftRelationsCount]);\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(transformDocumentData(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 fallbackParentFormValues =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const parentDataToUpdate = prepareParentDataForRelationUpdate(\n getParentFormValues?.(),\n fallbackParentFormValues,\n {\n schema: parentDocumentData.schema,\n components: parentDocumentData.components,\n }\n );\n const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n if (parentDataToUpdate) {\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\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 getFreshDraftRelationCounts = React.useCallback(\n (): DraftRelationCounts =>\n resolveDraftRelationCounts(\n documentId,\n modified,\n countLocalDraftRelations(getValues() as AnyData, schema, components, model),\n serverDraftRelationCounts\n ),\n [components, documentId, getValues, model, modified, schema, serverDraftRelationCounts]\n );\n\n const draftRelationCounts = resolveDraftRelationCounts(\n documentId,\n modified,\n localDraftRelationCounts,\n serverDraftRelationCounts\n );\n const { hasUnpublishedRelations, hasDraftM2mLinks, dialogVariant, bodyIcon, confirmLabel } =\n getDraftRelationsPublishState(draftRelationCounts);\n\n const supportsDraftRelationWarning = Boolean(schema?.options?.draftAndPublish);\n\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 const isDisabled =\n isCloning ||\n isSubmitting ||\n isFetchingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish;\n\n // Publish on CMD+Shift+Enter (macOS) / CTRL+Shift+Enter (Windows/Linux).\n // Saving a draft (CMD/CTRL+Enter) is handled by the UpdateAction.\n React.useEffect(() => {\n if (!schema?.options?.draftAndPublish) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (getEditViewShortcut(e) !== 'publish') {\n return;\n }\n\n e.preventDefault();\n\n if (!fromRelationModal && isRelationModalOpen) {\n return;\n }\n\n if (isDisabled) {\n return;\n }\n\n if (getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {\n openPublishConfirmDialog(publishConfirmScope);\n return;\n }\n\n performPublish();\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n fromRelationModal,\n getFreshDraftRelationCounts,\n isDisabled,\n isRelationModalOpen,\n performPublish,\n publishConfirmScope,\n schema?.options?.draftAndPublish,\n ]);\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 disabled: isDisabled,\n publishConfirmScope: supportsDraftRelationWarning ? publishConfirmScope : undefined,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {\n // Let DocumentActionButton open the confirmation dialog.\n return;\n }\n\n await performPublish();\n\n // Skip the registered dialog when publishing directly.\n return true;\n },\n dialog: supportsDraftRelationWarning\n ? {\n type: 'dialog',\n variant: dialogVariant,\n bodyIcon,\n title: formatMessage({\n id: getTranslation('popUpWarning.warning.has-draft-relations.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <>\n {hasUnpublishedRelations\n ? formatMessage(\n {\n id: getTranslation('popUpWarning.warning.has-draft-relations.message'),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. {count, plural, one {That relation will not be included in the published version.} other {Those relations will not be included in the published version.}}',\n },\n {\n count: draftRelationCounts.unpublishedRelations,\n }\n )\n : formatMessage(\n {\n id: getTranslation('popUpWarning.warning.has-draft-m2m-relations.message'),\n defaultMessage:\n '{count, plural, one {# linked entry is still in draft. It will appear on the live site once that entry is published.} other {# linked entries are still in draft. They will appear on the live site once those entries are published.}}',\n },\n {\n count: draftRelationCounts.draftM2mLinks,\n }\n )}\n {hasUnpublishedRelations && hasDraftM2mLinks\n ? ` ${formatMessage(\n {\n id: getTranslation('popUpWarning.warning.has-draft-m2m-relations.additional'),\n defaultMessage:\n '{count, plural, one {# many-to-many link points} other {# many-to-many links point}} to draft entries that will become visible once published.',\n },\n {\n count: draftRelationCounts.draftM2mLinks,\n }\n )}`\n : null}{' '}\n {formatMessage({\n id: getTranslation('popUpWarning.warning.publish-question'),\n defaultMessage: 'Do you still want to publish?',\n })}\n </>\n ),\n confirmLabel:\n confirmLabel === 'publish'\n ? formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })\n : formatMessage({\n id: getTranslation('popUpwarning.warning.has-draft-relations.button-confirm'),\n defaultMessage: 'Publish without relations',\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 getParentFormValues = useRelationModal(\n 'UpdateAction',\n (state) => state.state.getParentFormValues,\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 suitableSchema = fromRelationModal ? relationalModalSchema : schema;\n const hasDraftAndPublished = suitableSchema?.options?.draftAndPublish ?? false;\n\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 const isDisabled = isSubmitting || (!modified && !isCloning) || activeTab === 'published';\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 // enforce \"published\" validation if not using \"draft and published\"\n status: !hasDraftAndPublished ? 'published' : '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 transformDocumentData(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(transformDocumentData(latestValues), {\n schema: suitableSchema,\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(transformDocumentData(latestValues), {\n schema: suitableSchema,\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 fallbackParentFormValues =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const parentDataToUpdate = prepareParentDataForRelationUpdate(\n getParentFormValues?.(),\n fallbackParentFormValues,\n {\n schema: parentDocumentData.schema,\n components: parentDocumentData.components,\n }\n );\n\n if (parentDataToUpdate) {\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({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\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\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 // Save a draft on CMD+Enter (macOS) / CTRL+Enter (Windows/Linux), with CMD/CTRL+S as an alias.\n // Publishing (CMD/CTRL+Shift+Enter) is handled by the PublishAction.\n // `handleUpdate` is recreated on every render, so we read the latest version (and the latest\n // disabled state) through refs and register the listener only once.\n const handleUpdateRef = React.useRef(handleUpdate);\n handleUpdateRef.current = handleUpdate;\n const isDisabledRef = React.useRef(isDisabled);\n isDisabledRef.current = isDisabled;\n\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (getEditViewShortcut(e) !== 'save') {\n return;\n }\n\n e.preventDefault();\n\n if (!isDisabledRef.current) {\n handleUpdateRef.current();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n return {\n loading: isLoading,\n disabled: isDisabled,\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 {\n DocumentActions,\n DocumentActionsMenu,\n DocumentActionButton,\n PublishAction,\n UpdateAction,\n DEFAULT_ACTIONS,\n openPublishConfirmDialog,\n};\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n"],"names":["publishConfirmDialogOpeners","Map","openPublishConfirmDialog","scope","get","connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","relationToConnect","id","documentId","locale","fieldValue","getIn","relationFieldValue","isObject","undefined","isFieldPresent","fieldPath","split","fieldName","at","parentPath","slice","join","existingConnect","Array","isArray","connect","some","relation","relationValue","disconnect","dataWithRelation","setIn","DocumentActions","actions","formatMessage","useIntl","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","positions","includes","addHintTooltip","children","disabled","hint","type","defaultMessage","_jsx","Tooltip","label","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","useEffect","publishConfirmScope","dialog","open","set","delete","handleClick","e","onClick","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","Menu","Root","onOpenChange","Trigger","ref","tag","IconButton","More","Content","maxHeight","popoverPlacement","maxWidth","map","Item","onSelect","display","Fragment","onCancel","onConfirm","bodyIcon","confirmLabel","handleConfirm","dialogBody","WarningCircle","height","fill","Typography","textAlign","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","value","apiData","Object","fromEntries","entries","key","transformDocumentData","prepareParentDataForRelationUpdate","parentFormValues","fallbackParentFormValues","options","handleInvisibleAttributes","initialValues","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","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localDraftRelationCounts","setLocalDraftRelationCounts","EMPTY_DRAFT_RELATION_COUNTS","serverDraftRelationCounts","setServerDraftRelationCounts","isFetchingDraftRelations","setIsFetchingDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","getValues","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","isRelationModalOpen","isModalOpen","dispatch","getParentFormValues","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","getTranslation","countLocalDraftRelations","fetchDraftRelationsCount","useCallback","error","params","normalizeDraftRelationCounts","updatedAt","handleWindowFocus","window","addEventListener","removeEventListener","parentDocumentMetaToUpdate","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","doc","performPublish","Promise","resolve","errors","hasUnreadableRequiredField","keys","attributes","attribute","componentFields","field","startsWith","required","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","getFreshDraftRelationCounts","resolveDraftRelationCounts","draftRelationCounts","hasUnpublishedRelations","hasDraftM2mLinks","dialogVariant","getDraftRelationsPublishState","supportsDraftRelationWarning","Boolean","draftAndPublish","handleKeyDown","getEditViewShortcut","hasDraftRelations","count","unpublishedRelations","draftM2mLinks","UpdateAction","cloneMatch","create","update","clone","relationalModalSchema","suitableSchema","hasDraftAndPublished","handleUpdate","globalThis","activeElement","blur","latestValues","origin","relative","createdRelation","replace","handleUpdateRef","current","isDisabledRef","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","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 { 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 { getIn, isObject, setIn } from '../../../utils/objects';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\nimport {\n countLocalDraftRelations,\n EMPTY_DRAFT_RELATION_COUNTS,\n getDraftRelationsPublishState,\n normalizeDraftRelationCounts,\n resolveDraftRelationCounts,\n type DraftRelationCounts,\n} from '../utils/draftRelationCounts';\nimport { getEditViewShortcut } from '../utils/keyboardShortcuts';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { DocumentActionComponent } from '../../../content-manager';\n\ntype PublishConfirmDialogScope = 'panel' | 'preview' | 'relation-modal';\n\nconst publishConfirmDialogOpeners = new Map<PublishConfirmDialogScope, () => void>();\n\nconst openPublishConfirmDialog = (scope: PublishConfirmDialogScope) => {\n publishConfirmDialogOpeners.get(scope)?.();\n};\n\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 * When set on a publish action with a dialog, registers an opener for the keyboard shortcut.\n */\n publishConfirmScope?: PublishConfirmDialogScope;\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n /**\n * When set, centers a warning icon above the dialog body (bulk publish / delete pattern).\n */\n bodyIcon?: 'danger' | 'default';\n variant?: ButtonProps['variant'];\n confirmLabel?: string;\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,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n const relationToConnect = {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\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 fieldValue = getIn<unknown>(parentDataToUpdate, fieldToConnect);\n const relationFieldValue = isObject(fieldValue) ? fieldValue : undefined;\n const isFieldPresent = relationFieldValue !== undefined;\n const fieldPath = fieldToConnect.split('.');\n const fieldName = fieldPath.at(-1);\n\n if (!fieldName) {\n return parentDataToUpdate;\n }\n\n const parentPath = fieldPath.slice(0, -1).join('.');\n const existingConnect: Array<typeof relationToConnect> = Array.isArray(\n relationFieldValue?.connect\n )\n ? (relationFieldValue.connect as Array<typeof relationToConnect>)\n : [];\n // A relation is identified by documentId and locale; numeric ids are not stable across locales.\n const connect = existingConnect.some(\n (relation) =>\n relation.documentId === relationToConnect.documentId &&\n relation.locale === relationToConnect.locale\n )\n ? existingConnect\n : [...existingConnect, relationToConnect];\n const relationValue = isFieldPresent\n ? {\n ...relationFieldValue,\n connect,\n }\n : {\n connect,\n disconnect: [],\n };\n const dataWithRelation = setIn(parentDataToUpdate, fieldToConnect, relationValue);\n\n if (!isFieldPresent && fieldToConnectUID && parentPath) {\n return setIn(dataWithRelation, `${parentPath}.__component`, fieldToConnectUID);\n }\n\n return dataWithRelation;\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 if (action.disabled) {\n return children;\n }\n\n const hint =\n action.type === 'publish'\n ? formatMessage({\n id: 'content-manager.containers.EditView.publishHint',\n defaultMessage: 'Ctrl / Cmd + Shift + Enter to publish',\n })\n : formatMessage({\n id: 'content-manager.containers.EditView.saveHint',\n defaultMessage: 'Ctrl / Cmd + Enter to save',\n });\n\n return (\n <Tooltip label={hint}>\n <Flex width=\"100%\">{children}</Flex>\n </Tooltip>\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 {addHintTooltip(\n secondaryAction,\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n )}\n </tours.contentManager.Publish>\n ) : (\n addHintTooltip(\n secondaryAction,\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n buttonType=\"submit\"\n />\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 React.useEffect(() => {\n const scope = action.publishConfirmScope;\n\n if (action.type !== 'publish' || !action.dialog || !scope) {\n return;\n }\n\n const open = () => setDialogId(action.id);\n publishConfirmDialogOpeners.set(scope, open);\n\n return () => {\n if (publishConfirmDialogOpeners.get(scope) === open) {\n publishConfirmDialogOpeners.delete(scope);\n }\n };\n }, [action.type, action.dialog, action.id, action.publishConfirmScope]);\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);\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 bodyIcon,\n confirmLabel,\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 const dialogBody = bodyIcon ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle\n width=\"24px\"\n height=\"24px\"\n fill={bodyIcon === 'danger' ? 'danger600' : 'primary600'}\n />\n </Flex>\n <Typography id=\"confirm-description\" tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {content}\n </Typography>\n </Flex>\n ) : (\n content\n );\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{dialogBody}</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 {confirmLabel ??\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: unknown): unknown => {\n if (Array.isArray(data)) {\n return data.map((value) => transformData(value));\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return Object.fromEntries(\n Object.entries(data).map(([key, value]) => [key, transformData(value)])\n );\n }\n\n return data;\n};\n\nconst transformDocumentData = (data: object): AnyData => transformData(data) as AnyData;\n\nconst prepareParentDataForRelationUpdate = (\n parentFormValues: AnyData | undefined,\n fallbackParentFormValues: AnyData | undefined,\n options: Parameters<typeof handleInvisibleAttributes>[1]\n) => {\n const parentDataToUpdate = parentFormValues ?? fallbackParentFormValues;\n\n if (!parentDataToUpdate) {\n return parentDataToUpdate;\n }\n\n const { data } = handleInvisibleAttributes(transformDocumentData(parentDataToUpdate), {\n ...options,\n // The live snapshot can omit saved invisible fields, so retain the parent's saved initial values.\n initialValues: fallbackParentFormValues,\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('PublishAction', (state) => state.onPreview, false);\n const [countDraftRelations, { isError: isErrorDraftRelations }] = useGetDraftRelationCountQuery();\n const [localDraftRelationCounts, setLocalDraftRelationCounts] =\n React.useState<DraftRelationCounts>(EMPTY_DRAFT_RELATION_COUNTS);\n const [serverDraftRelationCounts, setServerDraftRelationCounts] =\n React.useState<DraftRelationCounts>(EMPTY_DRAFT_RELATION_COUNTS);\n const [isFetchingDraftRelations, setIsFetchingDraftRelations] = React.useState(false);\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 const isRelationModalOpen = useRelationModal(\n 'PublishAction',\n (state) => state.state.isModalOpen,\n false\n );\n const publishConfirmScope: PublishConfirmDialogScope = fromRelationModal\n ? 'relation-modal'\n : onPreview\n ? 'preview'\n : 'panel';\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 getParentFormValues = useRelationModal(\n 'PublishAction',\n (state) => state.state.getParentFormValues,\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 setLocalDraftRelationCounts(\n countLocalDraftRelations(formValues as AnyData, schema, components, model)\n );\n }, [components, formValues, model, schema]);\n\n const fetchDraftRelationsCount = React.useCallback(async () => {\n if (!document?.documentId || isListView || !schema?.options?.draftAndPublish) {\n return;\n }\n\n setIsFetchingDraftRelations(true);\n\n try {\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 setServerDraftRelationCounts(normalizeDraftRelationCounts(data));\n }\n } finally {\n setIsFetchingDraftRelations(false);\n }\n }, [\n collectionType,\n countDraftRelations,\n currentDocumentMeta.params,\n document?.documentId,\n documentId,\n isListView,\n model,\n schema?.options?.draftAndPublish,\n ]);\n\n React.useEffect(() => {\n fetchDraftRelationsCount();\n }, [fetchDraftRelationsCount, document?.updatedAt]);\n\n React.useEffect(() => {\n const handleWindowFocus = () => {\n fetchDraftRelationsCount();\n };\n\n window.addEventListener('focus', handleWindowFocus);\n\n return () => {\n window.removeEventListener('focus', handleWindowFocus);\n };\n }, [fetchDraftRelationsCount]);\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(transformDocumentData(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 fallbackParentFormValues =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const parentDataToUpdate = prepareParentDataForRelationUpdate(\n getParentFormValues?.(),\n fallbackParentFormValues,\n {\n schema: parentDocumentData.schema,\n components: parentDocumentData.components,\n }\n );\n const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n if (parentDataToUpdate) {\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\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 getFreshDraftRelationCounts = React.useCallback(\n (): DraftRelationCounts =>\n resolveDraftRelationCounts(\n documentId,\n modified,\n countLocalDraftRelations(getValues() as AnyData, schema, components, model),\n serverDraftRelationCounts\n ),\n [components, documentId, getValues, model, modified, schema, serverDraftRelationCounts]\n );\n\n const draftRelationCounts = resolveDraftRelationCounts(\n documentId,\n modified,\n localDraftRelationCounts,\n serverDraftRelationCounts\n );\n const { hasUnpublishedRelations, hasDraftM2mLinks, dialogVariant, bodyIcon, confirmLabel } =\n getDraftRelationsPublishState(draftRelationCounts);\n\n const supportsDraftRelationWarning = Boolean(schema?.options?.draftAndPublish);\n\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 const isDisabled =\n isCloning ||\n isSubmitting ||\n isFetchingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish;\n\n // Publish on CMD+Shift+Enter (macOS) / CTRL+Shift+Enter (Windows/Linux).\n // Saving a draft (CMD/CTRL+Enter) is handled by the UpdateAction.\n React.useEffect(() => {\n if (!schema?.options?.draftAndPublish) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (getEditViewShortcut(e) !== 'publish') {\n return;\n }\n\n e.preventDefault();\n\n if (!fromRelationModal && isRelationModalOpen) {\n return;\n }\n\n if (isDisabled) {\n return;\n }\n\n if (getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {\n openPublishConfirmDialog(publishConfirmScope);\n return;\n }\n\n performPublish();\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n fromRelationModal,\n getFreshDraftRelationCounts,\n isDisabled,\n isRelationModalOpen,\n performPublish,\n publishConfirmScope,\n schema?.options?.draftAndPublish,\n ]);\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 disabled: isDisabled,\n publishConfirmScope: supportsDraftRelationWarning ? publishConfirmScope : undefined,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {\n // Let DocumentActionButton open the confirmation dialog.\n return;\n }\n\n await performPublish();\n\n // Skip the registered dialog when publishing directly.\n return true;\n },\n dialog: supportsDraftRelationWarning\n ? {\n type: 'dialog',\n variant: dialogVariant,\n bodyIcon,\n title: formatMessage({\n id: getTranslation('popUpWarning.warning.has-draft-relations.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <>\n {hasUnpublishedRelations\n ? formatMessage(\n {\n id: getTranslation('popUpWarning.warning.has-draft-relations.message'),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. {count, plural, one {That relation will not be included in the published version.} other {Those relations will not be included in the published version.}}',\n },\n {\n count: draftRelationCounts.unpublishedRelations,\n }\n )\n : formatMessage(\n {\n id: getTranslation('popUpWarning.warning.has-draft-m2m-relations.message'),\n defaultMessage:\n '{count, plural, one {# linked entry is still in draft. It will appear on the live site once that entry is published.} other {# linked entries are still in draft. They will appear on the live site once those entries are published.}}',\n },\n {\n count: draftRelationCounts.draftM2mLinks,\n }\n )}\n {hasUnpublishedRelations && hasDraftM2mLinks\n ? ` ${formatMessage(\n {\n id: getTranslation('popUpWarning.warning.has-draft-m2m-relations.additional'),\n defaultMessage:\n '{count, plural, one {# many-to-many link points} other {# many-to-many links point}} to draft entries that will become visible once published.',\n },\n {\n count: draftRelationCounts.draftM2mLinks,\n }\n )}`\n : null}{' '}\n {formatMessage({\n id: getTranslation('popUpWarning.warning.publish-question'),\n defaultMessage: 'Do you still want to publish?',\n })}\n </>\n ),\n confirmLabel:\n confirmLabel === 'publish'\n ? formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })\n : formatMessage({\n id: getTranslation('popUpwarning.warning.has-draft-relations.button-confirm'),\n defaultMessage: 'Publish without relations',\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 getParentFormValues = useRelationModal(\n 'UpdateAction',\n (state) => state.state.getParentFormValues,\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 suitableSchema = fromRelationModal ? relationalModalSchema : schema;\n const hasDraftAndPublished = suitableSchema?.options?.draftAndPublish ?? false;\n\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 const isDisabled = isSubmitting || (!modified && !isCloning) || activeTab === 'published';\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 // enforce \"published\" validation if not using \"draft and published\"\n status: !hasDraftAndPublished ? 'published' : '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 transformDocumentData(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(transformDocumentData(latestValues), {\n schema: suitableSchema,\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(transformDocumentData(latestValues), {\n schema: suitableSchema,\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 fallbackParentFormValues =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const parentDataToUpdate = prepareParentDataForRelationUpdate(\n getParentFormValues?.(),\n fallbackParentFormValues,\n {\n schema: parentDocumentData.schema,\n components: parentDocumentData.components,\n }\n );\n\n if (parentDataToUpdate) {\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({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\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\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 // Save a draft on CMD+Enter (macOS) / CTRL+Enter (Windows/Linux), with CMD/CTRL+S as an alias.\n // Publishing (CMD/CTRL+Shift+Enter) is handled by the PublishAction.\n // `handleUpdate` is recreated on every render, so we read the latest version (and the latest\n // disabled state) through refs and register the listener only once.\n const handleUpdateRef = React.useRef(handleUpdate);\n handleUpdateRef.current = handleUpdate;\n const isDisabledRef = React.useRef(isDisabled);\n isDisabledRef.current = isDisabled;\n\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (getEditViewShortcut(e) !== 'save') {\n return;\n }\n\n e.preventDefault();\n\n if (!isDisabledRef.current) {\n handleUpdateRef.current();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n return {\n loading: isLoading,\n disabled: isDisabled,\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 {\n DocumentActions,\n DocumentActionsMenu,\n DocumentActionButton,\n PublishAction,\n UpdateAction,\n DEFAULT_ACTIONS,\n openPublishConfirmDialog,\n};\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n"],"names":["publishConfirmDialogOpeners","Map","openPublishConfirmDialog","scope","get","connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","relationToConnect","id","documentId","locale","fieldValue","getIn","relationFieldValue","isObject","undefined","isFieldPresent","fieldPath","split","fieldName","at","parentPath","slice","join","existingConnect","Array","isArray","connect","some","relation","relationValue","disconnect","dataWithRelation","setIn","DocumentActions","actions","formatMessage","useIntl","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","positions","includes","addHintTooltip","children","disabled","hint","type","defaultMessage","_jsx","Tooltip","label","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","useEffect","publishConfirmScope","dialog","open","set","delete","handleClick","e","onClick","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","Menu","Root","onOpenChange","Trigger","ref","tag","IconButton","More","Content","maxHeight","popoverPlacement","maxWidth","map","Item","onSelect","display","Fragment","onCancel","onConfirm","bodyIcon","confirmLabel","handleConfirm","dialogBody","WarningCircle","height","fill","Typography","textAlign","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","value","apiData","Object","fromEntries","entries","key","transformDocumentData","prepareParentDataForRelationUpdate","parentFormValues","fallbackParentFormValues","options","handleInvisibleAttributes","initialValues","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","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localDraftRelationCounts","setLocalDraftRelationCounts","EMPTY_DRAFT_RELATION_COUNTS","serverDraftRelationCounts","setServerDraftRelationCounts","isFetchingDraftRelations","setIsFetchingDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","getValues","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","isRelationModalOpen","isModalOpen","dispatch","getParentFormValues","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","getTranslation","countLocalDraftRelations","fetchDraftRelationsCount","useCallback","draftAndPublish","error","params","normalizeDraftRelationCounts","updatedAt","handleWindowFocus","window","addEventListener","removeEventListener","parentDocumentMetaToUpdate","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","doc","performPublish","Promise","resolve","errors","hasUnreadableRequiredField","keys","attributes","attribute","componentFields","field","startsWith","required","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","getFreshDraftRelationCounts","resolveDraftRelationCounts","draftRelationCounts","hasUnpublishedRelations","hasDraftM2mLinks","dialogVariant","getDraftRelationsPublishState","supportsDraftRelationWarning","Boolean","handleKeyDown","getEditViewShortcut","hasDraftRelations","count","unpublishedRelations","draftM2mLinks","UpdateAction","cloneMatch","create","update","clone","relationalModalSchema","suitableSchema","hasDraftAndPublished","handleUpdate","globalThis","activeElement","blur","latestValues","origin","relative","createdRelation","replace","handleUpdateRef","current","isDisabledRef","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","canUpdate","discard","DEFAULT_ACTIONS"],"mappings":"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"}
@@ -530,7 +530,7 @@ const prepareParentDataForRelationUpdate = (parentFormValues, fallbackParentForm
530
530
  schema
531
531
  ]);
532
532
  const fetchDraftRelationsCount = React.useCallback(async ()=>{
533
- if (!document?.documentId || isListView) {
533
+ if (!document?.documentId || isListView || !schema?.options?.draftAndPublish) {
534
534
  return;
535
535
  }
536
536
  setIsFetchingDraftRelations(true);
@@ -557,7 +557,8 @@ const prepareParentDataForRelationUpdate = (parentFormValues, fallbackParentForm
557
557
  document?.documentId,
558
558
  documentId,
559
559
  isListView,
560
- model
560
+ model,
561
+ schema?.options?.draftAndPublish
561
562
  ]);
562
563
  React.useEffect(()=>{
563
564
  fetchDraftRelationsCount();