@strapi/content-manager 0.0.0-experimental.25f7de53c1fc990bbb86d4aa43c379acfa838064 → 0.0.0-experimental.267375bdc00aa57de5e78acd345a838d21a63676
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.
- package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +34 -30
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +36 -32
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +6 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +7 -1
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +5 -1
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +5 -1
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +81 -74
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +82 -75
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +230 -28
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +232 -30
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +19 -33
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +19 -33
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +128 -55
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +128 -55
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +91 -51
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +93 -53
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +20 -24
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +20 -24
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +77 -0
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +78 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
- package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
- package/dist/admin/translations/en.json.js +3 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +3 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js +3 -0
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs +3 -0
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/data-mapper.d.ts +1 -0
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/package.json +11 -8
@@ -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 useRBAC,\n Layouts,\n useTable,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Typography, ButtonProps } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\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 { 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 { 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 { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n\n const { collectionType, model, schema } = useDoc();\n const { list } = useDocumentLayout(model);\n\n const [displayedHeaders, setDisplayedHeaders] = React.useState<ListFieldLayout[]>([]);\n\n const listLayout = usePrev(list.layout);\n React.useEffect(() => {\n /**\n * ONLY update the displayedHeaders if the document\n * layout has actually changed in value.\n */\n if (!isEqual(listLayout, list.layout)) {\n setDisplayedHeaders(list.layout);\n }\n }, [list.layout, listLayout]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaders(\n convertListLayoutToFieldLayouts(headers, schema!.attributes, list.metadatas)\n );\n };\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\n const { data, error, 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 (isFetching) {\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 return (\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={canCreate ? <CreateButton /> : null}\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 <Layouts.Action\n endActions={\n <>\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={() => setDisplayedHeaders(list.layout)}\n headers={displayedHeaders.map((header) => header.name)}\n />\n </>\n }\n startActions={\n <>\n {list.settings.searchable && (\n <SearchInput\n disabled={results.length === 0}\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 {list.settings.filterable && schema ? (\n <Filters disabled={results.length === 0} schema={schema} />\n ) : null}\n </>\n }\n />\n <Layouts.Content>\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 (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 </Layouts.Content>\n </Page.Main>\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 marginLeft={2}\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 />\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","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","collectionType","model","schema","useDoc","list","useDocumentLayout","displayedHeaders","setDisplayedHeaders","React","useState","listLayout","usePrev","layout","useEffect","isEqual","handleSetHeaders","headers","convertListLayoutToFieldLayouts","attributes","metadatas","query","useQueryParams","page","pageSize","settings","toString","sort","defaultSortBy","defaultSortOrder","params","useMemo","buildValidParams","data","error","isFetching","useGetAllDocumentsQuery","type","message","results","pagination","pageCount","search","stringify","replace","canCreate","useDocumentRBAC","runHookWaterfall","useStrapiApp","tableHeaders","formattedHeaders","map","header","translation","label","id","name","defaultMessage","mainField","options","draftAndPublish","push","attribute","searchable","sortable","_jsx","Page","Loading","Error","contentTypeTitle","info","displayName","handleRowClick","pathname","plugins","_jsxs","Main","Title","primaryAction","CreateButton","subtitle","number","total","title","navigationAction","BackButton","Action","endActions","_Fragment","InjectionZone","area","ViewSettingsMenu","setHeaders","resetHeaders","startActions","SearchInput","disabled","length","target","placeholder","trackedEvent","filterable","Filters","Content","Flex","gap","direction","alignItems","Table","Root","rows","isLoading","TableActionsBar","Head","HeaderCheckboxCell","HeaderCell","Empty","action","variant","Body","row","Row","cursor","onClick","documentId","CheckboxCell","cellFormatter","status","Cell","DocumentStatus","maxWidth","includes","split","Typography","textColor","getDisplayName","CellContent","content","rowId","ActionsCell","e","stopPropagation","TableActions","document","Pagination","onPageSizeChange","PageSize","Links","selectRow","useTable","state","locale","i18n","prevLocale","ActionBar","BulkActionsRenderer","Button","tag","ReactRouterLink","startIcon","Plus","style","textDecoration","to","minWidth","marginLeft","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 useRBAC,\n Layouts,\n useTable,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n Typography,\n ButtonProps,\n Box,\n EmptyStateLayout,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport isEqual from 'lodash/isEqual';\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 { 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 { 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 { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n\n const { collectionType, model, schema } = useDoc();\n const { list } = useDocumentLayout(model);\n\n const [displayedHeaders, setDisplayedHeaders] = React.useState<ListFieldLayout[]>([]);\n\n const listLayout = usePrev(list.layout);\n React.useEffect(() => {\n /**\n * ONLY update the displayedHeaders if the document\n * layout has actually changed in value.\n */\n if (!isEqual(listLayout, list.layout)) {\n setDisplayedHeaders(list.layout);\n }\n }, [list.layout, listLayout]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaders(\n convertListLayoutToFieldLayouts(headers, schema!.attributes, list.metadatas)\n );\n };\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\n const { data, error, 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 (isFetching) {\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 if (!isFetching && results.length === 0) {\n return (\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={canCreate ? <CreateButton /> : null}\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 <Layouts.Action\n endActions={\n <>\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={() => setDisplayedHeaders(list.layout)}\n headers={displayedHeaders.map((header) => header.name)}\n />\n </>\n }\n startActions={\n <>\n {list.settings.searchable && (\n <SearchInput\n disabled={results.length === 0}\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 {list.settings.filterable && schema ? (\n <Filters disabled={results.length === 0} schema={schema} />\n ) : null}\n </>\n }\n />\n <Layouts.Content>\n <Box background=\"neutral0\" shadow=\"filterShadow\" hasRadius>\n <EmptyStateLayout\n action={canCreate ? <CreateButton variant=\"secondary\" /> : null}\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 </Layouts.Content>\n </Page.Main>\n );\n }\n\n return (\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <LayoutsHeaderCustom\n primaryAction={canCreate ? <CreateButton /> : null}\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 <Layouts.Action\n endActions={\n <>\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={() => setDisplayedHeaders(list.layout)}\n headers={displayedHeaders.map((header) => header.name)}\n />\n </>\n }\n startActions={\n <>\n {list.settings.searchable && (\n <SearchInput\n disabled={results.length === 0}\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 {list.settings.filterable && schema ? (\n <Filters disabled={results.length === 0} schema={schema} />\n ) : null}\n </>\n }\n />\n <Layouts.Content>\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 (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 </Layouts.Content>\n </Page.Main>\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 marginLeft={2}\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 />\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","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","collectionType","model","schema","useDoc","list","useDocumentLayout","displayedHeaders","setDisplayedHeaders","React","useState","listLayout","usePrev","layout","useEffect","isEqual","handleSetHeaders","headers","convertListLayoutToFieldLayouts","attributes","metadatas","query","useQueryParams","page","pageSize","settings","toString","sort","defaultSortBy","defaultSortOrder","params","useMemo","buildValidParams","data","error","isFetching","useGetAllDocumentsQuery","type","message","results","pagination","pageCount","search","stringify","replace","canCreate","useDocumentRBAC","runHookWaterfall","useStrapiApp","tableHeaders","formattedHeaders","map","header","translation","label","id","name","defaultMessage","mainField","options","draftAndPublish","push","attribute","searchable","sortable","_jsx","Page","Loading","Error","contentTypeTitle","info","displayName","handleRowClick","pathname","plugins","length","_jsxs","Main","Title","primaryAction","CreateButton","subtitle","number","total","title","navigationAction","BackButton","Action","endActions","_Fragment","InjectionZone","area","ViewSettingsMenu","setHeaders","resetHeaders","startActions","SearchInput","disabled","target","placeholder","trackedEvent","filterable","Filters","Content","Box","background","shadow","hasRadius","EmptyStateLayout","action","variant","content","icon","EmptyDocuments","width","Flex","gap","direction","alignItems","Table","Root","rows","isLoading","TableActionsBar","Head","HeaderCheckboxCell","HeaderCell","Empty","Body","row","Row","cursor","onClick","documentId","CheckboxCell","cellFormatter","status","Cell","DocumentStatus","maxWidth","includes","split","Typography","textColor","getDisplayName","CellContent","rowId","ActionsCell","e","stopPropagation","TableActions","document","Pagination","onPageSizeChange","PageSize","Links","selectRow","useTable","state","locale","i18n","prevLocale","ActionBar","BulkActionsRenderer","Button","tag","ReactRouterLink","startIcon","Plus","style","textDecoration","to","minWidth","marginLeft","ProtectedListViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","subject","Protect","DocumentRBAC"],"mappings":"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"}
|
@@ -64,7 +64,7 @@ const ConfirmBulkActionDialog = ({ onToggleDialog, isOpen = false, dialogBody, e
|
|
64
64
|
children: [
|
65
65
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Cancel, {
|
66
66
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
67
|
-
|
67
|
+
width: '50%',
|
68
68
|
onClick: onToggleDialog,
|
69
69
|
variant: "tertiary",
|
70
70
|
children: formatMessage({
|
@@ -154,6 +154,7 @@ const ConfirmDialogPublishAll = ({ isOpen, onToggleDialog, isConfirmButtonLoadin
|
|
154
154
|
]
|
155
155
|
}),
|
156
156
|
endAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
157
|
+
width: '50%',
|
157
158
|
onClick: onConfirm,
|
158
159
|
variant: "secondary",
|
159
160
|
startIcon: /*#__PURE__*/ jsxRuntime.jsx(Icons.Check, {}),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ConfirmBulkActionDialog.js","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button fullWidth onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n"],"names":["ConfirmBulkActionDialog","onToggleDialog","isOpen","dialogBody","endAction","formatMessage","useIntl","_jsx","Dialog","Root","open","_jsxs","Content","Header","id","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","WarningCircle","width","height","fill","Footer","Cancel","Button","fullWidth","onClick","variant","BoldChunk","chunks","Typography","fontWeight","ConfirmDialogPublishAll","isConfirmButtonLoading","onConfirm","selectedEntries","useTable","state","selectedRows","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","model","schema","useDoc","query","useQueryParams","enableDraftRelationsCount","data","countDraftRelations","isLoading","error","useGetManyDraftRelationCountQuery","documentIds","map","entry","documentId","locale","plugins","i18n","skip","React","useEffect","type","message","_Fragment","textAlign","b","count","entities","length","pluginOptions","textColor","em","Emphasis","startIcon","Check","loading"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ConfirmBulkActionDialog.js","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button width={'50%'} onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n width={'50%'}\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n"],"names":["ConfirmBulkActionDialog","onToggleDialog","isOpen","dialogBody","endAction","formatMessage","useIntl","_jsx","Dialog","Root","open","_jsxs","Content","Header","id","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","WarningCircle","width","height","fill","Footer","Cancel","Button","onClick","variant","BoldChunk","chunks","Typography","fontWeight","ConfirmDialogPublishAll","isConfirmButtonLoading","onConfirm","selectedEntries","useTable","state","selectedRows","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","model","schema","useDoc","query","useQueryParams","enableDraftRelationsCount","data","countDraftRelations","isLoading","error","useGetManyDraftRelationCountQuery","documentIds","map","entry","documentId","locale","plugins","i18n","skip","React","useEffect","type","message","_Fragment","textAlign","b","count","entities","length","pluginOptions","textColor","em","Emphasis","startIcon","Check","loading"],"mappings":"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"}
|
@@ -43,7 +43,7 @@ const ConfirmBulkActionDialog = ({ onToggleDialog, isOpen = false, dialogBody, e
|
|
43
43
|
children: [
|
44
44
|
/*#__PURE__*/ jsx(Dialog.Cancel, {
|
45
45
|
children: /*#__PURE__*/ jsx(Button, {
|
46
|
-
|
46
|
+
width: '50%',
|
47
47
|
onClick: onToggleDialog,
|
48
48
|
variant: "tertiary",
|
49
49
|
children: formatMessage({
|
@@ -133,6 +133,7 @@ const ConfirmDialogPublishAll = ({ isOpen, onToggleDialog, isConfirmButtonLoadin
|
|
133
133
|
]
|
134
134
|
}),
|
135
135
|
endAction: /*#__PURE__*/ jsx(Button, {
|
136
|
+
width: '50%',
|
136
137
|
onClick: onConfirm,
|
137
138
|
variant: "secondary",
|
138
139
|
startIcon: /*#__PURE__*/ jsx(Check, {}),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ConfirmBulkActionDialog.mjs","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button fullWidth onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n"],"names":["ConfirmBulkActionDialog","onToggleDialog","isOpen","dialogBody","endAction","formatMessage","useIntl","_jsx","Dialog","Root","open","_jsxs","Content","Header","id","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","WarningCircle","width","height","fill","Footer","Cancel","Button","fullWidth","onClick","variant","BoldChunk","chunks","Typography","fontWeight","ConfirmDialogPublishAll","isConfirmButtonLoading","onConfirm","selectedEntries","useTable","state","selectedRows","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","model","schema","useDoc","query","useQueryParams","enableDraftRelationsCount","data","countDraftRelations","isLoading","error","useGetManyDraftRelationCountQuery","documentIds","map","entry","documentId","locale","plugins","i18n","skip","React","useEffect","type","message","_Fragment","textAlign","b","count","entities","length","pluginOptions","textColor","em","Emphasis","startIcon","Check","loading"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ConfirmBulkActionDialog.mjs","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button width={'50%'} onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n width={'50%'}\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n"],"names":["ConfirmBulkActionDialog","onToggleDialog","isOpen","dialogBody","endAction","formatMessage","useIntl","_jsx","Dialog","Root","open","_jsxs","Content","Header","id","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","WarningCircle","width","height","fill","Footer","Cancel","Button","onClick","variant","BoldChunk","chunks","Typography","fontWeight","ConfirmDialogPublishAll","isConfirmButtonLoading","onConfirm","selectedEntries","useTable","state","selectedRows","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","model","schema","useDoc","query","useQueryParams","enableDraftRelationsCount","data","countDraftRelations","isLoading","error","useGetManyDraftRelationCountQuery","documentIds","map","entry","documentId","locale","plugins","i18n","skip","React","useEffect","type","message","_Fragment","textAlign","b","count","entities","length","pluginOptions","textColor","em","Emphasis","startIcon","Check","loading"],"mappings":";;;;;;;;;;;AAyBMA,MAAAA,uBAAAA,GAA0B,CAAC,EAC/BC,cAAc,EACdC,MAAS,GAAA,KAAK,EACdC,UAAU,EACVC,SAAS,EACoB,GAAA;IAC7B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,GAAA,CAACC,OAAOC,IAAI,EAAA;QAACC,IAAMR,EAAAA,MAAAA;gCACjBS,IAAA,CAACH,OAAOI,OAAO,EAAA;;AACb,8BAAAL,GAAA,CAACC,OAAOK,MAAM,EAAA;8BACXR,aAAc,CAAA;wBACbS,EAAI,EAAA,oCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;AAEF,8BAAAR,GAAA,CAACC,OAAOQ,IAAI,EAAA;AACV,oBAAA,QAAA,gBAAAL,IAACM,CAAAA,IAAAA,EAAAA;wBAAKC,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,SAAA;wBAAUC,GAAK,EAAA,CAAA;;0CACjDb,GAACU,CAAAA,IAAAA,EAAAA;gCAAKI,cAAe,EAAA,QAAA;AACnB,gCAAA,QAAA,gBAAAd,GAACe,CAAAA,aAAAA,EAAAA;oCAAcC,KAAM,EAAA,MAAA;oCAAOC,MAAO,EAAA,MAAA;oCAAOC,IAAK,EAAA;;;AAEhDtB,4BAAAA;;;;AAGL,8BAAAQ,IAAA,CAACH,OAAOkB,MAAM,EAAA;;AACZ,sCAAAnB,GAAA,CAACC,OAAOmB,MAAM,EAAA;AACZ,4BAAA,QAAA,gBAAApB,GAACqB,CAAAA,MAAAA,EAAAA;gCAAOL,KAAO,EAAA,KAAA;gCAAOM,OAAS5B,EAAAA,cAAAA;gCAAgB6B,OAAQ,EAAA,UAAA;0CACpDzB,aAAc,CAAA;oCACbS,EAAI,EAAA,8BAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;AAGHX,wBAAAA;;;;;;AAKX;AAEA;;AAEkG,qGAElG,MAAM2B,SAAAA,GAAY,CAACC,MAAAA,iBAA4BzB,GAAC0B,CAAAA,UAAAA,EAAAA;QAAWC,UAAW,EAAA,MAAA;AAAQF,QAAAA,QAAAA,EAAAA;;AAYxEG,MAAAA,uBAAAA,GAA0B,CAAC,EAC/BjC,MAAM,EACND,cAAc,EACdmC,sBAAyB,GAAA,KAAK,EAC9BC,SAAS,EACoB,GAAA;IAC7B,MAAM,EAAEhC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMgC,kBAAkBC,QAAS,CAAA,yBAAA,EAA2B,CAACC,KAAAA,GAAUA,MAAMC,YAAY,CAAA;IACzF,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,kBAAmBC,CAAAA,cAAAA,CAAAA;AACvE,IAAA,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAGC,MAAAA,EAAAA;AAC1B,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;;;AAUpB,IAAA,MAAMC,yBAA4B,GAAA,KAAA;IAElC,MAAM,EACJC,IAAMC,EAAAA,mBAAAA,GAAsB,CAAC,EAC7BC,SAAS,EACTC,KAAK,EACN,GAAGC,iCACF,CAAA;AACEV,QAAAA,KAAAA;AACAW,QAAAA,WAAAA,EAAarB,gBAAgBsB,GAAG,CAAC,CAACC,KAAAA,GAAUA,MAAMC,UAAU,CAAA;QAC5DC,MAAQZ,EAAAA,KAAAA,EAAOa,SAASC,IAAMF,EAAAA;KAEhC,EAAA;AACEG,QAAAA,IAAAA,EAAM,CAACb;AACT,KAAA,CAAA;AAGFc,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIX,KAAO,EAAA;YACTf,kBAAmB,CAAA;gBAAE2B,IAAM,EAAA,QAAA;AAAUC,gBAAAA,OAAAA,EAASzB,cAAeY,CAAAA,KAAAA;AAAO,aAAA,CAAA;AACtE;KACC,EAAA;AAACA,QAAAA,KAAAA;AAAOZ,QAAAA,cAAAA;AAAgBH,QAAAA;AAAmB,KAAA,CAAA;AAE9C,IAAA,IAAIe,KAAO,EAAA;QACT,OAAO,IAAA;AACT;AAEA,IAAA,qBACElD,GAACP,CAAAA,uBAAAA,EAAAA;AACCE,QAAAA,MAAAA,EAAQA,UAAU,CAACsD,SAAAA;QACnBvD,cAAgBA,EAAAA,cAAAA;QAChBE,UACE,gBAAAQ,IAAA,CAAA4D,QAAA,EAAA;;8BACE5D,IAACsB,CAAAA,UAAAA,EAAAA;oBAAWnB,EAAG,EAAA,qBAAA;oBAAsB0D,SAAU,EAAA,QAAA;;AAC5CjB,wBAAAA,mBAAAA,GAAsB,KACrBlD,aACE,CAAA;4BACES,EAAIiC,EAAAA,cAAAA,CAAe,CAAC,qDAAqD,CAAC,CAAA;4BAC1EhC,cACE,EAAA;yBAEJ,EAAA;4BACE0D,CAAG1C,EAAAA,SAAAA;4BACH2C,KAAOnB,EAAAA,mBAAAA;AACPoB,4BAAAA,QAAAA,EAAUrC,gBAAgBsC;AAC5B,yBAAA,CAAA;wBAEHvE,aAAc,CAAA;AACbS,4BAAAA,EAAAA,EAAIiC,cAAe,CAAA,kDAAA,CAAA;4BACnBhC,cAAgB,EAAA;AAClB,yBAAA;;;gBAEDkC,MAAQ4B,EAAAA,aAAAA,IACP,UAAU5B,MAAO4B,CAAAA,aAAa,IAC9B5B,MAAQ4B,EAAAA,aAAAA,CAAcZ,sBACpB1D,GAAC0B,CAAAA,UAAAA,EAAAA;oBAAW6C,SAAU,EAAA,WAAA;oBAAYN,SAAU,EAAA,QAAA;8BACzCnE,aACC,CAAA;AACES,wBAAAA,EAAAA,EAAIiC,cAAe,CAAA,8CAAA,CAAA;wBACnBhC,cACE,EAAA;qBAEJ,EAAA;wBACEgE,EAAIC,EAAAA;AACN,qBAAA;;;;AAMZ5E,QAAAA,SAAAA,gBACEG,GAACqB,CAAAA,MAAAA,EAAAA;YACCL,KAAO,EAAA,KAAA;YACPM,OAASQ,EAAAA,SAAAA;YACTP,OAAQ,EAAA,WAAA;AACRmD,YAAAA,SAAAA,gBAAW1E,GAAC2E,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;YACZC,OAAS/C,EAAAA,sBAAAA;sBAER/B,aAAc,CAAA;gBACbS,EAAI,EAAA,mBAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA;;;AAKV;;;;"}
|
@@ -1,7 +1,10 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import { type UseDragAndDropOptions } from '../../hooks/useDragAndDrop';
|
3
2
|
import { EditFieldFormProps } from './EditFieldForm';
|
4
3
|
import type { EditLayout } from '../../hooks/useDocumentLayout';
|
4
|
+
export declare const SortableItem: ({ id, children }: {
|
5
|
+
id: string;
|
6
|
+
children: React.ReactNode;
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
5
8
|
interface FieldsProps extends Pick<EditLayout, 'metadatas'>, Pick<FieldProps, 'components'> {
|
6
9
|
attributes: {
|
7
10
|
[key: string]: FieldProps['attribute'];
|
@@ -12,9 +15,8 @@ interface FieldsProps extends Pick<EditLayout, 'metadatas'>, Pick<FieldProps, 'c
|
|
12
15
|
declare const Fields: ({ attributes, fieldSizes, components, metadatas }: FieldsProps) => import("react/jsx-runtime").JSX.Element;
|
13
16
|
interface FieldProps extends Pick<EditFieldFormProps, 'name' | 'attribute'> {
|
14
17
|
components: EditLayout['components'];
|
15
|
-
|
16
|
-
|
17
|
-
onRemoveField: React.MouseEventHandler<HTMLButtonElement>;
|
18
|
+
dndId: string;
|
19
|
+
onRemoveField?: React.MouseEventHandler<HTMLButtonElement>;
|
18
20
|
}
|
19
21
|
declare const TEMP_FIELD_NAME = "_TEMP_";
|
20
22
|
export { Fields, TEMP_FIELD_NAME };
|
@@ -7,12 +7,16 @@ interface State {
|
|
7
7
|
confirmDialogIntent: null | 'close' | 'back' | 'navigate' | DocumentMeta;
|
8
8
|
isModalOpen: boolean;
|
9
9
|
hasUnsavedChanges: boolean;
|
10
|
+
fieldToConnect?: string;
|
11
|
+
fieldToConnectUID?: string;
|
10
12
|
}
|
11
13
|
type Action = {
|
12
14
|
type: 'GO_TO_RELATION';
|
13
15
|
payload: {
|
14
16
|
document: DocumentMeta;
|
15
17
|
shouldBypassConfirmation: boolean;
|
18
|
+
fieldToConnect?: string;
|
19
|
+
fieldToConnectUID?: string;
|
16
20
|
};
|
17
21
|
} | {
|
18
22
|
type: 'GO_BACK';
|
@@ -21,6 +25,14 @@ type Action = {
|
|
21
25
|
};
|
22
26
|
} | {
|
23
27
|
type: 'GO_FULL_PAGE';
|
28
|
+
} | {
|
29
|
+
type: 'GO_TO_CREATED_RELATION';
|
30
|
+
payload: {
|
31
|
+
document: DocumentMeta;
|
32
|
+
shouldBypassConfirmation: boolean;
|
33
|
+
fieldToConnect?: string;
|
34
|
+
fieldToConnectUID?: string;
|
35
|
+
};
|
24
36
|
} | {
|
25
37
|
type: 'CANCEL_CONFIRM_DIALOG';
|
26
38
|
} | {
|
@@ -42,12 +54,21 @@ interface RelationModalContextValue {
|
|
42
54
|
currentDocumentMeta: DocumentMeta;
|
43
55
|
currentDocument: ReturnType<UseDocument>;
|
44
56
|
onPreview?: () => void;
|
57
|
+
isCreating: boolean;
|
45
58
|
}
|
46
59
|
declare const useRelationModal: <Selected, ShouldThrow extends boolean = true>(consumerName: string, selector: (value: RelationModalContextValue) => Selected, shouldThrowOnMissingContext?: ShouldThrow | undefined) => ShouldThrow extends true ? Selected : Selected | undefined;
|
47
|
-
|
48
|
-
children: React.ReactNode;
|
60
|
+
type RelationModalRendererProps = {
|
49
61
|
relation: DocumentMeta;
|
50
|
-
|
51
|
-
|
52
|
-
|
62
|
+
children: React.ReactNode;
|
63
|
+
} | {
|
64
|
+
relation?: never;
|
65
|
+
children: (props: {
|
66
|
+
dispatch: (action: Action) => void;
|
67
|
+
}) => React.ReactNode;
|
68
|
+
};
|
69
|
+
/**
|
70
|
+
* Component responsible for rendering its children wrapped in a modal, form and context if needed
|
71
|
+
*/
|
72
|
+
declare const RelationModalRenderer: (props: RelationModalRendererProps) => import("react/jsx-runtime").JSX.Element;
|
73
|
+
export { reducer, RelationModalRenderer, useRelationModal };
|
53
74
|
export type { State, Action };
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
import * as React from 'react';
|
2
2
|
import { Grid } from '@strapi/design-system';
|
3
3
|
import { EditLayout } from '../../../hooks/useDocumentLayout';
|
4
4
|
import type { UseDocument } from '../../../hooks/useDocument';
|
@@ -6,18 +6,18 @@ export declare const RESPONSIVE_CONTAINER_BREAKPOINTS: {
|
|
6
6
|
sm: string;
|
7
7
|
};
|
8
8
|
export declare const ResponsiveGridRoot: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<Omit<import("@strapi/design-system").TransientBoxProps & {
|
9
|
-
children?:
|
10
|
-
} & import("@strapi/design-system/dist/types").AsProp<
|
9
|
+
children?: React.ReactNode;
|
10
|
+
} & import("@strapi/design-system/dist/types").AsProp<React.ElementType<any, keyof React.JSX.IntrinsicElements>> & Omit<Omit<any, "ref">, "children" | keyof import("@strapi/design-system/dist/types").AsProp<C> | keyof import("@strapi/design-system").TransientBoxProps> & {
|
11
11
|
ref?: any;
|
12
12
|
} & {
|
13
13
|
gridCols?: number | undefined;
|
14
14
|
gap?: import("@strapi/design-system/dist/helpers/handleResponsiveValues").ResponsiveProperty<import("@strapi/design-system/dist/types").DefaultThemeOrCSSProp<"spaces", "gap">>;
|
15
15
|
}, "ref"> & {
|
16
16
|
ref?: any;
|
17
|
-
}, never>> & Omit<Grid.Component<"div">, keyof
|
17
|
+
}, never>> & Omit<Grid.Component<"div">, keyof React.Component<any, {}, any>>;
|
18
18
|
export declare const ResponsiveGridItem: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<Omit<import("@strapi/design-system").TransientBoxProps & {
|
19
|
-
children?:
|
20
|
-
} & import("@strapi/design-system/dist/types").AsProp<
|
19
|
+
children?: React.ReactNode;
|
20
|
+
} & import("@strapi/design-system/dist/types").AsProp<React.ElementType<any, keyof React.JSX.IntrinsicElements>> & Omit<Omit<any, "ref">, "children" | keyof import("@strapi/design-system/dist/types").AsProp<C> | keyof import("@strapi/design-system").TransientBoxProps> & {
|
21
21
|
ref?: any;
|
22
22
|
} & import("@strapi/design-system").TransientFlexProps & {
|
23
23
|
col?: number | undefined;
|
@@ -28,10 +28,9 @@ export declare const ResponsiveGridItem: import("styled-components").IStyledComp
|
|
28
28
|
ref?: any;
|
29
29
|
}, {
|
30
30
|
col: number;
|
31
|
-
}>> & Omit<Grid.ItemComponent<"div">, keyof
|
31
|
+
}>> & Omit<Grid.ItemComponent<"div">, keyof React.Component<any, {}, any>>;
|
32
32
|
interface FormLayoutProps extends Pick<EditLayout, 'layout'> {
|
33
33
|
hasBackground?: boolean;
|
34
|
-
model?: string;
|
35
34
|
document: ReturnType<UseDocument>;
|
36
35
|
}
|
37
36
|
declare const FormLayout: ({ layout, document, hasBackground }: FormLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
@@ -256,7 +256,8 @@ var en = {
|
|
256
256
|
"preview.tabs.label": "Preview status",
|
257
257
|
"preview.content.close-editor": "Close editor",
|
258
258
|
"preview.content.open-editor": "Open editor",
|
259
|
-
"relation.
|
259
|
+
"relation.create": "Create a relation",
|
260
|
+
"relation.add": "Add or create a relation",
|
260
261
|
"relation.disconnect": "Remove",
|
261
262
|
"relation.error-adding-relation": "An error occurred while trying to add the relation.",
|
262
263
|
"relation.isLoading": "Relations are loading",
|
@@ -305,6 +306,7 @@ var en = {
|
|
305
306
|
"history.restore.success.message": "A past version of the content was restored.",
|
306
307
|
"history.restore.error.message": "Could not restore version.",
|
307
308
|
"validation.error": "There are validation errors in your document. Please fix them before saving.",
|
309
|
+
"validation.error.unreadable-required-field": "Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.",
|
308
310
|
"bulk-publish.edit": "Edit",
|
309
311
|
"widget.last-edited.title": "Last edited entries",
|
310
312
|
"widget.last-edited.single-type": "Single-Type",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -252,7 +252,8 @@ var en = {
|
|
252
252
|
"preview.tabs.label": "Preview status",
|
253
253
|
"preview.content.close-editor": "Close editor",
|
254
254
|
"preview.content.open-editor": "Open editor",
|
255
|
-
"relation.
|
255
|
+
"relation.create": "Create a relation",
|
256
|
+
"relation.add": "Add or create a relation",
|
256
257
|
"relation.disconnect": "Remove",
|
257
258
|
"relation.error-adding-relation": "An error occurred while trying to add the relation.",
|
258
259
|
"relation.isLoading": "Relations are loading",
|
@@ -301,6 +302,7 @@ var en = {
|
|
301
302
|
"history.restore.success.message": "A past version of the content was restored.",
|
302
303
|
"history.restore.error.message": "Could not restore version.",
|
303
304
|
"validation.error": "There are validation errors in your document. Please fix them before saving.",
|
305
|
+
"validation.error.unreadable-required-field": "Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.",
|
304
306
|
"bulk-publish.edit": "Edit",
|
305
307
|
"widget.last-edited.title": "Last edited entries",
|
306
308
|
"widget.last-edited.single-type": "Single-Type",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -64,12 +64,15 @@ const createLifecyclesService = ({ strapi: strapi1 })=>{
|
|
64
64
|
const serviceUtils = utils.createServiceUtils({
|
65
65
|
strapi: strapi1
|
66
66
|
});
|
67
|
+
const { persistTablesWithPrefix } = strapi1.service('admin::persist-tables');
|
67
68
|
return {
|
68
69
|
async bootstrap () {
|
69
70
|
// Prevent initializing the service twice
|
70
71
|
if (state.isInitialized) {
|
71
72
|
return;
|
72
73
|
}
|
74
|
+
// Avoid data loss in case users temporarily don't have a license
|
75
|
+
await persistTablesWithPrefix('strapi_history_versions');
|
73
76
|
strapi1.documents.use(async (context, next)=>{
|
74
77
|
const result = await next();
|
75
78
|
if (!shouldCreateHistoryVersion(context)) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lifecycles.js","sources":["../../../../server/src/history/services/lifecycles.ts"],"sourcesContent":["import type { Core, Modules, UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\nimport { omit, castArray } from 'lodash/fp';\n\nimport { scheduleJob } from 'node-schedule';\n\nimport { getService } from '../utils';\nimport { FIELDS_TO_IGNORE, HISTORY_VERSION_UID } from '../constants';\n\nimport type { CreateHistoryVersion } from '../../../../shared/contracts/history-versions';\nimport { createServiceUtils } from './utils';\n\n/**\n * Filters out actions that should not create a history version.\n */\nconst shouldCreateHistoryVersion = (\n context: Modules.Documents.Middleware.Context\n): context is Modules.Documents.Middleware.Context & {\n action: 'create' | 'update' | 'clone' | 'publish' | 'unpublish' | 'discardDraft';\n contentType: UID.CollectionType;\n} => {\n // Ignore requests that are not related to the content manager\n if (!strapi.requestContext.get()?.request.url.startsWith('/content-manager')) {\n return false;\n }\n\n // NOTE: cannot do type narrowing with array includes\n if (\n context.action !== 'create' &&\n context.action !== 'update' &&\n context.action !== 'clone' &&\n context.action !== 'publish' &&\n context.action !== 'unpublish' &&\n context.action !== 'discardDraft'\n ) {\n return false;\n }\n\n /**\n * When a document is published, the draft version of the document is also updated.\n * It creates confusion for users because they see two history versions each publish action.\n * To avoid this, we silence the update action during a publish request,\n * so that they only see the published version of the document in the history.\n */\n if (\n context.action === 'update' &&\n strapi.requestContext.get()?.request.url.endsWith('/actions/publish')\n ) {\n return false;\n }\n\n // Ignore content types not created by the user\n if (!context.contentType.uid.startsWith('api::')) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Returns the content type schema (and its components schemas).\n * Used to determine if changes were made in the content type builder since a history version was created.\n * And therefore which fields can be restored and which cannot.\n */\nconst getSchemas = (uid: UID.CollectionType) => {\n const attributesSchema = strapi.getModel(uid).attributes;\n\n // TODO: Handle nested components\n const componentsSchemas = Object.keys(attributesSchema).reduce(\n (currentComponentSchemas, key) => {\n const fieldSchema = attributesSchema[key];\n\n if (fieldSchema.type === 'component') {\n const componentSchema = strapi.getModel(fieldSchema.component).attributes;\n return {\n ...currentComponentSchemas,\n [fieldSchema.component]: componentSchema,\n };\n }\n\n // Ignore anything that's not a component\n return currentComponentSchemas;\n },\n {} as CreateHistoryVersion['componentsSchemas']\n );\n\n return {\n schema: omit(FIELDS_TO_IGNORE, attributesSchema) as CreateHistoryVersion['schema'],\n componentsSchemas,\n };\n};\n\nconst createLifecyclesService = ({ strapi }: { strapi: Core.Strapi }) => {\n const state: {\n deleteExpiredJob: ReturnType<typeof scheduleJob> | null;\n isInitialized: boolean;\n } = {\n deleteExpiredJob: null,\n isInitialized: false,\n };\n\n const serviceUtils = createServiceUtils({ strapi });\n\n return {\n async bootstrap() {\n // Prevent initializing the service twice\n if (state.isInitialized) {\n return;\n }\n\n strapi.documents.use(async (context, next) => {\n const result = (await next()) as any;\n\n if (!shouldCreateHistoryVersion(context)) {\n return result;\n }\n\n // On create/clone actions, the documentId is not available before creating the action is executed\n const documentId =\n context.action === 'create' || context.action === 'clone'\n ? result.documentId\n : context.params.documentId;\n\n // Apply default locale if not available in the request\n const defaultLocale = await serviceUtils.getDefaultLocale();\n const locales = castArray(context.params?.locale || defaultLocale);\n if (!locales.length) {\n return result;\n }\n\n // All schemas related to the content type\n const uid = context.contentType.uid;\n const schemas = getSchemas(uid);\n const model = strapi.getModel(uid);\n\n const isLocalizedContentType = serviceUtils.isLocalizedContentType(model);\n\n // Find all affected entries\n const localeEntries = await strapi.db.query(uid).findMany({\n where: {\n documentId,\n ...(isLocalizedContentType ? { locale: { $in: locales } } : {}),\n ...(contentTypes.hasDraftAndPublish(strapi.contentTypes[uid])\n ? { publishedAt: null }\n : {}),\n },\n populate: serviceUtils.getDeepPopulate(uid, true /* use database syntax */),\n });\n\n await strapi.db.transaction(async ({ onCommit }) => {\n // .createVersion() is executed asynchronously,\n // onCommit prevents creating a history version\n // when the transaction has already been committed\n onCommit(async () => {\n for (const entry of localeEntries) {\n const status = await serviceUtils.getVersionStatus(uid, entry);\n\n await getService(strapi, 'history').createVersion({\n contentType: uid,\n data: omit(FIELDS_TO_IGNORE, entry) as Modules.Documents.AnyDocument,\n relatedDocumentId: documentId,\n locale: entry.locale,\n status,\n ...schemas,\n });\n }\n });\n });\n\n return result;\n });\n\n // Schedule a job to delete expired history versions every day at midnight\n state.deleteExpiredJob = scheduleJob('historyDaily', '0 0 * * *', () => {\n const retentionDaysInMilliseconds = serviceUtils.getRetentionDays() * 24 * 60 * 60 * 1000;\n const expirationDate = new Date(Date.now() - retentionDaysInMilliseconds);\n\n strapi.db\n .query(HISTORY_VERSION_UID)\n .deleteMany({\n where: {\n created_at: {\n $lt: expirationDate,\n },\n },\n })\n .catch((error) => {\n if (error instanceof Error) {\n strapi.log.error('Error deleting expired history versions', error.message);\n }\n });\n });\n\n state.isInitialized = true;\n },\n\n async destroy() {\n if (state.deleteExpiredJob) {\n state.deleteExpiredJob.cancel();\n }\n },\n };\n};\n\nexport { createLifecyclesService };\n"],"names":["shouldCreateHistoryVersion","context","strapi","requestContext","get","request","url","startsWith","action","endsWith","contentType","uid","getSchemas","attributesSchema","getModel","attributes","componentsSchemas","Object","keys","reduce","currentComponentSchemas","key","fieldSchema","type","componentSchema","component","schema","omit","FIELDS_TO_IGNORE","createLifecyclesService","state","deleteExpiredJob","isInitialized","serviceUtils","createServiceUtils","bootstrap","documents","use","next","result","documentId","params","defaultLocale","getDefaultLocale","locales","castArray","locale","length","schemas","model","isLocalizedContentType","localeEntries","db","query","findMany","where","$in","contentTypes","hasDraftAndPublish","publishedAt","populate","getDeepPopulate","transaction","onCommit","entry","status","getVersionStatus","getService","createVersion","data","relatedDocumentId","scheduleJob","retentionDaysInMilliseconds","getRetentionDays","expirationDate","Date","now","HISTORY_VERSION_UID","deleteMany","created_at","$lt","catch","error","Error","log","message","destroy","cancel"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"lifecycles.js","sources":["../../../../server/src/history/services/lifecycles.ts"],"sourcesContent":["import type { Core, Modules, UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\nimport { omit, castArray } from 'lodash/fp';\n\nimport { scheduleJob } from 'node-schedule';\n\nimport { getService } from '../utils';\nimport { FIELDS_TO_IGNORE, HISTORY_VERSION_UID } from '../constants';\n\nimport type { CreateHistoryVersion } from '../../../../shared/contracts/history-versions';\nimport { createServiceUtils } from './utils';\n\n/**\n * Filters out actions that should not create a history version.\n */\nconst shouldCreateHistoryVersion = (\n context: Modules.Documents.Middleware.Context\n): context is Modules.Documents.Middleware.Context & {\n action: 'create' | 'update' | 'clone' | 'publish' | 'unpublish' | 'discardDraft';\n contentType: UID.CollectionType;\n} => {\n // Ignore requests that are not related to the content manager\n if (!strapi.requestContext.get()?.request.url.startsWith('/content-manager')) {\n return false;\n }\n\n // NOTE: cannot do type narrowing with array includes\n if (\n context.action !== 'create' &&\n context.action !== 'update' &&\n context.action !== 'clone' &&\n context.action !== 'publish' &&\n context.action !== 'unpublish' &&\n context.action !== 'discardDraft'\n ) {\n return false;\n }\n\n /**\n * When a document is published, the draft version of the document is also updated.\n * It creates confusion for users because they see two history versions each publish action.\n * To avoid this, we silence the update action during a publish request,\n * so that they only see the published version of the document in the history.\n */\n if (\n context.action === 'update' &&\n strapi.requestContext.get()?.request.url.endsWith('/actions/publish')\n ) {\n return false;\n }\n\n // Ignore content types not created by the user\n if (!context.contentType.uid.startsWith('api::')) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Returns the content type schema (and its components schemas).\n * Used to determine if changes were made in the content type builder since a history version was created.\n * And therefore which fields can be restored and which cannot.\n */\nconst getSchemas = (uid: UID.CollectionType) => {\n const attributesSchema = strapi.getModel(uid).attributes;\n\n // TODO: Handle nested components\n const componentsSchemas = Object.keys(attributesSchema).reduce(\n (currentComponentSchemas, key) => {\n const fieldSchema = attributesSchema[key];\n\n if (fieldSchema.type === 'component') {\n const componentSchema = strapi.getModel(fieldSchema.component).attributes;\n return {\n ...currentComponentSchemas,\n [fieldSchema.component]: componentSchema,\n };\n }\n\n // Ignore anything that's not a component\n return currentComponentSchemas;\n },\n {} as CreateHistoryVersion['componentsSchemas']\n );\n\n return {\n schema: omit(FIELDS_TO_IGNORE, attributesSchema) as CreateHistoryVersion['schema'],\n componentsSchemas,\n };\n};\n\nconst createLifecyclesService = ({ strapi }: { strapi: Core.Strapi }) => {\n const state: {\n deleteExpiredJob: ReturnType<typeof scheduleJob> | null;\n isInitialized: boolean;\n } = {\n deleteExpiredJob: null,\n isInitialized: false,\n };\n\n const serviceUtils = createServiceUtils({ strapi });\n const { persistTablesWithPrefix } = strapi.service('admin::persist-tables');\n\n return {\n async bootstrap() {\n // Prevent initializing the service twice\n if (state.isInitialized) {\n return;\n }\n\n // Avoid data loss in case users temporarily don't have a license\n await persistTablesWithPrefix('strapi_history_versions');\n\n strapi.documents.use(async (context, next) => {\n const result = (await next()) as any;\n\n if (!shouldCreateHistoryVersion(context)) {\n return result;\n }\n\n // On create/clone actions, the documentId is not available before creating the action is executed\n const documentId =\n context.action === 'create' || context.action === 'clone'\n ? result.documentId\n : context.params.documentId;\n\n // Apply default locale if not available in the request\n const defaultLocale = await serviceUtils.getDefaultLocale();\n const locales = castArray(context.params?.locale || defaultLocale);\n if (!locales.length) {\n return result;\n }\n\n // All schemas related to the content type\n const uid = context.contentType.uid;\n const schemas = getSchemas(uid);\n const model = strapi.getModel(uid);\n\n const isLocalizedContentType = serviceUtils.isLocalizedContentType(model);\n\n // Find all affected entries\n const localeEntries = await strapi.db.query(uid).findMany({\n where: {\n documentId,\n ...(isLocalizedContentType ? { locale: { $in: locales } } : {}),\n ...(contentTypes.hasDraftAndPublish(strapi.contentTypes[uid])\n ? { publishedAt: null }\n : {}),\n },\n populate: serviceUtils.getDeepPopulate(uid, true /* use database syntax */),\n });\n\n await strapi.db.transaction(async ({ onCommit }) => {\n // .createVersion() is executed asynchronously,\n // onCommit prevents creating a history version\n // when the transaction has already been committed\n onCommit(async () => {\n for (const entry of localeEntries) {\n const status = await serviceUtils.getVersionStatus(uid, entry);\n\n await getService(strapi, 'history').createVersion({\n contentType: uid,\n data: omit(FIELDS_TO_IGNORE, entry) as Modules.Documents.AnyDocument,\n relatedDocumentId: documentId,\n locale: entry.locale,\n status,\n ...schemas,\n });\n }\n });\n });\n\n return result;\n });\n\n // Schedule a job to delete expired history versions every day at midnight\n state.deleteExpiredJob = scheduleJob('historyDaily', '0 0 * * *', () => {\n const retentionDaysInMilliseconds = serviceUtils.getRetentionDays() * 24 * 60 * 60 * 1000;\n const expirationDate = new Date(Date.now() - retentionDaysInMilliseconds);\n\n strapi.db\n .query(HISTORY_VERSION_UID)\n .deleteMany({\n where: {\n created_at: {\n $lt: expirationDate,\n },\n },\n })\n .catch((error) => {\n if (error instanceof Error) {\n strapi.log.error('Error deleting expired history versions', error.message);\n }\n });\n });\n\n state.isInitialized = true;\n },\n\n async destroy() {\n if (state.deleteExpiredJob) {\n state.deleteExpiredJob.cancel();\n }\n },\n };\n};\n\nexport { createLifecyclesService };\n"],"names":["shouldCreateHistoryVersion","context","strapi","requestContext","get","request","url","startsWith","action","endsWith","contentType","uid","getSchemas","attributesSchema","getModel","attributes","componentsSchemas","Object","keys","reduce","currentComponentSchemas","key","fieldSchema","type","componentSchema","component","schema","omit","FIELDS_TO_IGNORE","createLifecyclesService","state","deleteExpiredJob","isInitialized","serviceUtils","createServiceUtils","persistTablesWithPrefix","service","bootstrap","documents","use","next","result","documentId","params","defaultLocale","getDefaultLocale","locales","castArray","locale","length","schemas","model","isLocalizedContentType","localeEntries","db","query","findMany","where","$in","contentTypes","hasDraftAndPublish","publishedAt","populate","getDeepPopulate","transaction","onCommit","entry","status","getVersionStatus","getService","createVersion","data","relatedDocumentId","scheduleJob","retentionDaysInMilliseconds","getRetentionDays","expirationDate","Date","now","HISTORY_VERSION_UID","deleteMany","created_at","$lt","catch","error","Error","log","message","destroy","cancel"],"mappings":"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"}
|