@strapi/content-manager 5.57.0 → 5.59.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/components/ConfigurationForm/Fields.js +4 -3
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +4 -3
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/RelativeTime.js +2 -1
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/RelativeTime.mjs +2 -1
- package/dist/admin/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/content-manager.js.map +1 -1
- package/dist/admin/content-manager.mjs.map +1 -1
- package/dist/admin/history/components/VersionContent.js +8 -8
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +8 -8
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +7 -6
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +7 -6
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +2 -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/ComponentPicker.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +4 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +31 -11
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +32 -12
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +4 -4
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +4 -4
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +3 -3
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +3 -3
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.js +3 -3
- package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs +3 -3
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js +2 -2
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs +2 -2
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +73 -13
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +74 -14
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs +1 -1
- package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +4 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +12 -10
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +12 -10
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +2 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +2 -1
- package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
- package/dist/admin/pages/ListView/utils/applyAttributeRenames.js +68 -0
- package/dist/admin/pages/ListView/utils/applyAttributeRenames.js.map +1 -0
- package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs +64 -0
- package/dist/admin/pages/ListView/utils/applyAttributeRenames.mjs.map +1 -0
- package/dist/admin/preview/components/PreviewHeader.js +3 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +3 -1
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/services/relations.js +5 -2
- package/dist/admin/services/relations.js.map +1 -1
- package/dist/admin/services/relations.mjs +5 -2
- package/dist/admin/services/relations.mjs.map +1 -1
- package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +1 -1
- package/dist/admin/src/pages/ListView/utils/applyAttributeRenames.d.ts +12 -0
- package/dist/admin/translations/eu.json.js +3 -3
- package/dist/admin/translations/eu.json.mjs +3 -3
- package/dist/admin/translations/gu.json.js +4 -4
- package/dist/admin/translations/gu.json.mjs +4 -4
- package/dist/admin/translations/hi.json.js +9 -9
- package/dist/admin/translations/hi.json.mjs +9 -9
- package/dist/admin/translations/ml.json.js +6 -6
- package/dist/admin/translations/ml.json.mjs +6 -6
- package/dist/admin/translations/sa.json.js +10 -10
- package/dist/admin/translations/sa.json.mjs +10 -10
- package/dist/server/history/entitlements.js +26 -0
- package/dist/server/history/entitlements.js.map +1 -0
- package/dist/server/history/entitlements.mjs +24 -0
- package/dist/server/history/entitlements.mjs.map +1 -0
- package/dist/server/history/index.js +3 -0
- package/dist/server/history/index.js.map +1 -1
- package/dist/server/history/index.mjs +3 -0
- package/dist/server/history/index.mjs.map +1 -1
- package/dist/server/history/services/utils.js +19 -8
- package/dist/server/history/services/utils.js.map +1 -1
- package/dist/server/history/services/utils.mjs +18 -9
- package/dist/server/history/services/utils.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs.map +1 -1
- package/dist/server/register.js +6 -0
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs +6 -0
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/services/components.js.map +1 -1
- package/dist/server/services/components.mjs.map +1 -1
- package/dist/server/services/configuration/rename-fields.js +68 -0
- package/dist/server/services/configuration/rename-fields.js.map +1 -0
- package/dist/server/services/configuration/rename-fields.mjs +66 -0
- package/dist/server/services/configuration/rename-fields.mjs.map +1 -0
- package/dist/server/services/utils/configuration/attribute-renames.js +164 -0
- package/dist/server/services/utils/configuration/attribute-renames.js.map +1 -0
- package/dist/server/services/utils/configuration/attribute-renames.mjs +161 -0
- package/dist/server/services/utils/configuration/attribute-renames.mjs.map +1 -0
- package/dist/server/services/utils/configuration/attributes.js +12 -12
- package/dist/server/services/utils/configuration/attributes.js.map +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs +12 -12
- package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
- package/dist/server/src/history/entitlements.d.ts +9 -0
- package/dist/server/src/history/entitlements.d.ts.map +1 -0
- package/dist/server/src/history/index.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +6 -0
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +2 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +2 -0
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/configuration/rename-fields.d.ts +15 -0
- package/dist/server/src/services/configuration/rename-fields.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/attribute-renames.d.ts +57 -0
- package/dist/server/src/services/utils/configuration/attribute-renames.d.ts.map +1 -0
- package/dist/shared/contracts/content-types.d.ts +5 -0
- package/dist/shared/contracts/content-types.d.ts.map +1 -1
- package/dist/shared/contracts/relations.d.ts +1 -0
- package/dist/shared/contracts/relations.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -63,10 +63,10 @@ const createLayoutFromFields = (fields)=>{
|
|
|
63
63
|
* Those fields would be restored if the user restores the history version, which is why it's
|
|
64
64
|
* important to show them, even if they're not in the normal layout.
|
|
65
65
|
*/ function getRemaingFieldsLayout({ layout, metadatas, schemaAttributes, fieldSizes }) {
|
|
66
|
-
const fieldsInLayout = layout.flatMap((panel)=>panel.flatMap((row)=>row.flatMap((field)=>field.name)));
|
|
66
|
+
const fieldsInLayout = new Set(layout.flatMap((panel)=>panel.flatMap((row)=>row.flatMap((field)=>field.name))));
|
|
67
67
|
const remainingFields = Object.entries(metadatas).reduce((currentRemainingFields, [name, field])=>{
|
|
68
68
|
// Make sure we do not fields that are not visible, e.g. "id"
|
|
69
|
-
if (!fieldsInLayout.
|
|
69
|
+
if (!fieldsInLayout.has(name) && field.edit.visible === true) {
|
|
70
70
|
const attribute = schemaAttributes[name];
|
|
71
71
|
// @ts-expect-error not sure why attribute causes type error
|
|
72
72
|
currentRemainingFields.push({
|
|
@@ -170,7 +170,7 @@ const FormPanel = ({ panel })=>{
|
|
|
170
170
|
direction: "column",
|
|
171
171
|
alignItems: "stretch",
|
|
172
172
|
gap: 6,
|
|
173
|
-
children: panel.map((row
|
|
173
|
+
children: panel.map((row)=>{
|
|
174
174
|
const visibleFields = row.filter(isFieldVisible);
|
|
175
175
|
if (visibleFields.length === 0) {
|
|
176
176
|
return null; // Skip rendering the entire grid row
|
|
@@ -191,7 +191,7 @@ const FormPanel = ({ panel })=>{
|
|
|
191
191
|
})
|
|
192
192
|
}, field.name);
|
|
193
193
|
})
|
|
194
|
-
},
|
|
194
|
+
}, row.map((field)=>field.name).join('.'));
|
|
195
195
|
})
|
|
196
196
|
})
|
|
197
197
|
});
|
|
@@ -263,10 +263,10 @@ const VersionContent = ()=>{
|
|
|
263
263
|
children: [
|
|
264
264
|
...layout,
|
|
265
265
|
...remainingFieldsLayout
|
|
266
|
-
].map((panel
|
|
266
|
+
].map((panel)=>{
|
|
267
267
|
return /*#__PURE__*/ jsxRuntime.jsx(FormPanel, {
|
|
268
268
|
panel: panel
|
|
269
|
-
},
|
|
269
|
+
}, panel.flatMap((row)=>row.map((field)=>field.name)).join('.'));
|
|
270
270
|
})
|
|
271
271
|
})
|
|
272
272
|
}, version.id),
|
|
@@ -325,10 +325,10 @@ const VersionContent = ()=>{
|
|
|
325
325
|
alignItems: "stretch",
|
|
326
326
|
gap: 6,
|
|
327
327
|
position: "relative",
|
|
328
|
-
children: unknownFieldsLayout.map((panel
|
|
328
|
+
children: unknownFieldsLayout.map((panel)=>{
|
|
329
329
|
return /*#__PURE__*/ jsxRuntime.jsx(FormPanel, {
|
|
330
330
|
panel: panel
|
|
331
|
-
},
|
|
331
|
+
}, panel.flatMap((row)=>row.map((field)=>field.name)).join('.'));
|
|
332
332
|
})
|
|
333
333
|
})
|
|
334
334
|
}, `${version.id}-unknownFields`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = flow(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","Set","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","flow","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VersionContent.js","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>, Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = new Set(\n layout.flatMap((panel) => panel.flatMap((row) => row.flatMap((field) => field.name)))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.has(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root\n key={row.map((field) => field.name).join('.')}\n gap={{ initial: 6, medium: 4 }}\n >\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = flow(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel) => {\n return (\n <FormPanel\n key={panel.flatMap((row) => row.map((field) => field.name)).join('.')}\n panel={panel}\n />\n );\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel) => {\n return (\n <FormPanel\n key={panel.flatMap((row) => row.map((field) => field.name)).join('.')}\n panel={panel}\n />\n );\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","Set","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","has","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","visibleFields","filter","col","join","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","flow","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
|
|
@@ -38,10 +38,10 @@ const createLayoutFromFields = (fields)=>{
|
|
|
38
38
|
* Those fields would be restored if the user restores the history version, which is why it's
|
|
39
39
|
* important to show them, even if they're not in the normal layout.
|
|
40
40
|
*/ function getRemaingFieldsLayout({ layout, metadatas, schemaAttributes, fieldSizes }) {
|
|
41
|
-
const fieldsInLayout = layout.flatMap((panel)=>panel.flatMap((row)=>row.flatMap((field)=>field.name)));
|
|
41
|
+
const fieldsInLayout = new Set(layout.flatMap((panel)=>panel.flatMap((row)=>row.flatMap((field)=>field.name))));
|
|
42
42
|
const remainingFields = Object.entries(metadatas).reduce((currentRemainingFields, [name, field])=>{
|
|
43
43
|
// Make sure we do not fields that are not visible, e.g. "id"
|
|
44
|
-
if (!fieldsInLayout.
|
|
44
|
+
if (!fieldsInLayout.has(name) && field.edit.visible === true) {
|
|
45
45
|
const attribute = schemaAttributes[name];
|
|
46
46
|
// @ts-expect-error not sure why attribute causes type error
|
|
47
47
|
currentRemainingFields.push({
|
|
@@ -145,7 +145,7 @@ const FormPanel = ({ panel })=>{
|
|
|
145
145
|
direction: "column",
|
|
146
146
|
alignItems: "stretch",
|
|
147
147
|
gap: 6,
|
|
148
|
-
children: panel.map((row
|
|
148
|
+
children: panel.map((row)=>{
|
|
149
149
|
const visibleFields = row.filter(isFieldVisible);
|
|
150
150
|
if (visibleFields.length === 0) {
|
|
151
151
|
return null; // Skip rendering the entire grid row
|
|
@@ -166,7 +166,7 @@ const FormPanel = ({ panel })=>{
|
|
|
166
166
|
})
|
|
167
167
|
}, field.name);
|
|
168
168
|
})
|
|
169
|
-
},
|
|
169
|
+
}, row.map((field)=>field.name).join('.'));
|
|
170
170
|
})
|
|
171
171
|
})
|
|
172
172
|
});
|
|
@@ -238,10 +238,10 @@ const VersionContent = ()=>{
|
|
|
238
238
|
children: [
|
|
239
239
|
...layout,
|
|
240
240
|
...remainingFieldsLayout
|
|
241
|
-
].map((panel
|
|
241
|
+
].map((panel)=>{
|
|
242
242
|
return /*#__PURE__*/ jsx(FormPanel, {
|
|
243
243
|
panel: panel
|
|
244
|
-
},
|
|
244
|
+
}, panel.flatMap((row)=>row.map((field)=>field.name)).join('.'));
|
|
245
245
|
})
|
|
246
246
|
})
|
|
247
247
|
}, version.id),
|
|
@@ -300,10 +300,10 @@ const VersionContent = ()=>{
|
|
|
300
300
|
alignItems: "stretch",
|
|
301
301
|
gap: 6,
|
|
302
302
|
position: "relative",
|
|
303
|
-
children: unknownFieldsLayout.map((panel
|
|
303
|
+
children: unknownFieldsLayout.map((panel)=>{
|
|
304
304
|
return /*#__PURE__*/ jsx(FormPanel, {
|
|
305
305
|
panel: panel
|
|
306
|
-
},
|
|
306
|
+
}, panel.flatMap((row)=>row.map((field)=>field.name)).join('.'));
|
|
307
307
|
})
|
|
308
308
|
})
|
|
309
309
|
}, `${version.id}-unknownFields`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root key={gridRowIndex} gap={{ initial: 6, medium: 4 }}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = flow(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","includes","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","Set","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","gridRowIndex","visibleFields","filter","col","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","flow","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","index","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VersionContent.mjs","sources":["../../../../admin/src/history/components/VersionContent.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Form, Layouts, createRulesEngine, useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport {\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n} from '../../utils/conditionalFields';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>, Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = new Set(\n layout.flatMap((panel) => panel.flatMap((row) => row.flatMap((field) => field.name)))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.has(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\n// Reuse one rules engine instance instead of creating a new one on every render.\nconst rulesEngine = createRulesEngine();\n\nconst getPanelConditionDependencyPaths = (panel: EditFieldLayout[][]): string[] | null => {\n // Aggregate condition dependencies across all fields in the panel so we can subscribe narrowly.\n const dependencies = new Set<string>();\n\n for (const row of panel) {\n for (const field of row) {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n continue;\n }\n\n const paths = getConditionDependencyPaths(condition);\n\n if (paths === null) {\n return null;\n }\n\n for (const path of paths) {\n dependencies.add(path);\n }\n }\n }\n\n return [...dependencies].sort();\n};\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n const isMobile = useIsMobile();\n const conditionDependencyPaths = React.useMemo(\n () => getPanelConditionDependencyPaths(panel),\n [panel]\n );\n const getValues = useForm(\n 'FormPanel',\n (state) => (state as typeof state & { getValues: () => unknown }).getValues\n );\n const conditionSubscriptionValue = useForm('FormPanel', (state) => {\n return getConditionDependencySubscriptionValue(state.values, conditionDependencyPaths);\n });\n // For narrow subscriptions, read the latest full values lazily via getValues() to evaluate rules.\n // This avoids rerendering for unrelated form changes while preserving correct condition evaluation.\n const fieldValues = conditionDependencyPaths === null ? conditionSubscriptionValue : getValues();\n\n const isFieldVisible = React.useCallback(\n (field: EditFieldLayout) => {\n const condition = field.attribute?.conditions?.visible;\n\n if (!condition) {\n return true;\n }\n\n return rulesEngine.evaluate(condition, fieldValues);\n },\n [fieldValues]\n );\n\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n if (!isFieldVisible(field)) {\n return null;\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius={!isMobile}\n background={{ initial: 'transparent', medium: 'neutral0' }}\n shadow={{ initial: 'none', medium: 'tableShadow' }}\n padding={{ initial: 0, medium: 6 }}\n borderColor={{ initial: 'transparent', medium: 'neutral150' }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row) => {\n const visibleFields = row.filter(isFieldVisible);\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <Grid.Root\n key={row.map((field) => field.name).join('.')}\n gap={{ initial: 6, medium: 4 }}\n >\n {visibleFields.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = flow(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={{ initial: 0, large: 8 }}>\n <Form key={version.id} disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel) => {\n return (\n <FormPanel\n key={panel.flatMap((row) => row.map((field) => field.name)).join('.')}\n panel={panel}\n />\n );\n })}\n </Flex>\n </Form>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Box paddingTop={{ initial: 4, large: 0 }}>\n <Divider />\n </Box>\n <Box paddingTop={{ initial: 4, large: 8 }}>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingBottom={{ initial: 4, large: 6 }}\n gap={1}\n >\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form\n key={`${version.id}-unknownFields`}\n disabled={true}\n method=\"PUT\"\n initialValues={version.data}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel) => {\n return (\n <FormPanel\n key={panel.flatMap((row) => row.map((field) => field.name)).join('.')}\n panel={panel}\n />\n );\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Box>\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n"],"names":["createLayoutFromFields","fields","reduce","rows","field","type","push","length","map","row","getRemaingFieldsLayout","layout","metadatas","schemaAttributes","fieldSizes","fieldsInLayout","Set","flatMap","panel","name","remainingFields","Object","entries","currentRemainingFields","has","edit","visible","attribute","disabled","label","size","default","rulesEngine","createRulesEngine","getPanelConditionDependencyPaths","dependencies","condition","conditions","paths","getConditionDependencyPaths","path","add","sort","FormPanel","isMobile","useIsMobile","conditionDependencyPaths","React","useMemo","getValues","useForm","state","conditionSubscriptionValue","getConditionDependencySubscriptionValue","values","fieldValues","isFieldVisible","useCallback","evaluate","some","_jsx","Grid","Root","gap","Item","xs","direction","alignItems","VersionInputRenderer","Box","hasRadius","background","initial","medium","shadow","padding","borderColor","Flex","visibleFields","filter","col","join","VersionContent","formatMessage","useIntl","useTypedSelector","app","version","useHistoryContext","selectedVersion","configuration","schema","removedAttributes","meta","unknownAttributes","removed","removedAttributesAsFields","attributeName","shouldIgnoreRBAC","unknownFieldsLayout","remainingFieldsLayout","contentType","attributes","components","useDoc","transformedData","transform","document","transformations","flow","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","_jsxs","paddingBottom","large","Form","method","initialValues","position","id","_Fragment","paddingTop","Divider","Typography","variant","defaultMessage","b","chunks","fontWeight"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentActions.js","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useGetAiFeatureConfigQuery, useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: unknown; meta?: unknown; error?: unknown }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: unknown; error?: unknown }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype QueryParams = Record<string, unknown>;\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: QueryParams;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: QueryParams;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const isAiAvailable = useAIAvailability();\n const { data: aiFeatureConfig } = useGetAiFeatureConfigQuery(undefined, {\n skip: !isAiAvailable,\n });\n const isAiI18nConfigured = Boolean(aiFeatureConfig?.isAiI18nConfigured);\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', {\n documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n trackUsage,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n cloneDocument,\n trackUsage,\n toggleNotification,\n formatMessage,\n formatAPIError,\n navigate,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","isAiAvailable","useAIAvailability","data","aiFeatureConfig","useGetAiFeatureConfigQuery","undefined","skip","isAiI18nConfigured","Boolean","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDocumentActions.js","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useGetAiFeatureConfigQuery, useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: unknown; meta?: unknown; error?: unknown }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: unknown; error?: unknown }> =\n Pick<TResponse, 'data'> | { error: BaseQueryError | SerializedError };\n\ntype QueryParams = Record<string, unknown>;\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: QueryParams;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: QueryParams;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: QueryParams;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: QueryParams;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const isAiAvailable = useAIAvailability();\n const { data: aiFeatureConfig } = useGetAiFeatureConfigQuery(undefined, {\n skip: !isAiAvailable,\n });\n const isAiI18nConfigured = Boolean(aiFeatureConfig?.isAiI18nConfigured);\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', {\n documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n trackUsage,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n ...(isAiAvailable ? { isAiI18nConfigured } : {}),\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n cloneDocument,\n trackUsage,\n toggleNotification,\n formatMessage,\n formatAPIError,\n navigate,\n isAiAvailable,\n isAiI18nConfigured,\n ]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","isAiAvailable","useAIAvailability","data","aiFeatureConfig","useGetAiFeatureConfigQuery","undefined","skip","isAiI18nConfigured","Boolean","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}
|