@strapi/content-manager 5.42.1 → 5.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/admin/components/Widgets.js +1 -1
  2. package/dist/admin/components/Widgets.js.map +1 -1
  3. package/dist/admin/components/Widgets.mjs +1 -1
  4. package/dist/admin/components/Widgets.mjs.map +1 -1
  5. package/dist/admin/hooks/useDocument.js +3 -2
  6. package/dist/admin/hooks/useDocument.js.map +1 -1
  7. package/dist/admin/hooks/useDocument.mjs +3 -2
  8. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  9. package/dist/admin/hooks/useDocumentActions.js +5 -5
  10. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  11. package/dist/admin/hooks/useDocumentActions.mjs +6 -6
  12. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  13. package/dist/admin/hooks/useDocumentLayout.js +2 -2
  14. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  15. package/dist/admin/hooks/useDocumentLayout.mjs +2 -2
  16. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  17. package/dist/admin/hooks/usePersistentQueryParams.js +46 -22
  18. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
  19. package/dist/admin/hooks/usePersistentQueryParams.mjs +48 -24
  20. package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/EditViewPage.js +33 -6
  22. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  23. package/dist/admin/pages/EditView/EditViewPage.mjs +14 -6
  24. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/DocumentActions.js +30 -20
  26. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/DocumentActions.mjs +30 -20
  28. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +3 -1
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +3 -1
  32. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +19 -0
  34. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +19 -0
  36. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +1 -0
  38. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +1 -0
  40. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +4 -1
  42. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +4 -1
  44. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +36 -9
  46. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +36 -9
  48. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  49. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +22 -5
  50. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  51. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +26 -9
  52. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  53. package/dist/admin/pages/ListView/ListViewPage.js +23 -10
  54. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  55. package/dist/admin/pages/ListView/ListViewPage.mjs +23 -10
  56. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  57. package/dist/admin/pages/ListView/components/BulkActions/Actions.js +1 -1
  58. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  59. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +1 -1
  60. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  61. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +37 -25
  62. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  63. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +38 -26
  64. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  65. package/dist/admin/pages/ListView/components/TableCells/CellContent.js +3 -0
  66. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  67. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +3 -0
  68. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  69. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +3 -2
  70. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  71. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +3 -2
  72. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
  73. package/dist/admin/services/documents.js +32 -7
  74. package/dist/admin/services/documents.js.map +1 -1
  75. package/dist/admin/services/documents.mjs +32 -8
  76. package/dist/admin/services/documents.mjs.map +1 -1
  77. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  78. package/dist/admin/src/hooks/useDocument.d.ts +1 -1
  79. package/dist/admin/src/hooks/usePersistentQueryParams.d.ts +8 -1
  80. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +3 -1
  81. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +2 -0
  82. package/dist/admin/src/pages/ListConfiguration/ListConfigurationPage.d.ts +1 -1
  83. package/dist/admin/src/pages/ListView/components/TableCells/CellValue.d.ts +2 -1
  84. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  85. package/dist/admin/src/services/api.d.ts +1 -1
  86. package/dist/admin/src/services/components.d.ts +2 -2
  87. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  88. package/dist/admin/src/services/documents.d.ts +22 -17
  89. package/dist/admin/src/services/homepage.d.ts +1 -1
  90. package/dist/admin/src/services/init.d.ts +1 -1
  91. package/dist/admin/src/services/relations.d.ts +2 -2
  92. package/dist/admin/src/services/uid.d.ts +3 -3
  93. package/dist/admin/translations/cs.json.js +242 -8
  94. package/dist/admin/translations/cs.json.js.map +1 -1
  95. package/dist/admin/translations/cs.json.mjs +242 -9
  96. package/dist/admin/translations/cs.json.mjs.map +1 -1
  97. package/dist/admin/translations/nl.json.js +180 -11
  98. package/dist/admin/translations/nl.json.js.map +1 -1
  99. package/dist/admin/translations/nl.json.mjs +180 -11
  100. package/dist/admin/translations/nl.json.mjs.map +1 -1
  101. package/dist/server/controllers/collection-types.js +32 -1
  102. package/dist/server/controllers/collection-types.js.map +1 -1
  103. package/dist/server/controllers/collection-types.mjs +33 -2
  104. package/dist/server/controllers/collection-types.mjs.map +1 -1
  105. package/dist/server/routes/admin.js +21 -0
  106. package/dist/server/routes/admin.js.map +1 -1
  107. package/dist/server/routes/admin.mjs +21 -0
  108. package/dist/server/routes/admin.mjs.map +1 -1
  109. package/dist/server/src/controllers/collection-types.d.ts +1 -0
  110. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  111. package/dist/server/src/controllers/index.d.ts +1 -0
  112. package/dist/server/src/controllers/index.d.ts.map +1 -1
  113. package/dist/server/src/index.d.ts +1 -0
  114. package/dist/server/src/index.d.ts.map +1 -1
  115. package/dist/server/src/routes/admin.d.ts.map +1 -1
  116. package/package.json +6 -6
@@ -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, type IntlShape } 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\nexport const formatErrorMessages = (\n errors: FormErrors,\n parentKey: string,\n formatMessage: IntlShape['formatMessage']\n) => {\n if (!errors) return [];\n\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (!value) return;\n const isErrorMessageDescriptor =\n typeof value === 'object' && 'id' in value && 'defaultMessage' in value;\n if (isErrorMessageDescriptor || typeof value === 'string') {\n const id = isErrorMessageDescriptor ? value.id : value;\n const defaultMessage = isErrorMessageDescriptor\n ? (value.defaultMessage as string)\n : (value as string);\n messages.push(\n formatMessage(\n {\n id: `${id}.withField`,\n defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(value as unknown as FormErrors, currentKey, formatMessage)\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 label={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: 'documentId', label: 'documentId' },\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 =\n mainField != null && mainField !== 'id' && mainField !== 'documentId';\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.documentId}</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","isErrorMessageDescriptor","id","defaultMessage","push","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","label","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","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","documentId","DocumentStatus","maxWidth","includes","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, type IntlShape } 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 useGetDocumentsForValidationQuery,\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';\nimport { transformDocument } from '../../../EditView/utils/data';\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\nexport const formatErrorMessages = (\n errors: FormErrors,\n parentKey: string,\n formatMessage: IntlShape['formatMessage']\n) => {\n if (!errors) return [];\n\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (!value) return;\n const isErrorMessageDescriptor =\n typeof value === 'object' && 'id' in value && 'defaultMessage' in value;\n if (isErrorMessageDescriptor || typeof value === 'string') {\n const id = isErrorMessageDescriptor ? value.id : value;\n const defaultMessage = isErrorMessageDescriptor\n ? (value.defaultMessage as string)\n : (value as string);\n messages.push(\n formatMessage(\n {\n id: `${id}.withField`,\n defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(value as unknown as FormErrors, currentKey, formatMessage)\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 label={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: 'documentId', label: 'documentId' },\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 =\n mainField != null && mainField !== 'id' && mainField !== 'documentId';\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.documentId}</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 via findOne (same as edit view) so we get the exact same data structure.\n // The list API returns a different structure that causes false validation errors.\n const {\n data: documents = [],\n isLoading,\n isFetching,\n refetch,\n } = useGetDocumentsForValidationQuery(\n {\n model,\n documentIds,\n locale: query.plugins?.i18n?.locale,\n sort: query.sort,\n },\n { skip: documentIds.length === 0 }\n );\n\n // Transform and validate like the edit view - transformDocument prepares data\n // for validation (relations, temp keys, etc.)\n const { rows, validationErrors } = React.useMemo(() => {\n if (documents.length > 0 && schema) {\n const validate = createYupSchema(schema.attributes, components, { status: 'published' });\n const transform = transformDocument(schema, components);\n const validationErrors: Record<TableRow['documentId'], FormErrors> = {};\n // Re-order documents to match the list view selection order, and restore the\n // correct status (draft fetch returns 'draft' even for 'modified' documents)\n const documentsMap = new Map(documents.map((doc: Document) => [doc.documentId, doc]));\n const listViewStatusMap = new Map(\n listViewSelectedEntries.map(({ documentId, status }) => [documentId, status])\n );\n const orderedDocuments = documentIds\n .map((id) => {\n const doc = documentsMap.get(id);\n if (!doc) return undefined;\n return { ...doc, status: listViewStatusMap.get(id) ?? doc.status } as Document;\n })\n .filter((doc): doc is Document => doc !== undefined);\n const rows = orderedDocuments.map((entry: Document) => {\n const transformed = transform(entry);\n try {\n validate.validateSync(transformed, { abortEarly: false });\n return entry;\n } catch (e) {\n if (e instanceof ValidationError) {\n validationErrors[entry.documentId] = getYupValidationErrors(e);\n }\n return entry;\n }\n });\n return { rows, validationErrors };\n }\n return { rows: [], validationErrors: {} };\n }, [components, documents, documentIds, listViewSelectedEntries, 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","isErrorMessageDescriptor","id","defaultMessage","push","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","label","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","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","documentId","DocumentStatus","maxWidth","includes","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","documents","isLoading","isFetching","refetch","useGetDocumentsForValidationQuery","plugins","i18n","sort","skip","length","rows","validate","createYupSchema","attributes","transform","transformDocument","documentsMap","Map","doc","listViewStatusMap","orderedDocuments","get","undefined","entry","transformed","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","hasPublishPermission","useDocumentRBAC","canPublish","showPublishButton","selectRow","refetchList","contentManagerApi","util","invalidateTags","type","actionType","dialog","title","getTranslation","content","onClose","Root","defaultSelectedRows","headers"],"mappings":"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"}
@@ -12,11 +12,12 @@ import { useContentTypeSchema } from '../../../../hooks/useContentTypeSchema.mjs
12
12
  import { useDocumentActions } from '../../../../hooks/useDocumentActions.mjs';
13
13
  import { useDocLayout } from '../../../../hooks/useDocumentLayout.mjs';
14
14
  import { contentManagerApi } from '../../../../services/api.mjs';
15
- import { useGetAllDocumentsQuery, usePublishManyDocumentsMutation } from '../../../../services/documents.mjs';
15
+ import { useGetDocumentsForValidationQuery, usePublishManyDocumentsMutation } from '../../../../services/documents.mjs';
16
16
  import { buildValidParams } from '../../../../utils/api.mjs';
17
17
  import { getTranslation } from '../../../../utils/translations.mjs';
18
18
  import { createYupSchema } from '../../../../utils/validation.mjs';
19
19
  import { DocumentStatus } from '../../../EditView/components/DocumentStatus.mjs';
20
+ import { transformDocument } from '../../../EditView/utils/data.mjs';
20
21
  import { ConfirmDialogPublishAll } from './ConfirmBulkActionDialog.mjs';
21
22
 
22
23
  const TypographyMaxWidth = styled(Typography)`
@@ -346,38 +347,47 @@ const SelectedEntriesModalContent = ({ listViewSelectedEntries, toggleModal, set
346
347
  const params = React.useMemo(()=>buildValidParams(query), [
347
348
  query
348
349
  ]);
349
- // Fetch the documents based on the selected entries and update the modal table
350
- const { data, isLoading, isFetching, refetch } = useGetAllDocumentsQuery({
350
+ // Fetch via findOne (same as edit view) so we get the exact same data structure.
351
+ // The list API returns a different structure that causes false validation errors.
352
+ const { data: documents = [], isLoading, isFetching, refetch } = useGetDocumentsForValidationQuery({
351
353
  model,
352
- params: {
353
- page: '1',
354
- pageSize: documentIds.length.toString(),
355
- sort: query.sort,
356
- filters: {
357
- documentId: {
358
- $in: documentIds
359
- }
360
- },
361
- locale: query.plugins?.i18n?.locale
362
- }
354
+ documentIds,
355
+ locale: query.plugins?.i18n?.locale,
356
+ sort: query.sort
363
357
  }, {
364
- selectFromResult: ({ data, ...restRes })=>({
365
- data: data?.results ?? [],
366
- ...restRes
367
- })
358
+ skip: documentIds.length === 0
368
359
  });
369
- // Validate the entries based on the schema to show errors if any
360
+ // Transform and validate like the edit view - transformDocument prepares data
361
+ // for validation (relations, temp keys, etc.)
370
362
  const { rows, validationErrors } = React.useMemo(()=>{
371
- if (data.length > 0 && schema) {
372
- const validate = createYupSchema(schema.attributes, components, // Since this is the "Publish" action, the validation
373
- // schema must enforce the rules for published entities
374
- {
363
+ if (documents.length > 0 && schema) {
364
+ const validate = createYupSchema(schema.attributes, components, {
375
365
  status: 'published'
376
366
  });
367
+ const transform = transformDocument(schema, components);
377
368
  const validationErrors = {};
378
- const rows = data.map((entry)=>{
369
+ // Re-order documents to match the list view selection order, and restore the
370
+ // correct status (draft fetch returns 'draft' even for 'modified' documents)
371
+ const documentsMap = new Map(documents.map((doc)=>[
372
+ doc.documentId,
373
+ doc
374
+ ]));
375
+ const listViewStatusMap = new Map(listViewSelectedEntries.map(({ documentId, status })=>[
376
+ documentId,
377
+ status
378
+ ]));
379
+ const orderedDocuments = documentIds.map((id)=>{
380
+ const doc = documentsMap.get(id);
381
+ if (!doc) return undefined;
382
+ return {
383
+ ...doc,
384
+ status: listViewStatusMap.get(id) ?? doc.status
385
+ };
386
+ }).filter((doc)=>doc !== undefined);
387
+ const rows = orderedDocuments.map((entry)=>{
388
+ const transformed = transform(entry);
379
389
  try {
380
- validate.validateSync(entry, {
390
+ validate.validateSync(transformed, {
381
391
  abortEarly: false
382
392
  });
383
393
  return entry;
@@ -399,7 +409,9 @@ const SelectedEntriesModalContent = ({ listViewSelectedEntries, toggleModal, set
399
409
  };
400
410
  }, [
401
411
  components,
402
- data,
412
+ documents,
413
+ documentIds,
414
+ listViewSelectedEntries,
403
415
  schema
404
416
  ]);
405
417
  const [isDialogOpen, setIsDialogOpen] = React.useState(false);
@@ -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, type IntlShape } 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\nexport const formatErrorMessages = (\n errors: FormErrors,\n parentKey: string,\n formatMessage: IntlShape['formatMessage']\n) => {\n if (!errors) return [];\n\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (!value) return;\n const isErrorMessageDescriptor =\n typeof value === 'object' && 'id' in value && 'defaultMessage' in value;\n if (isErrorMessageDescriptor || typeof value === 'string') {\n const id = isErrorMessageDescriptor ? value.id : value;\n const defaultMessage = isErrorMessageDescriptor\n ? (value.defaultMessage as string)\n : (value as string);\n messages.push(\n formatMessage(\n {\n id: `${id}.withField`,\n defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(value as unknown as FormErrors, currentKey, formatMessage)\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 label={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: 'documentId', label: 'documentId' },\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 =\n mainField != null && mainField !== 'id' && mainField !== 'documentId';\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.documentId}</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","isErrorMessageDescriptor","id","defaultMessage","push","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","label","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","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","documentId","DocumentStatus","maxWidth","includes","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, type IntlShape } 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 useGetDocumentsForValidationQuery,\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';\nimport { transformDocument } from '../../../EditView/utils/data';\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\nexport const formatErrorMessages = (\n errors: FormErrors,\n parentKey: string,\n formatMessage: IntlShape['formatMessage']\n) => {\n if (!errors) return [];\n\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (!value) return;\n const isErrorMessageDescriptor =\n typeof value === 'object' && 'id' in value && 'defaultMessage' in value;\n if (isErrorMessageDescriptor || typeof value === 'string') {\n const id = isErrorMessageDescriptor ? value.id : value;\n const defaultMessage = isErrorMessageDescriptor\n ? (value.defaultMessage as string)\n : (value as string);\n messages.push(\n formatMessage(\n {\n id: `${id}.withField`,\n defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(value as unknown as FormErrors, currentKey, formatMessage)\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 label={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: 'documentId', label: 'documentId' },\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 =\n mainField != null && mainField !== 'id' && mainField !== 'documentId';\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.documentId}</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 via findOne (same as edit view) so we get the exact same data structure.\n // The list API returns a different structure that causes false validation errors.\n const {\n data: documents = [],\n isLoading,\n isFetching,\n refetch,\n } = useGetDocumentsForValidationQuery(\n {\n model,\n documentIds,\n locale: query.plugins?.i18n?.locale,\n sort: query.sort,\n },\n { skip: documentIds.length === 0 }\n );\n\n // Transform and validate like the edit view - transformDocument prepares data\n // for validation (relations, temp keys, etc.)\n const { rows, validationErrors } = React.useMemo(() => {\n if (documents.length > 0 && schema) {\n const validate = createYupSchema(schema.attributes, components, { status: 'published' });\n const transform = transformDocument(schema, components);\n const validationErrors: Record<TableRow['documentId'], FormErrors> = {};\n // Re-order documents to match the list view selection order, and restore the\n // correct status (draft fetch returns 'draft' even for 'modified' documents)\n const documentsMap = new Map(documents.map((doc: Document) => [doc.documentId, doc]));\n const listViewStatusMap = new Map(\n listViewSelectedEntries.map(({ documentId, status }) => [documentId, status])\n );\n const orderedDocuments = documentIds\n .map((id) => {\n const doc = documentsMap.get(id);\n if (!doc) return undefined;\n return { ...doc, status: listViewStatusMap.get(id) ?? doc.status } as Document;\n })\n .filter((doc): doc is Document => doc !== undefined);\n const rows = orderedDocuments.map((entry: Document) => {\n const transformed = transform(entry);\n try {\n validate.validateSync(transformed, { abortEarly: false });\n return entry;\n } catch (e) {\n if (e instanceof ValidationError) {\n validationErrors[entry.documentId] = getYupValidationErrors(e);\n }\n return entry;\n }\n });\n return { rows, validationErrors };\n }\n return { rows: [], validationErrors: {} };\n }, [components, documents, documentIds, listViewSelectedEntries, 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","isErrorMessageDescriptor","id","defaultMessage","push","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","label","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","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","documentId","DocumentStatus","maxWidth","includes","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","documents","isLoading","isFetching","refetch","useGetDocumentsForValidationQuery","plugins","i18n","sort","skip","length","rows","validate","createYupSchema","attributes","transform","transformDocument","documentsMap","Map","doc","listViewStatusMap","orderedDocuments","get","undefined","entry","transformed","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","hasPublishPermission","useDocumentRBAC","canPublish","showPublishButton","selectRow","refetchList","contentManagerApi","util","invalidateTags","type","actionType","dialog","title","getTranslation","content","onClose","Root","defaultSelectedRows","headers"],"mappings":"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"}
@@ -9,6 +9,7 @@ var Media = require('./Media.js');
9
9
  var Relations = require('./Relations.js');
10
10
 
11
11
  const CellContent = ({ content, mainField, attribute, rowId, name })=>{
12
+ const isIdColumn = name === 'id';
12
13
  if (!hasContent(content, mainField, attribute)) {
13
14
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
14
15
  textColor: "neutral800",
@@ -61,6 +62,7 @@ const CellContent = ({ content, mainField, attribute, rowId, name })=>{
61
62
  ellipsis: true,
62
63
  textColor: "neutral800",
63
64
  children: /*#__PURE__*/ jsxRuntime.jsx(CellValue.CellValue, {
65
+ isIdColumn: isIdColumn,
64
66
  type: attribute.type,
65
67
  value: content
66
68
  })
@@ -72,6 +74,7 @@ const CellContent = ({ content, mainField, attribute, rowId, name })=>{
72
74
  ellipsis: true,
73
75
  textColor: "neutral800",
74
76
  children: /*#__PURE__*/ jsxRuntime.jsx(CellValue.CellValue, {
77
+ isIdColumn: isIdColumn,
75
78
  type: attribute.type,
76
79
  value: content
77
80
  })
@@ -1 +1 @@
1
- {"version":3,"file":"CellContent.js","sources":["../../../../../../admin/src/pages/ListView/components/TableCells/CellContent.tsx"],"sourcesContent":["import { Tooltip, Typography } from '@strapi/design-system';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { CellValue } from './CellValue';\nimport { SingleComponent, RepeatableComponent } from './Components';\nimport { MediaSingle, MediaMultiple } from './Media';\nimport { RelationMultiple, RelationSingle } from './Relations';\n\nimport type { ListFieldLayout } from '../../../../hooks/useDocumentLayout';\nimport type { Schema, Data } from '@strapi/types';\n\ninterface CellContentProps extends Omit<ListFieldLayout, 'cellFormatter'> {\n content: Schema.Attribute.Value<Schema.Attribute.AnyAttribute>;\n rowId: Data.ID;\n}\n\nconst CellContent = ({ content, mainField, attribute, rowId, name }: CellContentProps) => {\n if (!hasContent(content, mainField, attribute)) {\n return (\n <Typography\n textColor=\"neutral800\"\n paddingLeft={attribute.type === ('relation' || 'component') ? '1.6rem' : 0}\n paddingRight={attribute.type === ('relation' || 'component') ? '1.6rem' : 0}\n >\n -\n </Typography>\n );\n }\n\n switch (attribute.type) {\n case 'media':\n if (!attribute.multiple) {\n return <MediaSingle {...content} />;\n }\n\n return <MediaMultiple content={content} />;\n\n case 'relation': {\n if (isSingleRelation(attribute.relation)) {\n return <RelationSingle mainField={mainField} content={content} />;\n }\n\n return <RelationMultiple rowId={rowId} mainField={mainField} content={content} name={name} />;\n }\n\n case 'component':\n if (attribute.repeatable) {\n return <RepeatableComponent mainField={mainField} content={content} />;\n }\n\n return <SingleComponent mainField={mainField} content={content} />;\n\n case 'string':\n return (\n <Tooltip label={content}>\n <Typography maxWidth=\"30rem\" ellipsis textColor=\"neutral800\">\n <CellValue type={attribute.type} value={content} />\n </Typography>\n </Tooltip>\n );\n\n default:\n return (\n <Typography maxWidth=\"30rem\" ellipsis textColor=\"neutral800\">\n <CellValue type={attribute.type} value={content} />\n </Typography>\n );\n }\n};\n\nconst hasContent = (\n content: CellContentProps['content'],\n mainField: CellContentProps['mainField'],\n attribute: CellContentProps['attribute']\n) => {\n if (attribute.type === 'component') {\n // Repeatable fields show the ID as fallback, in case the mainField\n // doesn't have any content\n if (attribute.repeatable || !mainField) {\n return content?.length > 0;\n }\n\n const value = content?.[mainField.name];\n\n // relations, media ... show the id as fallback\n if (mainField.name === 'id' && ![undefined, null].includes(value)) {\n return true;\n }\n\n return !isEmpty(value);\n }\n\n if (attribute.type === 'relation') {\n if (isSingleRelation(attribute.relation)) {\n return !isEmpty(content);\n }\n\n if (Array.isArray(content)) {\n return content.length > 0;\n }\n\n return content?.count > 0;\n }\n\n /*\n Biginteger fields need to be treated as strings, as `isNumber`\n doesn't deal with them.\n */\n if (['integer', 'decimal', 'float', 'number'].includes(attribute.type)) {\n return typeof content === 'number';\n }\n\n if (attribute.type === 'boolean') {\n return content !== null;\n }\n\n return !isEmpty(content);\n};\n\nconst isSingleRelation = (\n type: Extract<CellContentProps['attribute'], { type: 'relation' }>['relation']\n) => ['oneToOne', 'manyToOne', 'oneToOneMorph'].includes(type);\n\nexport { CellContent };\nexport type { CellContentProps };\n"],"names":["CellContent","content","mainField","attribute","rowId","name","hasContent","_jsx","Typography","textColor","paddingLeft","type","paddingRight","multiple","MediaSingle","MediaMultiple","isSingleRelation","relation","RelationSingle","RelationMultiple","repeatable","RepeatableComponent","SingleComponent","Tooltip","label","maxWidth","ellipsis","CellValue","value","length","undefined","includes","isEmpty","Array","isArray","count"],"mappings":"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"}
1
+ {"version":3,"file":"CellContent.js","sources":["../../../../../../admin/src/pages/ListView/components/TableCells/CellContent.tsx"],"sourcesContent":["import { Tooltip, Typography } from '@strapi/design-system';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { CellValue } from './CellValue';\nimport { SingleComponent, RepeatableComponent } from './Components';\nimport { MediaSingle, MediaMultiple } from './Media';\nimport { RelationMultiple, RelationSingle } from './Relations';\n\nimport type { ListFieldLayout } from '../../../../hooks/useDocumentLayout';\nimport type { Schema, Data } from '@strapi/types';\n\ninterface CellContentProps extends Omit<ListFieldLayout, 'cellFormatter'> {\n content: Schema.Attribute.Value<Schema.Attribute.AnyAttribute>;\n rowId: Data.ID;\n}\n\nconst CellContent = ({ content, mainField, attribute, rowId, name }: CellContentProps) => {\n const isIdColumn = name === 'id';\n\n if (!hasContent(content, mainField, attribute)) {\n return (\n <Typography\n textColor=\"neutral800\"\n paddingLeft={attribute.type === ('relation' || 'component') ? '1.6rem' : 0}\n paddingRight={attribute.type === ('relation' || 'component') ? '1.6rem' : 0}\n >\n -\n </Typography>\n );\n }\n\n switch (attribute.type) {\n case 'media':\n if (!attribute.multiple) {\n return <MediaSingle {...content} />;\n }\n\n return <MediaMultiple content={content} />;\n\n case 'relation': {\n if (isSingleRelation(attribute.relation)) {\n return <RelationSingle mainField={mainField} content={content} />;\n }\n\n return <RelationMultiple rowId={rowId} mainField={mainField} content={content} name={name} />;\n }\n\n case 'component':\n if (attribute.repeatable) {\n return <RepeatableComponent mainField={mainField} content={content} />;\n }\n\n return <SingleComponent mainField={mainField} content={content} />;\n\n case 'string':\n return (\n <Tooltip label={content}>\n <Typography maxWidth=\"30rem\" ellipsis textColor=\"neutral800\">\n <CellValue isIdColumn={isIdColumn} type={attribute.type} value={content} />\n </Typography>\n </Tooltip>\n );\n\n default:\n return (\n <Typography maxWidth=\"30rem\" ellipsis textColor=\"neutral800\">\n <CellValue isIdColumn={isIdColumn} type={attribute.type} value={content} />\n </Typography>\n );\n }\n};\n\nconst hasContent = (\n content: CellContentProps['content'],\n mainField: CellContentProps['mainField'],\n attribute: CellContentProps['attribute']\n) => {\n if (attribute.type === 'component') {\n // Repeatable fields show the ID as fallback, in case the mainField\n // doesn't have any content\n if (attribute.repeatable || !mainField) {\n return content?.length > 0;\n }\n\n const value = content?.[mainField.name];\n\n // relations, media ... show the id as fallback\n if (mainField.name === 'id' && ![undefined, null].includes(value)) {\n return true;\n }\n\n return !isEmpty(value);\n }\n\n if (attribute.type === 'relation') {\n if (isSingleRelation(attribute.relation)) {\n return !isEmpty(content);\n }\n\n if (Array.isArray(content)) {\n return content.length > 0;\n }\n\n return content?.count > 0;\n }\n\n /*\n Biginteger fields need to be treated as strings, as `isNumber`\n doesn't deal with them.\n */\n if (['integer', 'decimal', 'float', 'number'].includes(attribute.type)) {\n return typeof content === 'number';\n }\n\n if (attribute.type === 'boolean') {\n return content !== null;\n }\n\n return !isEmpty(content);\n};\n\nconst isSingleRelation = (\n type: Extract<CellContentProps['attribute'], { type: 'relation' }>['relation']\n) => ['oneToOne', 'manyToOne', 'oneToOneMorph'].includes(type);\n\nexport { CellContent };\nexport type { CellContentProps };\n"],"names":["CellContent","content","mainField","attribute","rowId","name","isIdColumn","hasContent","_jsx","Typography","textColor","paddingLeft","type","paddingRight","multiple","MediaSingle","MediaMultiple","isSingleRelation","relation","RelationSingle","RelationMultiple","repeatable","RepeatableComponent","SingleComponent","Tooltip","label","maxWidth","ellipsis","CellValue","value","length","undefined","includes","isEmpty","Array","isArray","count"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { MediaSingle, MediaMultiple } from './Media.mjs';
7
7
  import { RelationSingle, RelationMultiple } from './Relations.mjs';
8
8
 
9
9
  const CellContent = ({ content, mainField, attribute, rowId, name })=>{
10
+ const isIdColumn = name === 'id';
10
11
  if (!hasContent(content, mainField, attribute)) {
11
12
  return /*#__PURE__*/ jsx(Typography, {
12
13
  textColor: "neutral800",
@@ -59,6 +60,7 @@ const CellContent = ({ content, mainField, attribute, rowId, name })=>{
59
60
  ellipsis: true,
60
61
  textColor: "neutral800",
61
62
  children: /*#__PURE__*/ jsx(CellValue, {
63
+ isIdColumn: isIdColumn,
62
64
  type: attribute.type,
63
65
  value: content
64
66
  })
@@ -70,6 +72,7 @@ const CellContent = ({ content, mainField, attribute, rowId, name })=>{
70
72
  ellipsis: true,
71
73
  textColor: "neutral800",
72
74
  children: /*#__PURE__*/ jsx(CellValue, {
75
+ isIdColumn: isIdColumn,
73
76
  type: attribute.type,
74
77
  value: content
75
78
  })