@strapi/content-manager 5.55.0 → 5.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. package/dist/admin/pages/EditView/components/DocumentActions.js +133 -129
  2. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  3. package/dist/admin/pages/EditView/components/DocumentActions.mjs +137 -133
  4. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  5. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +113 -28
  6. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  7. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +113 -29
  8. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +8 -3
  10. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  11. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +8 -3
  12. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  13. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +27 -5
  14. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +2 -2
  15. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +4 -4
  16. package/dist/server/controllers/relations.js +4 -0
  17. package/dist/server/controllers/relations.js.map +1 -1
  18. package/dist/server/controllers/relations.mjs +4 -0
  19. package/dist/server/controllers/relations.mjs.map +1 -1
  20. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  21. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentActions.mjs","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 {\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true }\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","replace","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","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.mjs","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 } 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 useLazyGetDocumentQuery,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getIn, isObject } 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 {\n isAnyRelationModalOpen,\n useRelationModal,\n type PendingConnectPatch,\n} 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\ninterface RelationConnectPatch {\n relationValue: AnyData;\n componentUIDPath?: string;\n}\n\n/**\n * Builds the local-form patch needed to connect a newly created/published relation into the\n * parent's own relation field, given that field's CURRENT (possibly unsaved) live value.\n *\n * This only ever touches the parent's in-memory form state (via `setParentFormValue`, sourced\n * from the parent's own `useForm(...).onChange`) — it deliberately never persists the parent\n * document to the server, so connecting a relation on the fly can't silently save unrelated\n * unsaved edits made elsewhere in the parent's form.\n */\nconst buildRelationConnectPatch = (\n currentFieldValue: unknown,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n status: 'draft' | 'published' | undefined,\n fieldToConnectUID?: string\n): RelationConnectPatch | null => {\n // Spread the freshly created/published document first so its own mainField (e.g. `name`) and\n // other attributes — including its real numeric `id`, not just `documentId` — are available.\n // Without the real `id`, the relation field's \"already connected\" search filter (which keys off\n // `rel.id`) can't recognize this item, so it would stay selectable in the relation combobox\n // even after being connected. Keeping the label/status render correct needs the mainField too,\n // which is why we still spread the whole document rather than only picking id/documentId/locale.\n const relationToConnect = {\n ...data,\n documentId: data.documentId,\n locale: data.locale,\n ...(status ? { status } : {}),\n };\n /*\n * Check if the fieldToConnect already has a value. This happens in particular when in the\n * parent document you have created a new component without saving.\n */\n const relationFieldValue = isObject(currentFieldValue) ? currentFieldValue : undefined;\n const isFieldPresent = relationFieldValue !== undefined;\n const fieldPath = fieldToConnect.split('.');\n const fieldName = fieldPath.at(-1);\n\n if (!fieldName) {\n return null;\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\n return {\n relationValue,\n componentUIDPath:\n !isFieldPresent && fieldToConnectUID && parentPath ? `${parentPath}.__component` : undefined,\n };\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\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 [fetchDraftDocument] = useLazyGetDocumentQuery();\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 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 setParentFormValue = useRelationModal(\n 'PublishAction',\n (state) => state.state.setParentFormValue,\n false\n );\n const documentHistory = useRelationModal(\n 'PublishAction',\n (state) => state.state.documentHistory,\n false\n );\n\n const dispatchGuidedTour = useGuidedTour('PublishAction', (s) => s.dispatch);\n\n const { currentDocumentMeta } = useDocumentContext('PublishAction');\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\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 // This document is now persisted with whatever local connect patches were merged into\n // it, if any (see the pendingConnects explanation below) — they'd be stale from here on.\n dispatch?.({\n type: 'CLEAR_PENDING_CONNECTS',\n payload: { documentMeta: { model, documentId: res.data.documentId } },\n });\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 {\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true }\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 * Connect the newly published document to the parent's relation field, purely in local\n * form state — never on the server. This must not persist the parent document,\n * otherwise publishing here would silently save any of the parent's other unrelated\n * unsaved edits too.\n *\n * The parent is either the root document that originally opened the modal (its own Form\n * stays mounted for the whole session, so it's safe to write into directly) or a nested\n * document still further up the modal's documentHistory (whose Form is the SAME shared\n * instance the modal reuses at every level, wholesale-replaced on every navigation — a\n * direct write there would land on the wrong document and be gone the moment we\n * navigate). For the latter the patch is queued on GO_TO_CREATED_RELATION below instead,\n * to be re-applied once that document becomes current again.\n */\n const isNestedParent = Array.isArray(documentHistory) && documentHistory.length >= 2;\n\n let connectPatch: PendingConnectPatch | undefined;\n\n if (fieldToConnect && (setParentFormValue || isNestedParent)) {\n const currentFieldValue = getIn<unknown>(getParentFormValues?.(), fieldToConnect);\n // Publishing a brand-new document creates two rows sharing one documentId — a draft\n // and a published one, each with its own numeric id. The parent's relation search\n // (and its \"already connected\" filter) identifies items by the draft row's id, so\n // connecting with the publish response's id would leave this relation still\n // selectable there. Fetch the draft row to get the id the search actually expects.\n const draftDocument = await fetchDraftDocument({\n collectionType,\n model,\n documentId: res.data.documentId,\n params: currentDocumentMeta.params,\n });\n const patch = buildRelationConnectPatch(\n currentFieldValue,\n fieldToConnect,\n draftDocument.data?.data ?? res.data,\n 'published',\n fieldToConnectUID\n );\n\n if (patch && isNestedParent) {\n connectPatch = {\n fieldToConnect,\n relationValue: patch.relationValue,\n componentUIDPath: patch.componentUIDPath,\n componentUID: patch.componentUIDPath ? fieldToConnectUID : undefined,\n };\n } else if (patch && setParentFormValue) {\n setParentFormValue(fieldToConnect, patch.relationValue);\n\n if (patch.componentUIDPath) {\n setParentFormValue(patch.componentUIDPath, fieldToConnectUID);\n }\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: newRelation, shouldBypassConfirmation: true, connectPatch },\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 // When a relation modal is open, only its own PublishAction instance (fromRelationModal)\n // should react to the shortcut — otherwise the background entry publishes at the same time.\n if (!fromRelationModal && isAnyRelationModalOpen()) {\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 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\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 setParentFormValue = useRelationModal(\n 'UpdateAction',\n (state) => state.state.setParentFormValue,\n false\n );\n const documentHistory = useRelationModal(\n 'UpdateAction',\n (state) => state.state.documentHistory,\n false\n );\n const fromRelationModal = relationContext != undefined;\n\n const { currentDocumentMeta } = useDocumentContext('UpdateAction');\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 // This document is now persisted with whatever local connect patches were merged into\n // it, if any (see the pendingConnects explanation below) — they'd be stale from here on.\n dispatch?.({\n type: 'CLEAR_PENDING_CONNECTS',\n payload: { documentMeta: { model, documentId } },\n });\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 * Connect the newly created document to the parent's relation field, purely in local\n * form state — never on the server. This must not persist the parent document,\n * otherwise saving here would silently save any of the parent's other unrelated\n * unsaved edits too.\n *\n * The parent is either the root document that originally opened the modal (its own\n * Form stays mounted for the whole session, so it's safe to write into directly) or a\n * nested document still further up the modal's documentHistory (whose Form is the\n * SAME shared instance the modal reuses at every level, wholesale-replaced on every\n * navigation — a direct write there would land on the wrong document and be gone the\n * moment we navigate). For the latter the patch is queued on GO_TO_CREATED_RELATION\n * below instead, to be re-applied once that document becomes current again.\n */\n const isNestedParent = Array.isArray(documentHistory) && documentHistory.length >= 2;\n\n let connectPatch: PendingConnectPatch | undefined;\n\n if (fieldToConnect && (setParentFormValue || isNestedParent)) {\n const currentFieldValue = getIn<unknown>(getParentFormValues?.(), fieldToConnect);\n const patch = buildRelationConnectPatch(\n currentFieldValue,\n fieldToConnect,\n res.data,\n hasDraftAndPublished ? 'draft' : undefined,\n fieldToConnectUID\n );\n\n if (patch && isNestedParent) {\n connectPatch = {\n fieldToConnect,\n relationValue: patch.relationValue,\n componentUIDPath: patch.componentUIDPath,\n componentUID: patch.componentUIDPath ? fieldToConnectUID : undefined,\n };\n } else if (patch && setParentFormValue) {\n setParentFormValue(fieldToConnect, patch.relationValue);\n\n if (patch.componentUIDPath) {\n setParentFormValue(patch.componentUIDPath, fieldToConnectUID);\n }\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: createdRelation, shouldBypassConfirmation: true, connectPatch },\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 const fromRelationModalRef = React.useRef(fromRelationModal);\n fromRelationModalRef.current = fromRelationModal;\n\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (getEditViewShortcut(e) !== 'save') {\n return;\n }\n\n e.preventDefault();\n\n // When a relation modal is open, only its own UpdateAction instance (fromRelationModal)\n // should react to the shortcut — otherwise the background entry saves at the same time.\n if (!fromRelationModalRef.current && isAnyRelationModalOpen()) {\n return;\n }\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","buildRelationConnectPatch","currentFieldValue","fieldToConnect","data","status","fieldToConnectUID","relationToConnect","documentId","locale","relationFieldValue","isObject","undefined","isFieldPresent","fieldPath","split","fieldName","at","parentPath","slice","join","existingConnect","Array","isArray","connect","some","relation","relationValue","disconnect","componentUIDPath","DocumentActions","actions","formatMessage","useIntl","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","positions","includes","addHintTooltip","children","disabled","hint","type","id","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","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","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","fetchDraftDocument","useLazyGetDocumentQuery","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","dispatch","getParentFormValues","setParentFormValue","documentHistory","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","idToPublish","getTranslation","countLocalDraftRelations","fetchDraftRelationsCount","useCallback","options","draftAndPublish","error","params","normalizeDraftRelationCounts","updatedAt","handleWindowFocus","window","addEventListener","removeEventListener","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","doc","performPublish","Promise","resolve","errors","hasUnreadableRequiredField","keys","attributes","attribute","componentFields","field","startsWith","required","handleInvisibleAttributes","res","payload","documentMeta","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","replace","newRelation","isNestedParent","connectPatch","getIn","draftDocument","patch","componentUID","shouldBypassConfirmation","isBaseQueryError","name","getFreshDraftRelationCounts","resolveDraftRelationCounts","draftRelationCounts","hasUnpublishedRelations","hasDraftM2mLinks","dialogVariant","getDraftRelationsPublishState","supportsDraftRelationWarning","Boolean","handleKeyDown","getEditViewShortcut","isAnyRelationModalOpen","hasDraftRelations","count","unpublishedRelations","draftM2mLinks","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","useDoc","suitableSchema","hasDraftAndPublished","handleUpdate","globalThis","activeElement","blur","latestValues","origin","relative","createdRelation","handleUpdateRef","current","isDisabledRef","fromRelationModalRef","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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"}