@strapi/content-manager 5.29.0 → 5.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/dist/admin/components/ComponentIcon.js +3 -0
  2. package/dist/admin/components/ComponentIcon.js.map +1 -1
  3. package/dist/admin/components/ComponentIcon.mjs +3 -0
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  6. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  7. package/dist/admin/components/RelativeTime.js.map +1 -1
  8. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  9. package/dist/admin/components/Widgets.js.map +1 -1
  10. package/dist/admin/components/Widgets.mjs.map +1 -1
  11. package/dist/admin/content-manager.js.map +1 -1
  12. package/dist/admin/content-manager.mjs.map +1 -1
  13. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  14. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  15. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  16. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  17. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  18. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  19. package/dist/admin/history/components/VersionsList.js.map +1 -1
  20. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  21. package/dist/admin/history/pages/History.js.map +1 -1
  22. package/dist/admin/history/pages/History.mjs.map +1 -1
  23. package/dist/admin/history/services/historyVersion.js.map +1 -1
  24. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  25. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  26. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  27. package/dist/admin/hooks/useDocumentActions.js +24 -5
  28. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  29. package/dist/admin/hooks/useDocumentActions.mjs +24 -5
  30. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  31. package/dist/admin/index.js.map +1 -1
  32. package/dist/admin/index.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/DocumentActions.js +5 -3
  34. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/DocumentActions.mjs +5 -3
  36. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  38. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  46. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  58. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  60. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  62. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  64. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  66. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  68. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  70. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  72. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  74. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  76. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  78. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  80. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  82. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  84. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  86. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/Header.js +10 -5
  88. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/Header.mjs +10 -5
  90. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/InputRenderer.js +12 -11
  92. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/InputRenderer.mjs +12 -11
  94. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  96. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  97. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  98. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  99. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  100. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  101. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  102. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  103. package/dist/admin/pages/ListView/ListViewPage.js +0 -2
  104. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  105. package/dist/admin/pages/ListView/ListViewPage.mjs +0 -2
  106. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  107. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  108. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  109. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  110. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  111. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  112. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  113. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  114. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  115. package/dist/admin/preview/services/preview.js.map +1 -1
  116. package/dist/admin/preview/services/preview.mjs.map +1 -1
  117. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  118. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  119. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  120. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  121. package/dist/admin/router.js.map +1 -1
  122. package/dist/admin/router.mjs.map +1 -1
  123. package/dist/admin/services/api.js +2 -1
  124. package/dist/admin/services/api.js.map +1 -1
  125. package/dist/admin/services/api.mjs +2 -1
  126. package/dist/admin/services/api.mjs.map +1 -1
  127. package/dist/admin/services/documents.js +10 -2
  128. package/dist/admin/services/documents.js.map +1 -1
  129. package/dist/admin/services/documents.mjs +10 -2
  130. package/dist/admin/services/documents.mjs.map +1 -1
  131. package/dist/admin/services/homepage.js.map +1 -1
  132. package/dist/admin/services/homepage.mjs.map +1 -1
  133. package/dist/admin/services/relations.js.map +1 -1
  134. package/dist/admin/services/relations.mjs.map +1 -1
  135. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  136. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  137. package/dist/admin/src/pages/EditView/components/Header.d.ts +12 -1
  138. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  139. package/dist/admin/src/services/api.d.ts +1 -1
  140. package/dist/admin/src/services/components.d.ts +2 -2
  141. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  142. package/dist/admin/src/services/documents.d.ts +16 -16
  143. package/dist/admin/src/services/homepage.d.ts +1 -1
  144. package/dist/admin/src/services/init.d.ts +1 -1
  145. package/dist/admin/src/services/relations.d.ts +2 -2
  146. package/dist/admin/src/services/uid.d.ts +3 -3
  147. package/dist/admin/translations/fr.json.js +1 -1
  148. package/dist/admin/translations/fr.json.mjs +1 -1
  149. package/dist/admin/utils/translations.js.map +1 -1
  150. package/dist/admin/utils/translations.mjs.map +1 -1
  151. package/dist/admin/utils/urls.js.map +1 -1
  152. package/dist/admin/utils/urls.mjs.map +1 -1
  153. package/dist/admin/utils/users.js.map +1 -1
  154. package/dist/admin/utils/users.mjs.map +1 -1
  155. package/dist/admin/utils/validation.js.map +1 -1
  156. package/dist/admin/utils/validation.mjs.map +1 -1
  157. package/dist/server/controllers/collection-types.js +2 -1
  158. package/dist/server/controllers/collection-types.js.map +1 -1
  159. package/dist/server/controllers/collection-types.mjs +2 -1
  160. package/dist/server/controllers/collection-types.mjs.map +1 -1
  161. package/dist/server/controllers/relations.js.map +1 -1
  162. package/dist/server/controllers/relations.mjs.map +1 -1
  163. package/dist/server/controllers/single-types.js.map +1 -1
  164. package/dist/server/controllers/single-types.mjs.map +1 -1
  165. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  166. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  167. package/dist/server/controllers/validation/index.js.map +1 -1
  168. package/dist/server/controllers/validation/index.mjs.map +1 -1
  169. package/dist/server/history/utils.js.map +1 -1
  170. package/dist/server/history/utils.mjs.map +1 -1
  171. package/dist/server/homepage/services/homepage.js.map +1 -1
  172. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  173. package/dist/server/middlewares/routing.js.map +1 -1
  174. package/dist/server/middlewares/routing.mjs.map +1 -1
  175. package/dist/server/preview/services/preview-config.js +8 -33
  176. package/dist/server/preview/services/preview-config.js.map +1 -1
  177. package/dist/server/preview/services/preview-config.mjs +9 -34
  178. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  179. package/dist/server/preview/services/preview.js.map +1 -1
  180. package/dist/server/preview/services/preview.mjs.map +1 -1
  181. package/dist/server/preview/utils.js.map +1 -1
  182. package/dist/server/preview/utils.mjs.map +1 -1
  183. package/dist/server/services/configuration.js.map +1 -1
  184. package/dist/server/services/configuration.mjs.map +1 -1
  185. package/dist/server/services/document-metadata.js +23 -1
  186. package/dist/server/services/document-metadata.js.map +1 -1
  187. package/dist/server/services/document-metadata.mjs +23 -1
  188. package/dist/server/services/document-metadata.mjs.map +1 -1
  189. package/dist/server/services/field-sizes.js.map +1 -1
  190. package/dist/server/services/field-sizes.mjs.map +1 -1
  191. package/dist/server/services/uid.js.map +1 -1
  192. package/dist/server/services/uid.mjs.map +1 -1
  193. package/dist/server/services/utils/store.js.map +1 -1
  194. package/dist/server/services/utils/store.mjs.map +1 -1
  195. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  196. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  197. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  198. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  199. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"PublishAction.js","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/PublishAction.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n FormErrors,\n getYupValidationErrors,\n Table,\n useQueryParams,\n useTable,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n IconButton,\n Loader,\n Modal,\n Tooltip,\n Typography,\n TypographyComponent,\n RawTable,\n Tr,\n Td,\n Tbody,\n} from '@strapi/design-system';\nimport { ArrowsCounterClockwise, CheckCircle, CrossCircle, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { useDocumentRBAC } from '../../../../features/DocumentRBAC';\nimport { useContentTypeSchema } from '../../../../hooks/useContentTypeSchema';\nimport { useDocumentActions } from '../../../../hooks/useDocumentActions';\nimport { useDocLayout } from '../../../../hooks/useDocumentLayout';\nimport { contentManagerApi } from '../../../../services/api';\nimport {\n useGetAllDocumentsQuery,\n usePublishManyDocumentsMutation,\n} from '../../../../services/documents';\nimport { buildValidParams } from '../../../../utils/api';\nimport { getTranslation } from '../../../../utils/translations';\nimport { createYupSchema } from '../../../../utils/validation';\nimport { DocumentStatus } from '../../../EditView/components/DocumentStatus';\n\nimport { ConfirmDialogPublishAll, ConfirmDialogPublishAllProps } from './ConfirmBulkActionDialog';\n\nimport type { BulkActionComponent } from '../../../../content-manager';\nimport type { Document } from '../../../../hooks/useDocument';\n\nconst TypographyMaxWidth = styled<TypographyComponent>(Typography)`\n max-width: 300px;\n`;\n\nconst TableComponent = styled(RawTable)`\n width: 100%;\n table-layout: fixed;\n td:first-child {\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n td:first-of-type {\n padding: ${({ theme }) => theme.spaces[4]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatErrorMessages = (errors: FormErrors, parentKey: string, formatMessage: any) => {\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if ('id' in value && 'defaultMessage' in value) {\n messages.push(\n formatMessage(\n {\n id: `${value.id}.withField`,\n defaultMessage: value.defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(\n // @ts-expect-error TODO: check why value is not compatible with FormErrors\n value,\n currentKey,\n formatMessage\n )\n );\n }\n } else {\n messages.push(\n formatMessage(\n {\n id: `${value}.withField`,\n defaultMessage: value,\n },\n { field: currentKey }\n )\n );\n }\n });\n\n return messages;\n};\n\ninterface EntryValidationTextProps {\n validationErrors?: FormErrors;\n status: string;\n}\n\nconst EntryValidationText = ({ validationErrors, status }: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n if (validationErrors) {\n const validationErrorsMessages = formatErrorMessages(validationErrors, '', formatMessage).join(\n ' '\n );\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip description={validationErrorsMessages}>\n <TypographyMaxWidth textColor=\"danger600\" variant=\"omega\" fontWeight=\"bold\" ellipsis>\n {validationErrorsMessages}\n </TypographyMaxWidth>\n </Tooltip>\n </Flex>\n );\n }\n\n if (status === 'published') {\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (status === 'modified') {\n return (\n <Flex gap={2}>\n <ArrowsCounterClockwise fill=\"alternative600\" />\n <Typography textColor=\"alternative600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n </Typography>\n </Flex>\n );\n }\n\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesTableContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SelectedEntriesTableContentProps {\n isPublishing?: boolean;\n rowsToDisplay?: TableRow[];\n entriesToPublish?: TableRow['documentId'][];\n validationErrors: Record<string, EntryValidationTextProps['validationErrors']>;\n}\n\nconst TABLE_HEADERS = [\n { name: 'id', label: 'id' },\n { name: 'name', label: 'name' },\n { name: 'status', label: 'status' },\n { name: 'publicationStatus', label: 'Publication status' },\n];\n\nconst SelectedEntriesTableContent = ({\n isPublishing,\n rowsToDisplay = [],\n entriesToPublish = [],\n validationErrors = {},\n}: SelectedEntriesTableContentProps) => {\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n const {\n list: {\n settings: { mainField },\n },\n } = useDocLayout();\n\n const shouldDisplayMainField = mainField != null && mainField !== 'id';\n\n return (\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {TABLE_HEADERS.filter((head) => head.name !== 'name' || shouldDisplayMainField).map(\n (head) => (\n <Table.HeaderCell key={head.name} {...head} />\n )\n )}\n </Table.Head>\n <Table.Loading />\n <Table.Body>\n {rowsToDisplay.map((row) => (\n <Table.Row key={row.id}>\n <Table.CheckboxCell id={row.id} />\n <Table.Cell>\n <Typography>{row.id}</Typography>\n </Table.Cell>\n {shouldDisplayMainField && (\n <Table.Cell>\n <Typography>{row[mainField as keyof TableRow]}</Typography>\n </Table.Cell>\n )}\n <Table.Cell>\n <DocumentStatus status={row.status} maxWidth={'min-content'} />\n </Table.Cell>\n <Table.Cell>\n {isPublishing && entriesToPublish.includes(row.documentId) ? (\n <Flex gap={2}>\n <Typography>\n {formatMessage({\n id: 'content-manager.success.record.publishing',\n defaultMessage: 'Publishing...',\n })}\n </Typography>\n <Loader small />\n </Flex>\n ) : (\n <EntryValidationText\n validationErrors={validationErrors[row.documentId]}\n status={row.status}\n />\n )}\n </Table.Cell>\n <Table.Cell>\n <Flex>\n <IconButton\n tag={Link}\n to={{\n pathname: `${pathname}/${row.documentId}`,\n search: row.locale && `?plugins[i18n][locale]=${row.locale}`,\n }}\n state={{ from: pathname }}\n label={formatMessage({\n id: 'content-manager.bulk-publish.edit',\n defaultMessage: 'Edit',\n })}\n target=\"_blank\"\n marginLeft=\"auto\"\n variant=\"ghost\"\n >\n <Pencil width={'1.6rem'} height={'1.6rem'} />\n </IconButton>\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusSummary\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusSummaryProps {\n count: number;\n icon: React.ReactNode;\n message: string;\n textColor: string;\n}\n\nconst PublicationStatusSummary = ({\n count,\n icon,\n message,\n textColor,\n}: PublicationStatusSummaryProps) => {\n return (\n <Flex justifyContent=\"space-between\" flex={1} gap={3}>\n <Flex gap={2}>\n {icon}\n <Typography textColor={textColor} fontWeight=\"bold\">\n {message}\n </Typography>\n </Flex>\n <Typography fontWeight=\"bold\">{count}</Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusGrid\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusGridProps {\n entriesReadyToPublishCount: number;\n entriesModifiedCount: number;\n entriesPublishedCount: number;\n entriesWithErrorsCount: number;\n}\n\nconst PublicationStatusGrid = ({\n entriesReadyToPublishCount,\n entriesPublishedCount,\n entriesModifiedCount,\n entriesWithErrorsCount,\n}: PublicationStatusGridProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box hasRadius borderColor=\"neutral150\">\n <TableComponent colCount={2} rowCount={2}>\n <Tbody>\n <Tr>\n <Td>\n <PublicationStatusSummary\n textColor=\"success600\"\n count={entriesReadyToPublishCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n textColor=\"success600\"\n count={entriesPublishedCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.already-published',\n defaultMessage: 'Already published',\n })}\n />\n </Td>\n </Tr>\n <Tr>\n <Td>\n <PublicationStatusSummary\n textColor=\"alternative600\"\n count={entriesModifiedCount}\n icon={<ArrowsCounterClockwise fill=\"alternative600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n textColor=\"danger600\"\n count={entriesWithErrorsCount}\n icon={<CrossCircle fill=\"danger600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.waiting-for-action',\n defaultMessage: 'Waiting for action',\n })}\n />\n </Td>\n </Tr>\n </Tbody>\n </TableComponent>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesModalContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableRow extends Document {}\n\ninterface SelectedEntriesModalContentProps {\n listViewSelectedEntries: TableRow[];\n toggleModal: ConfirmDialogPublishAllProps['onToggleDialog'];\n setListViewSelectedDocuments: (documents: TableRow[]) => void;\n model: string;\n}\n\nconst SelectedEntriesModalContent = ({\n listViewSelectedEntries,\n toggleModal,\n setListViewSelectedDocuments,\n model,\n}: SelectedEntriesModalContentProps) => {\n const { formatMessage } = useIntl();\n const { schema, components } = useContentTypeSchema(model);\n const documentIds = listViewSelectedEntries.map(({ documentId }) => documentId);\n\n // We want to keep the selected entries order same as the list view\n const [{ query }] = useQueryParams<{ sort?: string; plugins?: Record<string, any> }>();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n // Fetch the documents based on the selected entries and update the modal table\n const { data, isLoading, isFetching, refetch } = useGetAllDocumentsQuery(\n {\n model,\n params: {\n page: '1',\n pageSize: documentIds.length.toString(),\n sort: query.sort,\n filters: {\n documentId: {\n $in: documentIds,\n },\n },\n locale: query.plugins?.i18n?.locale,\n },\n },\n {\n selectFromResult: ({ data, ...restRes }) => ({ data: data?.results ?? [], ...restRes }),\n }\n );\n\n // Validate the entries based on the schema to show errors if any\n const { rows, validationErrors } = React.useMemo(() => {\n if (data.length > 0 && schema) {\n const validate = createYupSchema(\n schema.attributes,\n components,\n // Since this is the \"Publish\" action, the validation\n // schema must enforce the rules for published entities\n { status: 'published' }\n );\n const validationErrors: Record<TableRow['documentId'], FormErrors> = {};\n const rows = data.map((entry: Document) => {\n try {\n validate.validateSync(entry, { abortEarly: false });\n\n return entry;\n } catch (e) {\n if (e instanceof ValidationError) {\n validationErrors[entry.documentId] = getYupValidationErrors(e);\n }\n\n return entry;\n }\n });\n\n return { rows, validationErrors };\n }\n\n return {\n rows: [],\n validationErrors: {},\n };\n }, [components, data, schema]);\n\n const [isDialogOpen, setIsDialogOpen] = React.useState(false);\n\n const { publishMany: bulkPublishAction, isLoading: isPublishing } = useDocumentActions();\n const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();\n\n const selectedRows = useTable('publishAction', (state) => state.selectedRows);\n\n // Filter selected entries from the updated modal table rows\n const selectedEntries = rows.filter((entry) =>\n selectedRows.some((selectedEntry) => selectedEntry.documentId === entry.documentId)\n );\n\n const entriesToPublish = selectedEntries\n .filter((entry) => !validationErrors[entry.documentId])\n .map((entry) => entry.documentId);\n\n const selectedEntriesWithErrorsCount = selectedEntries.filter(\n ({ documentId }) => validationErrors[documentId]\n ).length;\n const selectedEntriesPublishedCount = selectedEntries.filter(\n ({ status }) => status === 'published'\n ).length;\n const selectedEntriesModifiedCount = selectedEntries.filter(\n ({ status, documentId }) => status === 'modified' && !validationErrors[documentId]\n ).length;\n const selectedEntriesWithNoErrorsCount =\n selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;\n\n const toggleDialog = () => setIsDialogOpen((prev) => !prev);\n\n const handleConfirmBulkPublish = async () => {\n toggleDialog();\n\n const res = await bulkPublishAction({ model: model, documentIds: entriesToPublish, params });\n if (!('error' in res)) {\n const unpublishedEntries = rows.filter((row) => {\n return !entriesToPublish.includes(row.documentId);\n });\n // Keep selection of the entries in list view that were not published\n setListViewSelectedDocuments(unpublishedEntries);\n }\n };\n\n return (\n <>\n <Modal.Body>\n <PublicationStatusGrid\n entriesReadyToPublishCount={\n selectedEntriesWithNoErrorsCount - selectedEntriesModifiedCount\n }\n entriesPublishedCount={selectedEntriesPublishedCount}\n entriesModifiedCount={selectedEntriesModifiedCount}\n entriesWithErrorsCount={selectedEntriesWithErrorsCount}\n />\n <Box marginTop={7}>\n <SelectedEntriesTableContent\n isPublishing={isSubmittingForm}\n rowsToDisplay={rows}\n entriesToPublish={entriesToPublish}\n validationErrors={validationErrors}\n />\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={toggleModal} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Flex gap={2}>\n <Button onClick={refetch} variant=\"tertiary\" loading={isFetching}>\n {formatMessage({ id: 'app.utils.refresh', defaultMessage: 'Refresh' })}\n </Button>\n <Button\n onClick={toggleDialog}\n disabled={\n selectedEntries.length === 0 ||\n selectedEntries.length === selectedEntriesWithErrorsCount ||\n selectedEntriesPublishedCount === selectedEntries.length ||\n isLoading\n }\n loading={isPublishing || isSubmittingForm}\n >\n {formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n <ConfirmDialogPublishAll\n isOpen={isDialogOpen}\n onToggleDialog={toggleDialog}\n isConfirmButtonLoading={isPublishing || isSubmittingForm}\n onConfirm={handleConfirmBulkPublish}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublishAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n // Publish button visibility\n const hasPublishPermission = useDocumentRBAC('unpublishAction', (state) => state.canPublish);\n const showPublishButton =\n hasPublishPermission && documents.some(({ status }) => status !== 'published');\n\n const setListViewSelectedDocuments = useTable('publishAction', (state) => state.selectRow);\n\n const refetchList = () => {\n contentManagerApi.util.invalidateTags([{ type: 'Document', id: `${model}_LIST` }]);\n };\n\n if (!showPublishButton) return null;\n\n return {\n actionType: 'publish',\n variant: 'tertiary',\n label: formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation('containers.ListPage.selectedEntriesModal.title'),\n defaultMessage: 'Publish entries',\n }),\n content: ({ onClose }) => {\n return (\n <Table.Root rows={documents} defaultSelectedRows={documents} headers={TABLE_HEADERS}>\n <SelectedEntriesModalContent\n listViewSelectedEntries={documents}\n toggleModal={() => {\n onClose();\n refetchList();\n }}\n setListViewSelectedDocuments={setListViewSelectedDocuments}\n model={model}\n />\n </Table.Root>\n );\n },\n onClose: () => {\n refetchList();\n },\n },\n };\n};\n\nexport { PublishAction, SelectedEntriesModalContent };\n"],"names":["TypographyMaxWidth","styled","Typography","TableComponent","RawTable","theme","colors","neutral150","spaces","formatErrorMessages","errors","parentKey","formatMessage","messages","Object","entries","forEach","key","value","currentKey","Array","isArray","push","id","defaultMessage","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","description","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","label","SelectedEntriesTableContent","isPublishing","rowsToDisplay","entriesToPublish","pathname","useLocation","list","settings","mainField","useDocLayout","shouldDisplayMainField","Table","Content","Head","HeaderCheckboxCell","filter","head","map","HeaderCell","Loading","Body","row","Row","CheckboxCell","Cell","DocumentStatus","maxWidth","includes","documentId","Loader","small","IconButton","tag","Link","to","search","locale","state","from","target","marginLeft","Pencil","width","height","PublicationStatusSummary","count","icon","message","justifyContent","flex","PublicationStatusGrid","entriesReadyToPublishCount","entriesPublishedCount","entriesModifiedCount","entriesWithErrorsCount","Box","hasRadius","borderColor","colCount","rowCount","Tbody","Tr","Td","SelectedEntriesModalContent","listViewSelectedEntries","toggleModal","setListViewSelectedDocuments","model","schema","components","useContentTypeSchema","documentIds","query","useQueryParams","params","React","useMemo","buildValidParams","data","isLoading","isFetching","refetch","useGetAllDocumentsQuery","page","pageSize","length","toString","sort","filters","$in","plugins","i18n","selectFromResult","restRes","results","rows","validate","createYupSchema","attributes","entry","validateSync","abortEarly","e","ValidationError","getYupValidationErrors","isDialogOpen","setIsDialogOpen","useState","publishMany","bulkPublishAction","useDocumentActions","isSubmittingForm","usePublishManyDocumentsMutation","selectedRows","useTable","selectedEntries","some","selectedEntry","selectedEntriesWithErrorsCount","selectedEntriesPublishedCount","selectedEntriesModifiedCount","selectedEntriesWithNoErrorsCount","toggleDialog","prev","handleConfirmBulkPublish","res","unpublishedEntries","_Fragment","Modal","marginTop","Footer","Button","onClick","loading","disabled","ConfirmDialogPublishAll","isOpen","onToggleDialog","isConfirmButtonLoading","onConfirm","PublishAction","documents","hasPublishPermission","useDocumentRBAC","canPublish","showPublishButton","selectRow","refetchList","contentManagerApi","util","invalidateTags","type","actionType","dialog","title","getTranslation","content","onClose","Root","defaultSelectedRows","headers"],"mappings":"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"}
1
+ {"version":3,"file":"PublishAction.js","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/PublishAction.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n FormErrors,\n getYupValidationErrors,\n Table,\n useQueryParams,\n useTable,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n IconButton,\n Loader,\n Modal,\n Tooltip,\n Typography,\n TypographyComponent,\n RawTable,\n Tr,\n Td,\n Tbody,\n} from '@strapi/design-system';\nimport { ArrowsCounterClockwise, CheckCircle, CrossCircle, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { useDocumentRBAC } from '../../../../features/DocumentRBAC';\nimport { useContentTypeSchema } from '../../../../hooks/useContentTypeSchema';\nimport { useDocumentActions } from '../../../../hooks/useDocumentActions';\nimport { useDocLayout } from '../../../../hooks/useDocumentLayout';\nimport { contentManagerApi } from '../../../../services/api';\nimport {\n useGetAllDocumentsQuery,\n usePublishManyDocumentsMutation,\n} from '../../../../services/documents';\nimport { buildValidParams } from '../../../../utils/api';\nimport { getTranslation } from '../../../../utils/translations';\nimport { createYupSchema } from '../../../../utils/validation';\nimport { DocumentStatus } from '../../../EditView/components/DocumentStatus';\n\nimport { ConfirmDialogPublishAll, ConfirmDialogPublishAllProps } from './ConfirmBulkActionDialog';\n\nimport type { BulkActionComponent } from '../../../../content-manager';\nimport type { Document } from '../../../../hooks/useDocument';\n\nconst TypographyMaxWidth = styled<TypographyComponent>(Typography)`\n max-width: 300px;\n`;\n\nconst TableComponent = styled(RawTable)`\n width: 100%;\n table-layout: fixed;\n td:first-child {\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n td:first-of-type {\n padding: ${({ theme }) => theme.spaces[4]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatErrorMessages = (errors: FormErrors, parentKey: string, formatMessage: any) => {\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if ('id' in value && 'defaultMessage' in value) {\n messages.push(\n formatMessage(\n {\n id: `${value.id}.withField`,\n defaultMessage: value.defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(\n // @ts-expect-error TODO: check why value is not compatible with FormErrors\n value,\n currentKey,\n formatMessage\n )\n );\n }\n } else {\n messages.push(\n formatMessage(\n {\n id: `${value}.withField`,\n defaultMessage: value,\n },\n { field: currentKey }\n )\n );\n }\n });\n\n return messages;\n};\n\ninterface EntryValidationTextProps {\n validationErrors?: FormErrors;\n status: string;\n}\n\nconst EntryValidationText = ({ validationErrors, status }: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n if (validationErrors) {\n const validationErrorsMessages = formatErrorMessages(validationErrors, '', formatMessage).join(\n ' '\n );\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip description={validationErrorsMessages}>\n <TypographyMaxWidth textColor=\"danger600\" variant=\"omega\" fontWeight=\"bold\" ellipsis>\n {validationErrorsMessages}\n </TypographyMaxWidth>\n </Tooltip>\n </Flex>\n );\n }\n\n if (status === 'published') {\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (status === 'modified') {\n return (\n <Flex gap={2}>\n <ArrowsCounterClockwise fill=\"alternative600\" />\n <Typography textColor=\"alternative600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n </Typography>\n </Flex>\n );\n }\n\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesTableContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SelectedEntriesTableContentProps {\n isPublishing?: boolean;\n rowsToDisplay?: TableRow[];\n entriesToPublish?: TableRow['documentId'][];\n validationErrors: Record<string, EntryValidationTextProps['validationErrors']>;\n}\n\nconst TABLE_HEADERS = [\n { name: 'id', label: 'id' },\n { name: 'name', label: 'name' },\n { name: 'status', label: 'status' },\n { name: 'publicationStatus', label: 'Publication status' },\n];\n\nconst SelectedEntriesTableContent = ({\n isPublishing,\n rowsToDisplay = [],\n entriesToPublish = [],\n validationErrors = {},\n}: SelectedEntriesTableContentProps) => {\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n const {\n list: {\n settings: { mainField },\n },\n } = useDocLayout();\n\n const shouldDisplayMainField = mainField != null && mainField !== 'id';\n\n return (\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {TABLE_HEADERS.filter((head) => head.name !== 'name' || shouldDisplayMainField).map(\n (head) => (\n <Table.HeaderCell key={head.name} {...head} />\n )\n )}\n </Table.Head>\n <Table.Loading />\n <Table.Body>\n {rowsToDisplay.map((row) => (\n <Table.Row key={row.id}>\n <Table.CheckboxCell id={row.id} />\n <Table.Cell>\n <Typography>{row.id}</Typography>\n </Table.Cell>\n {shouldDisplayMainField && (\n <Table.Cell>\n <Typography>{row[mainField as keyof TableRow]}</Typography>\n </Table.Cell>\n )}\n <Table.Cell>\n <DocumentStatus status={row.status} maxWidth={'min-content'} />\n </Table.Cell>\n <Table.Cell>\n {isPublishing && entriesToPublish.includes(row.documentId) ? (\n <Flex gap={2}>\n <Typography>\n {formatMessage({\n id: 'content-manager.success.record.publishing',\n defaultMessage: 'Publishing...',\n })}\n </Typography>\n <Loader small />\n </Flex>\n ) : (\n <EntryValidationText\n validationErrors={validationErrors[row.documentId]}\n status={row.status}\n />\n )}\n </Table.Cell>\n <Table.Cell>\n <Flex>\n <IconButton\n tag={Link}\n to={{\n pathname: `${pathname}/${row.documentId}`,\n search: row.locale && `?plugins[i18n][locale]=${row.locale}`,\n }}\n state={{ from: pathname }}\n label={formatMessage({\n id: 'content-manager.bulk-publish.edit',\n defaultMessage: 'Edit',\n })}\n target=\"_blank\"\n marginLeft=\"auto\"\n variant=\"ghost\"\n >\n <Pencil width={'1.6rem'} height={'1.6rem'} />\n </IconButton>\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusSummary\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusSummaryProps {\n count: number;\n icon: React.ReactNode;\n message: string;\n textColor: string;\n}\n\nconst PublicationStatusSummary = ({\n count,\n icon,\n message,\n textColor,\n}: PublicationStatusSummaryProps) => {\n return (\n <Flex justifyContent=\"space-between\" flex={1} gap={3}>\n <Flex gap={2}>\n {icon}\n <Typography textColor={textColor} fontWeight=\"bold\">\n {message}\n </Typography>\n </Flex>\n <Typography fontWeight=\"bold\">{count}</Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusGrid\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusGridProps {\n entriesReadyToPublishCount: number;\n entriesModifiedCount: number;\n entriesPublishedCount: number;\n entriesWithErrorsCount: number;\n}\n\nconst PublicationStatusGrid = ({\n entriesReadyToPublishCount,\n entriesPublishedCount,\n entriesModifiedCount,\n entriesWithErrorsCount,\n}: PublicationStatusGridProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box hasRadius borderColor=\"neutral150\">\n <TableComponent colCount={2} rowCount={2}>\n <Tbody>\n <Tr>\n <Td>\n <PublicationStatusSummary\n textColor=\"success600\"\n count={entriesReadyToPublishCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n textColor=\"success600\"\n count={entriesPublishedCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.already-published',\n defaultMessage: 'Already published',\n })}\n />\n </Td>\n </Tr>\n <Tr>\n <Td>\n <PublicationStatusSummary\n textColor=\"alternative600\"\n count={entriesModifiedCount}\n icon={<ArrowsCounterClockwise fill=\"alternative600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n textColor=\"danger600\"\n count={entriesWithErrorsCount}\n icon={<CrossCircle fill=\"danger600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.waiting-for-action',\n defaultMessage: 'Waiting for action',\n })}\n />\n </Td>\n </Tr>\n </Tbody>\n </TableComponent>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesModalContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableRow extends Document {}\n\ninterface SelectedEntriesModalContentProps {\n listViewSelectedEntries: TableRow[];\n toggleModal: ConfirmDialogPublishAllProps['onToggleDialog'];\n setListViewSelectedDocuments: (documents: TableRow[]) => void;\n model: string;\n}\n\nconst SelectedEntriesModalContent = ({\n listViewSelectedEntries,\n toggleModal,\n setListViewSelectedDocuments,\n model,\n}: SelectedEntriesModalContentProps) => {\n const { formatMessage } = useIntl();\n const { schema, components } = useContentTypeSchema(model);\n const documentIds = listViewSelectedEntries.map(({ documentId }) => documentId);\n\n // We want to keep the selected entries order same as the list view\n const [{ query }] = useQueryParams<{ sort?: string; plugins?: Record<string, any> }>();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n // Fetch the documents based on the selected entries and update the modal table\n const { data, isLoading, isFetching, refetch } = useGetAllDocumentsQuery(\n {\n model,\n params: {\n page: '1',\n pageSize: documentIds.length.toString(),\n sort: query.sort,\n filters: {\n documentId: {\n $in: documentIds,\n },\n },\n locale: query.plugins?.i18n?.locale,\n },\n },\n {\n selectFromResult: ({ data, ...restRes }) => ({ data: data?.results ?? [], ...restRes }),\n }\n );\n\n // Validate the entries based on the schema to show errors if any\n const { rows, validationErrors } = React.useMemo(() => {\n if (data.length > 0 && schema) {\n const validate = createYupSchema(\n schema.attributes,\n components,\n // Since this is the \"Publish\" action, the validation\n // schema must enforce the rules for published entities\n { status: 'published' }\n );\n const validationErrors: Record<TableRow['documentId'], FormErrors> = {};\n const rows = data.map((entry: Document) => {\n try {\n validate.validateSync(entry, { abortEarly: false });\n\n return entry;\n } catch (e) {\n if (e instanceof ValidationError) {\n validationErrors[entry.documentId] = getYupValidationErrors(e);\n }\n\n return entry;\n }\n });\n\n return { rows, validationErrors };\n }\n\n return {\n rows: [],\n validationErrors: {},\n };\n }, [components, data, schema]);\n\n const [isDialogOpen, setIsDialogOpen] = React.useState(false);\n\n const { publishMany: bulkPublishAction, isLoading: isPublishing } = useDocumentActions();\n const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();\n\n const selectedRows = useTable('publishAction', (state) => state.selectedRows);\n\n // Filter selected entries from the updated modal table rows\n const selectedEntries = rows.filter((entry) =>\n selectedRows.some((selectedEntry) => selectedEntry.documentId === entry.documentId)\n );\n\n const entriesToPublish = selectedEntries\n .filter((entry) => !validationErrors[entry.documentId])\n .map((entry) => entry.documentId);\n\n const selectedEntriesWithErrorsCount = selectedEntries.filter(\n ({ documentId }) => validationErrors[documentId]\n ).length;\n const selectedEntriesPublishedCount = selectedEntries.filter(\n ({ status }) => status === 'published'\n ).length;\n const selectedEntriesModifiedCount = selectedEntries.filter(\n ({ status, documentId }) => status === 'modified' && !validationErrors[documentId]\n ).length;\n const selectedEntriesWithNoErrorsCount =\n selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;\n\n const toggleDialog = () => setIsDialogOpen((prev) => !prev);\n\n const handleConfirmBulkPublish = async () => {\n toggleDialog();\n\n const res = await bulkPublishAction({ model: model, documentIds: entriesToPublish, params });\n if (!('error' in res)) {\n const unpublishedEntries = rows.filter((row) => {\n return !entriesToPublish.includes(row.documentId);\n });\n // Keep selection of the entries in list view that were not published\n setListViewSelectedDocuments(unpublishedEntries);\n }\n };\n\n return (\n <>\n <Modal.Body>\n <PublicationStatusGrid\n entriesReadyToPublishCount={\n selectedEntriesWithNoErrorsCount - selectedEntriesModifiedCount\n }\n entriesPublishedCount={selectedEntriesPublishedCount}\n entriesModifiedCount={selectedEntriesModifiedCount}\n entriesWithErrorsCount={selectedEntriesWithErrorsCount}\n />\n <Box marginTop={7}>\n <SelectedEntriesTableContent\n isPublishing={isSubmittingForm}\n rowsToDisplay={rows}\n entriesToPublish={entriesToPublish}\n validationErrors={validationErrors}\n />\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={toggleModal} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Flex gap={2}>\n <Button onClick={refetch} variant=\"tertiary\" loading={isFetching}>\n {formatMessage({ id: 'app.utils.refresh', defaultMessage: 'Refresh' })}\n </Button>\n <Button\n onClick={toggleDialog}\n disabled={\n selectedEntries.length === 0 ||\n selectedEntries.length === selectedEntriesWithErrorsCount ||\n selectedEntriesPublishedCount === selectedEntries.length ||\n isLoading\n }\n loading={isPublishing || isSubmittingForm}\n >\n {formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n <ConfirmDialogPublishAll\n isOpen={isDialogOpen}\n onToggleDialog={toggleDialog}\n isConfirmButtonLoading={isPublishing || isSubmittingForm}\n onConfirm={handleConfirmBulkPublish}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublishAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n // Publish button visibility\n const hasPublishPermission = useDocumentRBAC('unpublishAction', (state) => state.canPublish);\n const showPublishButton =\n hasPublishPermission && documents.some(({ status }) => status !== 'published');\n\n const setListViewSelectedDocuments = useTable('publishAction', (state) => state.selectRow);\n\n const refetchList = () => {\n contentManagerApi.util.invalidateTags([{ type: 'Document', id: `${model}_LIST` }]);\n };\n\n if (!showPublishButton) return null;\n\n return {\n actionType: 'publish',\n variant: 'tertiary',\n label: formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation('containers.ListPage.selectedEntriesModal.title'),\n defaultMessage: 'Publish entries',\n }),\n content: ({ onClose }) => {\n return (\n <Table.Root rows={documents} defaultSelectedRows={documents} headers={TABLE_HEADERS}>\n <SelectedEntriesModalContent\n listViewSelectedEntries={documents}\n toggleModal={() => {\n onClose();\n refetchList();\n }}\n setListViewSelectedDocuments={setListViewSelectedDocuments}\n model={model}\n />\n </Table.Root>\n );\n },\n onClose: () => {\n refetchList();\n },\n },\n };\n};\n\nexport { PublishAction, SelectedEntriesModalContent };\n"],"names":["TypographyMaxWidth","styled","Typography","TableComponent","RawTable","theme","colors","neutral150","spaces","formatErrorMessages","errors","parentKey","formatMessage","messages","Object","entries","forEach","key","value","currentKey","Array","isArray","push","id","defaultMessage","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","description","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","label","SelectedEntriesTableContent","isPublishing","rowsToDisplay","entriesToPublish","pathname","useLocation","list","settings","mainField","useDocLayout","shouldDisplayMainField","Table","Content","Head","HeaderCheckboxCell","filter","head","map","HeaderCell","Loading","Body","row","Row","CheckboxCell","Cell","DocumentStatus","maxWidth","includes","documentId","Loader","small","IconButton","tag","Link","to","search","locale","state","from","target","marginLeft","Pencil","width","height","PublicationStatusSummary","count","icon","message","justifyContent","flex","PublicationStatusGrid","entriesReadyToPublishCount","entriesPublishedCount","entriesModifiedCount","entriesWithErrorsCount","Box","hasRadius","borderColor","colCount","rowCount","Tbody","Tr","Td","SelectedEntriesModalContent","listViewSelectedEntries","toggleModal","setListViewSelectedDocuments","model","schema","components","useContentTypeSchema","documentIds","query","useQueryParams","params","React","useMemo","buildValidParams","data","isLoading","isFetching","refetch","useGetAllDocumentsQuery","page","pageSize","length","toString","sort","filters","$in","plugins","i18n","selectFromResult","restRes","results","rows","validate","createYupSchema","attributes","entry","validateSync","abortEarly","e","ValidationError","getYupValidationErrors","isDialogOpen","setIsDialogOpen","useState","publishMany","bulkPublishAction","useDocumentActions","isSubmittingForm","usePublishManyDocumentsMutation","selectedRows","useTable","selectedEntries","some","selectedEntry","selectedEntriesWithErrorsCount","selectedEntriesPublishedCount","selectedEntriesModifiedCount","selectedEntriesWithNoErrorsCount","toggleDialog","prev","handleConfirmBulkPublish","res","unpublishedEntries","_Fragment","Modal","marginTop","Footer","Button","onClick","loading","disabled","ConfirmDialogPublishAll","isOpen","onToggleDialog","isConfirmButtonLoading","onConfirm","PublishAction","documents","hasPublishPermission","useDocumentRBAC","canPublish","showPublishButton","selectRow","refetchList","contentManagerApi","util","invalidateTags","type","actionType","dialog","title","getTranslation","content","onClose","Root","defaultSelectedRows","headers"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PublishAction.mjs","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/PublishAction.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n FormErrors,\n getYupValidationErrors,\n Table,\n useQueryParams,\n useTable,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n IconButton,\n Loader,\n Modal,\n Tooltip,\n Typography,\n TypographyComponent,\n RawTable,\n Tr,\n Td,\n Tbody,\n} from '@strapi/design-system';\nimport { ArrowsCounterClockwise, CheckCircle, CrossCircle, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { useDocumentRBAC } from '../../../../features/DocumentRBAC';\nimport { useContentTypeSchema } from '../../../../hooks/useContentTypeSchema';\nimport { useDocumentActions } from '../../../../hooks/useDocumentActions';\nimport { useDocLayout } from '../../../../hooks/useDocumentLayout';\nimport { contentManagerApi } from '../../../../services/api';\nimport {\n useGetAllDocumentsQuery,\n usePublishManyDocumentsMutation,\n} from '../../../../services/documents';\nimport { buildValidParams } from '../../../../utils/api';\nimport { getTranslation } from '../../../../utils/translations';\nimport { createYupSchema } from '../../../../utils/validation';\nimport { DocumentStatus } from '../../../EditView/components/DocumentStatus';\n\nimport { ConfirmDialogPublishAll, ConfirmDialogPublishAllProps } from './ConfirmBulkActionDialog';\n\nimport type { BulkActionComponent } from '../../../../content-manager';\nimport type { Document } from '../../../../hooks/useDocument';\n\nconst TypographyMaxWidth = styled<TypographyComponent>(Typography)`\n max-width: 300px;\n`;\n\nconst TableComponent = styled(RawTable)`\n width: 100%;\n table-layout: fixed;\n td:first-child {\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n td:first-of-type {\n padding: ${({ theme }) => theme.spaces[4]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatErrorMessages = (errors: FormErrors, parentKey: string, formatMessage: any) => {\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if ('id' in value && 'defaultMessage' in value) {\n messages.push(\n formatMessage(\n {\n id: `${value.id}.withField`,\n defaultMessage: value.defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(\n // @ts-expect-error TODO: check why value is not compatible with FormErrors\n value,\n currentKey,\n formatMessage\n )\n );\n }\n } else {\n messages.push(\n formatMessage(\n {\n id: `${value}.withField`,\n defaultMessage: value,\n },\n { field: currentKey }\n )\n );\n }\n });\n\n return messages;\n};\n\ninterface EntryValidationTextProps {\n validationErrors?: FormErrors;\n status: string;\n}\n\nconst EntryValidationText = ({ validationErrors, status }: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n if (validationErrors) {\n const validationErrorsMessages = formatErrorMessages(validationErrors, '', formatMessage).join(\n ' '\n );\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip description={validationErrorsMessages}>\n <TypographyMaxWidth textColor=\"danger600\" variant=\"omega\" fontWeight=\"bold\" ellipsis>\n {validationErrorsMessages}\n </TypographyMaxWidth>\n </Tooltip>\n </Flex>\n );\n }\n\n if (status === 'published') {\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (status === 'modified') {\n return (\n <Flex gap={2}>\n <ArrowsCounterClockwise fill=\"alternative600\" />\n <Typography textColor=\"alternative600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n </Typography>\n </Flex>\n );\n }\n\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesTableContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SelectedEntriesTableContentProps {\n isPublishing?: boolean;\n rowsToDisplay?: TableRow[];\n entriesToPublish?: TableRow['documentId'][];\n validationErrors: Record<string, EntryValidationTextProps['validationErrors']>;\n}\n\nconst TABLE_HEADERS = [\n { name: 'id', label: 'id' },\n { name: 'name', label: 'name' },\n { name: 'status', label: 'status' },\n { name: 'publicationStatus', label: 'Publication status' },\n];\n\nconst SelectedEntriesTableContent = ({\n isPublishing,\n rowsToDisplay = [],\n entriesToPublish = [],\n validationErrors = {},\n}: SelectedEntriesTableContentProps) => {\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n const {\n list: {\n settings: { mainField },\n },\n } = useDocLayout();\n\n const shouldDisplayMainField = mainField != null && mainField !== 'id';\n\n return (\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {TABLE_HEADERS.filter((head) => head.name !== 'name' || shouldDisplayMainField).map(\n (head) => (\n <Table.HeaderCell key={head.name} {...head} />\n )\n )}\n </Table.Head>\n <Table.Loading />\n <Table.Body>\n {rowsToDisplay.map((row) => (\n <Table.Row key={row.id}>\n <Table.CheckboxCell id={row.id} />\n <Table.Cell>\n <Typography>{row.id}</Typography>\n </Table.Cell>\n {shouldDisplayMainField && (\n <Table.Cell>\n <Typography>{row[mainField as keyof TableRow]}</Typography>\n </Table.Cell>\n )}\n <Table.Cell>\n <DocumentStatus status={row.status} maxWidth={'min-content'} />\n </Table.Cell>\n <Table.Cell>\n {isPublishing && entriesToPublish.includes(row.documentId) ? (\n <Flex gap={2}>\n <Typography>\n {formatMessage({\n id: 'content-manager.success.record.publishing',\n defaultMessage: 'Publishing...',\n })}\n </Typography>\n <Loader small />\n </Flex>\n ) : (\n <EntryValidationText\n validationErrors={validationErrors[row.documentId]}\n status={row.status}\n />\n )}\n </Table.Cell>\n <Table.Cell>\n <Flex>\n <IconButton\n tag={Link}\n to={{\n pathname: `${pathname}/${row.documentId}`,\n search: row.locale && `?plugins[i18n][locale]=${row.locale}`,\n }}\n state={{ from: pathname }}\n label={formatMessage({\n id: 'content-manager.bulk-publish.edit',\n defaultMessage: 'Edit',\n })}\n target=\"_blank\"\n marginLeft=\"auto\"\n variant=\"ghost\"\n >\n <Pencil width={'1.6rem'} height={'1.6rem'} />\n </IconButton>\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusSummary\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusSummaryProps {\n count: number;\n icon: React.ReactNode;\n message: string;\n textColor: string;\n}\n\nconst PublicationStatusSummary = ({\n count,\n icon,\n message,\n textColor,\n}: PublicationStatusSummaryProps) => {\n return (\n <Flex justifyContent=\"space-between\" flex={1} gap={3}>\n <Flex gap={2}>\n {icon}\n <Typography textColor={textColor} fontWeight=\"bold\">\n {message}\n </Typography>\n </Flex>\n <Typography fontWeight=\"bold\">{count}</Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusGrid\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusGridProps {\n entriesReadyToPublishCount: number;\n entriesModifiedCount: number;\n entriesPublishedCount: number;\n entriesWithErrorsCount: number;\n}\n\nconst PublicationStatusGrid = ({\n entriesReadyToPublishCount,\n entriesPublishedCount,\n entriesModifiedCount,\n entriesWithErrorsCount,\n}: PublicationStatusGridProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box hasRadius borderColor=\"neutral150\">\n <TableComponent colCount={2} rowCount={2}>\n <Tbody>\n <Tr>\n <Td>\n <PublicationStatusSummary\n textColor=\"success600\"\n count={entriesReadyToPublishCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n textColor=\"success600\"\n count={entriesPublishedCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.already-published',\n defaultMessage: 'Already published',\n })}\n />\n </Td>\n </Tr>\n <Tr>\n <Td>\n <PublicationStatusSummary\n textColor=\"alternative600\"\n count={entriesModifiedCount}\n icon={<ArrowsCounterClockwise fill=\"alternative600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n textColor=\"danger600\"\n count={entriesWithErrorsCount}\n icon={<CrossCircle fill=\"danger600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.waiting-for-action',\n defaultMessage: 'Waiting for action',\n })}\n />\n </Td>\n </Tr>\n </Tbody>\n </TableComponent>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesModalContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableRow extends Document {}\n\ninterface SelectedEntriesModalContentProps {\n listViewSelectedEntries: TableRow[];\n toggleModal: ConfirmDialogPublishAllProps['onToggleDialog'];\n setListViewSelectedDocuments: (documents: TableRow[]) => void;\n model: string;\n}\n\nconst SelectedEntriesModalContent = ({\n listViewSelectedEntries,\n toggleModal,\n setListViewSelectedDocuments,\n model,\n}: SelectedEntriesModalContentProps) => {\n const { formatMessage } = useIntl();\n const { schema, components } = useContentTypeSchema(model);\n const documentIds = listViewSelectedEntries.map(({ documentId }) => documentId);\n\n // We want to keep the selected entries order same as the list view\n const [{ query }] = useQueryParams<{ sort?: string; plugins?: Record<string, any> }>();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n // Fetch the documents based on the selected entries and update the modal table\n const { data, isLoading, isFetching, refetch } = useGetAllDocumentsQuery(\n {\n model,\n params: {\n page: '1',\n pageSize: documentIds.length.toString(),\n sort: query.sort,\n filters: {\n documentId: {\n $in: documentIds,\n },\n },\n locale: query.plugins?.i18n?.locale,\n },\n },\n {\n selectFromResult: ({ data, ...restRes }) => ({ data: data?.results ?? [], ...restRes }),\n }\n );\n\n // Validate the entries based on the schema to show errors if any\n const { rows, validationErrors } = React.useMemo(() => {\n if (data.length > 0 && schema) {\n const validate = createYupSchema(\n schema.attributes,\n components,\n // Since this is the \"Publish\" action, the validation\n // schema must enforce the rules for published entities\n { status: 'published' }\n );\n const validationErrors: Record<TableRow['documentId'], FormErrors> = {};\n const rows = data.map((entry: Document) => {\n try {\n validate.validateSync(entry, { abortEarly: false });\n\n return entry;\n } catch (e) {\n if (e instanceof ValidationError) {\n validationErrors[entry.documentId] = getYupValidationErrors(e);\n }\n\n return entry;\n }\n });\n\n return { rows, validationErrors };\n }\n\n return {\n rows: [],\n validationErrors: {},\n };\n }, [components, data, schema]);\n\n const [isDialogOpen, setIsDialogOpen] = React.useState(false);\n\n const { publishMany: bulkPublishAction, isLoading: isPublishing } = useDocumentActions();\n const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();\n\n const selectedRows = useTable('publishAction', (state) => state.selectedRows);\n\n // Filter selected entries from the updated modal table rows\n const selectedEntries = rows.filter((entry) =>\n selectedRows.some((selectedEntry) => selectedEntry.documentId === entry.documentId)\n );\n\n const entriesToPublish = selectedEntries\n .filter((entry) => !validationErrors[entry.documentId])\n .map((entry) => entry.documentId);\n\n const selectedEntriesWithErrorsCount = selectedEntries.filter(\n ({ documentId }) => validationErrors[documentId]\n ).length;\n const selectedEntriesPublishedCount = selectedEntries.filter(\n ({ status }) => status === 'published'\n ).length;\n const selectedEntriesModifiedCount = selectedEntries.filter(\n ({ status, documentId }) => status === 'modified' && !validationErrors[documentId]\n ).length;\n const selectedEntriesWithNoErrorsCount =\n selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;\n\n const toggleDialog = () => setIsDialogOpen((prev) => !prev);\n\n const handleConfirmBulkPublish = async () => {\n toggleDialog();\n\n const res = await bulkPublishAction({ model: model, documentIds: entriesToPublish, params });\n if (!('error' in res)) {\n const unpublishedEntries = rows.filter((row) => {\n return !entriesToPublish.includes(row.documentId);\n });\n // Keep selection of the entries in list view that were not published\n setListViewSelectedDocuments(unpublishedEntries);\n }\n };\n\n return (\n <>\n <Modal.Body>\n <PublicationStatusGrid\n entriesReadyToPublishCount={\n selectedEntriesWithNoErrorsCount - selectedEntriesModifiedCount\n }\n entriesPublishedCount={selectedEntriesPublishedCount}\n entriesModifiedCount={selectedEntriesModifiedCount}\n entriesWithErrorsCount={selectedEntriesWithErrorsCount}\n />\n <Box marginTop={7}>\n <SelectedEntriesTableContent\n isPublishing={isSubmittingForm}\n rowsToDisplay={rows}\n entriesToPublish={entriesToPublish}\n validationErrors={validationErrors}\n />\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={toggleModal} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Flex gap={2}>\n <Button onClick={refetch} variant=\"tertiary\" loading={isFetching}>\n {formatMessage({ id: 'app.utils.refresh', defaultMessage: 'Refresh' })}\n </Button>\n <Button\n onClick={toggleDialog}\n disabled={\n selectedEntries.length === 0 ||\n selectedEntries.length === selectedEntriesWithErrorsCount ||\n selectedEntriesPublishedCount === selectedEntries.length ||\n isLoading\n }\n loading={isPublishing || isSubmittingForm}\n >\n {formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n <ConfirmDialogPublishAll\n isOpen={isDialogOpen}\n onToggleDialog={toggleDialog}\n isConfirmButtonLoading={isPublishing || isSubmittingForm}\n onConfirm={handleConfirmBulkPublish}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublishAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n // Publish button visibility\n const hasPublishPermission = useDocumentRBAC('unpublishAction', (state) => state.canPublish);\n const showPublishButton =\n hasPublishPermission && documents.some(({ status }) => status !== 'published');\n\n const setListViewSelectedDocuments = useTable('publishAction', (state) => state.selectRow);\n\n const refetchList = () => {\n contentManagerApi.util.invalidateTags([{ type: 'Document', id: `${model}_LIST` }]);\n };\n\n if (!showPublishButton) return null;\n\n return {\n actionType: 'publish',\n variant: 'tertiary',\n label: formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation('containers.ListPage.selectedEntriesModal.title'),\n defaultMessage: 'Publish entries',\n }),\n content: ({ onClose }) => {\n return (\n <Table.Root rows={documents} defaultSelectedRows={documents} headers={TABLE_HEADERS}>\n <SelectedEntriesModalContent\n listViewSelectedEntries={documents}\n toggleModal={() => {\n onClose();\n refetchList();\n }}\n setListViewSelectedDocuments={setListViewSelectedDocuments}\n model={model}\n />\n </Table.Root>\n );\n },\n onClose: () => {\n refetchList();\n },\n },\n };\n};\n\nexport { PublishAction, SelectedEntriesModalContent };\n"],"names":["TypographyMaxWidth","styled","Typography","TableComponent","RawTable","theme","colors","neutral150","spaces","formatErrorMessages","errors","parentKey","formatMessage","messages","Object","entries","forEach","key","value","currentKey","Array","isArray","push","id","defaultMessage","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","description","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","label","SelectedEntriesTableContent","isPublishing","rowsToDisplay","entriesToPublish","pathname","useLocation","list","settings","mainField","useDocLayout","shouldDisplayMainField","Table","Content","Head","HeaderCheckboxCell","filter","head","map","HeaderCell","Loading","Body","row","Row","CheckboxCell","Cell","DocumentStatus","maxWidth","includes","documentId","Loader","small","IconButton","tag","Link","to","search","locale","state","from","target","marginLeft","Pencil","width","height","PublicationStatusSummary","count","icon","message","justifyContent","flex","PublicationStatusGrid","entriesReadyToPublishCount","entriesPublishedCount","entriesModifiedCount","entriesWithErrorsCount","Box","hasRadius","borderColor","colCount","rowCount","Tbody","Tr","Td","SelectedEntriesModalContent","listViewSelectedEntries","toggleModal","setListViewSelectedDocuments","model","schema","components","useContentTypeSchema","documentIds","query","useQueryParams","params","React","useMemo","buildValidParams","data","isLoading","isFetching","refetch","useGetAllDocumentsQuery","page","pageSize","length","toString","sort","filters","$in","plugins","i18n","selectFromResult","restRes","results","rows","validate","createYupSchema","attributes","entry","validateSync","abortEarly","e","ValidationError","getYupValidationErrors","isDialogOpen","setIsDialogOpen","useState","publishMany","bulkPublishAction","useDocumentActions","isSubmittingForm","usePublishManyDocumentsMutation","selectedRows","useTable","selectedEntries","some","selectedEntry","selectedEntriesWithErrorsCount","selectedEntriesPublishedCount","selectedEntriesModifiedCount","selectedEntriesWithNoErrorsCount","toggleDialog","prev","handleConfirmBulkPublish","res","unpublishedEntries","_Fragment","Modal","marginTop","Footer","Button","onClick","loading","disabled","ConfirmDialogPublishAll","isOpen","onToggleDialog","isConfirmButtonLoading","onConfirm","PublishAction","documents","hasPublishPermission","useDocumentRBAC","canPublish","showPublishButton","selectRow","refetchList","contentManagerApi","util","invalidateTags","type","actionType","dialog","title","getTranslation","content","onClose","Root","defaultSelectedRows","headers"],"mappings":"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"}
1
+ {"version":3,"file":"PublishAction.mjs","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/PublishAction.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n FormErrors,\n getYupValidationErrors,\n Table,\n useQueryParams,\n useTable,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n IconButton,\n Loader,\n Modal,\n Tooltip,\n Typography,\n TypographyComponent,\n RawTable,\n Tr,\n Td,\n Tbody,\n} from '@strapi/design-system';\nimport { ArrowsCounterClockwise, CheckCircle, CrossCircle, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { useDocumentRBAC } from '../../../../features/DocumentRBAC';\nimport { useContentTypeSchema } from '../../../../hooks/useContentTypeSchema';\nimport { useDocumentActions } from '../../../../hooks/useDocumentActions';\nimport { useDocLayout } from '../../../../hooks/useDocumentLayout';\nimport { contentManagerApi } from '../../../../services/api';\nimport {\n useGetAllDocumentsQuery,\n usePublishManyDocumentsMutation,\n} from '../../../../services/documents';\nimport { buildValidParams } from '../../../../utils/api';\nimport { getTranslation } from '../../../../utils/translations';\nimport { createYupSchema } from '../../../../utils/validation';\nimport { DocumentStatus } from '../../../EditView/components/DocumentStatus';\n\nimport { ConfirmDialogPublishAll, ConfirmDialogPublishAllProps } from './ConfirmBulkActionDialog';\n\nimport type { BulkActionComponent } from '../../../../content-manager';\nimport type { Document } from '../../../../hooks/useDocument';\n\nconst TypographyMaxWidth = styled<TypographyComponent>(Typography)`\n max-width: 300px;\n`;\n\nconst TableComponent = styled(RawTable)`\n width: 100%;\n table-layout: fixed;\n td:first-child {\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n td:first-of-type {\n padding: ${({ theme }) => theme.spaces[4]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatErrorMessages = (errors: FormErrors, parentKey: string, formatMessage: any) => {\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if ('id' in value && 'defaultMessage' in value) {\n messages.push(\n formatMessage(\n {\n id: `${value.id}.withField`,\n defaultMessage: value.defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(\n // @ts-expect-error TODO: check why value is not compatible with FormErrors\n value,\n currentKey,\n formatMessage\n )\n );\n }\n } else {\n messages.push(\n formatMessage(\n {\n id: `${value}.withField`,\n defaultMessage: value,\n },\n { field: currentKey }\n )\n );\n }\n });\n\n return messages;\n};\n\ninterface EntryValidationTextProps {\n validationErrors?: FormErrors;\n status: string;\n}\n\nconst EntryValidationText = ({ validationErrors, status }: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n if (validationErrors) {\n const validationErrorsMessages = formatErrorMessages(validationErrors, '', formatMessage).join(\n ' '\n );\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip description={validationErrorsMessages}>\n <TypographyMaxWidth textColor=\"danger600\" variant=\"omega\" fontWeight=\"bold\" ellipsis>\n {validationErrorsMessages}\n </TypographyMaxWidth>\n </Tooltip>\n </Flex>\n );\n }\n\n if (status === 'published') {\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (status === 'modified') {\n return (\n <Flex gap={2}>\n <ArrowsCounterClockwise fill=\"alternative600\" />\n <Typography textColor=\"alternative600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n </Typography>\n </Flex>\n );\n }\n\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesTableContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SelectedEntriesTableContentProps {\n isPublishing?: boolean;\n rowsToDisplay?: TableRow[];\n entriesToPublish?: TableRow['documentId'][];\n validationErrors: Record<string, EntryValidationTextProps['validationErrors']>;\n}\n\nconst TABLE_HEADERS = [\n { name: 'id', label: 'id' },\n { name: 'name', label: 'name' },\n { name: 'status', label: 'status' },\n { name: 'publicationStatus', label: 'Publication status' },\n];\n\nconst SelectedEntriesTableContent = ({\n isPublishing,\n rowsToDisplay = [],\n entriesToPublish = [],\n validationErrors = {},\n}: SelectedEntriesTableContentProps) => {\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n const {\n list: {\n settings: { mainField },\n },\n } = useDocLayout();\n\n const shouldDisplayMainField = mainField != null && mainField !== 'id';\n\n return (\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {TABLE_HEADERS.filter((head) => head.name !== 'name' || shouldDisplayMainField).map(\n (head) => (\n <Table.HeaderCell key={head.name} {...head} />\n )\n )}\n </Table.Head>\n <Table.Loading />\n <Table.Body>\n {rowsToDisplay.map((row) => (\n <Table.Row key={row.id}>\n <Table.CheckboxCell id={row.id} />\n <Table.Cell>\n <Typography>{row.id}</Typography>\n </Table.Cell>\n {shouldDisplayMainField && (\n <Table.Cell>\n <Typography>{row[mainField as keyof TableRow]}</Typography>\n </Table.Cell>\n )}\n <Table.Cell>\n <DocumentStatus status={row.status} maxWidth={'min-content'} />\n </Table.Cell>\n <Table.Cell>\n {isPublishing && entriesToPublish.includes(row.documentId) ? (\n <Flex gap={2}>\n <Typography>\n {formatMessage({\n id: 'content-manager.success.record.publishing',\n defaultMessage: 'Publishing...',\n })}\n </Typography>\n <Loader small />\n </Flex>\n ) : (\n <EntryValidationText\n validationErrors={validationErrors[row.documentId]}\n status={row.status}\n />\n )}\n </Table.Cell>\n <Table.Cell>\n <Flex>\n <IconButton\n tag={Link}\n to={{\n pathname: `${pathname}/${row.documentId}`,\n search: row.locale && `?plugins[i18n][locale]=${row.locale}`,\n }}\n state={{ from: pathname }}\n label={formatMessage({\n id: 'content-manager.bulk-publish.edit',\n defaultMessage: 'Edit',\n })}\n target=\"_blank\"\n marginLeft=\"auto\"\n variant=\"ghost\"\n >\n <Pencil width={'1.6rem'} height={'1.6rem'} />\n </IconButton>\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusSummary\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusSummaryProps {\n count: number;\n icon: React.ReactNode;\n message: string;\n textColor: string;\n}\n\nconst PublicationStatusSummary = ({\n count,\n icon,\n message,\n textColor,\n}: PublicationStatusSummaryProps) => {\n return (\n <Flex justifyContent=\"space-between\" flex={1} gap={3}>\n <Flex gap={2}>\n {icon}\n <Typography textColor={textColor} fontWeight=\"bold\">\n {message}\n </Typography>\n </Flex>\n <Typography fontWeight=\"bold\">{count}</Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusGrid\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusGridProps {\n entriesReadyToPublishCount: number;\n entriesModifiedCount: number;\n entriesPublishedCount: number;\n entriesWithErrorsCount: number;\n}\n\nconst PublicationStatusGrid = ({\n entriesReadyToPublishCount,\n entriesPublishedCount,\n entriesModifiedCount,\n entriesWithErrorsCount,\n}: PublicationStatusGridProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box hasRadius borderColor=\"neutral150\">\n <TableComponent colCount={2} rowCount={2}>\n <Tbody>\n <Tr>\n <Td>\n <PublicationStatusSummary\n textColor=\"success600\"\n count={entriesReadyToPublishCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n textColor=\"success600\"\n count={entriesPublishedCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.already-published',\n defaultMessage: 'Already published',\n })}\n />\n </Td>\n </Tr>\n <Tr>\n <Td>\n <PublicationStatusSummary\n textColor=\"alternative600\"\n count={entriesModifiedCount}\n icon={<ArrowsCounterClockwise fill=\"alternative600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n textColor=\"danger600\"\n count={entriesWithErrorsCount}\n icon={<CrossCircle fill=\"danger600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.waiting-for-action',\n defaultMessage: 'Waiting for action',\n })}\n />\n </Td>\n </Tr>\n </Tbody>\n </TableComponent>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesModalContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableRow extends Document {}\n\ninterface SelectedEntriesModalContentProps {\n listViewSelectedEntries: TableRow[];\n toggleModal: ConfirmDialogPublishAllProps['onToggleDialog'];\n setListViewSelectedDocuments: (documents: TableRow[]) => void;\n model: string;\n}\n\nconst SelectedEntriesModalContent = ({\n listViewSelectedEntries,\n toggleModal,\n setListViewSelectedDocuments,\n model,\n}: SelectedEntriesModalContentProps) => {\n const { formatMessage } = useIntl();\n const { schema, components } = useContentTypeSchema(model);\n const documentIds = listViewSelectedEntries.map(({ documentId }) => documentId);\n\n // We want to keep the selected entries order same as the list view\n const [{ query }] = useQueryParams<{ sort?: string; plugins?: Record<string, any> }>();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n // Fetch the documents based on the selected entries and update the modal table\n const { data, isLoading, isFetching, refetch } = useGetAllDocumentsQuery(\n {\n model,\n params: {\n page: '1',\n pageSize: documentIds.length.toString(),\n sort: query.sort,\n filters: {\n documentId: {\n $in: documentIds,\n },\n },\n locale: query.plugins?.i18n?.locale,\n },\n },\n {\n selectFromResult: ({ data, ...restRes }) => ({ data: data?.results ?? [], ...restRes }),\n }\n );\n\n // Validate the entries based on the schema to show errors if any\n const { rows, validationErrors } = React.useMemo(() => {\n if (data.length > 0 && schema) {\n const validate = createYupSchema(\n schema.attributes,\n components,\n // Since this is the \"Publish\" action, the validation\n // schema must enforce the rules for published entities\n { status: 'published' }\n );\n const validationErrors: Record<TableRow['documentId'], FormErrors> = {};\n const rows = data.map((entry: Document) => {\n try {\n validate.validateSync(entry, { abortEarly: false });\n\n return entry;\n } catch (e) {\n if (e instanceof ValidationError) {\n validationErrors[entry.documentId] = getYupValidationErrors(e);\n }\n\n return entry;\n }\n });\n\n return { rows, validationErrors };\n }\n\n return {\n rows: [],\n validationErrors: {},\n };\n }, [components, data, schema]);\n\n const [isDialogOpen, setIsDialogOpen] = React.useState(false);\n\n const { publishMany: bulkPublishAction, isLoading: isPublishing } = useDocumentActions();\n const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();\n\n const selectedRows = useTable('publishAction', (state) => state.selectedRows);\n\n // Filter selected entries from the updated modal table rows\n const selectedEntries = rows.filter((entry) =>\n selectedRows.some((selectedEntry) => selectedEntry.documentId === entry.documentId)\n );\n\n const entriesToPublish = selectedEntries\n .filter((entry) => !validationErrors[entry.documentId])\n .map((entry) => entry.documentId);\n\n const selectedEntriesWithErrorsCount = selectedEntries.filter(\n ({ documentId }) => validationErrors[documentId]\n ).length;\n const selectedEntriesPublishedCount = selectedEntries.filter(\n ({ status }) => status === 'published'\n ).length;\n const selectedEntriesModifiedCount = selectedEntries.filter(\n ({ status, documentId }) => status === 'modified' && !validationErrors[documentId]\n ).length;\n const selectedEntriesWithNoErrorsCount =\n selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;\n\n const toggleDialog = () => setIsDialogOpen((prev) => !prev);\n\n const handleConfirmBulkPublish = async () => {\n toggleDialog();\n\n const res = await bulkPublishAction({ model: model, documentIds: entriesToPublish, params });\n if (!('error' in res)) {\n const unpublishedEntries = rows.filter((row) => {\n return !entriesToPublish.includes(row.documentId);\n });\n // Keep selection of the entries in list view that were not published\n setListViewSelectedDocuments(unpublishedEntries);\n }\n };\n\n return (\n <>\n <Modal.Body>\n <PublicationStatusGrid\n entriesReadyToPublishCount={\n selectedEntriesWithNoErrorsCount - selectedEntriesModifiedCount\n }\n entriesPublishedCount={selectedEntriesPublishedCount}\n entriesModifiedCount={selectedEntriesModifiedCount}\n entriesWithErrorsCount={selectedEntriesWithErrorsCount}\n />\n <Box marginTop={7}>\n <SelectedEntriesTableContent\n isPublishing={isSubmittingForm}\n rowsToDisplay={rows}\n entriesToPublish={entriesToPublish}\n validationErrors={validationErrors}\n />\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={toggleModal} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Flex gap={2}>\n <Button onClick={refetch} variant=\"tertiary\" loading={isFetching}>\n {formatMessage({ id: 'app.utils.refresh', defaultMessage: 'Refresh' })}\n </Button>\n <Button\n onClick={toggleDialog}\n disabled={\n selectedEntries.length === 0 ||\n selectedEntries.length === selectedEntriesWithErrorsCount ||\n selectedEntriesPublishedCount === selectedEntries.length ||\n isLoading\n }\n loading={isPublishing || isSubmittingForm}\n >\n {formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n <ConfirmDialogPublishAll\n isOpen={isDialogOpen}\n onToggleDialog={toggleDialog}\n isConfirmButtonLoading={isPublishing || isSubmittingForm}\n onConfirm={handleConfirmBulkPublish}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublishAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n // Publish button visibility\n const hasPublishPermission = useDocumentRBAC('unpublishAction', (state) => state.canPublish);\n const showPublishButton =\n hasPublishPermission && documents.some(({ status }) => status !== 'published');\n\n const setListViewSelectedDocuments = useTable('publishAction', (state) => state.selectRow);\n\n const refetchList = () => {\n contentManagerApi.util.invalidateTags([{ type: 'Document', id: `${model}_LIST` }]);\n };\n\n if (!showPublishButton) return null;\n\n return {\n actionType: 'publish',\n variant: 'tertiary',\n label: formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation('containers.ListPage.selectedEntriesModal.title'),\n defaultMessage: 'Publish entries',\n }),\n content: ({ onClose }) => {\n return (\n <Table.Root rows={documents} defaultSelectedRows={documents} headers={TABLE_HEADERS}>\n <SelectedEntriesModalContent\n listViewSelectedEntries={documents}\n toggleModal={() => {\n onClose();\n refetchList();\n }}\n setListViewSelectedDocuments={setListViewSelectedDocuments}\n model={model}\n />\n </Table.Root>\n );\n },\n onClose: () => {\n refetchList();\n },\n },\n };\n};\n\nexport { PublishAction, SelectedEntriesModalContent };\n"],"names":["TypographyMaxWidth","styled","Typography","TableComponent","RawTable","theme","colors","neutral150","spaces","formatErrorMessages","errors","parentKey","formatMessage","messages","Object","entries","forEach","key","value","currentKey","Array","isArray","push","id","defaultMessage","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","description","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","label","SelectedEntriesTableContent","isPublishing","rowsToDisplay","entriesToPublish","pathname","useLocation","list","settings","mainField","useDocLayout","shouldDisplayMainField","Table","Content","Head","HeaderCheckboxCell","filter","head","map","HeaderCell","Loading","Body","row","Row","CheckboxCell","Cell","DocumentStatus","maxWidth","includes","documentId","Loader","small","IconButton","tag","Link","to","search","locale","state","from","target","marginLeft","Pencil","width","height","PublicationStatusSummary","count","icon","message","justifyContent","flex","PublicationStatusGrid","entriesReadyToPublishCount","entriesPublishedCount","entriesModifiedCount","entriesWithErrorsCount","Box","hasRadius","borderColor","colCount","rowCount","Tbody","Tr","Td","SelectedEntriesModalContent","listViewSelectedEntries","toggleModal","setListViewSelectedDocuments","model","schema","components","useContentTypeSchema","documentIds","query","useQueryParams","params","React","useMemo","buildValidParams","data","isLoading","isFetching","refetch","useGetAllDocumentsQuery","page","pageSize","length","toString","sort","filters","$in","plugins","i18n","selectFromResult","restRes","results","rows","validate","createYupSchema","attributes","entry","validateSync","abortEarly","e","ValidationError","getYupValidationErrors","isDialogOpen","setIsDialogOpen","useState","publishMany","bulkPublishAction","useDocumentActions","isSubmittingForm","usePublishManyDocumentsMutation","selectedRows","useTable","selectedEntries","some","selectedEntry","selectedEntriesWithErrorsCount","selectedEntriesPublishedCount","selectedEntriesModifiedCount","selectedEntriesWithNoErrorsCount","toggleDialog","prev","handleConfirmBulkPublish","res","unpublishedEntries","_Fragment","Modal","marginTop","Footer","Button","onClick","loading","disabled","ConfirmDialogPublishAll","isOpen","onToggleDialog","isConfirmButtonLoading","onConfirm","PublishAction","documents","hasPublishPermission","useDocumentRBAC","canPublish","showPublishButton","selectRow","refetchList","contentManagerApi","util","invalidateTags","type","actionType","dialog","title","getTranslation","content","onClose","Root","defaultSelectedRows","headers"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableActions.js","sources":["../../../../../admin/src/pages/ListView/components/TableActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useNotification,\n useStrapiApp,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, LinkButton, Modal } from '@strapi/design-system';\nimport { Duplicate, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { Document, useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { isBaseQueryError } from '../../../utils/api';\nimport { DocumentActionsMenu } from '../../EditView/components/DocumentActions';\n\nimport { AutoCloneFailureModalBody } from './AutoCloneFailureModal';\n\nimport type { ProhibitedCloningField } from '../../../../../shared/contracts/collection-types';\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n DocumentActionProps,\n} from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * TableActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableActionsProps {\n document: Document;\n}\n\nconst TableActions = ({ document }: TableActionsProps) => {\n const { formatMessage } = useIntl();\n const { model, collectionType } = useDoc();\n const plugins = useStrapiApp('TableActions', (state) => state.plugins);\n\n const props: DocumentActionProps = {\n activeTab: null,\n model,\n documentId: document.documentId,\n collectionType,\n document,\n };\n\n return (\n <DescriptionComponentRenderer\n props={props}\n descriptions={(plugins['content-manager'].apis as ContentManagerPlugin['config']['apis'])\n .getDocumentActions('table-row')\n // We explicitly remove the PublishAction from description so we never render it and we don't make unnecessary requests.\n .filter((action) => action.name !== 'PublishAction')}\n >\n {(actions) => {\n const tableRowActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('table-row');\n });\n\n return (\n <DocumentActionsMenu\n actions={tableRowActions}\n label={formatMessage({\n id: 'content-manager.containers.list.table.row-actions',\n defaultMessage: 'Row actions',\n })}\n variant=\"ghost\"\n />\n );\n }}\n </DescriptionComponentRenderer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditAction: DocumentActionComponent = ({ documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canRead } = useDocumentRBAC('EditAction', ({ canRead }) => ({ canRead }));\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n\n return {\n disabled: !canRead,\n icon: <StyledPencil />,\n label: formatMessage({\n id: 'content-manager.actions.edit.label',\n defaultMessage: 'Edit',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to edit 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.edit.error',\n defaultMessage: 'An error occurred while trying to edit the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n navigate({\n pathname: documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n },\n };\n};\n\nEditAction.type = 'edit';\nEditAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledPencil = styled(Pencil)`\n path {\n fill: currentColor;\n }\n`;\n\nconst CloneAction: DocumentActionComponent = ({ model, documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canCreate } = useDocumentRBAC('CloneAction', ({ canCreate }) => ({ canCreate }));\n const { toggleNotification } = useNotification();\n const { autoClone } = useDocumentActions();\n const [prohibitedFields, setProhibitedFields] = React.useState<ProhibitedCloningField[]>([]);\n const [{ query }] = useQueryParams<{ plugins?: Record<string, any> }>();\n\n return {\n disabled: !canCreate,\n icon: <StyledDuplicate />,\n label: formatMessage({\n id: 'content-manager.actions.clone.label',\n defaultMessage: 'Duplicate',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to clone a document in the table 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.clone.error',\n defaultMessage: 'An error occurred while trying to clone the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await autoClone({\n model,\n sourceId: documentId,\n locale: query.plugins?.i18n?.locale,\n });\n\n if ('data' in res) {\n navigate({\n pathname: res.data.documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n\n /**\n * We return true because we don't need to show a modal anymore.\n */\n return true;\n }\n\n if (\n isBaseQueryError(res.error) &&\n res.error.details &&\n typeof res.error.details === 'object' &&\n 'prohibitedFields' in res.error.details &&\n Array.isArray(res.error.details.prohibitedFields)\n ) {\n const prohibitedFields = res.error.details.prohibitedFields as ProhibitedCloningField[];\n\n setProhibitedFields(prohibitedFields);\n }\n },\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.header',\n defaultMessage: 'Duplicate',\n }),\n content: <AutoCloneFailureModalBody prohibitedFields={prohibitedFields} />,\n footer: ({ onClose }) => {\n return (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <LinkButton\n tag={NavLink}\n to={{\n pathname: `clone/${documentId}`,\n search: stringify({\n plugins: query.plugins,\n }),\n }}\n >\n {formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.create',\n defaultMessage: 'Create',\n })}\n </LinkButton>\n </Modal.Footer>\n );\n },\n },\n };\n};\n\nCloneAction.type = 'clone';\nCloneAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledDuplicate = styled(Duplicate)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DEFAULT_TABLE_ROW_ACTIONS = [EditAction, CloneAction];\n\nexport { TableActions, DEFAULT_TABLE_ROW_ACTIONS };\n"],"names":["TableActions","document","formatMessage","useIntl","model","collectionType","useDoc","plugins","useStrapiApp","state","props","activeTab","documentId","_jsx","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","filter","action","name","actions","tableRowActions","positions","Array","isArray","position","includes","DocumentActionsMenu","label","id","defaultMessage","variant","EditAction","navigate","useNavigate","canRead","useDocumentRBAC","toggleNotification","useNotification","query","useQueryParams","disabled","icon","StyledPencil","onClick","console","error","message","type","pathname","search","stringify","styled","Pencil","CloneAction","canCreate","autoClone","useDocumentActions","prohibitedFields","setProhibitedFields","React","useState","StyledDuplicate","res","sourceId","locale","i18n","data","isBaseQueryError","details","dialog","title","content","AutoCloneFailureModalBody","footer","onClose","_jsxs","Modal","Footer","Button","LinkButton","tag","NavLink","to","Duplicate","DEFAULT_TABLE_ROW_ACTIONS"],"mappings":"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"}
1
+ {"version":3,"file":"TableActions.js","sources":["../../../../../admin/src/pages/ListView/components/TableActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useNotification,\n useStrapiApp,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, LinkButton, Modal } from '@strapi/design-system';\nimport { Duplicate, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { Document, useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { isBaseQueryError } from '../../../utils/api';\nimport { DocumentActionsMenu } from '../../EditView/components/DocumentActions';\n\nimport { AutoCloneFailureModalBody } from './AutoCloneFailureModal';\n\nimport type { ProhibitedCloningField } from '../../../../../shared/contracts/collection-types';\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n DocumentActionProps,\n} from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * TableActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableActionsProps {\n document: Document;\n}\n\nconst TableActions = ({ document }: TableActionsProps) => {\n const { formatMessage } = useIntl();\n const { model, collectionType } = useDoc();\n const plugins = useStrapiApp('TableActions', (state) => state.plugins);\n\n const props: DocumentActionProps = {\n activeTab: null,\n model,\n documentId: document.documentId,\n collectionType,\n document,\n };\n\n return (\n <DescriptionComponentRenderer\n props={props}\n descriptions={(plugins['content-manager'].apis as ContentManagerPlugin['config']['apis'])\n .getDocumentActions('table-row')\n // We explicitly remove the PublishAction from description so we never render it and we don't make unnecessary requests.\n .filter((action) => action.name !== 'PublishAction')}\n >\n {(actions) => {\n const tableRowActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('table-row');\n });\n\n return (\n <DocumentActionsMenu\n actions={tableRowActions}\n label={formatMessage({\n id: 'content-manager.containers.list.table.row-actions',\n defaultMessage: 'Row actions',\n })}\n variant=\"ghost\"\n />\n );\n }}\n </DescriptionComponentRenderer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditAction: DocumentActionComponent = ({ documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canRead } = useDocumentRBAC('EditAction', ({ canRead }) => ({ canRead }));\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n\n return {\n disabled: !canRead,\n icon: <StyledPencil />,\n label: formatMessage({\n id: 'content-manager.actions.edit.label',\n defaultMessage: 'Edit',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to edit 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.edit.error',\n defaultMessage: 'An error occurred while trying to edit the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n navigate({\n pathname: documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n },\n };\n};\n\nEditAction.type = 'edit';\nEditAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledPencil = styled(Pencil)`\n path {\n fill: currentColor;\n }\n`;\n\nconst CloneAction: DocumentActionComponent = ({ model, documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canCreate } = useDocumentRBAC('CloneAction', ({ canCreate }) => ({ canCreate }));\n const { toggleNotification } = useNotification();\n const { autoClone } = useDocumentActions();\n const [prohibitedFields, setProhibitedFields] = React.useState<ProhibitedCloningField[]>([]);\n const [{ query }] = useQueryParams<{ plugins?: Record<string, any> }>();\n\n return {\n disabled: !canCreate,\n icon: <StyledDuplicate />,\n label: formatMessage({\n id: 'content-manager.actions.clone.label',\n defaultMessage: 'Duplicate',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to clone a document in the table 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.clone.error',\n defaultMessage: 'An error occurred while trying to clone the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await autoClone({\n model,\n sourceId: documentId,\n locale: query.plugins?.i18n?.locale,\n });\n\n if ('data' in res) {\n navigate({\n pathname: res.data.documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n\n /**\n * We return true because we don't need to show a modal anymore.\n */\n return true;\n }\n\n if (\n isBaseQueryError(res.error) &&\n res.error.details &&\n typeof res.error.details === 'object' &&\n 'prohibitedFields' in res.error.details &&\n Array.isArray(res.error.details.prohibitedFields)\n ) {\n const prohibitedFields = res.error.details.prohibitedFields as ProhibitedCloningField[];\n\n setProhibitedFields(prohibitedFields);\n }\n },\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.header',\n defaultMessage: 'Duplicate',\n }),\n content: <AutoCloneFailureModalBody prohibitedFields={prohibitedFields} />,\n footer: ({ onClose }) => {\n return (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <LinkButton\n tag={NavLink}\n to={{\n pathname: `clone/${documentId}`,\n search: stringify({\n plugins: query.plugins,\n }),\n }}\n >\n {formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.create',\n defaultMessage: 'Create',\n })}\n </LinkButton>\n </Modal.Footer>\n );\n },\n },\n };\n};\n\nCloneAction.type = 'clone';\nCloneAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledDuplicate = styled(Duplicate)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DEFAULT_TABLE_ROW_ACTIONS = [EditAction, CloneAction];\n\nexport { TableActions, DEFAULT_TABLE_ROW_ACTIONS };\n"],"names":["TableActions","document","formatMessage","useIntl","model","collectionType","useDoc","plugins","useStrapiApp","state","props","activeTab","documentId","_jsx","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","filter","action","name","actions","tableRowActions","positions","Array","isArray","position","includes","DocumentActionsMenu","label","id","defaultMessage","variant","EditAction","navigate","useNavigate","canRead","useDocumentRBAC","toggleNotification","useNotification","query","useQueryParams","disabled","icon","StyledPencil","onClick","console","error","message","type","pathname","search","stringify","styled","Pencil","CloneAction","canCreate","autoClone","useDocumentActions","prohibitedFields","setProhibitedFields","React","useState","StyledDuplicate","res","sourceId","locale","i18n","data","isBaseQueryError","details","dialog","title","content","AutoCloneFailureModalBody","footer","onClose","_jsxs","Modal","Footer","Button","LinkButton","tag","NavLink","to","Duplicate","DEFAULT_TABLE_ROW_ACTIONS"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableActions.mjs","sources":["../../../../../admin/src/pages/ListView/components/TableActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useNotification,\n useStrapiApp,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, LinkButton, Modal } from '@strapi/design-system';\nimport { Duplicate, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { Document, useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { isBaseQueryError } from '../../../utils/api';\nimport { DocumentActionsMenu } from '../../EditView/components/DocumentActions';\n\nimport { AutoCloneFailureModalBody } from './AutoCloneFailureModal';\n\nimport type { ProhibitedCloningField } from '../../../../../shared/contracts/collection-types';\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n DocumentActionProps,\n} from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * TableActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableActionsProps {\n document: Document;\n}\n\nconst TableActions = ({ document }: TableActionsProps) => {\n const { formatMessage } = useIntl();\n const { model, collectionType } = useDoc();\n const plugins = useStrapiApp('TableActions', (state) => state.plugins);\n\n const props: DocumentActionProps = {\n activeTab: null,\n model,\n documentId: document.documentId,\n collectionType,\n document,\n };\n\n return (\n <DescriptionComponentRenderer\n props={props}\n descriptions={(plugins['content-manager'].apis as ContentManagerPlugin['config']['apis'])\n .getDocumentActions('table-row')\n // We explicitly remove the PublishAction from description so we never render it and we don't make unnecessary requests.\n .filter((action) => action.name !== 'PublishAction')}\n >\n {(actions) => {\n const tableRowActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('table-row');\n });\n\n return (\n <DocumentActionsMenu\n actions={tableRowActions}\n label={formatMessage({\n id: 'content-manager.containers.list.table.row-actions',\n defaultMessage: 'Row actions',\n })}\n variant=\"ghost\"\n />\n );\n }}\n </DescriptionComponentRenderer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditAction: DocumentActionComponent = ({ documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canRead } = useDocumentRBAC('EditAction', ({ canRead }) => ({ canRead }));\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n\n return {\n disabled: !canRead,\n icon: <StyledPencil />,\n label: formatMessage({\n id: 'content-manager.actions.edit.label',\n defaultMessage: 'Edit',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to edit 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.edit.error',\n defaultMessage: 'An error occurred while trying to edit the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n navigate({\n pathname: documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n },\n };\n};\n\nEditAction.type = 'edit';\nEditAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledPencil = styled(Pencil)`\n path {\n fill: currentColor;\n }\n`;\n\nconst CloneAction: DocumentActionComponent = ({ model, documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canCreate } = useDocumentRBAC('CloneAction', ({ canCreate }) => ({ canCreate }));\n const { toggleNotification } = useNotification();\n const { autoClone } = useDocumentActions();\n const [prohibitedFields, setProhibitedFields] = React.useState<ProhibitedCloningField[]>([]);\n const [{ query }] = useQueryParams<{ plugins?: Record<string, any> }>();\n\n return {\n disabled: !canCreate,\n icon: <StyledDuplicate />,\n label: formatMessage({\n id: 'content-manager.actions.clone.label',\n defaultMessage: 'Duplicate',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to clone a document in the table 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.clone.error',\n defaultMessage: 'An error occurred while trying to clone the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await autoClone({\n model,\n sourceId: documentId,\n locale: query.plugins?.i18n?.locale,\n });\n\n if ('data' in res) {\n navigate({\n pathname: res.data.documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n\n /**\n * We return true because we don't need to show a modal anymore.\n */\n return true;\n }\n\n if (\n isBaseQueryError(res.error) &&\n res.error.details &&\n typeof res.error.details === 'object' &&\n 'prohibitedFields' in res.error.details &&\n Array.isArray(res.error.details.prohibitedFields)\n ) {\n const prohibitedFields = res.error.details.prohibitedFields as ProhibitedCloningField[];\n\n setProhibitedFields(prohibitedFields);\n }\n },\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.header',\n defaultMessage: 'Duplicate',\n }),\n content: <AutoCloneFailureModalBody prohibitedFields={prohibitedFields} />,\n footer: ({ onClose }) => {\n return (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <LinkButton\n tag={NavLink}\n to={{\n pathname: `clone/${documentId}`,\n search: stringify({\n plugins: query.plugins,\n }),\n }}\n >\n {formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.create',\n defaultMessage: 'Create',\n })}\n </LinkButton>\n </Modal.Footer>\n );\n },\n },\n };\n};\n\nCloneAction.type = 'clone';\nCloneAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledDuplicate = styled(Duplicate)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DEFAULT_TABLE_ROW_ACTIONS = [EditAction, CloneAction];\n\nexport { TableActions, DEFAULT_TABLE_ROW_ACTIONS };\n"],"names":["TableActions","document","formatMessage","useIntl","model","collectionType","useDoc","plugins","useStrapiApp","state","props","activeTab","documentId","_jsx","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","filter","action","name","actions","tableRowActions","positions","Array","isArray","position","includes","DocumentActionsMenu","label","id","defaultMessage","variant","EditAction","navigate","useNavigate","canRead","useDocumentRBAC","toggleNotification","useNotification","query","useQueryParams","disabled","icon","StyledPencil","onClick","console","error","message","type","pathname","search","stringify","styled","Pencil","CloneAction","canCreate","autoClone","useDocumentActions","prohibitedFields","setProhibitedFields","React","useState","StyledDuplicate","res","sourceId","locale","i18n","data","isBaseQueryError","details","dialog","title","content","AutoCloneFailureModalBody","footer","onClose","_jsxs","Modal","Footer","Button","LinkButton","tag","NavLink","to","Duplicate","DEFAULT_TABLE_ROW_ACTIONS"],"mappings":"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"}
1
+ {"version":3,"file":"TableActions.mjs","sources":["../../../../../admin/src/pages/ListView/components/TableActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useNotification,\n useStrapiApp,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, LinkButton, Modal } from '@strapi/design-system';\nimport { Duplicate, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { Document, useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { isBaseQueryError } from '../../../utils/api';\nimport { DocumentActionsMenu } from '../../EditView/components/DocumentActions';\n\nimport { AutoCloneFailureModalBody } from './AutoCloneFailureModal';\n\nimport type { ProhibitedCloningField } from '../../../../../shared/contracts/collection-types';\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n DocumentActionProps,\n} from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * TableActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableActionsProps {\n document: Document;\n}\n\nconst TableActions = ({ document }: TableActionsProps) => {\n const { formatMessage } = useIntl();\n const { model, collectionType } = useDoc();\n const plugins = useStrapiApp('TableActions', (state) => state.plugins);\n\n const props: DocumentActionProps = {\n activeTab: null,\n model,\n documentId: document.documentId,\n collectionType,\n document,\n };\n\n return (\n <DescriptionComponentRenderer\n props={props}\n descriptions={(plugins['content-manager'].apis as ContentManagerPlugin['config']['apis'])\n .getDocumentActions('table-row')\n // We explicitly remove the PublishAction from description so we never render it and we don't make unnecessary requests.\n .filter((action) => action.name !== 'PublishAction')}\n >\n {(actions) => {\n const tableRowActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('table-row');\n });\n\n return (\n <DocumentActionsMenu\n actions={tableRowActions}\n label={formatMessage({\n id: 'content-manager.containers.list.table.row-actions',\n defaultMessage: 'Row actions',\n })}\n variant=\"ghost\"\n />\n );\n }}\n </DescriptionComponentRenderer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditAction: DocumentActionComponent = ({ documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canRead } = useDocumentRBAC('EditAction', ({ canRead }) => ({ canRead }));\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n\n return {\n disabled: !canRead,\n icon: <StyledPencil />,\n label: formatMessage({\n id: 'content-manager.actions.edit.label',\n defaultMessage: 'Edit',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to edit 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.edit.error',\n defaultMessage: 'An error occurred while trying to edit the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n navigate({\n pathname: documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n },\n };\n};\n\nEditAction.type = 'edit';\nEditAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledPencil = styled(Pencil)`\n path {\n fill: currentColor;\n }\n`;\n\nconst CloneAction: DocumentActionComponent = ({ model, documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canCreate } = useDocumentRBAC('CloneAction', ({ canCreate }) => ({ canCreate }));\n const { toggleNotification } = useNotification();\n const { autoClone } = useDocumentActions();\n const [prohibitedFields, setProhibitedFields] = React.useState<ProhibitedCloningField[]>([]);\n const [{ query }] = useQueryParams<{ plugins?: Record<string, any> }>();\n\n return {\n disabled: !canCreate,\n icon: <StyledDuplicate />,\n label: formatMessage({\n id: 'content-manager.actions.clone.label',\n defaultMessage: 'Duplicate',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to clone a document in the table 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.clone.error',\n defaultMessage: 'An error occurred while trying to clone the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await autoClone({\n model,\n sourceId: documentId,\n locale: query.plugins?.i18n?.locale,\n });\n\n if ('data' in res) {\n navigate({\n pathname: res.data.documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n\n /**\n * We return true because we don't need to show a modal anymore.\n */\n return true;\n }\n\n if (\n isBaseQueryError(res.error) &&\n res.error.details &&\n typeof res.error.details === 'object' &&\n 'prohibitedFields' in res.error.details &&\n Array.isArray(res.error.details.prohibitedFields)\n ) {\n const prohibitedFields = res.error.details.prohibitedFields as ProhibitedCloningField[];\n\n setProhibitedFields(prohibitedFields);\n }\n },\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.header',\n defaultMessage: 'Duplicate',\n }),\n content: <AutoCloneFailureModalBody prohibitedFields={prohibitedFields} />,\n footer: ({ onClose }) => {\n return (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <LinkButton\n tag={NavLink}\n to={{\n pathname: `clone/${documentId}`,\n search: stringify({\n plugins: query.plugins,\n }),\n }}\n >\n {formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.create',\n defaultMessage: 'Create',\n })}\n </LinkButton>\n </Modal.Footer>\n );\n },\n },\n };\n};\n\nCloneAction.type = 'clone';\nCloneAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledDuplicate = styled(Duplicate)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DEFAULT_TABLE_ROW_ACTIONS = [EditAction, CloneAction];\n\nexport { TableActions, DEFAULT_TABLE_ROW_ACTIONS };\n"],"names":["TableActions","document","formatMessage","useIntl","model","collectionType","useDoc","plugins","useStrapiApp","state","props","activeTab","documentId","_jsx","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","filter","action","name","actions","tableRowActions","positions","Array","isArray","position","includes","DocumentActionsMenu","label","id","defaultMessage","variant","EditAction","navigate","useNavigate","canRead","useDocumentRBAC","toggleNotification","useNotification","query","useQueryParams","disabled","icon","StyledPencil","onClick","console","error","message","type","pathname","search","stringify","styled","Pencil","CloneAction","canCreate","autoClone","useDocumentActions","prohibitedFields","setProhibitedFields","React","useState","StyledDuplicate","res","sourceId","locale","i18n","data","isBaseQueryError","details","dialog","title","content","AutoCloneFailureModalBody","footer","onClose","_jsxs","Modal","Footer","Button","LinkButton","tag","NavLink","to","Duplicate","DEFAULT_TABLE_ROW_ACTIONS"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Media.js","sources":["../../../../../../admin/src/pages/ListView/components/TableCells/Media.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Avatar, Flex, Tooltip, Typography, TypographyComponent } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { prefixFileUrlWithBackendUrl } from '../../../../utils/urls';\n\nimport type { Data } from '@strapi/types';\n\ninterface MediaFile {\n id?: Data.ID;\n alternativeText?: string;\n ext: string;\n formats: {\n thumbnail?: {\n url?: string;\n };\n };\n mime: string;\n name: string;\n url: string;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Media\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MediaSingleProps extends MediaFile {}\n\nconst getFileExtension = (ext: string) => (ext && ext[0] === '.' ? ext.substring(1) : ext);\n\nconst MediaSingle = ({ url, mime, alternativeText, name, ext, formats }: MediaSingleProps) => {\n const fileURL = prefixFileUrlWithBackendUrl(url)!;\n\n if (mime.includes('image')) {\n const thumbnail = formats?.thumbnail?.url;\n const mediaURL = prefixFileUrlWithBackendUrl(thumbnail) || fileURL;\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || name}\n fallback={alternativeText || name}\n preview\n />\n );\n }\n\n const fileExtension = getFileExtension(ext);\n const fileName = name.length > 100 ? `${name.substring(0, 100)}...` : name;\n\n return (\n <Tooltip description={fileName}>\n <FileWrapper>{fileExtension}</FileWrapper>\n </Tooltip>\n );\n};\n\nconst FileWrapper = ({ children }: { children: React.ReactNode }) => {\n return (\n <Flex\n tag=\"span\"\n position=\"relative\"\n borderRadius=\"50%\"\n width=\"26px\"\n height=\"26px\"\n borderColor=\"neutral200\"\n background=\"neutral150\"\n paddingLeft=\"1px\"\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <FileTypography variant=\"sigma\" textColor=\"neutral600\">\n {children}\n </FileTypography>\n </Flex>\n );\n};\n\nconst FileTypography = styled<TypographyComponent>(Typography)`\n font-size: 0.9rem;\n line-height: 0.9rem;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * MediaMultiple\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MediaMultipleProps {\n content: MediaFile[];\n}\n\nconst MediaMultiple = ({ content }: MediaMultipleProps) => {\n return (\n <Avatar.Group>\n {content.map((file, index) => {\n const key = `${file.id}${index}`;\n\n if (index === 3) {\n const remainingFiles = `+${content.length - 3}`;\n\n return <FileWrapper key={key}>{remainingFiles}</FileWrapper>;\n }\n\n if (index > 3) {\n return null;\n }\n\n return <MediaSingle key={key} {...file} />;\n })}\n </Avatar.Group>\n );\n};\n\nexport { MediaMultiple, MediaSingle };\nexport type { MediaMultipleProps, MediaSingleProps };\n"],"names":["getFileExtension","ext","substring","MediaSingle","url","mime","alternativeText","name","formats","fileURL","prefixFileUrlWithBackendUrl","includes","thumbnail","mediaURL","_jsx","Avatar","Item","src","alt","fallback","preview","fileExtension","fileName","length","Tooltip","description","FileWrapper","children","Flex","tag","position","borderRadius","width","height","borderColor","background","paddingLeft","justifyContent","alignItems","FileTypography","variant","textColor","styled","Typography","MediaMultiple","content","Group","map","file","index","key","id","remainingFiles"],"mappings":"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"}
1
+ {"version":3,"file":"Media.js","sources":["../../../../../../admin/src/pages/ListView/components/TableCells/Media.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Avatar, Flex, Tooltip, Typography, TypographyComponent } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { prefixFileUrlWithBackendUrl } from '../../../../utils/urls';\n\nimport type { Data } from '@strapi/types';\n\ninterface MediaFile {\n id?: Data.ID;\n alternativeText?: string;\n ext: string;\n formats: {\n thumbnail?: {\n url?: string;\n };\n };\n mime: string;\n name: string;\n url: string;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Media\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MediaSingleProps extends MediaFile {}\n\nconst getFileExtension = (ext: string) => (ext && ext[0] === '.' ? ext.substring(1) : ext);\n\nconst MediaSingle = ({ url, mime, alternativeText, name, ext, formats }: MediaSingleProps) => {\n const fileURL = prefixFileUrlWithBackendUrl(url)!;\n\n if (mime.includes('image')) {\n const thumbnail = formats?.thumbnail?.url;\n const mediaURL = prefixFileUrlWithBackendUrl(thumbnail) || fileURL;\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || name}\n fallback={alternativeText || name}\n preview\n />\n );\n }\n\n const fileExtension = getFileExtension(ext);\n const fileName = name.length > 100 ? `${name.substring(0, 100)}...` : name;\n\n return (\n <Tooltip description={fileName}>\n <FileWrapper>{fileExtension}</FileWrapper>\n </Tooltip>\n );\n};\n\nconst FileWrapper = ({ children }: { children: React.ReactNode }) => {\n return (\n <Flex\n tag=\"span\"\n position=\"relative\"\n borderRadius=\"50%\"\n width=\"26px\"\n height=\"26px\"\n borderColor=\"neutral200\"\n background=\"neutral150\"\n paddingLeft=\"1px\"\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <FileTypography variant=\"sigma\" textColor=\"neutral600\">\n {children}\n </FileTypography>\n </Flex>\n );\n};\n\nconst FileTypography = styled<TypographyComponent>(Typography)`\n font-size: 0.9rem;\n line-height: 0.9rem;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * MediaMultiple\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MediaMultipleProps {\n content: MediaFile[];\n}\n\nconst MediaMultiple = ({ content }: MediaMultipleProps) => {\n return (\n <Avatar.Group>\n {content.map((file, index) => {\n const key = `${file.id}${index}`;\n\n if (index === 3) {\n const remainingFiles = `+${content.length - 3}`;\n\n return <FileWrapper key={key}>{remainingFiles}</FileWrapper>;\n }\n\n if (index > 3) {\n return null;\n }\n\n return <MediaSingle key={key} {...file} />;\n })}\n </Avatar.Group>\n );\n};\n\nexport { MediaMultiple, MediaSingle };\nexport type { MediaMultipleProps, MediaSingleProps };\n"],"names":["getFileExtension","ext","substring","MediaSingle","url","mime","alternativeText","name","formats","fileURL","prefixFileUrlWithBackendUrl","includes","thumbnail","mediaURL","_jsx","Avatar","Item","src","alt","fallback","preview","fileExtension","fileName","length","Tooltip","description","FileWrapper","children","Flex","tag","position","borderRadius","width","height","borderColor","background","paddingLeft","justifyContent","alignItems","FileTypography","variant","textColor","styled","Typography","MediaMultiple","content","Group","map","file","index","key","id","remainingFiles"],"mappings":"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"}