@strapi/content-manager 5.49.0 → 5.50.0
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/layout.js +3 -1
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +5 -3
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +161 -72
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +161 -73
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +6 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/draftRelationCounts.js +117 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.js.map +1 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs +109 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs.map +1 -0
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js +2 -2
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +2 -2
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js +38 -11
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +39 -12
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +9 -15
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +10 -15
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/src/components/InjectionZone.d.ts +1 -2
- package/dist/admin/src/content-manager.d.ts +15 -15
- package/dist/admin/src/history/services/historyVersion.d.ts +2 -2
- package/dist/admin/src/hooks/useContentTypeSchema.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +8 -9
- package/dist/admin/src/hooks/useDocumentLayout.d.ts +3 -3
- package/dist/admin/src/hooks/useDragAndDrop.d.ts +4 -4
- package/dist/admin/src/hooks/useKeyboardDragAndDrop.d.ts +1 -1
- package/dist/admin/src/hooks/usePersistentQueryParams.d.ts +0 -1
- package/dist/admin/src/modules/app.d.ts +5 -5
- package/dist/admin/src/pages/EditView/EditViewPage.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +12 -1
- package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +4 -4
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +19 -20
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +12 -12
- package/dist/admin/src/pages/EditView/utils/draftRelationCounts.d.ts +26 -0
- package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +1 -1
- package/dist/admin/src/pages/ListView/components/Filters.d.ts +1 -1
- package/dist/admin/src/pages/formatComponentConfigurationEditLayout.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +1 -7
- package/dist/admin/src/preview/utils/getSendMessage.d.ts +0 -1
- package/dist/admin/src/services/documents.d.ts +30 -70
- package/dist/admin/src/services/relations.d.ts +6 -20
- package/dist/admin/src/services/uid.d.ts +5 -5
- package/dist/admin/src/utils/layouts/normalizeContentManagerLayout.d.ts +4 -4
- package/dist/admin/src/utils/users.d.ts +1 -1
- package/dist/admin/src/utils/validation.d.ts +1 -1
- package/dist/admin/translations/en.json.js +5 -2
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +5 -2
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +262 -87
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +262 -87
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +2 -2
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +2 -2
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/single-types.js +2 -2
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +2 -2
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/preview/controllers/preview.js +9 -0
- package/dist/server/preview/controllers/preview.js.map +1 -1
- package/dist/server/preview/controllers/preview.mjs +9 -0
- package/dist/server/preview/controllers/preview.mjs.map +1 -1
- package/dist/server/preview/controllers/previewScript.js +1450 -0
- package/dist/server/preview/routes/preview.js +11 -0
- package/dist/server/preview/routes/preview.js.map +1 -1
- package/dist/server/preview/routes/preview.mjs +11 -0
- package/dist/server/preview/routes/preview.mjs.map +1 -1
- package/dist/server/services/document-manager.js +13 -19
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +13 -19
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/utils/draft-relations.js +9 -0
- package/dist/server/services/utils/draft-relations.js.map +1 -0
- package/dist/server/services/utils/draft-relations.mjs +7 -0
- package/dist/server/services/utils/draft-relations.mjs.map +1 -0
- package/dist/server/services/utils/draft.js +118 -25
- package/dist/server/services/utils/draft.js.map +1 -1
- package/dist/server/services/utils/draft.mjs +118 -25
- package/dist/server/services/utils/draft.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +15 -1
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +15 -1
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/clone.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +5 -5
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/index.d.ts +3 -3
- package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/model-configuration.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/relations.d.ts +2 -2
- package/dist/server/src/history/controllers/history-version.d.ts +1 -7
- package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
- package/dist/server/src/history/controllers/index.d.ts +2 -1
- package/dist/server/src/history/controllers/index.d.ts.map +1 -1
- package/dist/server/src/history/controllers/validation/history-version.d.ts +1 -1
- package/dist/server/src/history/services/history.d.ts +0 -2
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +3 -3
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/history/utils.d.ts +1 -18
- package/dist/server/src/history/utils.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +0 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/index.d.ts +2 -1
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -1
- package/dist/server/src/homepage/index.d.ts +4 -8
- package/dist/server/src/homepage/index.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage-query-utils.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts +3 -4
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/services/index.d.ts +4 -8
- package/dist/server/src/homepage/services/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +79 -85
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/collection-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/single-type-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/permissions.d.ts +1 -1
- package/dist/server/src/mcp/permissions.d.ts.map +1 -1
- package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/mcp/sanitizers/shape-relations.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/blocks-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/data-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/sort-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/utils.d.ts.map +1 -1
- package/dist/server/src/middlewares/routing.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/index.d.ts +2 -1
- package/dist/server/src/preview/controllers/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/preview.d.ts +5 -0
- package/dist/server/src/preview/controllers/preview.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/validation/preview.d.ts +1 -2
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
- package/dist/server/src/preview/routes/preview.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -1
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -16
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +2 -2
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/configuration.d.ts.map +1 -1
- package/dist/server/src/services/content-types.d.ts.map +1 -1
- package/dist/server/src/services/data-mapper.d.ts +5 -5
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts +14 -14
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +6 -6
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/field-sizes.d.ts +2 -2
- package/dist/server/src/services/field-sizes.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +78 -84
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts +12 -31
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/populate-builder.d.ts +4 -4
- package/dist/server/src/services/populate-builder.d.ts.map +1 -1
- package/dist/server/src/services/uid.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/attributes.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
- package/dist/server/src/services/utils/count.d.ts.map +1 -1
- package/dist/server/src/services/utils/draft-relations.d.ts +19 -0
- package/dist/server/src/services/utils/draft-relations.d.ts.map +1 -0
- package/dist/server/src/services/utils/draft.d.ts +8 -7
- package/dist/server/src/services/utils/draft.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/server/src/services/utils/store.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +1 -1
- package/dist/server/src/validation/zod.d.ts +1 -1
- package/dist/server/src/validation/zod.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +4 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/single-types.d.ts +4 -1
- package/dist/shared/contracts/single-types.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/admin/preview/utils/previewScript.js +0 -1068
- package/dist/admin/preview/utils/previewScript.js.map +0 -1
- package/dist/admin/preview/utils/previewScript.mjs +0 -1066
- package/dist/admin/preview/utils/previewScript.mjs.map +0 -1
- package/dist/admin/src/preview/utils/previewScript.d.ts +0 -32
package/dist/admin/layout.js
CHANGED
|
@@ -96,7 +96,9 @@ var translations = require('./utils/translations.js');
|
|
|
96
96
|
/*#__PURE__*/ jsxRuntime.jsx(DragLayer.DragLayer, {
|
|
97
97
|
renderItem: renderDraglayerItem
|
|
98
98
|
}),
|
|
99
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
99
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.LazyOutlet, {
|
|
100
|
+
nested: true
|
|
101
|
+
})
|
|
100
102
|
]
|
|
101
103
|
})
|
|
102
104
|
]
|
package/dist/admin/layout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts, SubNav, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate,
|
|
1
|
+
{"version":3,"file":"layout.js","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts, SubNav, useIsMobile, LazyOutlet } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n const isMobile = useIsMobile();\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n // On /content-manager base route\n if (!contentTypeMatch && authorisedModels.length > 0) {\n // On desktop: redirect to first collection type\n if (!isMobile) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n // On mobile: show navigation page\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <SubNav.PageWrapper>\n <LeftMenu isFullPage />\n </SubNav.PageWrapper>\n </>\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <LazyOutlet nested />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isMobile","useIsMobile","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","SubNav","PageWrapper","LeftMenu","isFullPage","Layouts","Root","sideNav","DragLayer","renderItem","renderDraglayerItem","LazyOutlet","nested","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":"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"}
|
package/dist/admin/layout.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import 'react';
|
|
3
|
-
import { useIsMobile, Page, SubNav, Layouts } from '@strapi/admin/strapi-admin';
|
|
3
|
+
import { useIsMobile, Page, SubNav, Layouts, LazyOutlet } from '@strapi/admin/strapi-admin';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
|
-
import { useMatch, useLocation, Navigate
|
|
5
|
+
import { useMatch, useLocation, Navigate } from 'react-router-dom';
|
|
6
6
|
import { DragLayer } from './components/DragLayer.mjs';
|
|
7
7
|
import { CardDragPreview } from './components/DragPreviews/CardDragPreview.mjs';
|
|
8
8
|
import { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview.mjs';
|
|
@@ -94,7 +94,9 @@ import { getTranslation } from './utils/translations.mjs';
|
|
|
94
94
|
/*#__PURE__*/ jsx(DragLayer, {
|
|
95
95
|
renderItem: renderDraglayerItem
|
|
96
96
|
}),
|
|
97
|
-
/*#__PURE__*/ jsx(
|
|
97
|
+
/*#__PURE__*/ jsx(LazyOutlet, {
|
|
98
|
+
nested: true
|
|
99
|
+
})
|
|
98
100
|
]
|
|
99
101
|
})
|
|
100
102
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.mjs","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts, SubNav, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate,
|
|
1
|
+
{"version":3,"file":"layout.mjs","sources":["../../admin/src/layout.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, Layouts, SubNav, useIsMobile, LazyOutlet } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n const isMobile = useIsMobile();\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n // On /content-manager base route\n if (!contentTypeMatch && authorisedModels.length > 0) {\n // On desktop: redirect to first collection type\n if (!isMobile) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n // On mobile: show navigation page\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <SubNav.PageWrapper>\n <LeftMenu isFullPage />\n </SubNav.PageWrapper>\n </>\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <LazyOutlet nested />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["Layout","contentTypeMatch","useMatch","isMobile","useIsMobile","isLoading","collectionTypeLinks","models","singleTypeLinks","useContentManagerInitData","authorisedModels","sort","a","b","title","localeCompare","pathname","useLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Page","Title","id","getTranslation","defaultMessage","Loading","supportedModelsToDisplay","filter","isDisplayed","length","Navigate","to","search","replace","SubNav","PageWrapper","LeftMenu","isFullPage","Layouts","Root","sideNav","DragLayer","renderItem","renderDraglayerItem","LazyOutlet","nested","type","item","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","label","COMPONENT","DYNAMIC_ZONE","ComponentDragPreview","displayedValue","RELATION","RelationDragPreview"],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ var documents = require('../../../services/documents.js');
|
|
|
23
23
|
var api = require('../../../utils/api.js');
|
|
24
24
|
var translations = require('../../../utils/translations.js');
|
|
25
25
|
var data = require('../utils/data.js');
|
|
26
|
+
var draftRelationCounts = require('../utils/draftRelationCounts.js');
|
|
26
27
|
var keyboardShortcuts = require('../utils/keyboardShortcuts.js');
|
|
27
28
|
var RelationModal = require('./FormInputs/Relations/RelationModal.js');
|
|
28
29
|
|
|
@@ -52,6 +53,10 @@ var get__default = /*#__PURE__*/_interopDefault(get);
|
|
|
52
53
|
var merge__default = /*#__PURE__*/_interopDefault(merge);
|
|
53
54
|
var set__default = /*#__PURE__*/_interopDefault(set);
|
|
54
55
|
|
|
56
|
+
const publishConfirmDialogOpeners = new Map();
|
|
57
|
+
const openPublishConfirmDialog = (scope)=>{
|
|
58
|
+
publishConfirmDialogOpeners.get(scope)?.();
|
|
59
|
+
};
|
|
55
60
|
const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
|
|
56
61
|
/*
|
|
57
62
|
* Check if the fieldToConnect is already present in the parentDataToUpdate.
|
|
@@ -179,6 +184,24 @@ const DocumentActions = ({ actions })=>{
|
|
|
179
184
|
const DocumentActionButton = ({ buttonType = 'button', ...action })=>{
|
|
180
185
|
const [dialogId, setDialogId] = React__namespace.useState(null);
|
|
181
186
|
const { toggleNotification } = strapiAdmin.useNotification();
|
|
187
|
+
React__namespace.useEffect(()=>{
|
|
188
|
+
const scope = action.publishConfirmScope;
|
|
189
|
+
if (action.type !== 'publish' || !action.dialog || !scope) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const open = ()=>setDialogId(action.id);
|
|
193
|
+
publishConfirmDialogOpeners.set(scope, open);
|
|
194
|
+
return ()=>{
|
|
195
|
+
if (publishConfirmDialogOpeners.get(scope) === open) {
|
|
196
|
+
publishConfirmDialogOpeners.delete(scope);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
}, [
|
|
200
|
+
action.type,
|
|
201
|
+
action.dialog,
|
|
202
|
+
action.id,
|
|
203
|
+
action.publishConfirmScope
|
|
204
|
+
]);
|
|
182
205
|
const handleClick = (action)=>async (e)=>{
|
|
183
206
|
const { onClick = ()=>false, dialog, id } = action;
|
|
184
207
|
const muteDialog = await onClick(e);
|
|
@@ -329,7 +352,7 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
329
352
|
]
|
|
330
353
|
});
|
|
331
354
|
};
|
|
332
|
-
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
|
|
355
|
+
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, bodyIcon, confirmLabel, isOpen, variant = 'secondary', loading })=>{
|
|
333
356
|
const { formatMessage } = reactIntl.useIntl();
|
|
334
357
|
const handleClose = async ()=>{
|
|
335
358
|
if (onCancel) {
|
|
@@ -343,6 +366,28 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
343
366
|
}
|
|
344
367
|
onClose();
|
|
345
368
|
};
|
|
369
|
+
const dialogBody = bodyIcon ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
370
|
+
direction: "column",
|
|
371
|
+
alignItems: "stretch",
|
|
372
|
+
gap: 2,
|
|
373
|
+
children: [
|
|
374
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
375
|
+
justifyContent: "center",
|
|
376
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Icons.WarningCircle, {
|
|
377
|
+
width: "24px",
|
|
378
|
+
height: "24px",
|
|
379
|
+
fill: bodyIcon === 'danger' ? 'danger600' : 'primary600'
|
|
380
|
+
})
|
|
381
|
+
}),
|
|
382
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
383
|
+
id: "confirm-description",
|
|
384
|
+
tag: "p",
|
|
385
|
+
variant: "omega",
|
|
386
|
+
textAlign: "center",
|
|
387
|
+
children: content
|
|
388
|
+
})
|
|
389
|
+
]
|
|
390
|
+
}) : content;
|
|
346
391
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
|
|
347
392
|
open: isOpen,
|
|
348
393
|
onOpenChange: handleClose,
|
|
@@ -352,7 +397,7 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
352
397
|
children: title
|
|
353
398
|
}),
|
|
354
399
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Body, {
|
|
355
|
-
children:
|
|
400
|
+
children: dialogBody
|
|
356
401
|
}),
|
|
357
402
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Footer, {
|
|
358
403
|
children: [
|
|
@@ -371,7 +416,7 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
371
416
|
variant: variant,
|
|
372
417
|
fullWidth: true,
|
|
373
418
|
loading: loading,
|
|
374
|
-
children: formatMessage({
|
|
419
|
+
children: confirmLabel ?? formatMessage({
|
|
375
420
|
id: 'app.components.Button.confirm',
|
|
376
421
|
defaultMessage: 'Confirm'
|
|
377
422
|
})
|
|
@@ -439,10 +484,11 @@ const transformData = (data)=>{
|
|
|
439
484
|
canReadFields
|
|
440
485
|
}));
|
|
441
486
|
const { publish, isLoading } = useDocumentActions.useDocumentActions();
|
|
442
|
-
const onPreview = Preview.usePreviewContext('
|
|
443
|
-
const [countDraftRelations, {
|
|
444
|
-
const [
|
|
445
|
-
const [
|
|
487
|
+
const onPreview = Preview.usePreviewContext('PublishAction', (state)=>state.onPreview, false);
|
|
488
|
+
const [countDraftRelations, { isError: isErrorDraftRelations }] = documents.useGetDraftRelationCountQuery();
|
|
489
|
+
const [localDraftRelationCounts, setLocalDraftRelationCounts] = React__namespace.useState(draftRelationCounts.EMPTY_DRAFT_RELATION_COUNTS);
|
|
490
|
+
const [serverDraftRelationCounts, setServerDraftRelationCounts] = React__namespace.useState(draftRelationCounts.EMPTY_DRAFT_RELATION_COUNTS);
|
|
491
|
+
const [isFetchingDraftRelations, setIsFetchingDraftRelations] = React__namespace.useState(false);
|
|
446
492
|
const [{ rawQuery }] = strapiAdmin.useQueryParams();
|
|
447
493
|
const modified = strapiAdmin.useForm('PublishAction', ({ modified })=>modified);
|
|
448
494
|
const setSubmitting = strapiAdmin.useForm('PublishAction', ({ setSubmitting })=>setSubmitting);
|
|
@@ -456,6 +502,8 @@ const transformData = (data)=>{
|
|
|
456
502
|
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
457
503
|
const relationContext = RelationModal.useRelationModal('PublishAction', ()=>true, false);
|
|
458
504
|
const fromRelationModal = relationContext != undefined;
|
|
505
|
+
const isRelationModalOpen = RelationModal.useRelationModal('PublishAction', (state)=>state.state.isModalOpen, false);
|
|
506
|
+
const publishConfirmScope = fromRelationModal ? 'relation-modal' : onPreview ? 'preview' : 'panel';
|
|
459
507
|
const dispatch = RelationModal.useRelationModal('PublishAction', (state)=>state.dispatch);
|
|
460
508
|
const fieldToConnect = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
|
|
461
509
|
const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
@@ -482,49 +530,19 @@ const transformData = (data)=>{
|
|
|
482
530
|
formatMessage
|
|
483
531
|
]);
|
|
484
532
|
React__namespace.useEffect(()=>{
|
|
485
|
-
|
|
486
|
-
/**
|
|
487
|
-
* Extracts draft relations from the provided data object.
|
|
488
|
-
* It checks for a connect array of relations.
|
|
489
|
-
* If a relation has a status of 'draft', its id is added to the localDraftRelations set.
|
|
490
|
-
*/ const extractDraftRelations = (data)=>{
|
|
491
|
-
const relations = data.connect || [];
|
|
492
|
-
relations.forEach((relation)=>{
|
|
493
|
-
if (relation.status === 'draft') {
|
|
494
|
-
localDraftRelations.add(relation.id);
|
|
495
|
-
}
|
|
496
|
-
});
|
|
497
|
-
};
|
|
498
|
-
/**
|
|
499
|
-
* Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.
|
|
500
|
-
* If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.
|
|
501
|
-
* It recursively calls itself for any non-null objects it contains.
|
|
502
|
-
*/ const traverseAndExtract = (data)=>{
|
|
503
|
-
Object.entries(data).forEach(([key, value])=>{
|
|
504
|
-
if (key === 'connect' && Array.isArray(value)) {
|
|
505
|
-
extractDraftRelations({
|
|
506
|
-
connect: value
|
|
507
|
-
});
|
|
508
|
-
} else if (typeof value === 'object' && value !== null) {
|
|
509
|
-
traverseAndExtract(value);
|
|
510
|
-
}
|
|
511
|
-
});
|
|
512
|
-
};
|
|
513
|
-
if (!documentId || modified) {
|
|
514
|
-
traverseAndExtract(formValues);
|
|
515
|
-
setLocalCountOfDraftRelations(localDraftRelations.size);
|
|
516
|
-
}
|
|
533
|
+
setLocalDraftRelationCounts(draftRelationCounts.countLocalDraftRelations(formValues, schema, components, model));
|
|
517
534
|
}, [
|
|
518
|
-
|
|
519
|
-
modified,
|
|
535
|
+
components,
|
|
520
536
|
formValues,
|
|
521
|
-
|
|
537
|
+
model,
|
|
538
|
+
schema
|
|
522
539
|
]);
|
|
523
|
-
React__namespace.
|
|
524
|
-
if (!document
|
|
540
|
+
const fetchDraftRelationsCount = React__namespace.useCallback(async ()=>{
|
|
541
|
+
if (!document?.documentId || isListView) {
|
|
525
542
|
return;
|
|
526
543
|
}
|
|
527
|
-
|
|
544
|
+
setIsFetchingDraftRelations(true);
|
|
545
|
+
try {
|
|
528
546
|
const { data, error } = await countDraftRelations({
|
|
529
547
|
collectionType,
|
|
530
548
|
model,
|
|
@@ -535,18 +553,36 @@ const transformData = (data)=>{
|
|
|
535
553
|
throw error;
|
|
536
554
|
}
|
|
537
555
|
if (data) {
|
|
538
|
-
|
|
556
|
+
setServerDraftRelationCounts(draftRelationCounts.normalizeDraftRelationCounts(data));
|
|
539
557
|
}
|
|
540
|
-
}
|
|
541
|
-
|
|
558
|
+
} finally{
|
|
559
|
+
setIsFetchingDraftRelations(false);
|
|
560
|
+
}
|
|
542
561
|
}, [
|
|
543
|
-
isListView,
|
|
544
|
-
document,
|
|
545
|
-
documentId,
|
|
546
|
-
countDraftRelations,
|
|
547
562
|
collectionType,
|
|
548
|
-
|
|
549
|
-
currentDocumentMeta.params
|
|
563
|
+
countDraftRelations,
|
|
564
|
+
currentDocumentMeta.params,
|
|
565
|
+
document?.documentId,
|
|
566
|
+
documentId,
|
|
567
|
+
isListView,
|
|
568
|
+
model
|
|
569
|
+
]);
|
|
570
|
+
React__namespace.useEffect(()=>{
|
|
571
|
+
fetchDraftRelationsCount();
|
|
572
|
+
}, [
|
|
573
|
+
fetchDraftRelationsCount,
|
|
574
|
+
document?.updatedAt
|
|
575
|
+
]);
|
|
576
|
+
React__namespace.useEffect(()=>{
|
|
577
|
+
const handleWindowFocus = ()=>{
|
|
578
|
+
fetchDraftRelationsCount();
|
|
579
|
+
};
|
|
580
|
+
window.addEventListener('focus', handleWindowFocus);
|
|
581
|
+
return ()=>{
|
|
582
|
+
window.removeEventListener('focus', handleWindowFocus);
|
|
583
|
+
};
|
|
584
|
+
}, [
|
|
585
|
+
fetchDraftRelationsCount
|
|
550
586
|
]);
|
|
551
587
|
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
|
552
588
|
const parentDocumentData = useDocument.useDocument({
|
|
@@ -688,11 +724,18 @@ const transformData = (data)=>{
|
|
|
688
724
|
}
|
|
689
725
|
}
|
|
690
726
|
};
|
|
691
|
-
const
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
727
|
+
const getFreshDraftRelationCounts = React__namespace.useCallback(()=>draftRelationCounts.resolveDraftRelationCounts(documentId, modified, draftRelationCounts.countLocalDraftRelations(getValues(), schema, components, model), serverDraftRelationCounts), [
|
|
728
|
+
components,
|
|
729
|
+
documentId,
|
|
730
|
+
getValues,
|
|
731
|
+
model,
|
|
732
|
+
modified,
|
|
733
|
+
schema,
|
|
734
|
+
serverDraftRelationCounts
|
|
735
|
+
]);
|
|
736
|
+
const draftRelationCounts$1 = draftRelationCounts.resolveDraftRelationCounts(documentId, modified, localDraftRelationCounts, serverDraftRelationCounts);
|
|
737
|
+
const { hasUnpublishedRelations, hasDraftM2mLinks, dialogVariant, bodyIcon, confirmLabel } = draftRelationCounts.getDraftRelationsPublishState(draftRelationCounts$1);
|
|
738
|
+
const supportsDraftRelationWarning = Boolean(schema?.options?.draftAndPublish);
|
|
696
739
|
/**
|
|
697
740
|
* Disabled when:
|
|
698
741
|
* - currently if you're cloning a document we don't support publish & clone at the same time.
|
|
@@ -701,7 +744,7 @@ const transformData = (data)=>{
|
|
|
701
744
|
* - the document is already published & not modified
|
|
702
745
|
* - the document is being created & not modified
|
|
703
746
|
* - the user doesn't have the permission to publish
|
|
704
|
-
*/ const isDisabled = isCloning || isSubmitting ||
|
|
747
|
+
*/ const isDisabled = isCloning || isSubmitting || isFetchingDraftRelations || activeTab === 'published' || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish;
|
|
705
748
|
// Publish on CMD+Shift+Enter (macOS) / CTRL+Shift+Enter (Windows/Linux).
|
|
706
749
|
// Saving a draft (CMD/CTRL+Enter) is handled by the UpdateAction.
|
|
707
750
|
React__namespace.useEffect(()=>{
|
|
@@ -713,18 +756,29 @@ const transformData = (data)=>{
|
|
|
713
756
|
return;
|
|
714
757
|
}
|
|
715
758
|
e.preventDefault();
|
|
716
|
-
if (!
|
|
717
|
-
|
|
759
|
+
if (!fromRelationModal && isRelationModalOpen) {
|
|
760
|
+
return;
|
|
761
|
+
}
|
|
762
|
+
if (isDisabled) {
|
|
763
|
+
return;
|
|
718
764
|
}
|
|
765
|
+
if (draftRelationCounts.getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {
|
|
766
|
+
openPublishConfirmDialog(publishConfirmScope);
|
|
767
|
+
return;
|
|
768
|
+
}
|
|
769
|
+
performPublish();
|
|
719
770
|
};
|
|
720
771
|
window.addEventListener('keydown', handleKeyDown);
|
|
721
772
|
return ()=>{
|
|
722
773
|
window.removeEventListener('keydown', handleKeyDown);
|
|
723
774
|
};
|
|
724
775
|
}, [
|
|
725
|
-
|
|
776
|
+
fromRelationModal,
|
|
777
|
+
getFreshDraftRelationCounts,
|
|
726
778
|
isDisabled,
|
|
779
|
+
isRelationModalOpen,
|
|
727
780
|
performPublish,
|
|
781
|
+
publishConfirmScope,
|
|
728
782
|
schema?.options?.draftAndPublish
|
|
729
783
|
]);
|
|
730
784
|
if (!schema?.options?.draftAndPublish) {
|
|
@@ -739,26 +793,60 @@ const transformData = (data)=>{
|
|
|
739
793
|
'relation-modal'
|
|
740
794
|
],
|
|
741
795
|
disabled: isDisabled,
|
|
796
|
+
publishConfirmScope: supportsDraftRelationWarning ? publishConfirmScope : undefined,
|
|
742
797
|
label: formatMessage({
|
|
743
798
|
id: 'app.utils.publish',
|
|
744
799
|
defaultMessage: 'Publish'
|
|
745
800
|
}),
|
|
746
801
|
onClick: async ()=>{
|
|
802
|
+
if (draftRelationCounts.getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {
|
|
803
|
+
// Let DocumentActionButton open the confirmation dialog.
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
747
806
|
await performPublish();
|
|
807
|
+
// Skip the registered dialog when publishing directly.
|
|
808
|
+
return true;
|
|
748
809
|
},
|
|
749
|
-
dialog:
|
|
810
|
+
dialog: supportsDraftRelationWarning ? {
|
|
750
811
|
type: 'dialog',
|
|
751
|
-
variant:
|
|
752
|
-
|
|
812
|
+
variant: dialogVariant,
|
|
813
|
+
bodyIcon,
|
|
753
814
|
title: formatMessage({
|
|
754
|
-
id: translations.getTranslation(
|
|
815
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-relations.title'),
|
|
755
816
|
defaultMessage: 'Confirmation'
|
|
756
817
|
}),
|
|
757
|
-
content:
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
818
|
+
content: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
819
|
+
children: [
|
|
820
|
+
hasUnpublishedRelations ? formatMessage({
|
|
821
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-relations.message'),
|
|
822
|
+
defaultMessage: 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. {count, plural, one {That relation will not be included in the published version.} other {Those relations will not be included in the published version.}}'
|
|
823
|
+
}, {
|
|
824
|
+
count: draftRelationCounts$1.unpublishedRelations
|
|
825
|
+
}) : formatMessage({
|
|
826
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-m2m-relations.message'),
|
|
827
|
+
defaultMessage: '{count, plural, one {# linked entry is still in draft. It will appear on the live site once that entry is published.} other {# linked entries are still in draft. They will appear on the live site once those entries are published.}}'
|
|
828
|
+
}, {
|
|
829
|
+
count: draftRelationCounts$1.draftM2mLinks
|
|
830
|
+
}),
|
|
831
|
+
hasUnpublishedRelations && hasDraftM2mLinks ? ` ${formatMessage({
|
|
832
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-m2m-relations.additional'),
|
|
833
|
+
defaultMessage: '{count, plural, one {# many-to-many link points} other {# many-to-many links point}} to draft entries that will become visible once published.'
|
|
834
|
+
}, {
|
|
835
|
+
count: draftRelationCounts$1.draftM2mLinks
|
|
836
|
+
})}` : null,
|
|
837
|
+
' ',
|
|
838
|
+
formatMessage({
|
|
839
|
+
id: translations.getTranslation('popUpWarning.warning.publish-question'),
|
|
840
|
+
defaultMessage: 'Do you still want to publish?'
|
|
841
|
+
})
|
|
842
|
+
]
|
|
843
|
+
}),
|
|
844
|
+
confirmLabel: confirmLabel === 'publish' ? formatMessage({
|
|
845
|
+
id: 'app.utils.publish',
|
|
846
|
+
defaultMessage: 'Publish'
|
|
847
|
+
}) : formatMessage({
|
|
848
|
+
id: translations.getTranslation('popUpwarning.warning.has-draft-relations.button-confirm'),
|
|
849
|
+
defaultMessage: 'Publish without relations'
|
|
762
850
|
}),
|
|
763
851
|
onConfirm: async ()=>{
|
|
764
852
|
await performPublish();
|
|
@@ -1236,4 +1324,5 @@ exports.DEFAULT_ACTIONS = DEFAULT_ACTIONS;
|
|
|
1236
1324
|
exports.DocumentActionButton = DocumentActionButton;
|
|
1237
1325
|
exports.DocumentActions = DocumentActions;
|
|
1238
1326
|
exports.DocumentActionsMenu = DocumentActionsMenu;
|
|
1327
|
+
exports.openPublishConfirmDialog = openPublishConfirmDialog;
|
|
1239
1328
|
//# sourceMappingURL=DocumentActions.js.map
|