{"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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"}