{"version":3,"file":"PublishAction.mjs","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/PublishAction.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n  FormErrors,\n  getYupValidationErrors,\n  Table,\n  useQueryParams,\n  useTable,\n} from '@strapi/admin/strapi-admin';\nimport {\n  Box,\n  Button,\n  Flex,\n  IconButton,\n  Loader,\n  Modal,\n  Tooltip,\n  Typography,\n  TypographyComponent,\n  RawTable,\n  Tr,\n  Td,\n  Tbody,\n} from '@strapi/design-system';\nimport { ArrowsCounterClockwise, CheckCircle, CrossCircle, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { useDocumentRBAC } from '../../../../features/DocumentRBAC';\nimport { useContentTypeSchema } from '../../../../hooks/useContentTypeSchema';\nimport { useDocumentActions } from '../../../../hooks/useDocumentActions';\nimport { useDocLayout } from '../../../../hooks/useDocumentLayout';\nimport { contentManagerApi } from '../../../../services/api';\nimport {\n  useGetAllDocumentsQuery,\n  usePublishManyDocumentsMutation,\n} from '../../../../services/documents';\nimport { buildValidParams } from '../../../../utils/api';\nimport { getTranslation } from '../../../../utils/translations';\nimport { createYupSchema } from '../../../../utils/validation';\nimport { DocumentStatus } from '../../../EditView/components/DocumentStatus';\n\nimport { ConfirmDialogPublishAll, ConfirmDialogPublishAllProps } from './ConfirmBulkActionDialog';\n\nimport type { BulkActionComponent } from '../../../../content-manager';\nimport type { Document } from '../../../../hooks/useDocument';\n\nconst TypographyMaxWidth = styled<TypographyComponent>(Typography)`\n  max-width: 300px;\n`;\n\nconst TableComponent = styled(RawTable)`\n  width: 100%;\n  table-layout: fixed;\n  td:first-child {\n    border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n  }\n  td:first-of-type {\n    padding: ${({ theme }) => theme.spaces[4]};\n  }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatErrorMessages = (errors: FormErrors, parentKey: string, formatMessage: any) => {\n  const messages: string[] = [];\n\n  Object.entries(errors).forEach(([key, value]) => {\n    const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n    if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n      if ('id' in value && 'defaultMessage' in value) {\n        messages.push(\n          formatMessage(\n            {\n              id: `${value.id}.withField`,\n              defaultMessage: value.defaultMessage,\n            },\n            { field: currentKey }\n          )\n        );\n      } else {\n        messages.push(\n          ...formatErrorMessages(\n            // @ts-expect-error TODO: check why value is not compatible with FormErrors\n            value,\n            currentKey,\n            formatMessage\n          )\n        );\n      }\n    } else {\n      messages.push(\n        formatMessage(\n          {\n            id: `${value}.withField`,\n            defaultMessage: value,\n          },\n          { field: currentKey }\n        )\n      );\n    }\n  });\n\n  return messages;\n};\n\ninterface EntryValidationTextProps {\n  validationErrors?: FormErrors;\n  status: string;\n}\n\nconst EntryValidationText = ({ validationErrors, status }: EntryValidationTextProps) => {\n  const { formatMessage } = useIntl();\n\n  if (validationErrors) {\n    const validationErrorsMessages = formatErrorMessages(validationErrors, '', formatMessage).join(\n      ' '\n    );\n\n    return (\n      <Flex gap={2}>\n        <CrossCircle fill=\"danger600\" />\n        <Tooltip description={validationErrorsMessages}>\n          <TypographyMaxWidth textColor=\"danger600\" variant=\"omega\" fontWeight=\"bold\" ellipsis>\n            {validationErrorsMessages}\n          </TypographyMaxWidth>\n        </Tooltip>\n      </Flex>\n    );\n  }\n\n  if (status === 'published') {\n    return (\n      <Flex gap={2}>\n        <CheckCircle fill=\"success600\" />\n        <Typography textColor=\"success600\" fontWeight=\"bold\">\n          {formatMessage({\n            id: 'content-manager.bulk-publish.already-published',\n            defaultMessage: 'Already Published',\n          })}\n        </Typography>\n      </Flex>\n    );\n  }\n\n  if (status === 'modified') {\n    return (\n      <Flex gap={2}>\n        <ArrowsCounterClockwise fill=\"alternative600\" />\n        <Typography textColor=\"alternative600\" fontWeight=\"bold\">\n          {formatMessage({\n            id: 'content-manager.bulk-publish.modified',\n            defaultMessage: 'Ready to publish changes',\n          })}\n        </Typography>\n      </Flex>\n    );\n  }\n\n  return (\n    <Flex gap={2}>\n      <CheckCircle fill=\"success600\" />\n      <Typography textColor=\"success600\" fontWeight=\"bold\">\n        {formatMessage({\n          id: 'app.utils.ready-to-publish',\n          defaultMessage: 'Ready to publish',\n        })}\n      </Typography>\n    </Flex>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesTableContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SelectedEntriesTableContentProps {\n  isPublishing?: boolean;\n  rowsToDisplay?: TableRow[];\n  entriesToPublish?: TableRow['documentId'][];\n  validationErrors: Record<string, EntryValidationTextProps['validationErrors']>;\n}\n\nconst TABLE_HEADERS = [\n  { name: 'id', label: 'id' },\n  { name: 'name', label: 'name' },\n  { name: 'status', label: 'status' },\n  { name: 'publicationStatus', label: 'Publication status' },\n];\n\nconst SelectedEntriesTableContent = ({\n  isPublishing,\n  rowsToDisplay = [],\n  entriesToPublish = [],\n  validationErrors = {},\n}: SelectedEntriesTableContentProps) => {\n  const { pathname } = useLocation();\n  const { formatMessage } = useIntl();\n\n  const {\n    list: {\n      settings: { mainField },\n    },\n  } = useDocLayout();\n\n  const shouldDisplayMainField = mainField != null && mainField !== 'id';\n\n  return (\n    <Table.Content>\n      <Table.Head>\n        <Table.HeaderCheckboxCell />\n        {TABLE_HEADERS.filter((head) => head.name !== 'name' || shouldDisplayMainField).map(\n          (head) => (\n            <Table.HeaderCell key={head.name} {...head} />\n          )\n        )}\n      </Table.Head>\n      <Table.Loading />\n      <Table.Body>\n        {rowsToDisplay.map((row) => (\n          <Table.Row key={row.id}>\n            <Table.CheckboxCell id={row.id} />\n            <Table.Cell>\n              <Typography>{row.id}</Typography>\n            </Table.Cell>\n            {shouldDisplayMainField && (\n              <Table.Cell>\n                <Typography>{row[mainField as keyof TableRow]}</Typography>\n              </Table.Cell>\n            )}\n            <Table.Cell>\n              <DocumentStatus status={row.status} maxWidth={'min-content'} />\n            </Table.Cell>\n            <Table.Cell>\n              {isPublishing && entriesToPublish.includes(row.documentId) ? (\n                <Flex gap={2}>\n                  <Typography>\n                    {formatMessage({\n                      id: 'content-manager.success.record.publishing',\n                      defaultMessage: 'Publishing...',\n                    })}\n                  </Typography>\n                  <Loader small />\n                </Flex>\n              ) : (\n                <EntryValidationText\n                  validationErrors={validationErrors[row.documentId]}\n                  status={row.status}\n                />\n              )}\n            </Table.Cell>\n            <Table.Cell>\n              <Flex>\n                <IconButton\n                  tag={Link}\n                  to={{\n                    pathname: `${pathname}/${row.documentId}`,\n                    search: row.locale && `?plugins[i18n][locale]=${row.locale}`,\n                  }}\n                  state={{ from: pathname }}\n                  label={formatMessage({\n                    id: 'content-manager.bulk-publish.edit',\n                    defaultMessage: 'Edit',\n                  })}\n                  target=\"_blank\"\n                  marginLeft=\"auto\"\n                  variant=\"ghost\"\n                >\n                  <Pencil width={'1.6rem'} height={'1.6rem'} />\n                </IconButton>\n              </Flex>\n            </Table.Cell>\n          </Table.Row>\n        ))}\n      </Table.Body>\n    </Table.Content>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusSummary\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusSummaryProps {\n  count: number;\n  icon: React.ReactNode;\n  message: string;\n  textColor: string;\n}\n\nconst PublicationStatusSummary = ({\n  count,\n  icon,\n  message,\n  textColor,\n}: PublicationStatusSummaryProps) => {\n  return (\n    <Flex justifyContent=\"space-between\" flex={1} gap={3}>\n      <Flex gap={2}>\n        {icon}\n        <Typography textColor={textColor} fontWeight=\"bold\">\n          {message}\n        </Typography>\n      </Flex>\n      <Typography fontWeight=\"bold\">{count}</Typography>\n    </Flex>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusGrid\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusGridProps {\n  entriesReadyToPublishCount: number;\n  entriesModifiedCount: number;\n  entriesPublishedCount: number;\n  entriesWithErrorsCount: number;\n}\n\nconst PublicationStatusGrid = ({\n  entriesReadyToPublishCount,\n  entriesPublishedCount,\n  entriesModifiedCount,\n  entriesWithErrorsCount,\n}: PublicationStatusGridProps) => {\n  const { formatMessage } = useIntl();\n\n  return (\n    <Box hasRadius borderColor=\"neutral150\">\n      <TableComponent colCount={2} rowCount={2}>\n        <Tbody>\n          <Tr>\n            <Td>\n              <PublicationStatusSummary\n                textColor=\"success600\"\n                count={entriesReadyToPublishCount}\n                icon={<CheckCircle fill=\"success600\" />}\n                message={formatMessage({\n                  id: 'app.utils.ready-to-publish',\n                  defaultMessage: 'Ready to publish',\n                })}\n              />\n            </Td>\n            <Td>\n              <PublicationStatusSummary\n                textColor=\"success600\"\n                count={entriesPublishedCount}\n                icon={<CheckCircle fill=\"success600\" />}\n                message={formatMessage({\n                  id: 'app.utils.already-published',\n                  defaultMessage: 'Already published',\n                })}\n              />\n            </Td>\n          </Tr>\n          <Tr>\n            <Td>\n              <PublicationStatusSummary\n                textColor=\"alternative600\"\n                count={entriesModifiedCount}\n                icon={<ArrowsCounterClockwise fill=\"alternative600\" />}\n                message={formatMessage({\n                  id: 'content-manager.bulk-publish.modified',\n                  defaultMessage: 'Ready to publish changes',\n                })}\n              />\n            </Td>\n            <Td>\n              <PublicationStatusSummary\n                textColor=\"danger600\"\n                count={entriesWithErrorsCount}\n                icon={<CrossCircle fill=\"danger600\" />}\n                message={formatMessage({\n                  id: 'content-manager.bulk-publish.waiting-for-action',\n                  defaultMessage: 'Waiting for action',\n                })}\n              />\n            </Td>\n          </Tr>\n        </Tbody>\n      </TableComponent>\n    </Box>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesModalContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableRow extends Document {}\n\ninterface SelectedEntriesModalContentProps {\n  listViewSelectedEntries: TableRow[];\n  toggleModal: ConfirmDialogPublishAllProps['onToggleDialog'];\n  setListViewSelectedDocuments: (documents: TableRow[]) => void;\n  model: string;\n}\n\nconst SelectedEntriesModalContent = ({\n  listViewSelectedEntries,\n  toggleModal,\n  setListViewSelectedDocuments,\n  model,\n}: SelectedEntriesModalContentProps) => {\n  const { formatMessage } = useIntl();\n  const { schema, components } = useContentTypeSchema(model);\n  const documentIds = listViewSelectedEntries.map(({ documentId }) => documentId);\n\n  // We want to keep the selected entries order same as the list view\n  const [{ query }] = useQueryParams<{ sort?: string; plugins?: Record<string, any> }>();\n  const params = React.useMemo(() => buildValidParams(query), [query]);\n\n  // Fetch the documents based on the selected entries and update the modal table\n  const { data, isLoading, isFetching, refetch } = useGetAllDocumentsQuery(\n    {\n      model,\n      params: {\n        page: '1',\n        pageSize: documentIds.length.toString(),\n        sort: query.sort,\n        filters: {\n          documentId: {\n            $in: documentIds,\n          },\n        },\n        locale: query.plugins?.i18n?.locale,\n      },\n    },\n    {\n      selectFromResult: ({ data, ...restRes }) => ({ data: data?.results ?? [], ...restRes }),\n    }\n  );\n\n  // Validate the entries based on the schema to show errors if any\n  const { rows, validationErrors } = React.useMemo(() => {\n    if (data.length > 0 && schema) {\n      const validate = createYupSchema(\n        schema.attributes,\n        components,\n        // Since this is the \"Publish\" action, the validation\n        // schema must enforce the rules for published entities\n        { status: 'published' }\n      );\n      const validationErrors: Record<TableRow['documentId'], FormErrors> = {};\n      const rows = data.map((entry: Document) => {\n        try {\n          validate.validateSync(entry, { abortEarly: false });\n\n          return entry;\n        } catch (e) {\n          if (e instanceof ValidationError) {\n            validationErrors[entry.documentId] = getYupValidationErrors(e);\n          }\n\n          return entry;\n        }\n      });\n\n      return { rows, validationErrors };\n    }\n\n    return {\n      rows: [],\n      validationErrors: {},\n    };\n  }, [components, data, schema]);\n\n  const [isDialogOpen, setIsDialogOpen] = React.useState(false);\n\n  const { publishMany: bulkPublishAction, isLoading: isPublishing } = useDocumentActions();\n  const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();\n\n  const selectedRows = useTable('publishAction', (state) => state.selectedRows);\n\n  // Filter selected entries from the updated modal table rows\n  const selectedEntries = rows.filter((entry) =>\n    selectedRows.some((selectedEntry) => selectedEntry.documentId === entry.documentId)\n  );\n\n  const entriesToPublish = selectedEntries\n    .filter((entry) => !validationErrors[entry.documentId])\n    .map((entry) => entry.documentId);\n\n  const selectedEntriesWithErrorsCount = selectedEntries.filter(\n    ({ documentId }) => validationErrors[documentId]\n  ).length;\n  const selectedEntriesPublishedCount = selectedEntries.filter(\n    ({ status }) => status === 'published'\n  ).length;\n  const selectedEntriesModifiedCount = selectedEntries.filter(\n    ({ status, documentId }) => status === 'modified' && !validationErrors[documentId]\n  ).length;\n  const selectedEntriesWithNoErrorsCount =\n    selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;\n\n  const toggleDialog = () => setIsDialogOpen((prev) => !prev);\n\n  const handleConfirmBulkPublish = async () => {\n    toggleDialog();\n\n    const res = await bulkPublishAction({ model: model, documentIds: entriesToPublish, params });\n    if (!('error' in res)) {\n      const unpublishedEntries = rows.filter((row) => {\n        return !entriesToPublish.includes(row.documentId);\n      });\n      // Keep selection of the entries in list view that were not published\n      setListViewSelectedDocuments(unpublishedEntries);\n    }\n  };\n\n  return (\n    <>\n      <Modal.Body>\n        <PublicationStatusGrid\n          entriesReadyToPublishCount={\n            selectedEntriesWithNoErrorsCount - selectedEntriesModifiedCount\n          }\n          entriesPublishedCount={selectedEntriesPublishedCount}\n          entriesModifiedCount={selectedEntriesModifiedCount}\n          entriesWithErrorsCount={selectedEntriesWithErrorsCount}\n        />\n        <Box marginTop={7}>\n          <SelectedEntriesTableContent\n            isPublishing={isSubmittingForm}\n            rowsToDisplay={rows}\n            entriesToPublish={entriesToPublish}\n            validationErrors={validationErrors}\n          />\n        </Box>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button onClick={toggleModal} variant=\"tertiary\">\n          {formatMessage({\n            id: 'app.components.Button.cancel',\n            defaultMessage: 'Cancel',\n          })}\n        </Button>\n        <Flex gap={2}>\n          <Button onClick={refetch} variant=\"tertiary\" loading={isFetching}>\n            {formatMessage({ id: 'app.utils.refresh', defaultMessage: 'Refresh' })}\n          </Button>\n          <Button\n            onClick={toggleDialog}\n            disabled={\n              selectedEntries.length === 0 ||\n              selectedEntries.length === selectedEntriesWithErrorsCount ||\n              selectedEntriesPublishedCount === selectedEntries.length ||\n              isLoading\n            }\n            loading={isPublishing || isSubmittingForm}\n          >\n            {formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' })}\n          </Button>\n        </Flex>\n      </Modal.Footer>\n      <ConfirmDialogPublishAll\n        isOpen={isDialogOpen}\n        onToggleDialog={toggleDialog}\n        isConfirmButtonLoading={isPublishing || isSubmittingForm}\n        onConfirm={handleConfirmBulkPublish}\n      />\n    </>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublishAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: BulkActionComponent = ({ documents, model }) => {\n  const { formatMessage } = useIntl();\n  // Publish button visibility\n  const hasPublishPermission = useDocumentRBAC('unpublishAction', (state) => state.canPublish);\n  const showPublishButton =\n    hasPublishPermission && documents.some(({ status }) => status !== 'published');\n\n  const setListViewSelectedDocuments = useTable('publishAction', (state) => state.selectRow);\n\n  const refetchList = () => {\n    contentManagerApi.util.invalidateTags([{ type: 'Document', id: `${model}_LIST` }]);\n  };\n\n  if (!showPublishButton) return null;\n\n  return {\n    actionType: 'publish',\n    variant: 'tertiary',\n    label: formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' }),\n    dialog: {\n      type: 'modal',\n      title: formatMessage({\n        id: getTranslation('containers.ListPage.selectedEntriesModal.title'),\n        defaultMessage: 'Publish entries',\n      }),\n      content: ({ onClose }) => {\n        return (\n          <Table.Root rows={documents} defaultSelectedRows={documents} headers={TABLE_HEADERS}>\n            <SelectedEntriesModalContent\n              listViewSelectedEntries={documents}\n              toggleModal={() => {\n                onClose();\n                refetchList();\n              }}\n              setListViewSelectedDocuments={setListViewSelectedDocuments}\n              model={model}\n            />\n          </Table.Root>\n        );\n      },\n      onClose: () => {\n        refetchList();\n      },\n    },\n  };\n};\n\nexport { PublishAction, SelectedEntriesModalContent };\n"],"names":["TypographyMaxWidth","styled","Typography","TableComponent","RawTable","theme","colors","neutral150","spaces","formatErrorMessages","errors","parentKey","formatMessage","messages","Object","entries","forEach","key","value","currentKey","Array","isArray","push","id","defaultMessage","field","EntryValidationText","validationErrors","status","useIntl","validationErrorsMessages","join","_jsxs","Flex","gap","_jsx","CrossCircle","fill","Tooltip","description","textColor","variant","fontWeight","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","name","label","SelectedEntriesTableContent","isPublishing","rowsToDisplay","entriesToPublish","pathname","useLocation","list","settings","mainField","useDocLayout","shouldDisplayMainField","Table","Content","Head","HeaderCheckboxCell","filter","head","map","HeaderCell","Loading","Body","row","Row","CheckboxCell","Cell","DocumentStatus","maxWidth","includes","documentId","Loader","small","IconButton","tag","Link","to","search","locale","state","from","target","marginLeft","Pencil","width","height","PublicationStatusSummary","count","icon","message","justifyContent","flex","PublicationStatusGrid","entriesReadyToPublishCount","entriesPublishedCount","entriesModifiedCount","entriesWithErrorsCount","Box","hasRadius","borderColor","colCount","rowCount","Tbody","Tr","Td","SelectedEntriesModalContent","listViewSelectedEntries","toggleModal","setListViewSelectedDocuments","model","schema","components","useContentTypeSchema","documentIds","query","useQueryParams","params","React","useMemo","buildValidParams","data","isLoading","isFetching","refetch","useGetAllDocumentsQuery","page","pageSize","length","toString","sort","filters","$in","plugins","i18n","selectFromResult","restRes","results","rows","validate","createYupSchema","attributes","entry","validateSync","abortEarly","e","ValidationError","getYupValidationErrors","isDialogOpen","setIsDialogOpen","useState","publishMany","bulkPublishAction","useDocumentActions","isSubmittingForm","usePublishManyDocumentsMutation","selectedRows","useTable","selectedEntries","some","selectedEntry","selectedEntriesWithErrorsCount","selectedEntriesPublishedCount","selectedEntriesModifiedCount","selectedEntriesWithNoErrorsCount","toggleDialog","prev","handleConfirmBulkPublish","res","unpublishedEntries","_Fragment","Modal","marginTop","Footer","Button","onClick","loading","disabled","ConfirmDialogPublishAll","isOpen","onToggleDialog","isConfirmButtonLoading","onConfirm","PublishAction","documents","hasPublishPermission","useDocumentRBAC","canPublish","showPublishButton","selectRow","refetchList","contentManagerApi","util","invalidateTags","type","actionType","dialog","title","getTranslation","content","onClose","Root","defaultSelectedRows","headers"],"mappings":"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"}