@strapi/content-manager 5.16.1 → 5.17.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/admin/history/components/VersionContent.js +24 -3
  2. package/dist/admin/history/components/VersionContent.js.map +1 -1
  3. package/dist/admin/history/components/VersionContent.mjs +25 -4
  4. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  5. package/dist/admin/pages/EditView/EditViewPage.js +11 -1
  6. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  7. package/dist/admin/pages/EditView/EditViewPage.mjs +11 -1
  8. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/components/DocumentActions.js +28 -4
  10. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  11. package/dist/admin/pages/EditView/components/DocumentActions.mjs +28 -4
  12. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  14. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  16. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +13 -2
  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 +14 -3
  20. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +16 -3
  22. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +17 -4
  24. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +105 -153
  26. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +108 -156
  28. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormLayout.js +27 -3
  30. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormLayout.mjs +27 -3
  32. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/utils/data.js +103 -0
  34. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  35. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  36. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  37. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  38. package/dist/admin/src/utils/validation.d.ts +1 -0
  39. package/dist/admin/utils/validation.js +16 -5
  40. package/dist/admin/utils/validation.js.map +1 -1
  41. package/dist/admin/utils/validation.mjs +16 -5
  42. package/dist/admin/utils/validation.mjs.map +1 -1
  43. package/package.json +7 -7
@@ -20,6 +20,7 @@ import { LIST_PATH, CLONE_PATH } from '../../../router.mjs';
20
20
  import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery, useUpdateDocumentMutation } from '../../../services/documents.mjs';
21
21
  import { isBaseQueryError, buildValidParams } from '../../../utils/api.mjs';
22
22
  import { getTranslation } from '../../../utils/translations.mjs';
23
+ import { handleInvisibleAttributes } from '../utils/data.mjs';
23
24
  import { useRelationModal } from './FormInputs/Relations/RelationModal.mjs';
24
25
 
25
26
  const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
@@ -375,6 +376,7 @@ const transformData = (data)=>{
375
376
  const setErrors = useForm('PublishAction', (state)=>state.setErrors);
376
377
  const formValues = useForm('PublishAction', ({ values })=>values);
377
378
  const resetForm = useForm('PublishAction', ({ resetForm })=>resetForm);
379
+ const { currentDocument: { components } } = useDocumentContext('PublishAction');
378
380
  // need to discriminate if the publish is coming from a relation modal or in the edit view
379
381
  const relationContext = useRelationModal('PublishAction', ()=>true, false);
380
382
  const fromRelationModal = relationContext != undefined;
@@ -513,12 +515,16 @@ const transformData = (data)=>{
513
515
  }
514
516
  return;
515
517
  }
518
+ const { data } = handleInvisibleAttributes(transformData(formValues), {
519
+ schema,
520
+ components
521
+ });
516
522
  const res = await publish({
517
523
  collectionType,
518
524
  model,
519
525
  documentId,
520
526
  params: currentDocumentMeta.params
521
- }, transformData(formValues));
527
+ }, data);
522
528
  // Reset form if successful
523
529
  if ('data' in res) {
524
530
  resetForm();
@@ -652,12 +658,14 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
652
658
  const isCloning = cloneMatch !== null;
653
659
  const { formatMessage } = useIntl();
654
660
  const { create, update, clone, isLoading } = useDocumentActions();
661
+ const { currentDocument: { components } } = useDocumentContext('UpdateAction');
655
662
  const [{ rawQuery }] = useQueryParams();
656
663
  const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
657
664
  const { getInitialFormValues } = useDoc();
658
665
  const isSubmitting = useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
659
666
  const modified = useForm('UpdateAction', ({ modified })=>modified);
660
667
  const setSubmitting = useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
668
+ const initialValues = useForm('UpdateAction', ({ initialValues })=>initialValues);
661
669
  const document = useForm('UpdateAction', ({ values })=>values);
662
670
  const validate = useForm('UpdateAction', (state)=>state.validate);
663
671
  const setErrors = useForm('UpdateAction', (state)=>state.setErrors);
@@ -665,6 +673,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
665
673
  const dispatch = useRelationModal('UpdateAction', (state)=>state.dispatch);
666
674
  // need to discriminate if the update is coming from a relation modal or in the edit view
667
675
  const relationContext = useRelationModal('UpdateAction', ()=>true, false);
676
+ const relationalModalSchema = useRelationModal('UpdateAction', (state)=>state.currentDocument.schema, false);
668
677
  const fieldToConnect = useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
669
678
  const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
670
679
  const documentHistory = useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
@@ -682,6 +691,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
682
691
  }, {
683
692
  skip: !parentDocumentMetaToUpdate
684
693
  });
694
+ const { schema } = useDoc();
685
695
  const handleUpdate = React.useCallback(async ()=>{
686
696
  setSubmitting(true);
687
697
  try {
@@ -718,22 +728,32 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
718
728
  setErrors(formatValidationErrors(res.error));
719
729
  }
720
730
  } else if (documentId || collectionType === SINGLE_TYPES) {
731
+ const { data } = handleInvisibleAttributes(transformData(document), {
732
+ schema: fromRelationModal ? relationalModalSchema : schema,
733
+ initialValues,
734
+ components
735
+ });
721
736
  const res = await update({
722
737
  collectionType,
723
738
  model,
724
739
  documentId,
725
740
  params: currentDocumentMeta.params
726
- }, transformData(document));
741
+ }, data);
727
742
  if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
728
743
  setErrors(formatValidationErrors(res.error));
729
744
  } else {
730
745
  resetForm();
731
746
  }
732
747
  } else {
748
+ const { data } = handleInvisibleAttributes(transformData(document), {
749
+ schema: fromRelationModal ? relationalModalSchema : schema,
750
+ initialValues,
751
+ components
752
+ });
733
753
  const res = await create({
734
754
  model,
735
755
  params: currentDocumentMeta.params
736
- }, transformData(document));
756
+ }, data);
737
757
  if ('data' in res && collectionType !== SINGLE_TYPES) {
738
758
  if (fromRelationModal) {
739
759
  const createdRelation = {
@@ -834,7 +854,11 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
834
854
  fieldToConnectUID,
835
855
  updateDocumentMutation,
836
856
  formatAPIError,
837
- onPreview
857
+ onPreview,
858
+ initialValues,
859
+ schema,
860
+ components,
861
+ relationalModalSchema
838
862
  ]);
839
863
  // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
840
864
  React.useEffect(()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentActions.mjs","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n VisuallyHidden,\n Menu,\n ButtonProps,\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 } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n label: string;\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst connectRelationToParent = (\n parentDataToUpdate: AnyData | undefined,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n /*\n * Check if the fieldToConnect is already present in the parentDataToUpdate.\n * This happens in particular when in the parentDocument you have created\n * a new component without saving.\n */\n const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n const fieldToConnectPath = isFieldPresent\n ? fieldToConnect\n : // Compute the path to the parent object\n fieldToConnect.split('.').slice(0, -1).join('.');\n const fieldToConnectValue = isFieldPresent\n ? {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n }\n : {\n [fieldToConnect.split('.').pop()!]: {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n disconnect: [],\n },\n // In case the object was not present you need to pass the componentUID of the parent document\n __component: fieldToConnectUID,\n };\n const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const [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 return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\" width=\"100%\">\n <Flex gap={2}>\n <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\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 </Flex>\n {secondaryAction ? (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Action {}\n\nconst DocumentActionButton = (action: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: Action) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n >\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\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 return (\n <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n <Menu.Trigger\n disabled={isDisabled}\n size=\"S\"\n endIcon={null}\n paddingTop=\"4px\"\n paddingLeft=\"7px\"\n paddingRight=\"7px\"\n variant={variant}\n >\n <More aria-hidden focusable={false} />\n <VisuallyHidden tag=\"span\">\n {label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n </VisuallyHidden>\n </Menu.Trigger>\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const {\n currentDocument: { schema },\n } = useDocumentContext('PublishAction');\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const { canPublish, canReadFields } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n );\n const { publish, isLoading } = useDocumentActions();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ rawQuery }] = useQueryParams();\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const formValues = useForm('PublishAction', ({ values }) => values);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\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 { 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 if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\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 const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n transformData(formValues)\n );\n\n // Reset form if successful\n if ('data' in res) {\n resetForm();\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 return {\n loading: isLoading,\n position: ['panel', 'preview', 'relation-modal'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const 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 [{ 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 document = useForm('UpdateAction', ({ values }) => values);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n // need to discriminate if the update is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('UpdateAction', () => true, false);\n const 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\n const handleUpdate = React.useCallback(async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n const { errors } = await validate(true, {\n status: 'draft',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(document)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n transformData(document)\n );\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm();\n }\n } else {\n const res = await create(\n {\n model,\n params: currentDocumentMeta.params,\n },\n transformData(document)\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 setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n }, [\n setSubmitting,\n modified,\n validate,\n isCloning,\n documentId,\n collectionType,\n toggleNotification,\n formatMessage,\n clone,\n model,\n cloneMatch?.params.origin,\n currentDocumentMeta.params,\n document,\n navigate,\n rawQuery,\n setErrors,\n formatValidationErrors,\n update,\n resetForm,\n create,\n fromRelationModal,\n fieldToConnect,\n documentHistory,\n parentDocumentMetaToUpdate,\n dispatch,\n getInitialFormValues,\n parentDocumentData,\n fieldToConnectUID,\n updateDocumentMutation,\n formatAPIError,\n onPreview,\n ]);\n\n // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleUpdate();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleUpdate]);\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","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","_jsxs","Flex","direction","gap","alignItems","width","_jsx","DocumentActionButton","variant","length","DocumentActionsMenu","label","defaultMessage","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","type","title","message","content","status","timeout","onClose","preventDefault","handleClose","_Fragment","Button","flex","startIcon","icon","disabled","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","children","setIsOpen","isDisabled","every","Menu","Root","open","onOpenChange","Trigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","VisuallyHidden","tag","Content","maxHeight","popoverPlacement","map","Item","onSelect","display","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","formValues","values","resetForm","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","options","draftAndPublish","performPublish","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","required","res","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","payload","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","count","UpdateAction","cloneMatch","create","update","clone","handleUpdate","useCallback","origin","relative","createdRelation","replace","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","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.mjs","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n VisuallyHidden,\n Menu,\n ButtonProps,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { Create, Publish } from '../../../../../shared/contracts/collection-types';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, useDocument } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { usePreviewContext } from '../../../preview/pages/Preview';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport {\n useGetDraftRelationCountQuery,\n useUpdateDocumentMutation,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n label: string;\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst connectRelationToParent = (\n parentDataToUpdate: AnyData | undefined,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n /*\n * Check if the fieldToConnect is already present in the parentDataToUpdate.\n * This happens in particular when in the parentDocument you have created\n * a new component without saving.\n */\n const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n const fieldToConnectPath = isFieldPresent\n ? fieldToConnect\n : // Compute the path to the parent object\n fieldToConnect.split('.').slice(0, -1).join('.');\n const fieldToConnectValue = isFieldPresent\n ? {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n }\n : {\n [fieldToConnect.split('.').pop()!]: {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n disconnect: [],\n },\n // In case the object was not present you need to pass the componentUID of the parent document\n __component: fieldToConnectUID,\n };\n const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const [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 return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\" width=\"100%\">\n <Flex gap={2}>\n <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\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 </Flex>\n {secondaryAction ? (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Action {}\n\nconst DocumentActionButton = (action: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: Action) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n >\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\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 return (\n <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n <Menu.Trigger\n disabled={isDisabled}\n size=\"S\"\n endIcon={null}\n paddingTop=\"4px\"\n paddingLeft=\"7px\"\n paddingRight=\"7px\"\n variant={variant}\n >\n <More aria-hidden focusable={false} />\n <VisuallyHidden tag=\"span\">\n {label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n </VisuallyHidden>\n </Menu.Trigger>\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const {\n currentDocument: { schema },\n } = useDocumentContext('PublishAction');\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const { canPublish, canReadFields } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n );\n const { publish, isLoading } = useDocumentActions();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ rawQuery }] = useQueryParams();\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const formValues = useForm('PublishAction', ({ values }) => values);\n const 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 { 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 if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\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 const { data } = handleInvisibleAttributes(transformData(formValues), {\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 if successful\n if ('data' in res) {\n resetForm();\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 return {\n loading: isLoading,\n position: ['panel', 'preview', 'relation-modal'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { create, update, clone, isLoading } = useDocumentActions();\n const {\n currentDocument: { components },\n } = useDocumentContext('UpdateAction');\n const [{ rawQuery }] = useQueryParams();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const { getInitialFormValues } = useDoc();\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const initialValues = useForm('UpdateAction', ({ initialValues }) => initialValues);\n const document = useForm('UpdateAction', ({ values }) => values);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n // need to discriminate if the update is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('UpdateAction', () => true, false);\n const relationalModalSchema = useRelationModal(\n 'UpdateAction',\n (state) => state.currentDocument.schema,\n false\n );\n const fieldToConnect = useRelationModal(\n 'UpdateAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'UpdateAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('UpdateAction', (state) => state.rootDocumentMeta);\n const fromRelationModal = relationContext != undefined;\n\n const { currentDocumentMeta } = useDocumentContext('UpdateAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { schema } = useDoc();\n\n const handleUpdate = React.useCallback(async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n const { errors } = await validate(true, {\n status: 'draft',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(document)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm();\n }\n } else {\n const { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await create(\n {\n model,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n if (fromRelationModal) {\n const createdRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: parentDocumentMetaToUpdate.collectionType,\n model: parentDocumentMetaToUpdate.model,\n documentId:\n parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES\n ? parentDocumentMetaToUpdate.documentId\n : undefined,\n params: parentDocumentMetaToUpdate.params,\n data: {\n ...dataToUpdate,\n },\n });\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: createdRelation, shouldBypassConfirmation: true },\n });\n } else {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true, relative: 'path' }\n );\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n }, [\n setSubmitting,\n modified,\n validate,\n isCloning,\n documentId,\n collectionType,\n toggleNotification,\n formatMessage,\n clone,\n model,\n cloneMatch?.params.origin,\n currentDocumentMeta.params,\n document,\n navigate,\n rawQuery,\n setErrors,\n formatValidationErrors,\n update,\n resetForm,\n create,\n fromRelationModal,\n fieldToConnect,\n documentHistory,\n parentDocumentMetaToUpdate,\n dispatch,\n getInitialFormValues,\n parentDocumentData,\n fieldToConnectUID,\n updateDocumentMutation,\n formatAPIError,\n onPreview,\n initialValues,\n schema,\n components,\n relationalModalSchema,\n ]);\n\n // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleUpdate();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleUpdate]);\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","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","_jsxs","Flex","direction","gap","alignItems","width","_jsx","DocumentActionButton","variant","length","DocumentActionsMenu","label","defaultMessage","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","type","title","message","content","status","timeout","onClose","preventDefault","handleClose","_Fragment","Button","flex","startIcon","icon","disabled","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","children","setIsOpen","isDisabled","every","Menu","Root","open","onOpenChange","Trigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","VisuallyHidden","tag","Content","maxHeight","popoverPlacement","map","Item","onSelect","display","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","options","draftAndPublish","performPublish","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","required","handleInvisibleAttributes","res","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","payload","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","handleUpdate","useCallback","origin","relative","createdRelation","replace","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","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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"}
@@ -14,6 +14,7 @@ const NonRepeatableComponent = ({ attribute, name, children, layout })=>{
14
14
  const level = ComponentContext.useComponent('NonRepeatableComponent', (state)=>state.level);
15
15
  const isNested = level > 0;
16
16
  const { currentDocument } = useDocumentContext.useDocumentContext('NonRepeatableComponent');
17
+ const rulesEngine = strapiAdmin.createRulesEngine();
17
18
  return /*#__PURE__*/ jsxRuntime.jsx(ComponentContext.ComponentProvider, {
18
19
  id: value?.id,
19
20
  uid: attribute.component,
@@ -32,9 +33,19 @@ const NonRepeatableComponent = ({ attribute, name, children, layout })=>{
32
33
  alignItems: "stretch",
33
34
  gap: 6,
34
35
  children: layout.map((row, index)=>{
36
+ const visibleFields = row.filter(({ ...field })=>{
37
+ const condition = field.attribute.conditions?.visible;
38
+ if (condition) {
39
+ return rulesEngine.evaluate(condition, value);
40
+ }
41
+ return true;
42
+ });
43
+ if (visibleFields.length === 0) {
44
+ return null; // Skip rendering the entire grid row
45
+ }
35
46
  return /*#__PURE__*/ jsxRuntime.jsx(FormLayout.ResponsiveGridRoot, {
36
47
  gap: 4,
37
- children: row.map(({ size, ...field })=>{
48
+ children: visibleFields.map(({ size, ...field })=>{
38
49
  /**
39
50
  * Layouts are built from schemas so they don't understand the complete
40
51
  * schema tree, for components we append the parent name to the field name
@@ -1 +1 @@
1
- {"version":3,"file":"NonRepeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const { currentDocument } = useDocumentContext('NonRepeatableComponent');\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","ResponsiveGridRoot","size","field","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","document"],"mappings":";;;;;;;;;;AAYMA,MAAAA,sBAAAA,GAAyB,CAAC,EAC9BC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,MAAM,EACsB,GAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,oBAASN,CAAAA,IAAAA,CAAAA;AAC3B,IAAA,MAAMO,QAAQC,6BAAa,CAAA,wBAAA,EAA0B,CAACC,KAAAA,GAAUA,MAAMF,KAAK,CAAA;AAC3E,IAAA,MAAMG,WAAWH,KAAQ,GAAA,CAAA;AACzB,IAAA,MAAM,EAAEI,eAAe,EAAE,GAAGC,qCAAmB,CAAA,wBAAA,CAAA;AAE/C,IAAA,qBACEC,cAACC,CAAAA,kCAAAA,EAAAA;AAAkBC,QAAAA,EAAAA,EAAIV,KAAOU,EAAAA,EAAAA;AAAIC,QAAAA,GAAAA,EAAKjB,UAAUkB,SAAS;AAAEV,QAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;QAAGW,IAAK,EAAA,WAAA;AACjF,QAAA,QAAA,gBAAAL,cAACM,CAAAA,gBAAAA,EAAAA;YACCC,UAAY,EAAA,YAAA;YACZC,WAAa,EAAA,CAAA;YACbC,YAAc,EAAA,CAAA;YACdC,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfC,SAAWf,EAAAA,QAAAA;AACXgB,YAAAA,WAAAA,EAAahB,WAAW,YAAeiB,GAAAA,SAAAA;AAEvC,YAAA,QAAA,gBAAAd,cAACe,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;gBAAUC,GAAK,EAAA,CAAA;0BAChD7B,MAAO8B,CAAAA,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AAChB,oBAAA,qBACErB,cAACsB,CAAAA,6BAAAA,EAAAA;wBAAmBJ,GAAK,EAAA,CAAA;AACtBE,wBAAAA,QAAAA,EAAAA,GAAAA,CAAID,GAAG,CAAC,CAAC,EAAEI,IAAI,EAAE,GAAGC,KAAO,EAAA,GAAA;AAC1B;;;;;sBAMA,MAAMC,iBAAoB,GAAA,CAAC,EAAEtC,IAAAA,CAAK,CAAC,EAAEqC,KAAAA,CAAMrC,IAAI,CAAC,CAAC;AAEjD,4BAAA,MAAMuC,kBAAkBpC,aAAc,CAAA;gCACpCY,EAAI,EAAA,CAAC,2BAA2B,EAAEhB,SAAUkB,CAAAA,SAAS,CAAC,CAAC,EAAEoB,KAAAA,CAAMrC,IAAI,CAAC,CAAC;AACrEwC,gCAAAA,cAAAA,EAAgBH,MAAMI;AACxB,6BAAA,CAAA;AAEA,4BAAA,qBACE5B,cAAC6B,CAAAA,6BAAAA,EAAAA;gCACCC,GAAKP,EAAAA,IAAAA;gCAELQ,CAAG,EAAA,EAAA;gCACHC,EAAI,EAAA,EAAA;gCACJhB,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;0CAEV7B,QAAS,CAAA;AACR,oCAAA,GAAGoC,KAAK;oCACRI,KAAOF,EAAAA,eAAAA;oCACPvC,IAAMsC,EAAAA,iBAAAA;oCACNQ,QAAUnC,EAAAA;AACZ,iCAAA;AAXK2B,6BAAAA,EAAAA,iBAAAA,CAAAA;AAcX,yBAAA;AAhC+BJ,qBAAAA,EAAAA,KAAAA,CAAAA;AAmCrC,iBAAA;;;;AAKV;;;;"}
1
+ {"version":3,"file":"NonRepeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const { currentDocument } = useDocumentContext('NonRepeatableComponent');\n const rulesEngine = createRulesEngine();\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {visibleFields.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","rulesEngine","createRulesEngine","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","visibleFields","filter","field","condition","conditions","visible","evaluate","length","ResponsiveGridRoot","size","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","document"],"mappings":"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"}