@strapi/content-manager 5.46.1 → 5.47.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/admin/history/components/VersionInputRenderer.js +63 -25
  2. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  3. package/dist/admin/history/components/VersionInputRenderer.mjs +62 -26
  4. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  5. package/dist/admin/hooks/useDocument.js +82 -2
  6. package/dist/admin/hooks/useDocument.js.map +1 -1
  7. package/dist/admin/hooks/useDocument.mjs +82 -2
  8. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/EditViewPage.js +3 -2
  10. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  11. package/dist/admin/pages/EditView/EditViewPage.mjs +3 -2
  12. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/DocumentActions.js +6 -3
  14. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/DocumentActions.mjs +6 -3
  16. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +4 -1
  18. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +4 -1
  20. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +4 -4
  22. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +4 -4
  24. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  25. package/dist/admin/src/history/components/VersionInputRenderer.d.ts +27 -1
  26. package/dist/admin/translations/sk.json.js +175 -9
  27. package/dist/admin/translations/sk.json.js.map +1 -1
  28. package/dist/admin/translations/sk.json.mjs +175 -9
  29. package/dist/admin/translations/sk.json.mjs.map +1 -1
  30. package/dist/admin/utils/relations.js +4 -0
  31. package/dist/admin/utils/relations.js.map +1 -1
  32. package/dist/admin/utils/relations.mjs +4 -0
  33. package/dist/admin/utils/relations.mjs.map +1 -1
  34. package/dist/server/bootstrap.js +4 -0
  35. package/dist/server/bootstrap.js.map +1 -1
  36. package/dist/server/bootstrap.mjs +4 -0
  37. package/dist/server/bootstrap.mjs.map +1 -1
  38. package/dist/server/controllers/collection-types.js +9 -5
  39. package/dist/server/controllers/collection-types.js.map +1 -1
  40. package/dist/server/controllers/collection-types.mjs +10 -6
  41. package/dist/server/controllers/collection-types.mjs.map +1 -1
  42. package/dist/server/homepage/services/homepage.js +21 -16
  43. package/dist/server/homepage/services/homepage.js.map +1 -1
  44. package/dist/server/homepage/services/homepage.mjs +21 -16
  45. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  46. package/dist/server/mcp/derive-content-type-mcp-tools.js +524 -0
  47. package/dist/server/mcp/derive-content-type-mcp-tools.js.map +1 -0
  48. package/dist/server/mcp/derive-content-type-mcp-tools.mjs +518 -0
  49. package/dist/server/mcp/derive-content-type-mcp-tools.mjs.map +1 -0
  50. package/dist/server/mcp/handlers/collection-handlers.js +404 -0
  51. package/dist/server/mcp/handlers/collection-handlers.js.map +1 -0
  52. package/dist/server/mcp/handlers/collection-handlers.mjs +395 -0
  53. package/dist/server/mcp/handlers/collection-handlers.mjs.map +1 -0
  54. package/dist/server/mcp/handlers/constants.js +10 -0
  55. package/dist/server/mcp/handlers/constants.js.map +1 -0
  56. package/dist/server/mcp/handlers/constants.mjs +6 -0
  57. package/dist/server/mcp/handlers/constants.mjs.map +1 -0
  58. package/dist/server/mcp/handlers/single-type-handlers.js +344 -0
  59. package/dist/server/mcp/handlers/single-type-handlers.js.map +1 -0
  60. package/dist/server/mcp/handlers/single-type-handlers.mjs +336 -0
  61. package/dist/server/mcp/handlers/single-type-handlers.mjs.map +1 -0
  62. package/dist/server/mcp/permissions.js +138 -0
  63. package/dist/server/mcp/permissions.js.map +1 -0
  64. package/dist/server/mcp/permissions.mjs +131 -0
  65. package/dist/server/mcp/permissions.mjs.map +1 -0
  66. package/dist/server/mcp/register-content-manager-mcp-tools.js +30 -0
  67. package/dist/server/mcp/register-content-manager-mcp-tools.js.map +1 -0
  68. package/dist/server/mcp/register-content-manager-mcp-tools.mjs +28 -0
  69. package/dist/server/mcp/register-content-manager-mcp-tools.mjs.map +1 -0
  70. package/dist/server/mcp/schemas/blocks-schema.js +124 -0
  71. package/dist/server/mcp/schemas/blocks-schema.js.map +1 -0
  72. package/dist/server/mcp/schemas/blocks-schema.mjs +122 -0
  73. package/dist/server/mcp/schemas/blocks-schema.mjs.map +1 -0
  74. package/dist/server/mcp/schemas/data-schema.js +252 -0
  75. package/dist/server/mcp/schemas/data-schema.js.map +1 -0
  76. package/dist/server/mcp/schemas/data-schema.mjs +248 -0
  77. package/dist/server/mcp/schemas/data-schema.mjs.map +1 -0
  78. package/dist/server/mcp/schemas/filters-schema.js +111 -0
  79. package/dist/server/mcp/schemas/filters-schema.js.map +1 -0
  80. package/dist/server/mcp/schemas/filters-schema.mjs +107 -0
  81. package/dist/server/mcp/schemas/filters-schema.mjs.map +1 -0
  82. package/dist/server/mcp/schemas/input-schemas.js +18 -0
  83. package/dist/server/mcp/schemas/input-schemas.js.map +1 -0
  84. package/dist/server/mcp/schemas/input-schemas.mjs +13 -0
  85. package/dist/server/mcp/schemas/input-schemas.mjs.map +1 -0
  86. package/dist/server/mcp/schemas/output-schemas.js +48 -0
  87. package/dist/server/mcp/schemas/output-schemas.js.map +1 -0
  88. package/dist/server/mcp/schemas/output-schemas.mjs +44 -0
  89. package/dist/server/mcp/schemas/output-schemas.mjs.map +1 -0
  90. package/dist/server/mcp/schemas/sort-schema.js +80 -0
  91. package/dist/server/mcp/schemas/sort-schema.js.map +1 -0
  92. package/dist/server/mcp/schemas/sort-schema.mjs +76 -0
  93. package/dist/server/mcp/schemas/sort-schema.mjs.map +1 -0
  94. package/dist/server/mcp/utils.js +43 -0
  95. package/dist/server/mcp/utils.js.map +1 -0
  96. package/dist/server/mcp/utils.mjs +39 -0
  97. package/dist/server/mcp/utils.mjs.map +1 -0
  98. package/dist/server/services/document-metadata.js +32 -3
  99. package/dist/server/services/document-metadata.js.map +1 -1
  100. package/dist/server/services/document-metadata.mjs +32 -3
  101. package/dist/server/services/document-metadata.mjs.map +1 -1
  102. package/dist/server/services/index.js +1 -1
  103. package/dist/server/services/index.js.map +1 -1
  104. package/dist/server/services/permission-checker.js +4 -1
  105. package/dist/server/services/permission-checker.js.map +1 -1
  106. package/dist/server/services/permission-checker.mjs +1 -1
  107. package/dist/server/services/permission-checker.mjs.map +1 -1
  108. package/dist/server/services/utils/populate.js +3 -3
  109. package/dist/server/services/utils/populate.js.map +1 -1
  110. package/dist/server/services/utils/populate.mjs +3 -3
  111. package/dist/server/services/utils/populate.mjs.map +1 -1
  112. package/dist/server/src/bootstrap.d.ts.map +1 -1
  113. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  114. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  115. package/dist/server/src/index.d.ts +3 -3
  116. package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts +12 -0
  117. package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts.map +1 -0
  118. package/dist/server/src/mcp/handlers/collection-handlers.d.ts +69 -0
  119. package/dist/server/src/mcp/handlers/collection-handlers.d.ts.map +1 -0
  120. package/dist/server/src/mcp/handlers/constants.d.ts +4 -0
  121. package/dist/server/src/mcp/handlers/constants.d.ts.map +1 -0
  122. package/dist/server/src/mcp/handlers/index.d.ts +3 -0
  123. package/dist/server/src/mcp/handlers/index.d.ts.map +1 -0
  124. package/dist/server/src/mcp/handlers/single-type-handlers.d.ts +66 -0
  125. package/dist/server/src/mcp/handlers/single-type-handlers.d.ts.map +1 -0
  126. package/dist/server/src/mcp/permissions.d.ts +49 -0
  127. package/dist/server/src/mcp/permissions.d.ts.map +1 -0
  128. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts +8 -0
  129. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -0
  130. package/dist/server/src/mcp/schemas/blocks-schema.d.ts +8 -0
  131. package/dist/server/src/mcp/schemas/blocks-schema.d.ts.map +1 -0
  132. package/dist/server/src/mcp/schemas/data-schema.d.ts +36 -0
  133. package/dist/server/src/mcp/schemas/data-schema.d.ts.map +1 -0
  134. package/dist/server/src/mcp/schemas/filters-schema.d.ts +22 -0
  135. package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -0
  136. package/dist/server/src/mcp/schemas/index.d.ts +7 -0
  137. package/dist/server/src/mcp/schemas/index.d.ts.map +1 -0
  138. package/dist/server/src/mcp/schemas/input-schemas.d.ts +10 -0
  139. package/dist/server/src/mcp/schemas/input-schemas.d.ts.map +1 -0
  140. package/dist/server/src/mcp/schemas/output-schemas.d.ts +18 -0
  141. package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -0
  142. package/dist/server/src/mcp/schemas/sort-schema.d.ts +24 -0
  143. package/dist/server/src/mcp/schemas/sort-schema.d.ts.map +1 -0
  144. package/dist/server/src/mcp/types.d.ts +31 -0
  145. package/dist/server/src/mcp/types.d.ts.map +1 -0
  146. package/dist/server/src/mcp/utils.d.ts +21 -0
  147. package/dist/server/src/mcp/utils.d.ts.map +1 -0
  148. package/dist/server/src/services/document-metadata.d.ts +11 -1
  149. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  150. package/dist/server/src/services/index.d.ts +3 -3
  151. package/dist/server/src/services/permission-checker.d.ts +13 -3
  152. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  153. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  154. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  155. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  156. package/package.json +10 -8
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentActions.js","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n tours,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n Menu,\n ButtonProps,\n Tooltip,\n IconButton,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { Create, Publish } from '../../../../../shared/contracts/collection-types';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, useDocument } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { usePreviewContext } from '../../../preview/pages/Preview';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport {\n useGetDraftRelationCountQuery,\n useUpdateDocumentMutation,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n label: string;\n type?: 'publish' | 'update' | 'unpublish' | 'discard';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst connectRelationToParent = (\n parentDataToUpdate: AnyData | undefined,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n /*\n * Check if the fieldToConnect is already present in the parentDataToUpdate.\n * This happens in particular when in the parentDocument you have created\n * a new component without saving.\n */\n const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n const fieldToConnectPath = isFieldPresent\n ? fieldToConnect\n : // Compute the path to the parent object\n fieldToConnect.split('.').slice(0, -1).join('.');\n const fieldToConnectValue = isFieldPresent\n ? {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n }\n : {\n [fieldToConnect.split('.').pop()!]: {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n disconnect: [],\n },\n // In case the object was not present you need to pass the componentUID of the parent document\n __component: fieldToConnectUID,\n };\n const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n if (action.position === undefined) {\n return true;\n }\n\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('panel');\n });\n\n if (!primaryAction) {\n return null;\n }\n\n const addHintTooltip = (action: Action, children: React.ReactNode) => {\n return !action.disabled ? (\n <Tooltip\n label={formatMessage(\n {\n id: 'content-manager.containers.EditView.saveHint',\n defaultMessage: 'Ctrl / Cmd + Enter to {action}',\n },\n {\n action: action.label,\n }\n )}\n >\n <Flex width=\"100%\">{children}</Flex>\n </Tooltip>\n ) : (\n children\n );\n };\n\n const primaryActionContent = (\n <>\n <Flex flex={1} alignItems=\"stretch\" direction=\"column\">\n {addHintTooltip(\n primaryAction,\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n buttonType={primaryAction.type === 'publish' ? undefined : 'submit'}\n />\n )}\n </Flex>\n\n {restActions.length > 0 ? (\n <DocumentActionsMenu\n actions={restActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n />\n ) : null}\n </>\n );\n\n return (\n <Flex direction={{ initial: 'row', large: 'column' }} gap={2} alignItems=\"stretch\" width=\"100%\">\n <tours.contentManager.Publish>\n {isDesktop ? <Flex gap={2}>{primaryActionContent}</Flex> : primaryActionContent}\n </tours.contentManager.Publish>\n {secondaryAction ? (\n <Flex flex={1} order={{ initial: -1, large: 0 }} alignItems=\"stretch\" direction=\"column\">\n {secondaryAction.type === 'publish' ? (\n <tours.contentManager.Publish>\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n </tours.contentManager.Publish>\n ) : (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n buttonType=\"submit\"\n />\n )}\n </Flex>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Omit<Action, 'type'> {\n buttonType?: 'button' | 'submit' | 'reset';\n type?: DocumentActionDescription['type'];\n}\n\nconst DocumentActionButton = ({ buttonType = 'button', ...action }: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: DocumentActionButtonProps) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n type={buttonType}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.dialog?.variant ?? action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n actions: Action[];\n children?: React.ReactNode;\n label?: string;\n variant?: 'ghost' | 'tertiary';\n}\n\nconst DocumentActionsMenu = ({\n actions,\n children,\n label,\n variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n setIsOpen(false);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (!isDisabled) {\n setIsOpen(open);\n }\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={handleOpenChange}>\n <Menu.Trigger\n ref={triggerRef}\n disabled={isDisabled}\n label={\n label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })\n }\n tag={IconButton}\n icon={<More />}\n variant={variant}\n />\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\" maxWidth=\"25rem\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const {\n currentDocument: { schema },\n } = useDocumentContext('PublishAction');\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const { canPublish, canReadFields } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n );\n const { publish, isLoading } = useDocumentActions();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ rawQuery }] = useQueryParams();\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const getValues = useForm('PublishAction', (state) => state.getValues);\n const formValues = useForm('PublishAction', ({ values }) => values);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n const {\n currentDocument: { components },\n } = useDocumentContext('PublishAction');\n\n // need to discriminate if the publish is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('PublishAction', () => true, false);\n const fromRelationModal = relationContext != undefined;\n\n const dispatch = useRelationModal('PublishAction', (state) => state.dispatch);\n const fieldToConnect = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'PublishAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('PublishAction', (state) => state.rootDocumentMeta);\n\n const dispatchGuidedTour = useGuidedTour('PublishAction', (s) => s.dispatch);\n\n const { currentDocumentMeta } = useDocumentContext('PublishAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const idToPublish = currentDocumentMeta.documentId || id;\n\n React.useEffect(() => {\n if (isErrorDraftRelations) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('error.records.fetch-draft-relatons'),\n defaultMessage: 'An error occurred while fetching draft relations on this document.',\n }),\n });\n }\n }, [isErrorDraftRelations, toggleNotification, formatMessage]);\n\n React.useEffect(() => {\n const localDraftRelations = new Set();\n\n /**\n * Extracts draft relations from the provided data object.\n * It checks for a connect array of relations.\n * If a relation has a status of 'draft', its id is added to the localDraftRelations set.\n */\n const extractDraftRelations = (data: Omit<RelationsFormValue, 'disconnect'>) => {\n const relations = data.connect || [];\n relations.forEach((relation) => {\n if (relation.status === 'draft') {\n localDraftRelations.add(relation.id);\n }\n });\n };\n\n /**\n * Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.\n * If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.\n * It recursively calls itself for any non-null objects it contains.\n */\n const traverseAndExtract = (data: { [field: string]: any }) => {\n Object.entries(data).forEach(([key, value]) => {\n if (key === 'connect' && Array.isArray(value)) {\n extractDraftRelations({ connect: value });\n } else if (typeof value === 'object' && value !== null) {\n traverseAndExtract(value);\n }\n });\n };\n\n if (!documentId || modified) {\n traverseAndExtract(formValues);\n setLocalCountOfDraftRelations(localDraftRelations.size);\n }\n }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);\n\n React.useEffect(() => {\n if (!document || !document.documentId || isListView) {\n return;\n }\n\n const fetchDraftRelationsCount = async () => {\n const { data, error } = await countDraftRelations({\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n });\n\n if (error) {\n throw error;\n }\n\n if (data) {\n setServerCountOfDraftRelations(data.data);\n }\n };\n\n fetchDraftRelationsCount();\n }, [\n isListView,\n document,\n documentId,\n countDraftRelations,\n collectionType,\n model,\n currentDocumentMeta.params,\n ]);\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { getInitialFormValues } = useDoc();\n\n const isDocumentPublished =\n (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n document?.status !== 'modified';\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n /**\n * Yield one microtask so React can flush any pending field updates from the same task\n * (common with fast local runners / Playwright) before we read values and validate.\n * TODO: replace with an explicit form flush contract when we can (same concern as Save flow).\n */\n await Promise.resolve();\n\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField =\n schema &&\n Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\n // For components, check if any of the component fields are readable\n if (attribute.type === 'component') {\n const componentFields = (canReadFields ?? []).filter((field) =>\n field.startsWith(`${fieldName}.`)\n );\n return componentFields.length === 0;\n }\n\n // For regular fields, check if the field itself is readable\n return attribute?.required && !(canReadFields ?? []).includes(fieldName);\n });\n\n if (hasUnreadableRequiredField) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error.unreadable-required-field',\n defaultMessage:\n 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.',\n }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n }\n return;\n }\n\n const { data } = handleInvisibleAttributes(transformData(getValues()), {\n schema,\n components,\n });\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n // Reset form with current values as new initial values (clears errors/submitting and sets modified to false)\n if ('data' in res) {\n resetForm(getValues());\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n }\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n if (idToPublish === 'create' && !fromRelationModal) {\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (fromRelationModal) {\n const newRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: metaDocumentToUpdate.collectionType,\n model: metaDocumentToUpdate.model,\n documentId:\n metaDocumentToUpdate.collectionType !== SINGLE_TYPES\n ? metaDocumentToUpdate.documentId\n : undefined,\n params: metaDocumentToUpdate.params,\n data: dataToUpdate,\n });\n\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: newRelation, shouldBypassConfirmation: true },\n });\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } finally {\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n const hasDraftRelations = enableDraftRelationsCount && totalDraftRelations > 0;\n\n // Auto-publish on CMD+Enter on macOS, and CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n if (!schema?.options?.draftAndPublish) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n if (!hasDraftRelations) {\n performPublish();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [hasDraftRelations, performPublish, schema?.options?.draftAndPublish]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n type: 'publish',\n loading: isLoading,\n position: ['panel', 'preview', 'relation-modal'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const dispatchGuidedTour = useGuidedTour('UpdateAction', (s) => s.dispatch);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { create, update, clone, isLoading } = useDocumentActions();\n const {\n currentDocument: { components },\n } = useDocumentContext('UpdateAction');\n const [{ rawQuery }] = useQueryParams();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const { getInitialFormValues } = useDoc();\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const initialValues = useForm('UpdateAction', ({ initialValues }) => initialValues);\n const getValues = useForm('UpdateAction', (state) => state.getValues);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n // need to discriminate if the update is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('UpdateAction', () => true, false);\n const relationalModalSchema = useRelationModal(\n 'UpdateAction',\n (state) => state.currentDocument.schema,\n false\n );\n const fieldToConnect = useRelationModal(\n 'UpdateAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'UpdateAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('UpdateAction', (state) => state.rootDocumentMeta);\n const fromRelationModal = relationContext != undefined;\n\n const { currentDocumentMeta } = useDocumentContext('UpdateAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { schema } = useDoc();\n\n const handleUpdate = async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n // Blur the active element so inputs that debounce into the form (e.g. blocks editor) flush\n // before validate/getValues — on fast clients Save can otherwise read stale field state.\n // Use the global DOM document — form values are not in scope here (avoid shadowing `document`).\n (globalThis.document?.activeElement as HTMLElement | undefined)?.blur();\n\n // Yield microtasks so batched React updates after blur/onChange can settle before validate\n // (same idea as performPublish; two ticks vs one gives a bit more room after focus/blur).\n // TODO: replace with an explicit field/form flush contract when available.\n await Promise.resolve();\n await Promise.resolve();\n\n const { errors } = await validate(true, {\n status: 'draft',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n\n const latestValues = getValues();\n\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(latestValues)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const { data } = handleInvisibleAttributes(transformData(latestValues), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm(latestValues);\n }\n } else {\n const { data } = handleInvisibleAttributes(transformData(latestValues), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await create(\n {\n model,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n if (fromRelationModal) {\n const createdRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: parentDocumentMetaToUpdate.collectionType,\n model: parentDocumentMetaToUpdate.model,\n documentId:\n parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES\n ? parentDocumentMetaToUpdate.documentId\n : undefined,\n params: parentDocumentMetaToUpdate.params,\n data: {\n ...dataToUpdate,\n },\n });\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: createdRelation, shouldBypassConfirmation: true },\n });\n } else {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true, relative: 'path' }\n );\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n return {\n loading: isLoading,\n /**\n * Disabled when:\n * - the form is submitting\n * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n * - the active tab is the published tab\n */\n disabled: isSubmitting || (!modified && !isCloning) || activeTab === 'published',\n label: formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n }),\n onClick: handleUpdate,\n position: ['panel', 'preview', 'relation-modal'],\n };\n};\n\nUpdateAction.type = 'update';\nUpdateAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n KEEP: 'keep',\n DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n const { unpublish } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { toggleNotification } = useNotification();\n const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n const isDocumentModified = document?.status === 'modified';\n\n const handleChange = (value: string) => {\n setShouldKeepDraft(value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n };\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled:\n !canPublish ||\n activeTab === 'published' ||\n (document?.status !== 'published' && document?.status !== 'modified'),\n label: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n icon: <Cross />,\n onClick: async () => {\n /**\n * return if there's no id & we're in a collection type, or the status modified\n * for either collection type because we use a dialog to handle the process in\n * the latter case.\n */\n if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n if (!documentId) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n return;\n }\n\n await unpublish({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n dialog: isDocumentModified\n ? {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n <Flex width=\"100%\" direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n <Radio.Group\n defaultValue={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n name=\"discard-options\"\n aria-label={formatMessage({\n id: 'content-manager.actions.unpublish.dialog.radio-label',\n defaultMessage: 'Choose an option to unpublish the document.',\n })}\n onValueChange={handleChange}\n >\n <Radio.Item checked={shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.KEEP}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n defaultMessage: 'Keep draft',\n })}\n </Radio.Item>\n <Radio.Item checked={!shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n defaultMessage: 'Replace draft',\n })}\n </Radio.Item>\n </Radio.Group>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n await unpublish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n !shouldKeepDraft\n );\n },\n }\n : undefined,\n variant: 'danger',\n position: ['panel', 'table-row'],\n };\n};\n\nUnpublishAction.type = 'unpublish';\nUnpublishAction.position = 'panel';\n\nconst DiscardAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n const { discard, isLoading } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n label: formatMessage({\n id: 'content-manager.actions.discard.label',\n defaultMessage: 'Discard changes',\n }),\n icon: <Cross />,\n position: ['panel', 'table-row'],\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.discard.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n await discard({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n },\n };\n};\n\nDiscardAction.type = 'discard';\nDiscardAction.position = 'panel';\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DocumentActionButton, DEFAULT_ACTIONS };\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n"],"names":["connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","isFieldPresent","get","fieldToConnectPath","split","slice","join","fieldToConnectValue","connect","id","documentId","locale","pop","disconnect","__component","objectToConnect","set","merge","DocumentActions","actions","formatMessage","useIntl","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","addHintTooltip","children","disabled","_jsx","Tooltip","label","defaultMessage","Flex","width","primaryActionContent","_jsxs","_Fragment","flex","alignItems","direction","DocumentActionButton","variant","buttonType","type","length","DocumentActionsMenu","initial","large","gap","tours","contentManager","Publish","order","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","title","message","content","status","timeout","onClose","preventDefault","handleClose","Button","startIcon","icon","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","setIsOpen","isDisabled","every","triggerRef","useRef","handleOpenChange","open","Menu","Root","onOpenChange","Trigger","ref","tag","IconButton","More","Content","maxHeight","popoverPlacement","maxWidth","map","Item","onSelect","display","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","getValues","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","size","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","performPublish","Promise","resolve","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","componentFields","field","startsWith","required","handleInvisibleAttributes","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","options","draftAndPublish","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","handleUpdate","globalThis","activeElement","blur","latestValues","origin","relative","createdRelation","replace","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","WarningCircle","height","fill","Typography","textAlign","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","canUpdate","discard","DEFAULT_ACTIONS"],"mappings":"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"}
1
+ {"version":3,"file":"DocumentActions.js","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n tours,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n Menu,\n ButtonProps,\n Tooltip,\n IconButton,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { Create, Publish } from '../../../../../shared/contracts/collection-types';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, useDocument } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { usePreviewContext } from '../../../preview/pages/Preview';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport {\n useGetDraftRelationCountQuery,\n useUpdateDocumentMutation,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n label: string;\n type?: 'publish' | 'update' | 'unpublish' | 'discard';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst connectRelationToParent = (\n parentDataToUpdate: AnyData | undefined,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n /*\n * Check if the fieldToConnect is already present in the parentDataToUpdate.\n * This happens in particular when in the parentDocument you have created\n * a new component without saving.\n */\n const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n const fieldToConnectPath = isFieldPresent\n ? fieldToConnect\n : // Compute the path to the parent object\n fieldToConnect.split('.').slice(0, -1).join('.');\n const fieldToConnectValue = isFieldPresent\n ? {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n }\n : {\n [fieldToConnect.split('.').pop()!]: {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n disconnect: [],\n },\n // In case the object was not present you need to pass the componentUID of the parent document\n __component: fieldToConnectUID,\n };\n const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n if (action.position === undefined) {\n return true;\n }\n\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('panel');\n });\n\n if (!primaryAction) {\n return null;\n }\n\n const addHintTooltip = (action: Action, children: React.ReactNode) => {\n return !action.disabled ? (\n <Tooltip\n label={formatMessage(\n {\n id: 'content-manager.containers.EditView.saveHint',\n defaultMessage: 'Ctrl / Cmd + Enter to {action}',\n },\n {\n action: action.label,\n }\n )}\n >\n <Flex width=\"100%\">{children}</Flex>\n </Tooltip>\n ) : (\n children\n );\n };\n\n const primaryActionContent = (\n <>\n <Flex flex={1} alignItems=\"stretch\" direction=\"column\">\n {addHintTooltip(\n primaryAction,\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n buttonType={primaryAction.type === 'publish' ? undefined : 'submit'}\n />\n )}\n </Flex>\n\n {restActions.length > 0 ? (\n <DocumentActionsMenu\n actions={restActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n />\n ) : null}\n </>\n );\n\n return (\n <Flex direction={{ initial: 'row', large: 'column' }} gap={2} alignItems=\"stretch\" width=\"100%\">\n <tours.contentManager.Publish>\n {isDesktop ? <Flex gap={2}>{primaryActionContent}</Flex> : primaryActionContent}\n </tours.contentManager.Publish>\n {secondaryAction ? (\n <Flex flex={1} order={{ initial: -1, large: 0 }} alignItems=\"stretch\" direction=\"column\">\n {secondaryAction.type === 'publish' ? (\n <tours.contentManager.Publish>\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n </tours.contentManager.Publish>\n ) : (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n buttonType=\"submit\"\n />\n )}\n </Flex>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Omit<Action, 'type'> {\n buttonType?: 'button' | 'submit' | 'reset';\n type?: DocumentActionDescription['type'];\n}\n\nconst DocumentActionButton = ({ buttonType = 'button', ...action }: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: DocumentActionButtonProps) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n type={buttonType}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.dialog?.variant ?? action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n actions: Action[];\n children?: React.ReactNode;\n label?: string;\n variant?: 'ghost' | 'tertiary';\n}\n\nconst DocumentActionsMenu = ({\n actions,\n children,\n label,\n variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n setIsOpen(false);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (!isDisabled) {\n setIsOpen(open);\n }\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={handleOpenChange}>\n <Menu.Trigger\n ref={triggerRef}\n disabled={isDisabled}\n label={\n label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })\n }\n tag={IconButton}\n icon={<More />}\n variant={variant}\n />\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\" maxWidth=\"25rem\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const {\n currentDocument: { schema },\n } = useDocumentContext('PublishAction');\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const { canPublish, canReadFields } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n );\n const { publish, isLoading } = useDocumentActions();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ rawQuery }] = useQueryParams();\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const getValues = useForm('PublishAction', (state) => state.getValues);\n const formValues = useForm('PublishAction', ({ values }) => values);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n const {\n currentDocument: { components },\n } = useDocumentContext('PublishAction');\n\n // need to discriminate if the publish is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('PublishAction', () => true, false);\n const fromRelationModal = relationContext != undefined;\n\n const dispatch = useRelationModal('PublishAction', (state) => state.dispatch);\n const fieldToConnect = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'PublishAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('PublishAction', (state) => state.rootDocumentMeta);\n\n const dispatchGuidedTour = useGuidedTour('PublishAction', (s) => s.dispatch);\n\n const { currentDocumentMeta } = useDocumentContext('PublishAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const idToPublish = currentDocumentMeta.documentId || id;\n\n React.useEffect(() => {\n if (isErrorDraftRelations) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('error.records.fetch-draft-relatons'),\n defaultMessage: 'An error occurred while fetching draft relations on this document.',\n }),\n });\n }\n }, [isErrorDraftRelations, toggleNotification, formatMessage]);\n\n React.useEffect(() => {\n const localDraftRelations = new Set();\n\n /**\n * Extracts draft relations from the provided data object.\n * It checks for a connect array of relations.\n * If a relation has a status of 'draft', its id is added to the localDraftRelations set.\n */\n const extractDraftRelations = (data: Omit<RelationsFormValue, 'disconnect'>) => {\n const relations = data.connect || [];\n relations.forEach((relation) => {\n if (relation.status === 'draft') {\n localDraftRelations.add(relation.id);\n }\n });\n };\n\n /**\n * Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.\n * If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.\n * It recursively calls itself for any non-null objects it contains.\n */\n const traverseAndExtract = (data: { [field: string]: any }) => {\n Object.entries(data).forEach(([key, value]) => {\n if (key === 'connect' && Array.isArray(value)) {\n extractDraftRelations({ connect: value });\n } else if (typeof value === 'object' && value !== null) {\n traverseAndExtract(value);\n }\n });\n };\n\n if (!documentId || modified) {\n traverseAndExtract(formValues);\n setLocalCountOfDraftRelations(localDraftRelations.size);\n }\n }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);\n\n React.useEffect(() => {\n if (!document || !document.documentId || isListView) {\n return;\n }\n\n const fetchDraftRelationsCount = async () => {\n const { data, error } = await countDraftRelations({\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n });\n\n if (error) {\n throw error;\n }\n\n if (data) {\n setServerCountOfDraftRelations(data.data);\n }\n };\n\n fetchDraftRelationsCount();\n }, [\n isListView,\n document,\n documentId,\n countDraftRelations,\n collectionType,\n model,\n currentDocumentMeta.params,\n ]);\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { getInitialFormValues } = useDoc();\n\n const isDocumentPublished =\n (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n document?.status !== 'modified';\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n /**\n * Yield one microtask so React can flush any pending field updates from the same task\n * (common with fast local runners / Playwright) before we read values and validate.\n * TODO: replace with an explicit form flush contract when we can (same concern as Save flow).\n */\n await Promise.resolve();\n\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField =\n schema &&\n Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\n // For components, check if any of the component fields are readable\n if (attribute.type === 'component') {\n const componentFields = (canReadFields ?? []).filter((field) =>\n field.startsWith(`${fieldName}.`)\n );\n return componentFields.length === 0;\n }\n\n // For regular fields, check if the field itself is readable\n return attribute?.required && !(canReadFields ?? []).includes(fieldName);\n });\n\n if (hasUnreadableRequiredField) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error.unreadable-required-field',\n defaultMessage:\n 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.',\n }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n }\n return;\n }\n\n const { data } = handleInvisibleAttributes(transformData(getValues()), {\n schema,\n components,\n });\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n // Reset form with current values as new initial values (clears errors/submitting and sets modified to false)\n if ('data' in res) {\n resetForm(getValues());\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n }\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n if (idToPublish === 'create' && !fromRelationModal) {\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (fromRelationModal) {\n const newRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: metaDocumentToUpdate.collectionType,\n model: metaDocumentToUpdate.model,\n documentId:\n metaDocumentToUpdate.collectionType !== SINGLE_TYPES\n ? metaDocumentToUpdate.documentId\n : undefined,\n params: metaDocumentToUpdate.params,\n data: dataToUpdate,\n });\n\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: newRelation, shouldBypassConfirmation: true },\n });\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } finally {\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n const hasDraftRelations = enableDraftRelationsCount && totalDraftRelations > 0;\n\n // Auto-publish on CMD+Enter on macOS, and CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n if (!schema?.options?.draftAndPublish) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n if (!hasDraftRelations) {\n performPublish();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [hasDraftRelations, performPublish, schema?.options?.draftAndPublish]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n type: 'publish',\n loading: isLoading,\n position: ['panel', 'preview', 'relation-modal'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const dispatchGuidedTour = useGuidedTour('UpdateAction', (s) => s.dispatch);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { create, update, clone, isLoading } = useDocumentActions();\n const {\n currentDocument: { components },\n } = useDocumentContext('UpdateAction');\n const [{ rawQuery }] = useQueryParams();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const { getInitialFormValues } = useDoc();\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const initialValues = useForm('UpdateAction', ({ initialValues }) => initialValues);\n const getValues = useForm('UpdateAction', (state) => state.getValues);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n // need to discriminate if the update is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('UpdateAction', () => true, false);\n const relationalModalSchema = useRelationModal(\n 'UpdateAction',\n (state) => state.currentDocument.schema,\n false\n );\n const fieldToConnect = useRelationModal(\n 'UpdateAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'UpdateAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('UpdateAction', (state) => state.rootDocumentMeta);\n const fromRelationModal = relationContext != undefined;\n\n const { currentDocumentMeta } = useDocumentContext('UpdateAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { schema } = useDoc();\n\n const suitableSchema = fromRelationModal ? relationalModalSchema : schema;\n const hasDraftAndPublished = suitableSchema?.options?.draftAndPublish ?? false;\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 transformData(latestValues)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const { data } = handleInvisibleAttributes(transformData(latestValues), {\n schema: 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(transformData(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 parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: parentDocumentMetaToUpdate.collectionType,\n model: parentDocumentMetaToUpdate.model,\n documentId:\n parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES\n ? parentDocumentMetaToUpdate.documentId\n : undefined,\n params: parentDocumentMetaToUpdate.params,\n data: {\n ...dataToUpdate,\n },\n });\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: createdRelation, shouldBypassConfirmation: true },\n });\n } else {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true, relative: 'path' }\n );\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n return {\n loading: isLoading,\n /**\n * Disabled when:\n * - the form is submitting\n * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n * - the active tab is the published tab\n */\n disabled: isSubmitting || (!modified && !isCloning) || activeTab === 'published',\n label: formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n }),\n onClick: handleUpdate,\n position: ['panel', 'preview', 'relation-modal'],\n };\n};\n\nUpdateAction.type = 'update';\nUpdateAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n KEEP: 'keep',\n DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n const { unpublish } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { toggleNotification } = useNotification();\n const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n const isDocumentModified = document?.status === 'modified';\n\n const handleChange = (value: string) => {\n setShouldKeepDraft(value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n };\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled:\n !canPublish ||\n activeTab === 'published' ||\n (document?.status !== 'published' && document?.status !== 'modified'),\n label: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n icon: <Cross />,\n onClick: async () => {\n /**\n * return if there's no id & we're in a collection type, or the status modified\n * for either collection type because we use a dialog to handle the process in\n * the latter case.\n */\n if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n if (!documentId) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n return;\n }\n\n await unpublish({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n dialog: isDocumentModified\n ? {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n <Flex width=\"100%\" direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n <Radio.Group\n defaultValue={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n name=\"discard-options\"\n aria-label={formatMessage({\n id: 'content-manager.actions.unpublish.dialog.radio-label',\n defaultMessage: 'Choose an option to unpublish the document.',\n })}\n onValueChange={handleChange}\n >\n <Radio.Item checked={shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.KEEP}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n defaultMessage: 'Keep draft',\n })}\n </Radio.Item>\n <Radio.Item checked={!shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n defaultMessage: 'Replace draft',\n })}\n </Radio.Item>\n </Radio.Group>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n await unpublish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n !shouldKeepDraft\n );\n },\n }\n : undefined,\n variant: 'danger',\n position: ['panel', 'table-row'],\n };\n};\n\nUnpublishAction.type = 'unpublish';\nUnpublishAction.position = 'panel';\n\nconst DiscardAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n const { discard, isLoading } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n label: formatMessage({\n id: 'content-manager.actions.discard.label',\n defaultMessage: 'Discard changes',\n }),\n icon: <Cross />,\n position: ['panel', 'table-row'],\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.discard.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n await discard({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n },\n };\n};\n\nDiscardAction.type = 'discard';\nDiscardAction.position = 'panel';\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DocumentActionButton, DEFAULT_ACTIONS };\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n"],"names":["connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","isFieldPresent","get","fieldToConnectPath","split","slice","join","fieldToConnectValue","connect","id","documentId","locale","pop","disconnect","__component","objectToConnect","set","merge","DocumentActions","actions","formatMessage","useIntl","isDesktop","useIsDesktop","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","addHintTooltip","children","disabled","_jsx","Tooltip","label","defaultMessage","Flex","width","primaryActionContent","_jsxs","_Fragment","flex","alignItems","direction","DocumentActionButton","variant","buttonType","type","length","DocumentActionsMenu","initial","large","gap","tours","contentManager","Publish","order","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","title","message","content","status","timeout","onClose","preventDefault","handleClose","Button","startIcon","icon","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","setIsOpen","isDisabled","every","triggerRef","useRef","handleOpenChange","open","Menu","Root","onOpenChange","Trigger","ref","tag","IconButton","More","Content","maxHeight","popoverPlacement","maxWidth","map","Item","onSelect","display","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","getValues","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","size","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","performPublish","Promise","resolve","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","componentFields","field","startsWith","required","handleInvisibleAttributes","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","options","draftAndPublish","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","suitableSchema","hasDraftAndPublished","handleUpdate","globalThis","activeElement","blur","latestValues","origin","relative","createdRelation","replace","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","WarningCircle","height","fill","Typography","textAlign","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","canUpdate","discard","DEFAULT_ACTIONS"],"mappings":"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"}
@@ -777,6 +777,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
777
777
  skip: !parentDocumentMetaToUpdate
778
778
  });
779
779
  const { schema } = useDoc();
780
+ const suitableSchema = fromRelationModal ? relationalModalSchema : schema;
781
+ const hasDraftAndPublished = suitableSchema?.options?.draftAndPublish ?? false;
780
782
  const handleUpdate = async ()=>{
781
783
  setSubmitting(true);
782
784
  try {
@@ -793,7 +795,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
793
795
  await Promise.resolve();
794
796
  await Promise.resolve();
795
797
  const { errors } = await validate(true, {
796
- status: 'draft'
798
+ // enforce "published" validation if not using "draft and published"
799
+ status: !hasDraftAndPublished ? 'published' : 'draft'
797
800
  });
798
801
  if (errors) {
799
802
  toggleNotification({
@@ -824,7 +827,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
824
827
  }
825
828
  } else if (documentId || collectionType === SINGLE_TYPES) {
826
829
  const { data } = handleInvisibleAttributes(transformData(latestValues), {
827
- schema: fromRelationModal ? relationalModalSchema : schema,
830
+ schema: suitableSchema,
828
831
  initialValues,
829
832
  components
830
833
  });
@@ -841,7 +844,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
841
844
  }
842
845
  } else {
843
846
  const { data } = handleInvisibleAttributes(transformData(latestValues), {
844
- schema: fromRelationModal ? relationalModalSchema : schema,
847
+ schema: suitableSchema,
845
848
  initialValues,
846
849
  components
847
850
  });