@strapi/content-manager 5.41.1 → 5.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +21 -13
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +21 -13
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/hooks/useContentManagerInitData.js +35 -17
  6. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  7. package/dist/admin/hooks/useContentManagerInitData.mjs +36 -18
  8. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  9. package/dist/admin/hooks/useDocument.js +4 -1
  10. package/dist/admin/hooks/useDocument.js.map +1 -1
  11. package/dist/admin/hooks/useDocument.mjs +4 -1
  12. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  13. package/dist/admin/hooks/useDocumentLayout.js +17 -1
  14. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  15. package/dist/admin/hooks/useDocumentLayout.mjs +17 -1
  16. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +13 -1
  18. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +13 -1
  20. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +17 -4
  22. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +17 -4
  24. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/utils/data.js +1 -1
  26. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  27. package/dist/admin/pages/EditView/utils/data.mjs +1 -1
  28. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  29. package/dist/admin/pages/ListView/ListViewPage.js +8 -4
  30. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  31. package/dist/admin/pages/ListView/ListViewPage.mjs +8 -4
  32. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  33. package/dist/admin/src/hooks/useDocument.d.ts +5 -0
  34. package/dist/admin/src/hooks/useDocumentLayout.d.ts +19 -0
  35. package/dist/admin/translations/pl.json.js +184 -34
  36. package/dist/admin/translations/pl.json.js.map +1 -1
  37. package/dist/admin/translations/pl.json.mjs +184 -34
  38. package/dist/admin/translations/pl.json.mjs.map +1 -1
  39. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"ListViewPage.js","sources":["../../../../admin/src/pages/ListView/ListViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n SearchInput,\n Table,\n BackButton,\n useNotification,\n useStrapiApp,\n useTracking,\n useAPIErrorHandler,\n useQueryParams,\n useScopedPersistentState,\n useRBAC,\n Layouts,\n useTable,\n useIsMobile,\n useIsDesktop,\n useClipboard,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Typography,\n ButtonProps,\n Box,\n EmptyStateLayout,\n IconButton,\n} from '@strapi/design-system';\nimport { Duplicate, Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, Link as ReactRouterLink, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { HOOKS } from '../../constants/hooks';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n ListFieldLayout,\n convertListLayoutToFieldLayouts,\n useDocumentLayout,\n} from '../../hooks/useDocumentLayout';\nimport { usePersistentPartialQueryParams } from '../../hooks/usePersistentQueryParams';\nimport { usePrev } from '../../hooks/usePrev';\nimport { useGetAllDocumentsQuery } from '../../services/documents';\nimport { buildValidParams } from '../../utils/api';\nimport { getTranslation } from '../../utils/translations';\nimport { getDisplayName } from '../../utils/users';\nimport { DocumentStatus } from '../EditView/components/DocumentStatus';\n\nimport { BulkActionsRenderer } from './components/BulkActions/Actions';\nimport { listViewFilters as Filters } from './components/Filters';\nimport { TableActions } from './components/TableActions';\nimport { CellContent } from './components/TableCells/CellContent';\nimport { ViewSettingsMenu } from './components/ViewSettingsMenu';\n\nimport type { Modules } from '@strapi/types';\n\nconst { INJECT_COLUMN_IN_TABLE } = HOOKS;\n\n/* -------------------------------------------------------------------------------------------------\n * ListViewPage\n * -----------------------------------------------------------------------------------------------*/\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow-wrap: anywhere;\n`;\n\nconst ListViewPage = () => {\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const isMobile = useIsMobile();\n const isDesktop = useIsDesktop();\n\n const handleCopyDocumentId = React.useCallback(\n async (e: React.MouseEvent, documentId: string | undefined) => {\n e.stopPropagation();\n if (!documentId) return;\n const didCopy = await copy(documentId);\n if (didCopy) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.actions.copy-documentId.success',\n defaultMessage: 'Document ID copied to clipboard',\n }),\n });\n }\n },\n [copy, formatMessage, toggleNotification]\n );\n\n usePersistentPartialQueryParams('STRAPI_LIST_VIEW_SETTINGS:', ['sort', 'filters', 'pageSize']);\n usePersistentPartialQueryParams('STRAPI_LOCALE', ['plugins.i18n.locale'], false);\n\n const { collectionType, model, schema } = useDoc();\n const { list } = useDocumentLayout(model);\n\n const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState<string[] | null>(\n `STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`,\n null\n );\n\n const mapDisplayedHeaders = (headers: ListFieldLayout[]) => headers.map((header) => header.name);\n\n const displayedHeaders: ListFieldLayout[] = React.useMemo(() => {\n if (\n !displayedHeaderNames ||\n !list.metadatas ||\n Object.keys(list.metadatas).length <= 0 ||\n !schema?.attributes\n )\n return [];\n\n return convertListLayoutToFieldLayouts(displayedHeaderNames, schema.attributes, list.metadatas);\n }, [displayedHeaderNames, schema, list]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaderNames(headers);\n };\n\n const handleResetHeaders = () => {\n setDisplayedHeaderNames(mapDisplayedHeaders(list.layout));\n };\n\n /**\n * If the persistent displayedHeaders are not yet initialized, set them to list.layout\n */\n React.useEffect(() => {\n // wait for list.layout to be loaded\n if (list.layout.length === 0) {\n return;\n }\n\n if (!displayedHeaderNames) {\n handleResetHeaders();\n }\n }, [list.layout]);\n\n React.useEffect(() => {\n if (!schema?.attributes) return;\n if (!displayedHeaderNames || displayedHeaderNames.length === 0) return;\n if (schema.uid !== model) return;\n\n const allowedDisplayHeaders = displayedHeaderNames.filter((header) =>\n Object.keys(schema?.attributes).includes(header)\n );\n\n if (allowedDisplayHeaders.length !== displayedHeaderNames.length) {\n handleSetHeaders(allowedDisplayHeaders);\n }\n }, [displayedHeaderNames]);\n\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n page?: string;\n pageSize?: string;\n sort?: string;\n }>({\n page: '1',\n pageSize: list.settings.pageSize.toString(),\n sort: list.settings.defaultSortBy\n ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}`\n : '',\n });\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const hasAppliedFilters = Boolean((query as any)?.filters?.$and?.length);\n\n const { data, error, isLoading, isFetching } = useGetAllDocumentsQuery({\n model,\n params,\n });\n\n /**\n * If the API returns an error, display a notification\n */\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const { results = [], pagination } = data ?? {};\n\n React.useEffect(() => {\n if (pagination && pagination.pageCount > 0 && pagination.page > pagination.pageCount) {\n navigate(\n {\n search: stringify({\n ...query,\n page: pagination.pageCount,\n }),\n },\n { replace: true }\n );\n }\n }, [pagination, formatMessage, query, navigate]);\n\n const { canCreate } = useDocumentRBAC('ListViewPage', ({ canCreate }) => ({\n canCreate,\n }));\n\n const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall }) => runHookWaterfall);\n /**\n * Run the waterfall and then inject our additional table headers.\n */\n const tableHeaders = React.useMemo(() => {\n const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {\n displayedHeaders,\n layout: list,\n });\n\n const formattedHeaders = headers.displayedHeaders.map<ListFieldLayout>((header) => {\n /**\n * When the header label is a string, it is an attribute on the current content-type:\n * Use the attribute name value to compute the translation.\n * Otherwise, it should be a translation object coming from a plugin that injects into the table (ie i18n, content-releases, review-workflows):\n * Use the translation object as is.\n */\n const translation =\n typeof header.label === 'string'\n ? {\n id: `content-manager.content-types.${model}.${header.name}`,\n defaultMessage: header.label,\n }\n : header.label;\n\n return {\n ...header,\n label: formatMessage(translation),\n name: `${header.name}${header.mainField?.name ? `.${header.mainField.name}` : ''}`,\n };\n });\n\n if (schema?.options?.draftAndPublish) {\n formattedHeaders.push({\n attribute: {\n type: 'custom',\n },\n name: 'status',\n label: formatMessage({\n id: getTranslation(`containers.list.table-headers.status`),\n defaultMessage: 'status',\n }),\n searchable: false,\n sortable: false,\n } satisfies ListFieldLayout);\n }\n\n return formattedHeaders;\n }, [\n displayedHeaders,\n formatMessage,\n list,\n runHookWaterfall,\n schema?.options?.draftAndPublish,\n model,\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n const contentTypeTitle = schema?.info.displayName\n ? formatMessage({ id: schema.info.displayName, defaultMessage: schema.info.displayName })\n : formatMessage({\n id: 'content-manager.containers.untitled',\n defaultMessage: 'Untitled',\n });\n\n const handleRowClick = (id: Modules.Documents.ID) => () => {\n trackUsage('willEditEntryFromList');\n navigate({\n pathname: id.toString(),\n search: stringify({ plugins: query.plugins }),\n });\n };\n\n const isEmptyState = !isFetching && results.length === 0;\n\n const endActions = (\n <>\n {isMobile && list.settings.filterable && schema && <Filters.Trigger />}\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={handleResetHeaders}\n headers={displayedHeaderNames ?? []}\n />\n </>\n );\n\n const searchInput = (\n <>\n {list.settings.searchable && (\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: contentTypeTitle }\n )}\n placeholder={formatMessage({\n id: 'global.search',\n defaultMessage: 'Search',\n })}\n trackedEvent=\"didSearch\"\n />\n )}\n </>\n );\n\n const startActions = (\n <>\n {searchInput}\n {!isMobile && list.settings.filterable && schema && (\n <>\n <Filters.Trigger />\n <Filters.List />\n </>\n )}\n </>\n );\n\n const actions =\n list.settings.filterable && schema ? (\n <Filters.Root schema={schema}>\n <Layouts.Action\n endActions={endActions}\n startActions={startActions}\n bottomActions={isMobile && hasAppliedFilters ? <Filters.List /> : null}\n />\n <Filters.Popover />\n </Filters.Root>\n ) : (\n <Layouts.Action endActions={endActions} startActions={startActions} />\n );\n\n return (\n <>\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={\n canCreate ? (\n <tours.contentManager.CreateNewEntry>\n <CreateButton />\n </tours.contentManager.CreateNewEntry>\n ) : null\n }\n subtitle={formatMessage(\n {\n id: getTranslation('pages.ListView.header-subtitle'),\n defaultMessage:\n '{number, plural, =0 {# entries} one {# entry} other {# entries}} found',\n },\n { number: pagination?.total }\n )}\n title={contentTypeTitle}\n navigationAction={<BackButton />}\n />\n {actions}\n <Layouts.Content>\n {isEmptyState ? (\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <EmptyStateLayout\n action={\n canCreate && (\n <Box>\n <CreateButton variant=\"secondary\" />\n </Box>\n )\n }\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Box>\n ) : (\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Table.Root rows={results} headers={tableHeaders} isLoading={isFetching}>\n <TableActionsBar />\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {tableHeaders.map((header: ListFieldLayout) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Empty action={canCreate ? <CreateButton variant=\"secondary\" /> : null} />\n <Table.Body>\n {results.map((row) => {\n return (\n <Table.Row\n cursor=\"pointer\"\n key={row.id}\n onClick={handleRowClick(row.documentId)}\n >\n <Table.CheckboxCell id={row.id} />\n {tableHeaders.map(({ cellFormatter, ...header }) => {\n if (header.name === 'status') {\n const { status } = row;\n\n return (\n <Table.Cell key={header.name}>\n <DocumentStatus status={status} maxWidth={'min-content'} />\n </Table.Cell>\n );\n }\n if (['createdBy', 'updatedBy'].includes(header.name.split('.')[0])) {\n // Display the users full name\n // Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)\n // In this case, we display a dash\n return (\n <Table.Cell key={header.name}>\n <Typography textColor=\"neutral800\">\n {row[header.name.split('.')[0]]\n ? getDisplayName(row[header.name.split('.')[0]])\n : '-'}\n </Typography>\n </Table.Cell>\n );\n }\n if (header.name === 'documentId') {\n return (\n <Table.Cell key={header.name}>\n <Flex gap={2} alignItems=\"center\" width=\"100%\" minWidth={0}>\n <Typography textColor=\"neutral800\" maxWidth=\"30rem\" ellipsis>\n {row.documentId || '-'}\n </Typography>\n {row.documentId && (\n <IconButton\n variant=\"ghost\"\n size=\"S\"\n label={formatMessage({\n id: 'content-manager.actions.copy-documentId.label',\n defaultMessage: 'Copy',\n })}\n onClick={(e) => handleCopyDocumentId(e, row.documentId)}\n >\n <Duplicate />\n </IconButton>\n )}\n </Flex>\n </Table.Cell>\n );\n }\n if (typeof cellFormatter === 'function') {\n return (\n <Table.Cell key={header.name}>\n {/* @ts-expect-error – TODO: fix this TS error */}\n {cellFormatter(row, header, { collectionType, model })}\n </Table.Cell>\n );\n }\n return (\n <Table.Cell key={header.name}>\n <CellContent\n content={row[header.name.split('.')[0]]}\n rowId={row.documentId}\n {...header}\n />\n </Table.Cell>\n );\n })}\n {/* we stop propagation here to allow the menu to trigger it's events without triggering the row redirect */}\n <ActionsCell onClick={(e) => e.stopPropagation()}>\n <TableActions document={row} />\n </ActionsCell>\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root\n {...pagination}\n onPageSizeChange={() => trackUsage('willChangeNumberOfEntriesPerPage')}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Flex>\n )}\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ActionsCell = styled(Table.Cell)`\n display: flex;\n justify-content: flex-end;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionsBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst TableActionsBar = () => {\n const selectRow = useTable('TableActionsBar', (state) => state.selectRow);\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query?.plugins?.i18n?.locale;\n const prevLocale = usePrev(locale);\n\n // TODO: find a better way to reset the selected rows when the locale changes across all the app\n React.useEffect(() => {\n if (prevLocale !== locale) {\n selectRow([]);\n }\n }, [selectRow, prevLocale, locale]);\n\n return (\n <Table.ActionBar>\n <BulkActionsRenderer />\n </Table.ActionBar>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateButtonProps extends Pick<ButtonProps, 'variant'> {}\n\nconst CreateButton = ({ variant }: CreateButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }] = useQueryParams<{ plugins: object }>();\n\n return (\n <Button\n variant={variant}\n tag={ReactRouterLink}\n onClick={() => {\n trackUsage('willCreateEntry', { status: 'draft' });\n }}\n startIcon={<Plus />}\n style={{ textDecoration: 'none' }}\n to={{\n pathname: 'create',\n search: stringify({ plugins: query.plugins }),\n }}\n minWidth=\"max-content\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('HeaderLayout.button.label-add-entry'),\n defaultMessage: 'Create new entry',\n })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <ListViewPage key={slug} />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { ListViewPage, ProtectedListViewPage };\n"],"names":["INJECT_COLUMN_IN_TABLE","HOOKS","LayoutsHeaderCustom","styled","Layouts","Header","ListViewPage","trackUsage","useTracking","navigate","useNavigate","formatMessage","useIntl","toggleNotification","useNotification","copy","useClipboard","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","isMobile","useIsMobile","useIsDesktop","handleCopyDocumentId","React","useCallback","e","documentId","stopPropagation","didCopy","type","message","id","defaultMessage","usePersistentPartialQueryParams","collectionType","model","schema","useDoc","list","useDocumentLayout","displayedHeaderNames","setDisplayedHeaderNames","useScopedPersistentState","mapDisplayedHeaders","headers","map","header","name","displayedHeaders","useMemo","metadatas","Object","keys","length","attributes","convertListLayoutToFieldLayouts","handleSetHeaders","handleResetHeaders","layout","useEffect","uid","allowedDisplayHeaders","filter","includes","query","useQueryParams","page","pageSize","settings","toString","sort","defaultSortBy","defaultSortOrder","params","buildValidParams","hasAppliedFilters","Boolean","filters","$and","data","error","isLoading","isFetching","useGetAllDocumentsQuery","results","pagination","pageCount","search","stringify","replace","canCreate","useDocumentRBAC","runHookWaterfall","useStrapiApp","tableHeaders","formattedHeaders","translation","label","mainField","options","draftAndPublish","push","attribute","searchable","sortable","_jsx","Page","Loading","Error","contentTypeTitle","info","displayName","handleRowClick","pathname","plugins","isEmptyState","endActions","_jsxs","_Fragment","filterable","Filters","Trigger","InjectionZone","area","ViewSettingsMenu","setHeaders","resetHeaders","searchInput","SearchInput","target","placeholder","trackedEvent","startActions","List","actions","Root","Action","bottomActions","Popover","tours","contentManager","Introduction","Box","Main","Title","primaryAction","CreateNewEntry","CreateButton","subtitle","number","total","title","navigationAction","BackButton","Content","background","shadow","hasRadius","EmptyStateLayout","action","variant","content","icon","EmptyDocuments","width","Flex","gap","direction","alignItems","Table","rows","TableActionsBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Body","row","Row","cursor","onClick","CheckboxCell","cellFormatter","status","Cell","DocumentStatus","maxWidth","split","Typography","textColor","getDisplayName","minWidth","ellipsis","IconButton","size","Duplicate","CellContent","rowId","ActionsCell","TableActions","document","Pagination","onPageSizeChange","PageSize","Links","selectRow","useTable","state","locale","i18n","prevLocale","usePrev","ActionBar","BulkActionsRenderer","Button","tag","ReactRouterLink","startIcon","Plus","style","textDecoration","to","fullWidth","ProtectedListViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","subject","Protect","DocumentRBAC"],"mappings":"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"}
1
+ {"version":3,"file":"ListViewPage.js","sources":["../../../../admin/src/pages/ListView/ListViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n SearchInput,\n Table,\n BackButton,\n useNotification,\n useStrapiApp,\n useTracking,\n useAPIErrorHandler,\n useQueryParams,\n useScopedPersistentState,\n useRBAC,\n Layouts,\n useTable,\n useIsMobile,\n useIsDesktop,\n useClipboard,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Typography,\n ButtonProps,\n Box,\n EmptyStateLayout,\n IconButton,\n} from '@strapi/design-system';\nimport { Duplicate, Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, Link as ReactRouterLink, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { HOOKS } from '../../constants/hooks';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n ListFieldLayout,\n convertListLayoutToFieldLayouts,\n useDocumentLayout,\n} from '../../hooks/useDocumentLayout';\nimport { usePersistentPartialQueryParams } from '../../hooks/usePersistentQueryParams';\nimport { usePrev } from '../../hooks/usePrev';\nimport { useGetAllDocumentsQuery } from '../../services/documents';\nimport { buildValidParams } from '../../utils/api';\nimport { getTranslation } from '../../utils/translations';\nimport { getDisplayName } from '../../utils/users';\nimport { DocumentStatus } from '../EditView/components/DocumentStatus';\n\nimport { BulkActionsRenderer } from './components/BulkActions/Actions';\nimport { listViewFilters as Filters } from './components/Filters';\nimport { TableActions } from './components/TableActions';\nimport { CellContent } from './components/TableCells/CellContent';\nimport { ViewSettingsMenu } from './components/ViewSettingsMenu';\n\nimport type { Modules } from '@strapi/types';\n\nconst { INJECT_COLUMN_IN_TABLE } = HOOKS;\n\n/* -------------------------------------------------------------------------------------------------\n * ListViewPage\n * -----------------------------------------------------------------------------------------------*/\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow-wrap: anywhere;\n`;\n\nconst ListViewPage = () => {\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const isMobile = useIsMobile();\n const isDesktop = useIsDesktop();\n\n const handleCopyDocumentId = React.useCallback(\n async (e: React.MouseEvent, documentId: string | undefined) => {\n e.stopPropagation();\n if (!documentId) return;\n const didCopy = await copy(documentId);\n if (didCopy) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.actions.copy-documentId.success',\n defaultMessage: 'Document ID copied to clipboard',\n }),\n });\n }\n },\n [copy, formatMessage, toggleNotification]\n );\n\n usePersistentPartialQueryParams('STRAPI_LIST_VIEW_SETTINGS:', ['sort', 'filters', 'pageSize']);\n usePersistentPartialQueryParams('STRAPI_LOCALE', ['plugins.i18n.locale'], false);\n\n const { collectionType, model, schema } = useDoc();\n const { list, listViewConversionContext } = useDocumentLayout(model);\n\n const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState<string[] | null>(\n `STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`,\n null\n );\n\n const mapDisplayedHeaders = (headers: ListFieldLayout[]) => headers.map((header) => header.name);\n\n const displayedHeaders: ListFieldLayout[] = React.useMemo(() => {\n if (\n !displayedHeaderNames ||\n !list.metadatas ||\n Object.keys(list.metadatas).length <= 0 ||\n !schema?.attributes ||\n !listViewConversionContext\n )\n return [];\n\n return convertListLayoutToFieldLayouts(\n displayedHeaderNames,\n schema.attributes,\n list.metadatas,\n {\n configurations: listViewConversionContext.componentConfigurations,\n schemas: listViewConversionContext.componentSchemas,\n },\n listViewConversionContext.contentTypeSchemas\n );\n }, [displayedHeaderNames, schema, list, listViewConversionContext]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaderNames(headers);\n };\n\n const handleResetHeaders = () => {\n setDisplayedHeaderNames(mapDisplayedHeaders(list.layout));\n };\n\n /**\n * If the persistent displayedHeaders are not yet initialized, set them to list.layout\n */\n React.useEffect(() => {\n // wait for list.layout to be loaded\n if (list.layout.length === 0) {\n return;\n }\n\n if (!displayedHeaderNames) {\n handleResetHeaders();\n }\n }, [list.layout]);\n\n React.useEffect(() => {\n if (!schema?.attributes) return;\n if (!displayedHeaderNames || displayedHeaderNames.length === 0) return;\n if (schema.uid !== model) return;\n\n const allowedDisplayHeaders = displayedHeaderNames.filter((header) =>\n Object.keys(schema?.attributes).includes(header)\n );\n\n if (allowedDisplayHeaders.length !== displayedHeaderNames.length) {\n handleSetHeaders(allowedDisplayHeaders);\n }\n }, [displayedHeaderNames]);\n\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n page?: string;\n pageSize?: string;\n sort?: string;\n }>({\n page: '1',\n pageSize: list.settings.pageSize.toString(),\n sort: list.settings.defaultSortBy\n ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}`\n : '',\n });\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const hasAppliedFilters = Boolean((query as any)?.filters?.$and?.length);\n\n const { data, error, isLoading, isFetching } = useGetAllDocumentsQuery({\n model,\n params,\n });\n\n /**\n * If the API returns an error, display a notification\n */\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const { results = [], pagination } = data ?? {};\n\n React.useEffect(() => {\n if (pagination && pagination.pageCount > 0 && pagination.page > pagination.pageCount) {\n navigate(\n {\n search: stringify({\n ...query,\n page: pagination.pageCount,\n }),\n },\n { replace: true }\n );\n }\n }, [pagination, formatMessage, query, navigate]);\n\n const { canCreate } = useDocumentRBAC('ListViewPage', ({ canCreate }) => ({\n canCreate,\n }));\n\n const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall }) => runHookWaterfall);\n /**\n * Run the waterfall and then inject our additional table headers.\n */\n const tableHeaders = React.useMemo(() => {\n const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {\n displayedHeaders,\n layout: list,\n });\n\n const formattedHeaders = headers.displayedHeaders.map<ListFieldLayout>((header) => {\n /**\n * When the header label is a string, it is an attribute on the current content-type:\n * Use the attribute name value to compute the translation.\n * Otherwise, it should be a translation object coming from a plugin that injects into the table (ie i18n, content-releases, review-workflows):\n * Use the translation object as is.\n */\n const translation =\n typeof header.label === 'string'\n ? {\n id: `content-manager.content-types.${model}.${header.name}`,\n defaultMessage: header.label,\n }\n : header.label;\n\n return {\n ...header,\n label: formatMessage(translation),\n name: `${header.name}${header.mainField?.name ? `.${header.mainField.name}` : ''}`,\n };\n });\n\n if (schema?.options?.draftAndPublish) {\n formattedHeaders.push({\n attribute: {\n type: 'custom',\n },\n name: 'status',\n label: formatMessage({\n id: getTranslation(`containers.list.table-headers.status`),\n defaultMessage: 'status',\n }),\n searchable: false,\n sortable: false,\n } satisfies ListFieldLayout);\n }\n\n return formattedHeaders;\n }, [\n displayedHeaders,\n formatMessage,\n list,\n runHookWaterfall,\n schema?.options?.draftAndPublish,\n model,\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n const contentTypeTitle = schema?.info.displayName\n ? formatMessage({ id: schema.info.displayName, defaultMessage: schema.info.displayName })\n : formatMessage({\n id: 'content-manager.containers.untitled',\n defaultMessage: 'Untitled',\n });\n\n const handleRowClick = (id: Modules.Documents.ID) => () => {\n trackUsage('willEditEntryFromList');\n navigate({\n pathname: id.toString(),\n search: stringify({ plugins: query.plugins }),\n });\n };\n\n const isEmptyState = !isFetching && results.length === 0;\n\n const endActions = (\n <>\n {isMobile && list.settings.filterable && schema && <Filters.Trigger />}\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={handleResetHeaders}\n headers={displayedHeaderNames ?? []}\n />\n </>\n );\n\n const searchInput = (\n <>\n {list.settings.searchable && (\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: contentTypeTitle }\n )}\n placeholder={formatMessage({\n id: 'global.search',\n defaultMessage: 'Search',\n })}\n trackedEvent=\"didSearch\"\n />\n )}\n </>\n );\n\n const startActions = (\n <>\n {searchInput}\n {!isMobile && list.settings.filterable && schema && (\n <>\n <Filters.Trigger />\n <Filters.List />\n </>\n )}\n </>\n );\n\n const actions =\n list.settings.filterable && schema ? (\n <Filters.Root schema={schema}>\n <Layouts.Action\n endActions={endActions}\n startActions={startActions}\n bottomActions={isMobile && hasAppliedFilters ? <Filters.List /> : null}\n />\n <Filters.Popover />\n </Filters.Root>\n ) : (\n <Layouts.Action endActions={endActions} startActions={startActions} />\n );\n\n return (\n <>\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={\n canCreate ? (\n <tours.contentManager.CreateNewEntry>\n <CreateButton />\n </tours.contentManager.CreateNewEntry>\n ) : null\n }\n subtitle={formatMessage(\n {\n id: getTranslation('pages.ListView.header-subtitle'),\n defaultMessage:\n '{number, plural, =0 {# entries} one {# entry} other {# entries}} found',\n },\n { number: pagination?.total }\n )}\n title={contentTypeTitle}\n navigationAction={<BackButton />}\n />\n {actions}\n <Layouts.Content>\n {isEmptyState ? (\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <EmptyStateLayout\n action={\n canCreate && (\n <Box>\n <CreateButton variant=\"secondary\" />\n </Box>\n )\n }\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Box>\n ) : (\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Table.Root rows={results} headers={tableHeaders} isLoading={isFetching}>\n <TableActionsBar />\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {tableHeaders.map((header: ListFieldLayout) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Empty action={canCreate ? <CreateButton variant=\"secondary\" /> : null} />\n <Table.Body>\n {results.map((row) => {\n return (\n <Table.Row\n cursor=\"pointer\"\n key={row.id}\n onClick={handleRowClick(row.documentId)}\n >\n <Table.CheckboxCell id={row.id} />\n {tableHeaders.map(({ cellFormatter, ...header }) => {\n if (header.name === 'status') {\n const { status } = row;\n\n return (\n <Table.Cell key={header.name}>\n <DocumentStatus status={status} maxWidth={'min-content'} />\n </Table.Cell>\n );\n }\n if (['createdBy', 'updatedBy'].includes(header.name.split('.')[0])) {\n // Display the users full name\n // Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)\n // In this case, we display a dash\n return (\n <Table.Cell key={header.name}>\n <Typography textColor=\"neutral800\">\n {row[header.name.split('.')[0]]\n ? getDisplayName(row[header.name.split('.')[0]])\n : '-'}\n </Typography>\n </Table.Cell>\n );\n }\n if (header.name === 'documentId') {\n return (\n <Table.Cell key={header.name}>\n <Flex gap={2} alignItems=\"center\" width=\"100%\" minWidth={0}>\n <Typography textColor=\"neutral800\" maxWidth=\"30rem\" ellipsis>\n {row.documentId || '-'}\n </Typography>\n {row.documentId && (\n <IconButton\n variant=\"ghost\"\n size=\"S\"\n label={formatMessage({\n id: 'content-manager.actions.copy-documentId.label',\n defaultMessage: 'Copy',\n })}\n onClick={(e) => handleCopyDocumentId(e, row.documentId)}\n >\n <Duplicate />\n </IconButton>\n )}\n </Flex>\n </Table.Cell>\n );\n }\n if (typeof cellFormatter === 'function') {\n return (\n <Table.Cell key={header.name}>\n {/* @ts-expect-error – TODO: fix this TS error */}\n {cellFormatter(row, header, { collectionType, model })}\n </Table.Cell>\n );\n }\n return (\n <Table.Cell key={header.name}>\n <CellContent\n content={row[header.name.split('.')[0]]}\n rowId={row.documentId}\n {...header}\n />\n </Table.Cell>\n );\n })}\n {/* we stop propagation here to allow the menu to trigger it's events without triggering the row redirect */}\n <ActionsCell onClick={(e) => e.stopPropagation()}>\n <TableActions document={row} />\n </ActionsCell>\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root\n {...pagination}\n onPageSizeChange={() => trackUsage('willChangeNumberOfEntriesPerPage')}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Flex>\n )}\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ActionsCell = styled(Table.Cell)`\n display: flex;\n justify-content: flex-end;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionsBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst TableActionsBar = () => {\n const selectRow = useTable('TableActionsBar', (state) => state.selectRow);\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query?.plugins?.i18n?.locale;\n const prevLocale = usePrev(locale);\n\n // TODO: find a better way to reset the selected rows when the locale changes across all the app\n React.useEffect(() => {\n if (prevLocale !== locale) {\n selectRow([]);\n }\n }, [selectRow, prevLocale, locale]);\n\n return (\n <Table.ActionBar>\n <BulkActionsRenderer />\n </Table.ActionBar>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateButtonProps extends Pick<ButtonProps, 'variant'> {}\n\nconst CreateButton = ({ variant }: CreateButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }] = useQueryParams<{ plugins: object }>();\n\n return (\n <Button\n variant={variant}\n tag={ReactRouterLink}\n onClick={() => {\n trackUsage('willCreateEntry', { status: 'draft' });\n }}\n startIcon={<Plus />}\n style={{ textDecoration: 'none' }}\n to={{\n pathname: 'create',\n search: stringify({ plugins: query.plugins }),\n }}\n minWidth=\"max-content\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('HeaderLayout.button.label-add-entry'),\n defaultMessage: 'Create new entry',\n })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <ListViewPage key={slug} />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { ListViewPage, ProtectedListViewPage };\n"],"names":["INJECT_COLUMN_IN_TABLE","HOOKS","LayoutsHeaderCustom","styled","Layouts","Header","ListViewPage","trackUsage","useTracking","navigate","useNavigate","formatMessage","useIntl","toggleNotification","useNotification","copy","useClipboard","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","isMobile","useIsMobile","useIsDesktop","handleCopyDocumentId","React","useCallback","e","documentId","stopPropagation","didCopy","type","message","id","defaultMessage","usePersistentPartialQueryParams","collectionType","model","schema","useDoc","list","listViewConversionContext","useDocumentLayout","displayedHeaderNames","setDisplayedHeaderNames","useScopedPersistentState","mapDisplayedHeaders","headers","map","header","name","displayedHeaders","useMemo","metadatas","Object","keys","length","attributes","convertListLayoutToFieldLayouts","configurations","componentConfigurations","schemas","componentSchemas","contentTypeSchemas","handleSetHeaders","handleResetHeaders","layout","useEffect","uid","allowedDisplayHeaders","filter","includes","query","useQueryParams","page","pageSize","settings","toString","sort","defaultSortBy","defaultSortOrder","params","buildValidParams","hasAppliedFilters","Boolean","filters","$and","data","error","isLoading","isFetching","useGetAllDocumentsQuery","results","pagination","pageCount","search","stringify","replace","canCreate","useDocumentRBAC","runHookWaterfall","useStrapiApp","tableHeaders","formattedHeaders","translation","label","mainField","options","draftAndPublish","push","attribute","searchable","sortable","_jsx","Page","Loading","Error","contentTypeTitle","info","displayName","handleRowClick","pathname","plugins","isEmptyState","endActions","_jsxs","_Fragment","filterable","Filters","Trigger","InjectionZone","area","ViewSettingsMenu","setHeaders","resetHeaders","searchInput","SearchInput","target","placeholder","trackedEvent","startActions","List","actions","Root","Action","bottomActions","Popover","tours","contentManager","Introduction","Box","Main","Title","primaryAction","CreateNewEntry","CreateButton","subtitle","number","total","title","navigationAction","BackButton","Content","background","shadow","hasRadius","EmptyStateLayout","action","variant","content","icon","EmptyDocuments","width","Flex","gap","direction","alignItems","Table","rows","TableActionsBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Body","row","Row","cursor","onClick","CheckboxCell","cellFormatter","status","Cell","DocumentStatus","maxWidth","split","Typography","textColor","getDisplayName","minWidth","ellipsis","IconButton","size","Duplicate","CellContent","rowId","ActionsCell","TableActions","document","Pagination","onPageSizeChange","PageSize","Links","selectRow","useTable","state","locale","i18n","prevLocale","usePrev","ActionBar","BulkActionsRenderer","Button","tag","ReactRouterLink","startIcon","Plus","style","textDecoration","to","fullWidth","ProtectedListViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","subject","Protect","DocumentRBAC"],"mappings":"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"}
@@ -69,16 +69,20 @@ const ListViewPage = ()=>{
69
69
  'plugins.i18n.locale'
70
70
  ], false);
71
71
  const { collectionType, model, schema } = useDoc();
72
- const { list } = useDocumentLayout(model);
72
+ const { list, listViewConversionContext } = useDocumentLayout(model);
73
73
  const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState(`STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`, null);
74
74
  const mapDisplayedHeaders = (headers)=>headers.map((header)=>header.name);
75
75
  const displayedHeaders = React.useMemo(()=>{
76
- if (!displayedHeaderNames || !list.metadatas || Object.keys(list.metadatas).length <= 0 || !schema?.attributes) return [];
77
- return convertListLayoutToFieldLayouts(displayedHeaderNames, schema.attributes, list.metadatas);
76
+ if (!displayedHeaderNames || !list.metadatas || Object.keys(list.metadatas).length <= 0 || !schema?.attributes || !listViewConversionContext) return [];
77
+ return convertListLayoutToFieldLayouts(displayedHeaderNames, schema.attributes, list.metadatas, {
78
+ configurations: listViewConversionContext.componentConfigurations,
79
+ schemas: listViewConversionContext.componentSchemas
80
+ }, listViewConversionContext.contentTypeSchemas);
78
81
  }, [
79
82
  displayedHeaderNames,
80
83
  schema,
81
- list
84
+ list,
85
+ listViewConversionContext
82
86
  ]);
83
87
  const handleSetHeaders = (headers)=>{
84
88
  setDisplayedHeaderNames(headers);
@@ -1 +1 @@
1
- {"version":3,"file":"ListViewPage.mjs","sources":["../../../../admin/src/pages/ListView/ListViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n SearchInput,\n Table,\n BackButton,\n useNotification,\n useStrapiApp,\n useTracking,\n useAPIErrorHandler,\n useQueryParams,\n useScopedPersistentState,\n useRBAC,\n Layouts,\n useTable,\n useIsMobile,\n useIsDesktop,\n useClipboard,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Typography,\n ButtonProps,\n Box,\n EmptyStateLayout,\n IconButton,\n} from '@strapi/design-system';\nimport { Duplicate, Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, Link as ReactRouterLink, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { HOOKS } from '../../constants/hooks';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n ListFieldLayout,\n convertListLayoutToFieldLayouts,\n useDocumentLayout,\n} from '../../hooks/useDocumentLayout';\nimport { usePersistentPartialQueryParams } from '../../hooks/usePersistentQueryParams';\nimport { usePrev } from '../../hooks/usePrev';\nimport { useGetAllDocumentsQuery } from '../../services/documents';\nimport { buildValidParams } from '../../utils/api';\nimport { getTranslation } from '../../utils/translations';\nimport { getDisplayName } from '../../utils/users';\nimport { DocumentStatus } from '../EditView/components/DocumentStatus';\n\nimport { BulkActionsRenderer } from './components/BulkActions/Actions';\nimport { listViewFilters as Filters } from './components/Filters';\nimport { TableActions } from './components/TableActions';\nimport { CellContent } from './components/TableCells/CellContent';\nimport { ViewSettingsMenu } from './components/ViewSettingsMenu';\n\nimport type { Modules } from '@strapi/types';\n\nconst { INJECT_COLUMN_IN_TABLE } = HOOKS;\n\n/* -------------------------------------------------------------------------------------------------\n * ListViewPage\n * -----------------------------------------------------------------------------------------------*/\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow-wrap: anywhere;\n`;\n\nconst ListViewPage = () => {\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const isMobile = useIsMobile();\n const isDesktop = useIsDesktop();\n\n const handleCopyDocumentId = React.useCallback(\n async (e: React.MouseEvent, documentId: string | undefined) => {\n e.stopPropagation();\n if (!documentId) return;\n const didCopy = await copy(documentId);\n if (didCopy) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.actions.copy-documentId.success',\n defaultMessage: 'Document ID copied to clipboard',\n }),\n });\n }\n },\n [copy, formatMessage, toggleNotification]\n );\n\n usePersistentPartialQueryParams('STRAPI_LIST_VIEW_SETTINGS:', ['sort', 'filters', 'pageSize']);\n usePersistentPartialQueryParams('STRAPI_LOCALE', ['plugins.i18n.locale'], false);\n\n const { collectionType, model, schema } = useDoc();\n const { list } = useDocumentLayout(model);\n\n const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState<string[] | null>(\n `STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`,\n null\n );\n\n const mapDisplayedHeaders = (headers: ListFieldLayout[]) => headers.map((header) => header.name);\n\n const displayedHeaders: ListFieldLayout[] = React.useMemo(() => {\n if (\n !displayedHeaderNames ||\n !list.metadatas ||\n Object.keys(list.metadatas).length <= 0 ||\n !schema?.attributes\n )\n return [];\n\n return convertListLayoutToFieldLayouts(displayedHeaderNames, schema.attributes, list.metadatas);\n }, [displayedHeaderNames, schema, list]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaderNames(headers);\n };\n\n const handleResetHeaders = () => {\n setDisplayedHeaderNames(mapDisplayedHeaders(list.layout));\n };\n\n /**\n * If the persistent displayedHeaders are not yet initialized, set them to list.layout\n */\n React.useEffect(() => {\n // wait for list.layout to be loaded\n if (list.layout.length === 0) {\n return;\n }\n\n if (!displayedHeaderNames) {\n handleResetHeaders();\n }\n }, [list.layout]);\n\n React.useEffect(() => {\n if (!schema?.attributes) return;\n if (!displayedHeaderNames || displayedHeaderNames.length === 0) return;\n if (schema.uid !== model) return;\n\n const allowedDisplayHeaders = displayedHeaderNames.filter((header) =>\n Object.keys(schema?.attributes).includes(header)\n );\n\n if (allowedDisplayHeaders.length !== displayedHeaderNames.length) {\n handleSetHeaders(allowedDisplayHeaders);\n }\n }, [displayedHeaderNames]);\n\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n page?: string;\n pageSize?: string;\n sort?: string;\n }>({\n page: '1',\n pageSize: list.settings.pageSize.toString(),\n sort: list.settings.defaultSortBy\n ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}`\n : '',\n });\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const hasAppliedFilters = Boolean((query as any)?.filters?.$and?.length);\n\n const { data, error, isLoading, isFetching } = useGetAllDocumentsQuery({\n model,\n params,\n });\n\n /**\n * If the API returns an error, display a notification\n */\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const { results = [], pagination } = data ?? {};\n\n React.useEffect(() => {\n if (pagination && pagination.pageCount > 0 && pagination.page > pagination.pageCount) {\n navigate(\n {\n search: stringify({\n ...query,\n page: pagination.pageCount,\n }),\n },\n { replace: true }\n );\n }\n }, [pagination, formatMessage, query, navigate]);\n\n const { canCreate } = useDocumentRBAC('ListViewPage', ({ canCreate }) => ({\n canCreate,\n }));\n\n const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall }) => runHookWaterfall);\n /**\n * Run the waterfall and then inject our additional table headers.\n */\n const tableHeaders = React.useMemo(() => {\n const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {\n displayedHeaders,\n layout: list,\n });\n\n const formattedHeaders = headers.displayedHeaders.map<ListFieldLayout>((header) => {\n /**\n * When the header label is a string, it is an attribute on the current content-type:\n * Use the attribute name value to compute the translation.\n * Otherwise, it should be a translation object coming from a plugin that injects into the table (ie i18n, content-releases, review-workflows):\n * Use the translation object as is.\n */\n const translation =\n typeof header.label === 'string'\n ? {\n id: `content-manager.content-types.${model}.${header.name}`,\n defaultMessage: header.label,\n }\n : header.label;\n\n return {\n ...header,\n label: formatMessage(translation),\n name: `${header.name}${header.mainField?.name ? `.${header.mainField.name}` : ''}`,\n };\n });\n\n if (schema?.options?.draftAndPublish) {\n formattedHeaders.push({\n attribute: {\n type: 'custom',\n },\n name: 'status',\n label: formatMessage({\n id: getTranslation(`containers.list.table-headers.status`),\n defaultMessage: 'status',\n }),\n searchable: false,\n sortable: false,\n } satisfies ListFieldLayout);\n }\n\n return formattedHeaders;\n }, [\n displayedHeaders,\n formatMessage,\n list,\n runHookWaterfall,\n schema?.options?.draftAndPublish,\n model,\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n const contentTypeTitle = schema?.info.displayName\n ? formatMessage({ id: schema.info.displayName, defaultMessage: schema.info.displayName })\n : formatMessage({\n id: 'content-manager.containers.untitled',\n defaultMessage: 'Untitled',\n });\n\n const handleRowClick = (id: Modules.Documents.ID) => () => {\n trackUsage('willEditEntryFromList');\n navigate({\n pathname: id.toString(),\n search: stringify({ plugins: query.plugins }),\n });\n };\n\n const isEmptyState = !isFetching && results.length === 0;\n\n const endActions = (\n <>\n {isMobile && list.settings.filterable && schema && <Filters.Trigger />}\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={handleResetHeaders}\n headers={displayedHeaderNames ?? []}\n />\n </>\n );\n\n const searchInput = (\n <>\n {list.settings.searchable && (\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: contentTypeTitle }\n )}\n placeholder={formatMessage({\n id: 'global.search',\n defaultMessage: 'Search',\n })}\n trackedEvent=\"didSearch\"\n />\n )}\n </>\n );\n\n const startActions = (\n <>\n {searchInput}\n {!isMobile && list.settings.filterable && schema && (\n <>\n <Filters.Trigger />\n <Filters.List />\n </>\n )}\n </>\n );\n\n const actions =\n list.settings.filterable && schema ? (\n <Filters.Root schema={schema}>\n <Layouts.Action\n endActions={endActions}\n startActions={startActions}\n bottomActions={isMobile && hasAppliedFilters ? <Filters.List /> : null}\n />\n <Filters.Popover />\n </Filters.Root>\n ) : (\n <Layouts.Action endActions={endActions} startActions={startActions} />\n );\n\n return (\n <>\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={\n canCreate ? (\n <tours.contentManager.CreateNewEntry>\n <CreateButton />\n </tours.contentManager.CreateNewEntry>\n ) : null\n }\n subtitle={formatMessage(\n {\n id: getTranslation('pages.ListView.header-subtitle'),\n defaultMessage:\n '{number, plural, =0 {# entries} one {# entry} other {# entries}} found',\n },\n { number: pagination?.total }\n )}\n title={contentTypeTitle}\n navigationAction={<BackButton />}\n />\n {actions}\n <Layouts.Content>\n {isEmptyState ? (\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <EmptyStateLayout\n action={\n canCreate && (\n <Box>\n <CreateButton variant=\"secondary\" />\n </Box>\n )\n }\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Box>\n ) : (\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Table.Root rows={results} headers={tableHeaders} isLoading={isFetching}>\n <TableActionsBar />\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {tableHeaders.map((header: ListFieldLayout) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Empty action={canCreate ? <CreateButton variant=\"secondary\" /> : null} />\n <Table.Body>\n {results.map((row) => {\n return (\n <Table.Row\n cursor=\"pointer\"\n key={row.id}\n onClick={handleRowClick(row.documentId)}\n >\n <Table.CheckboxCell id={row.id} />\n {tableHeaders.map(({ cellFormatter, ...header }) => {\n if (header.name === 'status') {\n const { status } = row;\n\n return (\n <Table.Cell key={header.name}>\n <DocumentStatus status={status} maxWidth={'min-content'} />\n </Table.Cell>\n );\n }\n if (['createdBy', 'updatedBy'].includes(header.name.split('.')[0])) {\n // Display the users full name\n // Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)\n // In this case, we display a dash\n return (\n <Table.Cell key={header.name}>\n <Typography textColor=\"neutral800\">\n {row[header.name.split('.')[0]]\n ? getDisplayName(row[header.name.split('.')[0]])\n : '-'}\n </Typography>\n </Table.Cell>\n );\n }\n if (header.name === 'documentId') {\n return (\n <Table.Cell key={header.name}>\n <Flex gap={2} alignItems=\"center\" width=\"100%\" minWidth={0}>\n <Typography textColor=\"neutral800\" maxWidth=\"30rem\" ellipsis>\n {row.documentId || '-'}\n </Typography>\n {row.documentId && (\n <IconButton\n variant=\"ghost\"\n size=\"S\"\n label={formatMessage({\n id: 'content-manager.actions.copy-documentId.label',\n defaultMessage: 'Copy',\n })}\n onClick={(e) => handleCopyDocumentId(e, row.documentId)}\n >\n <Duplicate />\n </IconButton>\n )}\n </Flex>\n </Table.Cell>\n );\n }\n if (typeof cellFormatter === 'function') {\n return (\n <Table.Cell key={header.name}>\n {/* @ts-expect-error – TODO: fix this TS error */}\n {cellFormatter(row, header, { collectionType, model })}\n </Table.Cell>\n );\n }\n return (\n <Table.Cell key={header.name}>\n <CellContent\n content={row[header.name.split('.')[0]]}\n rowId={row.documentId}\n {...header}\n />\n </Table.Cell>\n );\n })}\n {/* we stop propagation here to allow the menu to trigger it's events without triggering the row redirect */}\n <ActionsCell onClick={(e) => e.stopPropagation()}>\n <TableActions document={row} />\n </ActionsCell>\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root\n {...pagination}\n onPageSizeChange={() => trackUsage('willChangeNumberOfEntriesPerPage')}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Flex>\n )}\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ActionsCell = styled(Table.Cell)`\n display: flex;\n justify-content: flex-end;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionsBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst TableActionsBar = () => {\n const selectRow = useTable('TableActionsBar', (state) => state.selectRow);\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query?.plugins?.i18n?.locale;\n const prevLocale = usePrev(locale);\n\n // TODO: find a better way to reset the selected rows when the locale changes across all the app\n React.useEffect(() => {\n if (prevLocale !== locale) {\n selectRow([]);\n }\n }, [selectRow, prevLocale, locale]);\n\n return (\n <Table.ActionBar>\n <BulkActionsRenderer />\n </Table.ActionBar>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateButtonProps extends Pick<ButtonProps, 'variant'> {}\n\nconst CreateButton = ({ variant }: CreateButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }] = useQueryParams<{ plugins: object }>();\n\n return (\n <Button\n variant={variant}\n tag={ReactRouterLink}\n onClick={() => {\n trackUsage('willCreateEntry', { status: 'draft' });\n }}\n startIcon={<Plus />}\n style={{ textDecoration: 'none' }}\n to={{\n pathname: 'create',\n search: stringify({ plugins: query.plugins }),\n }}\n minWidth=\"max-content\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('HeaderLayout.button.label-add-entry'),\n defaultMessage: 'Create new entry',\n })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <ListViewPage key={slug} />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { ListViewPage, ProtectedListViewPage };\n"],"names":["INJECT_COLUMN_IN_TABLE","HOOKS","LayoutsHeaderCustom","styled","Layouts","Header","ListViewPage","trackUsage","useTracking","navigate","useNavigate","formatMessage","useIntl","toggleNotification","useNotification","copy","useClipboard","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","isMobile","useIsMobile","useIsDesktop","handleCopyDocumentId","React","useCallback","e","documentId","stopPropagation","didCopy","type","message","id","defaultMessage","usePersistentPartialQueryParams","collectionType","model","schema","useDoc","list","useDocumentLayout","displayedHeaderNames","setDisplayedHeaderNames","useScopedPersistentState","mapDisplayedHeaders","headers","map","header","name","displayedHeaders","useMemo","metadatas","Object","keys","length","attributes","convertListLayoutToFieldLayouts","handleSetHeaders","handleResetHeaders","layout","useEffect","uid","allowedDisplayHeaders","filter","includes","query","useQueryParams","page","pageSize","settings","toString","sort","defaultSortBy","defaultSortOrder","params","buildValidParams","hasAppliedFilters","Boolean","filters","$and","data","error","isLoading","isFetching","useGetAllDocumentsQuery","results","pagination","pageCount","search","stringify","replace","canCreate","useDocumentRBAC","runHookWaterfall","useStrapiApp","tableHeaders","formattedHeaders","translation","label","mainField","options","draftAndPublish","push","attribute","searchable","sortable","_jsx","Page","Loading","Error","contentTypeTitle","info","displayName","handleRowClick","pathname","plugins","isEmptyState","endActions","_jsxs","_Fragment","filterable","Filters","Trigger","InjectionZone","area","ViewSettingsMenu","setHeaders","resetHeaders","searchInput","SearchInput","target","placeholder","trackedEvent","startActions","List","actions","Root","Action","bottomActions","Popover","tours","contentManager","Introduction","Box","Main","Title","primaryAction","CreateNewEntry","CreateButton","subtitle","number","total","title","navigationAction","BackButton","Content","background","shadow","hasRadius","EmptyStateLayout","action","variant","content","icon","EmptyDocuments","width","Flex","gap","direction","alignItems","Table","rows","TableActionsBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Body","row","Row","cursor","onClick","CheckboxCell","cellFormatter","status","Cell","DocumentStatus","maxWidth","split","Typography","textColor","getDisplayName","minWidth","ellipsis","IconButton","size","Duplicate","CellContent","rowId","ActionsCell","TableActions","document","Pagination","onPageSizeChange","PageSize","Links","selectRow","useTable","state","locale","i18n","prevLocale","usePrev","ActionBar","BulkActionsRenderer","Button","tag","ReactRouterLink","startIcon","Plus","style","textDecoration","to","fullWidth","ProtectedListViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","subject","Protect","DocumentRBAC"],"mappings":"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"}
1
+ {"version":3,"file":"ListViewPage.mjs","sources":["../../../../admin/src/pages/ListView/ListViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n SearchInput,\n Table,\n BackButton,\n useNotification,\n useStrapiApp,\n useTracking,\n useAPIErrorHandler,\n useQueryParams,\n useScopedPersistentState,\n useRBAC,\n Layouts,\n useTable,\n useIsMobile,\n useIsDesktop,\n useClipboard,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Typography,\n ButtonProps,\n Box,\n EmptyStateLayout,\n IconButton,\n} from '@strapi/design-system';\nimport { Duplicate, Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, Link as ReactRouterLink, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { HOOKS } from '../../constants/hooks';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n ListFieldLayout,\n convertListLayoutToFieldLayouts,\n useDocumentLayout,\n} from '../../hooks/useDocumentLayout';\nimport { usePersistentPartialQueryParams } from '../../hooks/usePersistentQueryParams';\nimport { usePrev } from '../../hooks/usePrev';\nimport { useGetAllDocumentsQuery } from '../../services/documents';\nimport { buildValidParams } from '../../utils/api';\nimport { getTranslation } from '../../utils/translations';\nimport { getDisplayName } from '../../utils/users';\nimport { DocumentStatus } from '../EditView/components/DocumentStatus';\n\nimport { BulkActionsRenderer } from './components/BulkActions/Actions';\nimport { listViewFilters as Filters } from './components/Filters';\nimport { TableActions } from './components/TableActions';\nimport { CellContent } from './components/TableCells/CellContent';\nimport { ViewSettingsMenu } from './components/ViewSettingsMenu';\n\nimport type { Modules } from '@strapi/types';\n\nconst { INJECT_COLUMN_IN_TABLE } = HOOKS;\n\n/* -------------------------------------------------------------------------------------------------\n * ListViewPage\n * -----------------------------------------------------------------------------------------------*/\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow-wrap: anywhere;\n`;\n\nconst ListViewPage = () => {\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const isMobile = useIsMobile();\n const isDesktop = useIsDesktop();\n\n const handleCopyDocumentId = React.useCallback(\n async (e: React.MouseEvent, documentId: string | undefined) => {\n e.stopPropagation();\n if (!documentId) return;\n const didCopy = await copy(documentId);\n if (didCopy) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.actions.copy-documentId.success',\n defaultMessage: 'Document ID copied to clipboard',\n }),\n });\n }\n },\n [copy, formatMessage, toggleNotification]\n );\n\n usePersistentPartialQueryParams('STRAPI_LIST_VIEW_SETTINGS:', ['sort', 'filters', 'pageSize']);\n usePersistentPartialQueryParams('STRAPI_LOCALE', ['plugins.i18n.locale'], false);\n\n const { collectionType, model, schema } = useDoc();\n const { list, listViewConversionContext } = useDocumentLayout(model);\n\n const [displayedHeaderNames, setDisplayedHeaderNames] = useScopedPersistentState<string[] | null>(\n `STRAPI_LIST_VIEW_DISPLAYED_HEADERS:${model}`,\n null\n );\n\n const mapDisplayedHeaders = (headers: ListFieldLayout[]) => headers.map((header) => header.name);\n\n const displayedHeaders: ListFieldLayout[] = React.useMemo(() => {\n if (\n !displayedHeaderNames ||\n !list.metadatas ||\n Object.keys(list.metadatas).length <= 0 ||\n !schema?.attributes ||\n !listViewConversionContext\n )\n return [];\n\n return convertListLayoutToFieldLayouts(\n displayedHeaderNames,\n schema.attributes,\n list.metadatas,\n {\n configurations: listViewConversionContext.componentConfigurations,\n schemas: listViewConversionContext.componentSchemas,\n },\n listViewConversionContext.contentTypeSchemas\n );\n }, [displayedHeaderNames, schema, list, listViewConversionContext]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaderNames(headers);\n };\n\n const handleResetHeaders = () => {\n setDisplayedHeaderNames(mapDisplayedHeaders(list.layout));\n };\n\n /**\n * If the persistent displayedHeaders are not yet initialized, set them to list.layout\n */\n React.useEffect(() => {\n // wait for list.layout to be loaded\n if (list.layout.length === 0) {\n return;\n }\n\n if (!displayedHeaderNames) {\n handleResetHeaders();\n }\n }, [list.layout]);\n\n React.useEffect(() => {\n if (!schema?.attributes) return;\n if (!displayedHeaderNames || displayedHeaderNames.length === 0) return;\n if (schema.uid !== model) return;\n\n const allowedDisplayHeaders = displayedHeaderNames.filter((header) =>\n Object.keys(schema?.attributes).includes(header)\n );\n\n if (allowedDisplayHeaders.length !== displayedHeaderNames.length) {\n handleSetHeaders(allowedDisplayHeaders);\n }\n }, [displayedHeaderNames]);\n\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n page?: string;\n pageSize?: string;\n sort?: string;\n }>({\n page: '1',\n pageSize: list.settings.pageSize.toString(),\n sort: list.settings.defaultSortBy\n ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}`\n : '',\n });\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const hasAppliedFilters = Boolean((query as any)?.filters?.$and?.length);\n\n const { data, error, isLoading, isFetching } = useGetAllDocumentsQuery({\n model,\n params,\n });\n\n /**\n * If the API returns an error, display a notification\n */\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const { results = [], pagination } = data ?? {};\n\n React.useEffect(() => {\n if (pagination && pagination.pageCount > 0 && pagination.page > pagination.pageCount) {\n navigate(\n {\n search: stringify({\n ...query,\n page: pagination.pageCount,\n }),\n },\n { replace: true }\n );\n }\n }, [pagination, formatMessage, query, navigate]);\n\n const { canCreate } = useDocumentRBAC('ListViewPage', ({ canCreate }) => ({\n canCreate,\n }));\n\n const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall }) => runHookWaterfall);\n /**\n * Run the waterfall and then inject our additional table headers.\n */\n const tableHeaders = React.useMemo(() => {\n const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {\n displayedHeaders,\n layout: list,\n });\n\n const formattedHeaders = headers.displayedHeaders.map<ListFieldLayout>((header) => {\n /**\n * When the header label is a string, it is an attribute on the current content-type:\n * Use the attribute name value to compute the translation.\n * Otherwise, it should be a translation object coming from a plugin that injects into the table (ie i18n, content-releases, review-workflows):\n * Use the translation object as is.\n */\n const translation =\n typeof header.label === 'string'\n ? {\n id: `content-manager.content-types.${model}.${header.name}`,\n defaultMessage: header.label,\n }\n : header.label;\n\n return {\n ...header,\n label: formatMessage(translation),\n name: `${header.name}${header.mainField?.name ? `.${header.mainField.name}` : ''}`,\n };\n });\n\n if (schema?.options?.draftAndPublish) {\n formattedHeaders.push({\n attribute: {\n type: 'custom',\n },\n name: 'status',\n label: formatMessage({\n id: getTranslation(`containers.list.table-headers.status`),\n defaultMessage: 'status',\n }),\n searchable: false,\n sortable: false,\n } satisfies ListFieldLayout);\n }\n\n return formattedHeaders;\n }, [\n displayedHeaders,\n formatMessage,\n list,\n runHookWaterfall,\n schema?.options?.draftAndPublish,\n model,\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n const contentTypeTitle = schema?.info.displayName\n ? formatMessage({ id: schema.info.displayName, defaultMessage: schema.info.displayName })\n : formatMessage({\n id: 'content-manager.containers.untitled',\n defaultMessage: 'Untitled',\n });\n\n const handleRowClick = (id: Modules.Documents.ID) => () => {\n trackUsage('willEditEntryFromList');\n navigate({\n pathname: id.toString(),\n search: stringify({ plugins: query.plugins }),\n });\n };\n\n const isEmptyState = !isFetching && results.length === 0;\n\n const endActions = (\n <>\n {isMobile && list.settings.filterable && schema && <Filters.Trigger />}\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={handleResetHeaders}\n headers={displayedHeaderNames ?? []}\n />\n </>\n );\n\n const searchInput = (\n <>\n {list.settings.searchable && (\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: contentTypeTitle }\n )}\n placeholder={formatMessage({\n id: 'global.search',\n defaultMessage: 'Search',\n })}\n trackedEvent=\"didSearch\"\n />\n )}\n </>\n );\n\n const startActions = (\n <>\n {searchInput}\n {!isMobile && list.settings.filterable && schema && (\n <>\n <Filters.Trigger />\n <Filters.List />\n </>\n )}\n </>\n );\n\n const actions =\n list.settings.filterable && schema ? (\n <Filters.Root schema={schema}>\n <Layouts.Action\n endActions={endActions}\n startActions={startActions}\n bottomActions={isMobile && hasAppliedFilters ? <Filters.List /> : null}\n />\n <Filters.Popover />\n </Filters.Root>\n ) : (\n <Layouts.Action endActions={endActions} startActions={startActions} />\n );\n\n return (\n <>\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={\n canCreate ? (\n <tours.contentManager.CreateNewEntry>\n <CreateButton />\n </tours.contentManager.CreateNewEntry>\n ) : null\n }\n subtitle={formatMessage(\n {\n id: getTranslation('pages.ListView.header-subtitle'),\n defaultMessage:\n '{number, plural, =0 {# entries} one {# entry} other {# entries}} found',\n },\n { number: pagination?.total }\n )}\n title={contentTypeTitle}\n navigationAction={<BackButton />}\n />\n {actions}\n <Layouts.Content>\n {isEmptyState ? (\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <EmptyStateLayout\n action={\n canCreate && (\n <Box>\n <CreateButton variant=\"secondary\" />\n </Box>\n )\n }\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n </Box>\n ) : (\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Table.Root rows={results} headers={tableHeaders} isLoading={isFetching}>\n <TableActionsBar />\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {tableHeaders.map((header: ListFieldLayout) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Empty action={canCreate ? <CreateButton variant=\"secondary\" /> : null} />\n <Table.Body>\n {results.map((row) => {\n return (\n <Table.Row\n cursor=\"pointer\"\n key={row.id}\n onClick={handleRowClick(row.documentId)}\n >\n <Table.CheckboxCell id={row.id} />\n {tableHeaders.map(({ cellFormatter, ...header }) => {\n if (header.name === 'status') {\n const { status } = row;\n\n return (\n <Table.Cell key={header.name}>\n <DocumentStatus status={status} maxWidth={'min-content'} />\n </Table.Cell>\n );\n }\n if (['createdBy', 'updatedBy'].includes(header.name.split('.')[0])) {\n // Display the users full name\n // Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)\n // In this case, we display a dash\n return (\n <Table.Cell key={header.name}>\n <Typography textColor=\"neutral800\">\n {row[header.name.split('.')[0]]\n ? getDisplayName(row[header.name.split('.')[0]])\n : '-'}\n </Typography>\n </Table.Cell>\n );\n }\n if (header.name === 'documentId') {\n return (\n <Table.Cell key={header.name}>\n <Flex gap={2} alignItems=\"center\" width=\"100%\" minWidth={0}>\n <Typography textColor=\"neutral800\" maxWidth=\"30rem\" ellipsis>\n {row.documentId || '-'}\n </Typography>\n {row.documentId && (\n <IconButton\n variant=\"ghost\"\n size=\"S\"\n label={formatMessage({\n id: 'content-manager.actions.copy-documentId.label',\n defaultMessage: 'Copy',\n })}\n onClick={(e) => handleCopyDocumentId(e, row.documentId)}\n >\n <Duplicate />\n </IconButton>\n )}\n </Flex>\n </Table.Cell>\n );\n }\n if (typeof cellFormatter === 'function') {\n return (\n <Table.Cell key={header.name}>\n {/* @ts-expect-error – TODO: fix this TS error */}\n {cellFormatter(row, header, { collectionType, model })}\n </Table.Cell>\n );\n }\n return (\n <Table.Cell key={header.name}>\n <CellContent\n content={row[header.name.split('.')[0]]}\n rowId={row.documentId}\n {...header}\n />\n </Table.Cell>\n );\n })}\n {/* we stop propagation here to allow the menu to trigger it's events without triggering the row redirect */}\n <ActionsCell onClick={(e) => e.stopPropagation()}>\n <TableActions document={row} />\n </ActionsCell>\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root\n {...pagination}\n onPageSizeChange={() => trackUsage('willChangeNumberOfEntriesPerPage')}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Flex>\n )}\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ActionsCell = styled(Table.Cell)`\n display: flex;\n justify-content: flex-end;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionsBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst TableActionsBar = () => {\n const selectRow = useTable('TableActionsBar', (state) => state.selectRow);\n const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n const locale = query?.plugins?.i18n?.locale;\n const prevLocale = usePrev(locale);\n\n // TODO: find a better way to reset the selected rows when the locale changes across all the app\n React.useEffect(() => {\n if (prevLocale !== locale) {\n selectRow([]);\n }\n }, [selectRow, prevLocale, locale]);\n\n return (\n <Table.ActionBar>\n <BulkActionsRenderer />\n </Table.ActionBar>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateButtonProps extends Pick<ButtonProps, 'variant'> {}\n\nconst CreateButton = ({ variant }: CreateButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }] = useQueryParams<{ plugins: object }>();\n\n return (\n <Button\n variant={variant}\n tag={ReactRouterLink}\n onClick={() => {\n trackUsage('willCreateEntry', { status: 'draft' });\n }}\n startIcon={<Plus />}\n style={{ textDecoration: 'none' }}\n to={{\n pathname: 'create',\n search: stringify({ plugins: query.plugins }),\n }}\n minWidth=\"max-content\"\n fullWidth\n >\n {formatMessage({\n id: getTranslation('HeaderLayout.button.label-add-entry'),\n defaultMessage: 'Create new entry',\n })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <ListViewPage key={slug} />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { ListViewPage, ProtectedListViewPage };\n"],"names":["INJECT_COLUMN_IN_TABLE","HOOKS","LayoutsHeaderCustom","styled","Layouts","Header","ListViewPage","trackUsage","useTracking","navigate","useNavigate","formatMessage","useIntl","toggleNotification","useNotification","copy","useClipboard","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","isMobile","useIsMobile","useIsDesktop","handleCopyDocumentId","React","useCallback","e","documentId","stopPropagation","didCopy","type","message","id","defaultMessage","usePersistentPartialQueryParams","collectionType","model","schema","useDoc","list","listViewConversionContext","useDocumentLayout","displayedHeaderNames","setDisplayedHeaderNames","useScopedPersistentState","mapDisplayedHeaders","headers","map","header","name","displayedHeaders","useMemo","metadatas","Object","keys","length","attributes","convertListLayoutToFieldLayouts","configurations","componentConfigurations","schemas","componentSchemas","contentTypeSchemas","handleSetHeaders","handleResetHeaders","layout","useEffect","uid","allowedDisplayHeaders","filter","includes","query","useQueryParams","page","pageSize","settings","toString","sort","defaultSortBy","defaultSortOrder","params","buildValidParams","hasAppliedFilters","Boolean","filters","$and","data","error","isLoading","isFetching","useGetAllDocumentsQuery","results","pagination","pageCount","search","stringify","replace","canCreate","useDocumentRBAC","runHookWaterfall","useStrapiApp","tableHeaders","formattedHeaders","translation","label","mainField","options","draftAndPublish","push","attribute","searchable","sortable","_jsx","Page","Loading","Error","contentTypeTitle","info","displayName","handleRowClick","pathname","plugins","isEmptyState","endActions","_jsxs","_Fragment","filterable","Filters","Trigger","InjectionZone","area","ViewSettingsMenu","setHeaders","resetHeaders","searchInput","SearchInput","target","placeholder","trackedEvent","startActions","List","actions","Root","Action","bottomActions","Popover","tours","contentManager","Introduction","Box","Main","Title","primaryAction","CreateNewEntry","CreateButton","subtitle","number","total","title","navigationAction","BackButton","Content","background","shadow","hasRadius","EmptyStateLayout","action","variant","content","icon","EmptyDocuments","width","Flex","gap","direction","alignItems","Table","rows","TableActionsBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Body","row","Row","cursor","onClick","CheckboxCell","cellFormatter","status","Cell","DocumentStatus","maxWidth","split","Typography","textColor","getDisplayName","minWidth","ellipsis","IconButton","size","Duplicate","CellContent","rowId","ActionsCell","TableActions","document","Pagination","onPageSizeChange","PageSize","Links","selectRow","useTable","state","locale","i18n","prevLocale","usePrev","ActionBar","BulkActionsRenderer","Button","tag","ReactRouterLink","startIcon","Plus","style","textDecoration","to","fullWidth","ProtectedListViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","subject","Protect","DocumentRBAC"],"mappings":"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"}
@@ -130,6 +130,11 @@ declare const useContentManagerContext: () => {
130
130
  isLoading: boolean;
131
131
  edit: import("./useDocumentLayout").EditLayout;
132
132
  list: import("./useDocumentLayout").ListLayout;
133
+ listViewConversionContext: {
134
+ componentConfigurations: Record<string, import("../../../shared/contracts/components").ComponentConfiguration>;
135
+ componentSchemas: ComponentsDictionary;
136
+ contentTypeSchemas: ContentType[];
137
+ } | null;
133
138
  };
134
139
  };
135
140
  export { useDocument, useDoc, useContentManagerContext };
@@ -60,6 +60,15 @@ interface EditLayout {
60
60
  options: LayoutOptions;
61
61
  settings: LayoutSettings;
62
62
  }
63
+ /**
64
+ * Data required to resolve `mainField` when converting list column names to field layouts for
65
+ * component and relation attributes; mirrors the fourth and fifth arguments of `formatListLayout`.
66
+ */
67
+ type ListViewConversionContext = {
68
+ componentConfigurations: FindContentTypeConfiguration.Response['data']['components'];
69
+ componentSchemas: ComponentsDictionary;
70
+ contentTypeSchemas: Schema[];
71
+ };
63
72
  type UseDocumentLayout = (model: string) => {
64
73
  error?: BaseQueryError | SerializedError;
65
74
  isLoading: boolean;
@@ -68,6 +77,11 @@ type UseDocumentLayout = (model: string) => {
68
77
  */
69
78
  edit: EditLayout;
70
79
  list: ListLayout;
80
+ /**
81
+ * Populated when configuration is loaded; pass into `convertListLayoutToFieldLayouts` with
82
+ * `list.metadatas` when mapping persisted list column names (e.g. custom displayed headers).
83
+ */
84
+ listViewConversionContext: ListViewConversionContext | null;
71
85
  };
72
86
  declare const DEFAULT_SETTINGS: {
73
87
  bulkable: boolean;
@@ -111,6 +125,11 @@ declare const useDocLayout: () => {
111
125
  */
112
126
  edit: EditLayout;
113
127
  list: ListLayout;
128
+ /**
129
+ * Populated when configuration is loaded; pass into `convertListLayoutToFieldLayouts` with
130
+ * `list.metadatas` when mapping persisted list column names (e.g. custom displayed headers).
131
+ */
132
+ listViewConversionContext: ListViewConversionContext | null;
114
133
  };
115
134
  type LayoutData = FindContentTypeConfiguration.Response['data'];
116
135
  /**