{"version":3,"file":"index.mjs","sources":["../../../../admin/src/routes/settings/index.tsx"],"sourcesContent":["/* eslint-disable check-file/no-index */\n/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useTracking, ConfirmDialog, useRBAC, Table } from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Flex, IconButton, TFooter, Typography, LinkButton, Dialog } from '@strapi/design-system';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Link, useNavigate } from 'react-router-dom';\n\nimport { LimitsModal } from '../../components/LimitsModal';\nimport { CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME } from '../../constants';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { ContentType, useGetContentTypesQuery } from '../../services/content-manager';\n\nimport * as Layout from './components/Layout';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\n\nexport const ReviewWorkflowsListView = () => {\n  const { formatMessage } = useIntl();\n  const navigate = useNavigate();\n  const { trackUsage } = useTracking();\n  const [workflowToDelete, setWorkflowToDelete] = React.useState<string | null>(null);\n  const [showLimitModal, setShowLimitModal] = React.useState<boolean>(false);\n  const { data, isLoading: isLoadingModels } = useGetContentTypesQuery();\n  const { meta, workflows, isLoading, delete: deleteAction } = useReviewWorkflows();\n  const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n  const permissions = useTypedSelector(\n    (state) => state.admin_app.permissions.settings?.['review-workflows']\n  );\n  const {\n    allowedActions: { canCreate, canRead, canUpdate, canDelete },\n  } = useRBAC(permissions);\n\n  const limits = getFeature('review-workflows');\n  const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] as string;\n\n  const handleDeleteWorkflow = (workflowId: string) => {\n    setWorkflowToDelete(workflowId);\n  };\n\n  const toggleConfirmDeleteDialog = () => {\n    setWorkflowToDelete(null);\n  };\n\n  const handleConfirmDeleteDialog = async () => {\n    if (!workflowToDelete) return;\n\n    await deleteAction(workflowToDelete);\n\n    setWorkflowToDelete(null);\n  };\n\n  const handleCreateClick: React.MouseEventHandler<HTMLAnchorElement> &\n    ((event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void) = (event) => {\n    event.preventDefault();\n    /**\n     * If the current license has a workflow limit:\n     * check if the total count of workflows exceeds that limit. If so,\n     * prevent the navigation and show the limits overlay.\n     *\n     * If the current license does not have a limit (e.g. offline license):\n     * allow the user to navigate to the create-view. In case they exceed the\n     * current hard-limit of 200 they will see an error thrown by the API.\n     */\n\n    if (numberOfWorkflows && meta && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n      event.preventDefault();\n      setShowLimitModal(true);\n    } else {\n      navigate('create');\n      trackUsage('willCreateWorkflow');\n    }\n  };\n\n  /**\n   * If the current license has a limit:\n   * check if the total count of workflows or stages exceeds that limit and display\n   * the limits modal on page load. It can be closed by the user, but the\n   * API will throw an error in case they try to create a new workflow or update the\n   * stages.\n   *\n   * If the current license does not have a limit (e.g. offline license):\n   * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n   * the API will throw an error.\n   *\n   */\n  React.useEffect(() => {\n    if (!isLoading && !isLicenseLoading) {\n      if (numberOfWorkflows && meta && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n        setShowLimitModal(true);\n      }\n    }\n  }, [isLicenseLoading, isLoading, meta, meta?.workflowCount, numberOfWorkflows]);\n\n  const headers = [\n    {\n      label: formatMessage({\n        id: 'Settings.review-workflows.list.page.list.column.name.title',\n        defaultMessage: 'Name',\n      }),\n      name: 'name',\n    },\n    {\n      label: formatMessage({\n        id: 'Settings.review-workflows.list.page.list.column.stages.title',\n        defaultMessage: 'Stages',\n      }),\n      name: 'stages',\n    },\n    {\n      label: formatMessage({\n        id: 'Settings.review-workflows.list.page.list.column.contentTypes.title',\n        defaultMessage: 'Content Types',\n      }),\n      name: 'content-types',\n    },\n  ];\n\n  if (isLoading || isLoadingModels) {\n    return <Page.Loading />;\n  }\n\n  const contentTypes = Object.values(data ?? {}).reduce<ContentType[]>((acc, curr) => {\n    acc.push(...curr);\n    return acc;\n  }, []);\n\n  return (\n    <>\n      <Layout.Header\n        primaryAction={\n          canCreate ? (\n            <LinkButton\n              startIcon={<Plus />}\n              size=\"S\"\n              tag={NavLink}\n              to=\"create\"\n              onClick={handleCreateClick}\n              fullWidth\n            >\n              {formatMessage({\n                id: 'Settings.review-workflows.list.page.create',\n                defaultMessage: 'Create new workflow',\n              })}\n            </LinkButton>\n          ) : null\n        }\n        subtitle={formatMessage({\n          id: 'Settings.review-workflows.list.page.subtitle',\n          defaultMessage: 'Manage your content review process',\n        })}\n        title={formatMessage({\n          id: 'Settings.review-workflows.list.page.title',\n          defaultMessage: 'Review Workflows',\n        })}\n      />\n\n      <Layout.Root>\n        <Table.Root\n          isLoading={isLoading}\n          rows={workflows}\n          footer={\n            canCreate ? (\n              <TFooter cursor=\"pointer\" icon={<Plus />} onClick={handleCreateClick}>\n                {formatMessage({\n                  id: 'Settings.review-workflows.list.page.create',\n                  defaultMessage: 'Create new workflow',\n                })}\n              </TFooter>\n            ) : null\n          }\n          headers={headers}\n        >\n          <Table.Content>\n            <Table.Head>\n              {headers.map((head) => (\n                <Table.HeaderCell key={head.name} {...head} />\n              ))}\n            </Table.Head>\n\n            <Table.Body>\n              {workflows.map((workflow) => (\n                <Table.Row\n                  onClick={() => {\n                    navigate(`${workflow.id}`);\n                  }}\n                  key={workflow.id}\n                >\n                  <Table.Cell width=\"25rem\">\n                    <Typography textColor=\"neutral800\" fontWeight=\"bold\" ellipsis>\n                      {workflow.name}\n                    </Typography>\n                  </Table.Cell>\n                  <Table.Cell>\n                    <Typography textColor=\"neutral800\">{workflow.stages.length}</Typography>\n                  </Table.Cell>\n                  <Table.Cell>\n                    <Typography textColor=\"neutral800\">\n                      {workflow.contentTypes\n                        .map((uid: string) => {\n                          const contentType = contentTypes.find(\n                            (contentType) => contentType.uid === uid\n                          );\n\n                          return contentType?.info.displayName ?? '';\n                        })\n                        .join(', ')}\n                    </Typography>\n                  </Table.Cell>\n                  <Table.Cell>\n                    <Flex alignItems=\"center\" justifyContent=\"end\">\n                      {canRead || canUpdate ? (\n                        <IconButton\n                          tag={Link}\n                          onClick={(e) => e.stopPropagation()}\n                          to={workflow.id.toString()}\n                          label={formatMessage(\n                            {\n                              id: 'Settings.review-workflows.list.page.list.column.actions.edit.label',\n                              defaultMessage: 'Edit {name}',\n                            },\n                            { name: workflow.name }\n                          )}\n                          variant=\"ghost\"\n                        >\n                          <Pencil />\n                        </IconButton>\n                      ) : null}\n                      {workflows.length > 1 && canDelete ? (\n                        <IconButton\n                          withTooltip={false}\n                          label={formatMessage(\n                            {\n                              id: 'Settings.review-workflows.list.page.list.column.actions.delete.label',\n                              defaultMessage: 'Delete {name}',\n                            },\n                            { name: 'Default workflow' }\n                          )}\n                          variant=\"ghost\"\n                          onClick={(e) => {\n                            e.stopPropagation();\n                            handleDeleteWorkflow(String(workflow.id));\n                          }}\n                        >\n                          <Trash />\n                        </IconButton>\n                      ) : null}\n                    </Flex>\n                  </Table.Cell>\n                </Table.Row>\n              ))}\n            </Table.Body>\n          </Table.Content>\n        </Table.Root>\n\n        <Dialog.Root open={!!workflowToDelete} onOpenChange={toggleConfirmDeleteDialog}>\n          <ConfirmDialog onConfirm={handleConfirmDeleteDialog}>\n            {formatMessage({\n              id: 'Settings.review-workflows.list.page.delete.confirm.body',\n              defaultMessage:\n                'If you remove this worfklow, all stage-related information will be removed for this content-type. Are you sure you want to remove it?',\n            })}\n          </ConfirmDialog>\n        </Dialog.Root>\n\n        <LimitsModal.Root open={showLimitModal} onOpenChange={() => setShowLimitModal(false)}>\n          <LimitsModal.Title>\n            {formatMessage({\n              id: 'Settings.review-workflows.list.page.workflows.limit.title',\n              defaultMessage: 'You’ve reached the limit of workflows in your plan',\n            })}\n          </LimitsModal.Title>\n\n          <LimitsModal.Body>\n            {formatMessage({\n              id: 'Settings.review-workflows.list.page.workflows.limit.body',\n              defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n            })}\n          </LimitsModal.Body>\n        </LimitsModal.Root>\n      </Layout.Root>\n    </>\n  );\n};\n\nconst ProtectedListPage = () => {\n  const permissions = useTypedSelector(\n    (state) => state.admin_app.permissions.settings?.['review-workflows']?.main\n  );\n\n  return (\n    <Page.Protect permissions={permissions}>\n      <ReviewWorkflowsListView />\n    </Page.Protect>\n  );\n};\n\nexport { ProtectedListPage };\n"],"names":["ReviewWorkflowsListView","formatMessage","useIntl","navigate","useNavigate","trackUsage","useTracking","workflowToDelete","setWorkflowToDelete","React","useState","showLimitModal","setShowLimitModal","data","isLoading","isLoadingModels","useGetContentTypesQuery","meta","workflows","delete","deleteAction","useReviewWorkflows","getFeature","isLicenseLoading","useLicenseLimits","permissions","useTypedSelector","state","admin_app","settings","allowedActions","canCreate","canRead","canUpdate","canDelete","useRBAC","limits","numberOfWorkflows","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","handleDeleteWorkflow","workflowId","toggleConfirmDeleteDialog","handleConfirmDeleteDialog","handleCreateClick","event","preventDefault","workflowCount","parseInt","useEffect","headers","label","id","defaultMessage","name","_jsx","Page","Loading","contentTypes","Object","values","reduce","acc","curr","push","_jsxs","_Fragment","Layout","primaryAction","LinkButton","startIcon","Plus","size","tag","NavLink","to","onClick","fullWidth","subtitle","title","Table","Root","rows","footer","TFooter","cursor","icon","Content","Head","map","head","HeaderCell","Body","workflow","Row","Cell","width","Typography","textColor","fontWeight","ellipsis","stages","length","uid","contentType","find","info","displayName","join","Flex","alignItems","justifyContent","IconButton","Link","e","stopPropagation","toString","variant","Pencil","withTooltip","String","Trash","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","LimitsModal","Title","ProtectedListPage","main","Protect"],"mappings":"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"}