@strapi/content-manager 5.51.1 → 5.51.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/admin/components/ConfigurationForm/Form.js +14 -16
  2. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Form.mjs +14 -16
  4. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  5. package/dist/admin/history/components/VersionHeader.js +1 -1
  6. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  7. package/dist/admin/history/components/VersionHeader.mjs +1 -1
  8. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  9. package/dist/admin/history/components/VersionsList.js +1 -1
  10. package/dist/admin/history/components/VersionsList.js.map +1 -1
  11. package/dist/admin/history/components/VersionsList.mjs +1 -1
  12. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  13. package/dist/admin/hooks/useDocument.js.map +1 -1
  14. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  15. package/dist/admin/layout.js +77 -7
  16. package/dist/admin/layout.js.map +1 -1
  17. package/dist/admin/layout.mjs +58 -8
  18. package/dist/admin/layout.mjs.map +1 -1
  19. package/dist/admin/pages/EditView/components/DocumentActions.js +109 -81
  20. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  21. package/dist/admin/pages/EditView/components/DocumentActions.mjs +108 -76
  22. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +2 -2
  24. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +2 -2
  26. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +1 -1
  28. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +1 -1
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +102 -7
  32. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +84 -8
  34. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -1
  36. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -1
  38. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +14 -5
  40. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +14 -5
  42. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +17 -16
  44. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +17 -13
  46. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -2
  48. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -2
  50. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.js +2 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.mjs +2 -1
  54. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.mjs.map +1 -1
  55. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +7 -0
  56. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  57. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +7 -0
  58. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  59. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +3 -1
  60. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.d.ts +2 -0
  61. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +4 -0
  62. package/dist/admin/src/utils/previewImage.d.ts +3 -0
  63. package/dist/admin/translations/en.json.js +1 -0
  64. package/dist/admin/translations/en.json.js.map +1 -1
  65. package/dist/admin/translations/en.json.mjs +1 -0
  66. package/dist/admin/translations/en.json.mjs.map +1 -1
  67. package/dist/admin/utils/objects.js +3 -1
  68. package/dist/admin/utils/objects.js.map +1 -1
  69. package/dist/admin/utils/objects.mjs +3 -1
  70. package/dist/admin/utils/objects.mjs.map +1 -1
  71. package/dist/admin/utils/previewImage.js +14 -0
  72. package/dist/admin/utils/previewImage.js.map +1 -0
  73. package/dist/admin/utils/previewImage.mjs +12 -0
  74. package/dist/admin/utils/previewImage.mjs.map +1 -0
  75. package/dist/admin/utils/validation.js +2 -2
  76. package/dist/admin/utils/validation.js.map +1 -1
  77. package/dist/admin/utils/validation.mjs +2 -2
  78. package/dist/admin/utils/validation.mjs.map +1 -1
  79. package/dist/server/controllers/utils/clone.js +1 -5
  80. package/dist/server/controllers/utils/clone.js.map +1 -1
  81. package/dist/server/controllers/utils/clone.mjs +2 -2
  82. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  83. package/dist/server/controllers/validation/index.js +1 -1
  84. package/dist/server/controllers/validation/index.js.map +1 -1
  85. package/dist/server/controllers/validation/index.mjs +1 -1
  86. package/dist/server/controllers/validation/index.mjs.map +1 -1
  87. package/dist/server/services/document-manager.js +1 -1
  88. package/dist/server/services/document-manager.js.map +1 -1
  89. package/dist/server/services/document-manager.mjs +1 -1
  90. package/dist/server/services/document-manager.mjs.map +1 -1
  91. package/dist/server/services/document-metadata.js +24 -2
  92. package/dist/server/services/document-metadata.js.map +1 -1
  93. package/dist/server/services/document-metadata.mjs +24 -2
  94. package/dist/server/services/document-metadata.mjs.map +1 -1
  95. package/dist/server/services/utils/draft.js +19 -3
  96. package/dist/server/services/utils/draft.js.map +1 -1
  97. package/dist/server/services/utils/draft.mjs +1 -1
  98. package/dist/server/services/utils/draft.mjs.map +1 -1
  99. package/dist/server/services/utils/populate.js +22 -6
  100. package/dist/server/services/utils/populate.js.map +1 -1
  101. package/dist/server/services/utils/populate.mjs +1 -1
  102. package/dist/server/services/utils/populate.mjs.map +1 -1
  103. package/dist/server/src/index.d.ts.map +1 -1
  104. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  105. package/dist/server/src/services/index.d.ts.map +1 -1
  106. package/package.json +6 -6
@@ -222,22 +222,20 @@ const ConfigurationForm = ({ attributes: attributes$1, fieldSizes, layout: editL
222
222
  * @internal
223
223
  * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)
224
224
  * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)
225
- */ const addTmpSpaceToLayout = (layout)=>[
226
- ...layout.map((row)=>{
227
- const totalSpaceTaken = row.reduce((acc, field)=>acc + field.size, 0);
228
- if (totalSpaceTaken < 12) {
229
- return [
230
- ...row,
231
- {
232
- name: Fields.TEMP_FIELD_NAME,
233
- size: 12 - totalSpaceTaken,
234
- __temp_key__: ''
235
- }
236
- ];
237
- }
238
- return row;
239
- })
240
- ];
225
+ */ const addTmpSpaceToLayout = (layout)=>layout.map((row)=>{
226
+ const totalSpaceTaken = row.reduce((acc, field)=>acc + field.size, 0);
227
+ if (totalSpaceTaken < 12) {
228
+ return [
229
+ ...row,
230
+ {
231
+ name: Fields.TEMP_FIELD_NAME,
232
+ size: 12 - totalSpaceTaken,
233
+ __temp_key__: ''
234
+ }
235
+ ];
236
+ }
237
+ return row;
238
+ });
241
239
  /**
242
240
  * @internal
243
241
  * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","sources":["../../../../admin/src/components/ConfigurationForm/Form.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n FormProps,\n useForm,\n InputRenderer,\n BackButton,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Divider, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { capitalise } from '../../utils/strings';\nimport { getTranslation } from '../../utils/translations';\n\nimport { Fields, FieldsProps, TEMP_FIELD_NAME } from './Fields';\n\nimport type { EditFieldLayout, EditLayout } from '../../hooks/useDocumentLayout';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationFormProps extends Pick<FieldsProps, 'attributes' | 'fieldSizes'> {\n layout: EditLayout;\n onSubmit: FormProps<ConfigurationFormData>['onSubmit'];\n}\n\n/**\n * Every key in EditFieldLayout is turned to optional never and then we overwrite the ones we are using.\n */\n\ntype EditFieldSpacerLayout = {\n [key in keyof Omit<EditFieldLayout, 'name' | 'size'>]?: never;\n} & {\n description?: never;\n editable?: never;\n name: '_TEMP_';\n size: number;\n __temp_key__: string;\n};\n\ninterface ConfigurationFormData extends Pick<EditLayout, 'settings'> {\n layout: Array<{\n __temp_key__: string;\n children: Array<\n | (Pick<EditFieldLayout, 'label' | 'size' | 'name' | 'placeholder' | 'mainField'> & {\n description: EditFieldLayout['hint'];\n editable: EditFieldLayout['disabled'];\n __temp_key__: string;\n })\n | EditFieldSpacerLayout\n >;\n }>;\n}\n\nconst ConfigurationForm = ({\n attributes,\n fieldSizes,\n layout: editLayout,\n onSubmit,\n}: ConfigurationFormProps) => {\n const { components, settings, layout, metadatas } = editLayout;\n\n const { formatMessage } = useIntl();\n\n const initialValues: ConfigurationFormData = React.useMemo(() => {\n const transformations = pipe(\n flattenPanels,\n replaceMainFieldWithNameOnly,\n extractMetadata,\n addTmpSpaceToLayout,\n addTmpKeysToLayout\n );\n\n return {\n layout: transformations(layout),\n settings: {\n ...settings,\n relationOpenMode: settings.relationOpenMode ?? 'modal',\n },\n };\n }, [layout, settings]);\n\n return (\n <>\n <Main>\n <Form initialValues={initialValues} onSubmit={onSubmit} method=\"PUT\">\n <Header name={settings.displayName ?? ''} />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.entry.title'),\n defaultMessage: 'Entry title',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.entry.title.description'\n ),\n defaultMessage: 'Set the display field of your entry',\n })}\n name=\"settings.mainField\"\n options={Object.entries(attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n if (!attribute) {\n return acc;\n }\n\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, [])}\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.relationOpenMode'),\n defaultMessage: 'Relation open behavior',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.description'\n ),\n defaultMessage: 'Choose how relation entries open when clicked',\n })}\n name=\"settings.relationOpenMode\"\n options={[\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.modal'\n ),\n defaultMessage: 'Modal (default)',\n }),\n value: 'modal',\n },\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.page'\n ),\n defaultMessage: 'Navigate to page',\n }),\n value: 'page',\n },\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.newTab'\n ),\n defaultMessage: 'Open in new tab',\n }),\n value: 'newTab',\n },\n ]}\n />\n </Grid.Item>\n </Grid.Root>\n <Divider />\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.view'),\n defaultMessage: 'View',\n })}\n </Typography>\n <Fields\n attributes={attributes}\n components={components}\n fieldSizes={fieldSizes}\n metadatas={metadatas}\n />\n </Flex>\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </>\n );\n};\n\n/**\n * @internal\n * @description Panels don't exist in the layout, so we flatten by one.\n */\nconst flattenPanels = (layout: EditLayout['layout']): EditLayout['layout'][number] =>\n layout.flat(1);\n\n/**\n * @internal\n * @description We don't need the mainField object in the layout, we only need the name.\n */\nconst replaceMainFieldWithNameOnly = (layout: EditLayout['layout'][number]) =>\n layout.map((row) =>\n row.map((field) => ({\n ...field,\n mainField: field.mainField?.name,\n }))\n );\n\n/**\n * @internal\n * @description We extract the metadata values from the field layout, because these are editable by the user.\n */\nconst extractMetadata = (\n layout: EditLayout['layout'][number]\n): Array<Exclude<ConfigurationFormData['layout'], { name: '_TEMP_' }>[number]['children']> => {\n return layout.map((row) =>\n row.map(({ label, disabled, hint, placeholder, size, name, mainField }) => ({\n label,\n editable: !disabled,\n description: hint,\n mainField,\n placeholder,\n size,\n name,\n __temp_key__: '',\n }))\n );\n};\n\n/**\n * @internal\n * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)\n * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)\n */\nconst addTmpSpaceToLayout = (\n layout: ReturnType<typeof extractMetadata>\n): Array<ConfigurationFormData['layout'][number]['children']> => [\n ...layout.map((row) => {\n const totalSpaceTaken = row.reduce((acc, field) => acc + field.size, 0);\n\n if (totalSpaceTaken < 12) {\n return [\n ...row,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: '',\n } satisfies EditFieldSpacerLayout,\n ];\n }\n\n return row;\n }),\n];\n\n/**\n * @internal\n * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__\n * applied. This means we need to change it so `Field` is nested under the children property.\n */\nconst addTmpKeysToLayout = (\n layout: ReturnType<typeof addTmpSpaceToLayout>\n): ConfigurationFormData['layout'] => {\n const keys = generateNKeysBetween(undefined, undefined, layout.length);\n\n return layout.map((row, rowIndex) => {\n const fieldKeys = generateNKeysBetween(undefined, undefined, row.length);\n\n return {\n __temp_key__: keys[rowIndex],\n children: row.map((field, fieldIndex) => {\n return {\n ...field,\n __temp_key__: fieldKeys[fieldIndex],\n };\n }),\n };\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n name: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: `Configure the view - {name}`,\n },\n { name: capitalise(name) }\n )}\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.edit-settings'),\n defaultMessage: 'Customize how the edit view will look like.',\n })}\n navigationAction={<BackButton />}\n primaryAction={\n <Button disabled={!modified} loading={isSubmitting} type=\"submit\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfigurationForm };\nexport type { ConfigurationFormProps, ConfigurationFormData, EditFieldSpacerLayout };\n"],"names":["ConfigurationForm","attributes","fieldSizes","layout","editLayout","onSubmit","components","settings","metadatas","formatMessage","useIntl","initialValues","React","useMemo","transformations","pipe","flattenPanels","replaceMainFieldWithNameOnly","extractMetadata","addTmpSpaceToLayout","addTmpKeysToLayout","relationOpenMode","_jsx","_Fragment","Main","_jsxs","Form","method","Header","name","displayName","Layouts","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","id","getTranslation","defaultMessage","Grid","Root","Item","col","xs","InputRenderer","type","label","hint","options","Object","entries","reduce","acc","key","attribute","ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD","includes","push","value","Divider","Fields","flat","map","row","field","mainField","disabled","placeholder","size","editable","description","__temp_key__","totalSpaceTaken","TEMP_FIELD_NAME","keys","generateNKeysBetween","undefined","length","rowIndex","fieldKeys","children","fieldIndex","modified","useForm","state","isSubmitting","title","capitalise","subtitle","navigationAction","BackButton","primaryAction","Button","loading"],"mappings":"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"}
1
+ {"version":3,"file":"Form.js","sources":["../../../../admin/src/components/ConfigurationForm/Form.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n FormProps,\n useForm,\n InputRenderer,\n BackButton,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Divider, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { capitalise } from '../../utils/strings';\nimport { getTranslation } from '../../utils/translations';\n\nimport { Fields, FieldsProps, TEMP_FIELD_NAME } from './Fields';\n\nimport type { EditFieldLayout, EditLayout } from '../../hooks/useDocumentLayout';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationFormProps extends Pick<FieldsProps, 'attributes' | 'fieldSizes'> {\n layout: EditLayout;\n onSubmit: FormProps<ConfigurationFormData>['onSubmit'];\n}\n\n/**\n * Every key in EditFieldLayout is turned to optional never and then we overwrite the ones we are using.\n */\n\ntype EditFieldSpacerLayout = {\n [key in keyof Omit<EditFieldLayout, 'name' | 'size'>]?: never;\n} & {\n description?: never;\n editable?: never;\n name: '_TEMP_';\n size: number;\n __temp_key__: string;\n};\n\ninterface ConfigurationFormData extends Pick<EditLayout, 'settings'> {\n layout: Array<{\n __temp_key__: string;\n children: Array<\n | (Pick<EditFieldLayout, 'label' | 'size' | 'name' | 'placeholder' | 'mainField'> & {\n description: EditFieldLayout['hint'];\n editable: EditFieldLayout['disabled'];\n __temp_key__: string;\n })\n | EditFieldSpacerLayout\n >;\n }>;\n}\n\nconst ConfigurationForm = ({\n attributes,\n fieldSizes,\n layout: editLayout,\n onSubmit,\n}: ConfigurationFormProps) => {\n const { components, settings, layout, metadatas } = editLayout;\n\n const { formatMessage } = useIntl();\n\n const initialValues: ConfigurationFormData = React.useMemo(() => {\n const transformations = pipe(\n flattenPanels,\n replaceMainFieldWithNameOnly,\n extractMetadata,\n addTmpSpaceToLayout,\n addTmpKeysToLayout\n );\n\n return {\n layout: transformations(layout),\n settings: {\n ...settings,\n relationOpenMode: settings.relationOpenMode ?? 'modal',\n },\n };\n }, [layout, settings]);\n\n return (\n <>\n <Main>\n <Form initialValues={initialValues} onSubmit={onSubmit} method=\"PUT\">\n <Header name={settings.displayName ?? ''} />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.entry.title'),\n defaultMessage: 'Entry title',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.entry.title.description'\n ),\n defaultMessage: 'Set the display field of your entry',\n })}\n name=\"settings.mainField\"\n options={Object.entries(attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n if (!attribute) {\n return acc;\n }\n\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, [])}\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.relationOpenMode'),\n defaultMessage: 'Relation open behavior',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.description'\n ),\n defaultMessage: 'Choose how relation entries open when clicked',\n })}\n name=\"settings.relationOpenMode\"\n options={[\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.modal'\n ),\n defaultMessage: 'Modal (default)',\n }),\n value: 'modal',\n },\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.page'\n ),\n defaultMessage: 'Navigate to page',\n }),\n value: 'page',\n },\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.newTab'\n ),\n defaultMessage: 'Open in new tab',\n }),\n value: 'newTab',\n },\n ]}\n />\n </Grid.Item>\n </Grid.Root>\n <Divider />\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.view'),\n defaultMessage: 'View',\n })}\n </Typography>\n <Fields\n attributes={attributes}\n components={components}\n fieldSizes={fieldSizes}\n metadatas={metadatas}\n />\n </Flex>\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </>\n );\n};\n\n/**\n * @internal\n * @description Panels don't exist in the layout, so we flatten by one.\n */\nconst flattenPanels = (layout: EditLayout['layout']): EditLayout['layout'][number] =>\n layout.flat(1);\n\n/**\n * @internal\n * @description We don't need the mainField object in the layout, we only need the name.\n */\nconst replaceMainFieldWithNameOnly = (layout: EditLayout['layout'][number]) =>\n layout.map((row) =>\n row.map((field) => ({\n ...field,\n mainField: field.mainField?.name,\n }))\n );\n\n/**\n * @internal\n * @description We extract the metadata values from the field layout, because these are editable by the user.\n */\nconst extractMetadata = (\n layout: EditLayout['layout'][number]\n): Array<Exclude<ConfigurationFormData['layout'], { name: '_TEMP_' }>[number]['children']> => {\n return layout.map((row) =>\n row.map(({ label, disabled, hint, placeholder, size, name, mainField }) => ({\n label,\n editable: !disabled,\n description: hint,\n mainField,\n placeholder,\n size,\n name,\n __temp_key__: '',\n }))\n );\n};\n\n/**\n * @internal\n * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)\n * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)\n */\nconst addTmpSpaceToLayout = (\n layout: ReturnType<typeof extractMetadata>\n): Array<ConfigurationFormData['layout'][number]['children']> =>\n layout.map((row) => {\n const totalSpaceTaken = row.reduce((acc, field) => acc + field.size, 0);\n\n if (totalSpaceTaken < 12) {\n return [\n ...row,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: '',\n } satisfies EditFieldSpacerLayout,\n ];\n }\n\n return row;\n });\n\n/**\n * @internal\n * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__\n * applied. This means we need to change it so `Field` is nested under the children property.\n */\nconst addTmpKeysToLayout = (\n layout: ReturnType<typeof addTmpSpaceToLayout>\n): ConfigurationFormData['layout'] => {\n const keys = generateNKeysBetween(undefined, undefined, layout.length);\n\n return layout.map((row, rowIndex) => {\n const fieldKeys = generateNKeysBetween(undefined, undefined, row.length);\n\n return {\n __temp_key__: keys[rowIndex],\n children: row.map((field, fieldIndex) => {\n return {\n ...field,\n __temp_key__: fieldKeys[fieldIndex],\n };\n }),\n };\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n name: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: `Configure the view - {name}`,\n },\n { name: capitalise(name) }\n )}\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.edit-settings'),\n defaultMessage: 'Customize how the edit view will look like.',\n })}\n navigationAction={<BackButton />}\n primaryAction={\n <Button disabled={!modified} loading={isSubmitting} type=\"submit\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfigurationForm };\nexport type { ConfigurationFormProps, ConfigurationFormData, EditFieldSpacerLayout };\n"],"names":["ConfigurationForm","attributes","fieldSizes","layout","editLayout","onSubmit","components","settings","metadatas","formatMessage","useIntl","initialValues","React","useMemo","transformations","pipe","flattenPanels","replaceMainFieldWithNameOnly","extractMetadata","addTmpSpaceToLayout","addTmpKeysToLayout","relationOpenMode","_jsx","_Fragment","Main","_jsxs","Form","method","Header","name","displayName","Layouts","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","id","getTranslation","defaultMessage","Grid","Root","Item","col","xs","InputRenderer","type","label","hint","options","Object","entries","reduce","acc","key","attribute","ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD","includes","push","value","Divider","Fields","flat","map","row","field","mainField","disabled","placeholder","size","editable","description","__temp_key__","totalSpaceTaken","TEMP_FIELD_NAME","keys","generateNKeysBetween","undefined","length","rowIndex","fieldKeys","children","fieldIndex","modified","useForm","state","isSubmitting","title","capitalise","subtitle","navigationAction","BackButton","primaryAction","Button","loading"],"mappings":"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"}
@@ -197,22 +197,20 @@ const ConfigurationForm = ({ attributes, fieldSizes, layout: editLayout, onSubmi
197
197
  * @internal
198
198
  * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)
199
199
  * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)
200
- */ const addTmpSpaceToLayout = (layout)=>[
201
- ...layout.map((row)=>{
202
- const totalSpaceTaken = row.reduce((acc, field)=>acc + field.size, 0);
203
- if (totalSpaceTaken < 12) {
204
- return [
205
- ...row,
206
- {
207
- name: TEMP_FIELD_NAME,
208
- size: 12 - totalSpaceTaken,
209
- __temp_key__: ''
210
- }
211
- ];
212
- }
213
- return row;
214
- })
215
- ];
200
+ */ const addTmpSpaceToLayout = (layout)=>layout.map((row)=>{
201
+ const totalSpaceTaken = row.reduce((acc, field)=>acc + field.size, 0);
202
+ if (totalSpaceTaken < 12) {
203
+ return [
204
+ ...row,
205
+ {
206
+ name: TEMP_FIELD_NAME,
207
+ size: 12 - totalSpaceTaken,
208
+ __temp_key__: ''
209
+ }
210
+ ];
211
+ }
212
+ return row;
213
+ });
216
214
  /**
217
215
  * @internal
218
216
  * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__
@@ -1 +1 @@
1
- {"version":3,"file":"Form.mjs","sources":["../../../../admin/src/components/ConfigurationForm/Form.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n FormProps,\n useForm,\n InputRenderer,\n BackButton,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Divider, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { capitalise } from '../../utils/strings';\nimport { getTranslation } from '../../utils/translations';\n\nimport { Fields, FieldsProps, TEMP_FIELD_NAME } from './Fields';\n\nimport type { EditFieldLayout, EditLayout } from '../../hooks/useDocumentLayout';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationFormProps extends Pick<FieldsProps, 'attributes' | 'fieldSizes'> {\n layout: EditLayout;\n onSubmit: FormProps<ConfigurationFormData>['onSubmit'];\n}\n\n/**\n * Every key in EditFieldLayout is turned to optional never and then we overwrite the ones we are using.\n */\n\ntype EditFieldSpacerLayout = {\n [key in keyof Omit<EditFieldLayout, 'name' | 'size'>]?: never;\n} & {\n description?: never;\n editable?: never;\n name: '_TEMP_';\n size: number;\n __temp_key__: string;\n};\n\ninterface ConfigurationFormData extends Pick<EditLayout, 'settings'> {\n layout: Array<{\n __temp_key__: string;\n children: Array<\n | (Pick<EditFieldLayout, 'label' | 'size' | 'name' | 'placeholder' | 'mainField'> & {\n description: EditFieldLayout['hint'];\n editable: EditFieldLayout['disabled'];\n __temp_key__: string;\n })\n | EditFieldSpacerLayout\n >;\n }>;\n}\n\nconst ConfigurationForm = ({\n attributes,\n fieldSizes,\n layout: editLayout,\n onSubmit,\n}: ConfigurationFormProps) => {\n const { components, settings, layout, metadatas } = editLayout;\n\n const { formatMessage } = useIntl();\n\n const initialValues: ConfigurationFormData = React.useMemo(() => {\n const transformations = pipe(\n flattenPanels,\n replaceMainFieldWithNameOnly,\n extractMetadata,\n addTmpSpaceToLayout,\n addTmpKeysToLayout\n );\n\n return {\n layout: transformations(layout),\n settings: {\n ...settings,\n relationOpenMode: settings.relationOpenMode ?? 'modal',\n },\n };\n }, [layout, settings]);\n\n return (\n <>\n <Main>\n <Form initialValues={initialValues} onSubmit={onSubmit} method=\"PUT\">\n <Header name={settings.displayName ?? ''} />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.entry.title'),\n defaultMessage: 'Entry title',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.entry.title.description'\n ),\n defaultMessage: 'Set the display field of your entry',\n })}\n name=\"settings.mainField\"\n options={Object.entries(attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n if (!attribute) {\n return acc;\n }\n\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, [])}\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.relationOpenMode'),\n defaultMessage: 'Relation open behavior',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.description'\n ),\n defaultMessage: 'Choose how relation entries open when clicked',\n })}\n name=\"settings.relationOpenMode\"\n options={[\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.modal'\n ),\n defaultMessage: 'Modal (default)',\n }),\n value: 'modal',\n },\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.page'\n ),\n defaultMessage: 'Navigate to page',\n }),\n value: 'page',\n },\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.newTab'\n ),\n defaultMessage: 'Open in new tab',\n }),\n value: 'newTab',\n },\n ]}\n />\n </Grid.Item>\n </Grid.Root>\n <Divider />\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.view'),\n defaultMessage: 'View',\n })}\n </Typography>\n <Fields\n attributes={attributes}\n components={components}\n fieldSizes={fieldSizes}\n metadatas={metadatas}\n />\n </Flex>\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </>\n );\n};\n\n/**\n * @internal\n * @description Panels don't exist in the layout, so we flatten by one.\n */\nconst flattenPanels = (layout: EditLayout['layout']): EditLayout['layout'][number] =>\n layout.flat(1);\n\n/**\n * @internal\n * @description We don't need the mainField object in the layout, we only need the name.\n */\nconst replaceMainFieldWithNameOnly = (layout: EditLayout['layout'][number]) =>\n layout.map((row) =>\n row.map((field) => ({\n ...field,\n mainField: field.mainField?.name,\n }))\n );\n\n/**\n * @internal\n * @description We extract the metadata values from the field layout, because these are editable by the user.\n */\nconst extractMetadata = (\n layout: EditLayout['layout'][number]\n): Array<Exclude<ConfigurationFormData['layout'], { name: '_TEMP_' }>[number]['children']> => {\n return layout.map((row) =>\n row.map(({ label, disabled, hint, placeholder, size, name, mainField }) => ({\n label,\n editable: !disabled,\n description: hint,\n mainField,\n placeholder,\n size,\n name,\n __temp_key__: '',\n }))\n );\n};\n\n/**\n * @internal\n * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)\n * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)\n */\nconst addTmpSpaceToLayout = (\n layout: ReturnType<typeof extractMetadata>\n): Array<ConfigurationFormData['layout'][number]['children']> => [\n ...layout.map((row) => {\n const totalSpaceTaken = row.reduce((acc, field) => acc + field.size, 0);\n\n if (totalSpaceTaken < 12) {\n return [\n ...row,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: '',\n } satisfies EditFieldSpacerLayout,\n ];\n }\n\n return row;\n }),\n];\n\n/**\n * @internal\n * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__\n * applied. This means we need to change it so `Field` is nested under the children property.\n */\nconst addTmpKeysToLayout = (\n layout: ReturnType<typeof addTmpSpaceToLayout>\n): ConfigurationFormData['layout'] => {\n const keys = generateNKeysBetween(undefined, undefined, layout.length);\n\n return layout.map((row, rowIndex) => {\n const fieldKeys = generateNKeysBetween(undefined, undefined, row.length);\n\n return {\n __temp_key__: keys[rowIndex],\n children: row.map((field, fieldIndex) => {\n return {\n ...field,\n __temp_key__: fieldKeys[fieldIndex],\n };\n }),\n };\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n name: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: `Configure the view - {name}`,\n },\n { name: capitalise(name) }\n )}\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.edit-settings'),\n defaultMessage: 'Customize how the edit view will look like.',\n })}\n navigationAction={<BackButton />}\n primaryAction={\n <Button disabled={!modified} loading={isSubmitting} type=\"submit\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfigurationForm };\nexport type { ConfigurationFormProps, ConfigurationFormData, EditFieldSpacerLayout };\n"],"names":["ConfigurationForm","attributes","fieldSizes","layout","editLayout","onSubmit","components","settings","metadatas","formatMessage","useIntl","initialValues","React","useMemo","transformations","pipe","flattenPanels","replaceMainFieldWithNameOnly","extractMetadata","addTmpSpaceToLayout","addTmpKeysToLayout","relationOpenMode","_jsx","_Fragment","Main","_jsxs","Form","method","Header","name","displayName","Layouts","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","id","getTranslation","defaultMessage","Grid","Root","Item","col","xs","InputRenderer","type","label","hint","options","Object","entries","reduce","acc","key","attribute","ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD","includes","push","value","Divider","Fields","flat","map","row","field","mainField","disabled","placeholder","size","editable","description","__temp_key__","totalSpaceTaken","TEMP_FIELD_NAME","keys","generateNKeysBetween","undefined","length","rowIndex","fieldKeys","children","fieldIndex","modified","useForm","state","isSubmitting","title","capitalise","subtitle","navigationAction","BackButton","primaryAction","Button","loading"],"mappings":"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"}
1
+ {"version":3,"file":"Form.mjs","sources":["../../../../admin/src/components/ConfigurationForm/Form.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Form,\n FormProps,\n useForm,\n InputRenderer,\n BackButton,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Divider, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { capitalise } from '../../utils/strings';\nimport { getTranslation } from '../../utils/translations';\n\nimport { Fields, FieldsProps, TEMP_FIELD_NAME } from './Fields';\n\nimport type { EditFieldLayout, EditLayout } from '../../hooks/useDocumentLayout';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationFormProps extends Pick<FieldsProps, 'attributes' | 'fieldSizes'> {\n layout: EditLayout;\n onSubmit: FormProps<ConfigurationFormData>['onSubmit'];\n}\n\n/**\n * Every key in EditFieldLayout is turned to optional never and then we overwrite the ones we are using.\n */\n\ntype EditFieldSpacerLayout = {\n [key in keyof Omit<EditFieldLayout, 'name' | 'size'>]?: never;\n} & {\n description?: never;\n editable?: never;\n name: '_TEMP_';\n size: number;\n __temp_key__: string;\n};\n\ninterface ConfigurationFormData extends Pick<EditLayout, 'settings'> {\n layout: Array<{\n __temp_key__: string;\n children: Array<\n | (Pick<EditFieldLayout, 'label' | 'size' | 'name' | 'placeholder' | 'mainField'> & {\n description: EditFieldLayout['hint'];\n editable: EditFieldLayout['disabled'];\n __temp_key__: string;\n })\n | EditFieldSpacerLayout\n >;\n }>;\n}\n\nconst ConfigurationForm = ({\n attributes,\n fieldSizes,\n layout: editLayout,\n onSubmit,\n}: ConfigurationFormProps) => {\n const { components, settings, layout, metadatas } = editLayout;\n\n const { formatMessage } = useIntl();\n\n const initialValues: ConfigurationFormData = React.useMemo(() => {\n const transformations = pipe(\n flattenPanels,\n replaceMainFieldWithNameOnly,\n extractMetadata,\n addTmpSpaceToLayout,\n addTmpKeysToLayout\n );\n\n return {\n layout: transformations(layout),\n settings: {\n ...settings,\n relationOpenMode: settings.relationOpenMode ?? 'modal',\n },\n };\n }, [layout, settings]);\n\n return (\n <>\n <Main>\n <Form initialValues={initialValues} onSubmit={onSubmit} method=\"PUT\">\n <Header name={settings.displayName ?? ''} />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.entry.title'),\n defaultMessage: 'Entry title',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.entry.title.description'\n ),\n defaultMessage: 'Set the display field of your entry',\n })}\n name=\"settings.mainField\"\n options={Object.entries(attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n if (!attribute) {\n return acc;\n }\n\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, [])}\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.relationOpenMode'),\n defaultMessage: 'Relation open behavior',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.description'\n ),\n defaultMessage: 'Choose how relation entries open when clicked',\n })}\n name=\"settings.relationOpenMode\"\n options={[\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.modal'\n ),\n defaultMessage: 'Modal (default)',\n }),\n value: 'modal',\n },\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.page'\n ),\n defaultMessage: 'Navigate to page',\n }),\n value: 'page',\n },\n {\n label: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.relationOpenMode.newTab'\n ),\n defaultMessage: 'Open in new tab',\n }),\n value: 'newTab',\n },\n ]}\n />\n </Grid.Item>\n </Grid.Root>\n <Divider />\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.view'),\n defaultMessage: 'View',\n })}\n </Typography>\n <Fields\n attributes={attributes}\n components={components}\n fieldSizes={fieldSizes}\n metadatas={metadatas}\n />\n </Flex>\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </>\n );\n};\n\n/**\n * @internal\n * @description Panels don't exist in the layout, so we flatten by one.\n */\nconst flattenPanels = (layout: EditLayout['layout']): EditLayout['layout'][number] =>\n layout.flat(1);\n\n/**\n * @internal\n * @description We don't need the mainField object in the layout, we only need the name.\n */\nconst replaceMainFieldWithNameOnly = (layout: EditLayout['layout'][number]) =>\n layout.map((row) =>\n row.map((field) => ({\n ...field,\n mainField: field.mainField?.name,\n }))\n );\n\n/**\n * @internal\n * @description We extract the metadata values from the field layout, because these are editable by the user.\n */\nconst extractMetadata = (\n layout: EditLayout['layout'][number]\n): Array<Exclude<ConfigurationFormData['layout'], { name: '_TEMP_' }>[number]['children']> => {\n return layout.map((row) =>\n row.map(({ label, disabled, hint, placeholder, size, name, mainField }) => ({\n label,\n editable: !disabled,\n description: hint,\n mainField,\n placeholder,\n size,\n name,\n __temp_key__: '',\n }))\n );\n};\n\n/**\n * @internal\n * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)\n * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)\n */\nconst addTmpSpaceToLayout = (\n layout: ReturnType<typeof extractMetadata>\n): Array<ConfigurationFormData['layout'][number]['children']> =>\n layout.map((row) => {\n const totalSpaceTaken = row.reduce((acc, field) => acc + field.size, 0);\n\n if (totalSpaceTaken < 12) {\n return [\n ...row,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: '',\n } satisfies EditFieldSpacerLayout,\n ];\n }\n\n return row;\n });\n\n/**\n * @internal\n * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__\n * applied. This means we need to change it so `Field` is nested under the children property.\n */\nconst addTmpKeysToLayout = (\n layout: ReturnType<typeof addTmpSpaceToLayout>\n): ConfigurationFormData['layout'] => {\n const keys = generateNKeysBetween(undefined, undefined, layout.length);\n\n return layout.map((row, rowIndex) => {\n const fieldKeys = generateNKeysBetween(undefined, undefined, row.length);\n\n return {\n __temp_key__: keys[rowIndex],\n children: row.map((field, fieldIndex) => {\n return {\n ...field,\n __temp_key__: fieldKeys[fieldIndex],\n };\n }),\n };\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n name: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: `Configure the view - {name}`,\n },\n { name: capitalise(name) }\n )}\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.edit-settings'),\n defaultMessage: 'Customize how the edit view will look like.',\n })}\n navigationAction={<BackButton />}\n primaryAction={\n <Button disabled={!modified} loading={isSubmitting} type=\"submit\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfigurationForm };\nexport type { ConfigurationFormProps, ConfigurationFormData, EditFieldSpacerLayout };\n"],"names":["ConfigurationForm","attributes","fieldSizes","layout","editLayout","onSubmit","components","settings","metadatas","formatMessage","useIntl","initialValues","React","useMemo","transformations","pipe","flattenPanels","replaceMainFieldWithNameOnly","extractMetadata","addTmpSpaceToLayout","addTmpKeysToLayout","relationOpenMode","_jsx","_Fragment","Main","_jsxs","Form","method","Header","name","displayName","Layouts","Content","Flex","alignItems","background","direction","gap","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","id","getTranslation","defaultMessage","Grid","Root","Item","col","xs","InputRenderer","type","label","hint","options","Object","entries","reduce","acc","key","attribute","ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD","includes","push","value","Divider","Fields","flat","map","row","field","mainField","disabled","placeholder","size","editable","description","__temp_key__","totalSpaceTaken","TEMP_FIELD_NAME","keys","generateNKeysBetween","undefined","length","rowIndex","fieldKeys","children","fieldIndex","modified","useForm","state","isSubmitting","title","capitalise","subtitle","navigationAction","BackButton","primaryAction","Button","loading"],"mappings":"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"}
@@ -100,7 +100,7 @@ const VersionHeader = ({ headerId })=>{
100
100
  })
101
101
  });
102
102
  }
103
- } catch (error) {
103
+ } catch {
104
104
  toggleNotification({
105
105
  type: 'danger',
106
106
  message: formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"VersionHeader.js","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
1
+ {"version":3,"file":"VersionHeader.js","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BO,MAAMA,aAAAA,GAAgB,CAAC,EAAEC,QAAQ,EAAsB,GAAA;AAC5D,IAAA,MAAM,CAACC,mBAAAA,EAAqBC,sBAAAA,CAAuB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACrE,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;IACtC,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;IACvB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AAGpB,IAAA,MAAM,EAAEC,cAAc,EAAEC,IAAI,EAAE,GAAGC,wBAAAA,EAAAA;AACjC,IAAA,MAAM,CAACC,cAAAA,EAAgB,EAAEC,SAAS,EAAE,CAAC,GAAGC,wCAAAA,EAAAA;IACxC,MAAM,EAAEC,cAAc,EAAE,GAAGC,mBAAAA,CAAQC,mBAAYC,GAAG,CAAC,CAACC,MAAAA,IAAY;AAAEA,YAAAA,MAAAA;YAAQC,OAAAA,EAASV;SAAK,CAAA,CAAA,CAAA;AAExF,IAAA,MAAMW,UAAUC,yBAAAA,CAAkB,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAMC,eAAe,CAAA;AACnF,IAAA,MAAMC,YAAYH,yBAAAA,CAAkB,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAME,SAAS,CAAA;AAC/E,IAAA,MAAMC,SAASJ,yBAAAA,CAAkB,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAMG,MAAM,CAAA;IACzE,MAAMC,gBAAAA,GAAmBL,0BACvB,eAAA,EACA,CAACC,QAAUA,KAAAA,CAAMK,IAAI,KAAK,CAAA,IAAKL,KAAAA,CAAMM,QAAQ,CAACC,IAAI,CAAC,CAAA,CAAE,CAACC,EAAE,KAAKR,KAAAA,CAAMC,eAAe,CAACO,EAAE,CAAA;AAGvF,IAAA,MAAMC,cAAAA,GAAiBX,OAAAA,CAAQS,IAAI,CAACL,SAAAA,CAAU;AAE9C,IAAA,MAAMQ,iBAAAA,GAAoB,IAAA;AACxB,QAAA,MAAMC,qBAAqBC,YAAAA,CAAU;AAAEC,YAAAA,OAAAA,EAAS7B,MAAM6B;SAAQ,EAAG;YAAEC,MAAAA,EAAQ;AAAM,SAAA,CAAA;QAEjF,OAAO;YACLC,QAAAA,EAAU,IAAA;YACVC,MAAAA,EAAQL;AACV,SAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMM,aAAAA,GAAgB,UAAA;QACpB,IAAI;YACF,MAAMC,QAAAA,GAAW,MAAM7B,cAAAA,CAAe;AACpC8B,gBAAAA,UAAAA,EAAYrB,QAAQsB,iBAAiB;AACrClC,gBAAAA,cAAAA;gBACAmC,MAAAA,EAAQ;AACNC,oBAAAA,SAAAA,EAAWxB,QAAQU,EAAE;AACrBe,oBAAAA,WAAAA,EAAazB,QAAQyB;AACvB,iBAAA;gBACAC,IAAAA,EAAM;AAAED,oBAAAA,WAAAA,EAAazB,QAAQyB;AAAY;AAC3C,aAAA,CAAA;AAEA,YAAA,IAAI,UAAUL,QAAAA,EAAU;AACtB3C,gBAAAA,QAAAA,CAASmC,iBAAAA,EAAAA,EAAqB;oBAAEe,QAAAA,EAAU;AAAO,iBAAA,CAAA;gBAEjD3C,kBAAAA,CAAmB;oBACjB4C,IAAAA,EAAM,SAAA;AACNC,oBAAAA,KAAAA,EAAOlD,aAAAA,CAAc;wBACnB+B,EAAAA,EAAI,uCAAA;wBACJoB,cAAAA,EAAgB;AAClB,qBAAA,CAAA;AACAC,oBAAAA,OAAAA,EAASpD,aAAAA,CAAc;wBACrB+B,EAAAA,EAAI,yCAAA;wBACJoB,cAAAA,EAAgB;AAClB,qBAAA;AACF,iBAAA,CAAA;gBAEAhD,UAAAA,CAAW,0BAAA,CAAA;AACb,YAAA;AAEA,YAAA,IAAI,WAAWsC,QAAAA,EAAU;gBACvBpC,kBAAAA,CAAmB;oBACjB4C,IAAAA,EAAM,QAAA;AACNG,oBAAAA,OAAAA,EAASpD,aAAAA,CAAc;wBACrB+B,EAAAA,EAAI,+CAAA;wBACJoB,cAAAA,EAAgB;AAClB,qBAAA;AACF,iBAAA,CAAA;AACF,YAAA;AACF,QAAA,CAAA,CAAE,OAAM;YACN9C,kBAAAA,CAAmB;gBACjB4C,IAAAA,EAAM,QAAA;AACNG,gBAAAA,OAAAA,EAASpD,aAAAA,CAAc;oBAAE+B,EAAAA,EAAI,oBAAA;oBAAsBoB,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACEE,eAAA,CAACC,oBAAOC,IAAI,EAAA;QAACC,IAAAA,EAAM9D,mBAAAA;QAAqB+D,YAAAA,EAAc9D,sBAAAA;;AACpD,0BAAA+D,cAAA,CAACC,oBAAQC,UAAU,EAAA;gBACjB7B,EAAAA,EAAItC,QAAAA;AACJyD,gBAAAA,KAAAA,EAAOjD,UAAAA,CAAW,IAAI4D,IAAAA,CAAKxC,OAAAA,CAAQyC,SAAS,CAAA,EAAG;oBAC7CC,IAAAA,EAAM,SAAA;oBACNC,KAAAA,EAAO,SAAA;oBACPC,GAAAA,EAAK,SAAA;oBACLC,IAAAA,EAAM,SAAA;oBACNC,MAAAA,EAAQ;AACV,iBAAA,CAAA;AACAC,gBAAAA,eAAAA,gBACEV,cAAA,CAACW,yBAAAA,EAAAA;AACCC,oBAAAA,KAAAA,EAAOtE,aAAAA,CAAc;wBACnB+B,EAAAA,EAAI,iCAAA;wBACJoB,cAAAA,EAAgB;AAClB,qBAAA;;AAGJoB,gBAAAA,QAAAA,gBACEb,cAAA,CAACc,uBAAAA,EAAAA;oBAAWC,OAAAA,EAAQ,SAAA;oBAAUC,SAAAA,EAAU,YAAA;8BACrC1E,aAAAA,CACC;wBACE+B,EAAAA,EAAI,0CAAA;wBACJoB,cAAAA,EACE;qBACJ,EACA;wBACEwB,SAAAA,EAAWC,OAAAA,CAAQvD,QAAQwD,MAAM,CAAA;AACjCN,wBAAAA,QAAAA,EAAU,CAAA,EAAGvC,cAAAA,IAAkB,EAAA,CAAG,EAAE,EAAEN,MAAAA,CAAOoD,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,CAACC,IAAI,EAAA;wBACtEH,MAAAA,EAAQxD,OAAAA,CAAQwD,MAAM,EAAEI;AAC1B,qBAAA;;AAINC,gBAAAA,gBAAAA,gBACExB,cAAA,CAACyB,iBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,gBAAW1B,cAAA,CAAC2B,eAAAA,EAAAA,EAAAA,CAAAA;oBACZC,GAAAA,EAAKC,sBAAAA;oBACLC,EAAAA,EAAIvD,iBAAAA,EAAAA;oBACJe,QAAAA,EAAS,MAAA;oBACTyC,UAAAA,EAAY,KAAA;8BAEXzF,aAAAA,CAAc;wBACb+B,EAAAA,EAAI,aAAA;wBACJoB,cAAAA,EAAgB;AAClB,qBAAA;;gBAGJuC,MAAAA,EAAQ,KAAA;gBACRC,aAAAA,gBACEjC,cAAA,CAACJ,oBAAOsC,OAAO,EAAA;AACb,oBAAA,QAAA,gBAAAlC,cAAA,CAACmC,mBAAAA,EAAAA;wBACCC,QAAAA,EAAU,CAAC/E,cAAAA,CAAegF,SAAS,IAAIpE,gBAAAA;wBACvCqE,OAAAA,EAAS,IAAA;4BACPrG,sBAAAA,CAAuB,IAAA,CAAA;AACzB,wBAAA,CAAA;wBACAsG,SAAS,EAAA,IAAA;kCAERjG,aAAAA,CAAc;4BACb+B,EAAAA,EAAI,gDAAA;4BACJoB,cAAAA,EAAgB;AAClB,yBAAA;;;;0BAKRO,cAAA,CAACwC,yBAAAA,EAAAA;gBACCC,SAAAA,EAAW3D,aAAAA;AACX4D,gBAAAA,SAAAA,gBACE1C,cAAA,CAACmC,mBAAAA,EAAAA;oBAAOI,SAAS,EAAA,IAAA;oBAACxB,OAAAA,EAAQ,WAAA;oBAAYuB,OAAAA,EAASxD,aAAAA;oBAAe6D,OAAAA,EAASxF,SAAAA;8BACpEb,aAAAA,CAAc;wBACb+B,EAAAA,EAAI,gDAAA;wBACJoB,cAAAA,EAAgB;AAClB,qBAAA;;AAIJ,gBAAA,QAAA,gBAAAE,eAAA,CAACiD,iBAAAA,EAAAA;oBACCC,SAAAA,EAAU,QAAA;oBACVC,UAAAA,EAAW,QAAA;oBACXC,cAAAA,EAAe,QAAA;oBACfC,GAAAA,EAAK,CAAA;oBACLC,SAAAA,EAAU,QAAA;;sCAEVjD,cAAA,CAAC4C,iBAAAA,EAAAA;4BAAKG,cAAAA,EAAe,QAAA;AACnB,4BAAA,QAAA,gBAAA/C,cAAA,CAACkD,mBAAAA,EAAAA;gCAAcC,KAAAA,EAAM,MAAA;gCAAOC,MAAAA,EAAO,MAAA;gCAAOC,IAAAA,EAAK;;;sCAEjDrD,cAAA,CAACc,uBAAAA,EAAAA;sCACExE,aAAAA,CAAc;gCACb+B,EAAAA,EAAI,+CAAA;gCACJoB,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFO,cAAA,CAACc,uBAAAA,EAAAA;sCACExE,aAAAA,CACC;gCACE+B,EAAAA,EAAI,iDAAA;gCACJoB,cAAAA,EACE;6BACJ,EACA;gCACE6D,OAAAA,EAAS3F,OAAAA,CAAQ4F,MAAM,KAAK;AAC9B,6BAAA;;;;;;;AAOd;;;;"}
@@ -78,7 +78,7 @@ const VersionHeader = ({ headerId })=>{
78
78
  })
79
79
  });
80
80
  }
81
- } catch (error) {
81
+ } catch {
82
82
  toggleNotification({
83
83
  type: 'danger',
84
84
  message: formatMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"VersionHeader.mjs","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","error","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
1
+ {"version":3,"file":"VersionHeader.mjs","sources":["../../../../admin/src/history/components/VersionHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n GradientBadge,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n fullWidth\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button fullWidth variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n"],"names":["VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","React","useState","navigate","useNavigate","formatMessage","formatDate","useIntl","trackUsage","useTracking","toggleNotification","useNotification","query","useQueryParams","collectionType","slug","useParams","restoreVersion","isLoading","useRestoreVersionMutation","allowedActions","useRBAC","PERMISSIONS","map","action","subject","version","useHistoryContext","state","selectedVersion","mainField","schema","isCurrentVersion","page","versions","data","id","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","documentId","relatedDocumentId","params","versionId","contentType","body","relative","type","title","defaultMessage","message","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Layouts","BaseHeader","Date","createdAt","year","month","day","hour","minute","secondaryAction","GradientBadge","label","subtitle","Typography","variant","textColor","hasLocale","Boolean","locale","info","singularName","trim","name","navigationAction","Link","startIcon","ArrowLeft","tag","NavLink","to","isExternal","sticky","primaryAction","Trigger","Button","disabled","canUpdate","onClick","fullWidth","ConfirmDialog","onConfirm","endAction","loading","Flex","direction","alignItems","justifyContent","gap","textAlign","WarningCircle","width","height","fill","isDraft","status"],"mappings":"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"}
@@ -34,7 +34,7 @@ var History = require('../pages/History.js');
34
34
  timestamp: new Date(version.createdAt)
35
35
  }),
36
36
  author,
37
- isAnonymous: !Boolean(version.createdBy),
37
+ isAnonymous: !version.createdBy,
38
38
  isCurrent,
39
39
  b: BlueText
40
40
  })
@@ -1 +1 @@
1
- {"version":3,"file":"VersionsList.js","sources":["../../../../admin/src/history/components/VersionsList.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { ActionsDrawer, useActionsDrawer } from '../../components/ActionsDrawer';\nimport { RelativeTime } from '../../components/RelativeTime';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDisplayName } from '../../utils/users';\nimport { useHistoryContext } from '../pages/History';\n\nimport type { HistoryVersions } from '../../../../shared/contracts';\n\n/* -------------------------------------------------------------------------------------------------\n * BlueText\n * -----------------------------------------------------------------------------------------------*/\n\nconst BlueText = (children: React.ReactNode) => (\n <Typography textColor=\"primary600\" variant=\"pi\">\n {children}\n </Typography>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * VersionAuthor\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionAuthor = ({\n version,\n isCurrent,\n}: {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}) => {\n const { formatMessage } = useIntl();\n const author = version.createdBy && getDisplayName(version.createdBy);\n return (\n <>\n {formatMessage(\n {\n id: 'content-manager.history.sidebar.versionDescription',\n defaultMessage:\n '{distanceToNow}{isAnonymous, select, true {} other { by {author}}}{isCurrent, select, true { <b>(current)</b>} other {}}',\n },\n {\n distanceToNow: <RelativeTime timestamp={new Date(version.createdAt)} />,\n author,\n isAnonymous: !Boolean(version.createdBy),\n isCurrent,\n b: BlueText,\n }\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VersionCardProps {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}\n\nconst VersionCard = ({ version, isCurrent }: VersionCardProps) => {\n const { formatDate } = useIntl();\n const [{ query }] = useQueryParams<{ id?: string }>();\n const setIsOpen = useActionsDrawer('VersionCard', (s) => s?.setIsOpen, false);\n const isActive = query.id === version.id.toString();\n\n const handleClick = () => {\n setIsOpen?.(false);\n };\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={3}\n hasRadius\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={isActive ? 'primary600' : 'neutral200'}\n color=\"neutral800\"\n padding={5}\n tag={Link}\n to={`?${stringify({ ...query, id: version.id })}`}\n style={{ textDecoration: 'none' }}\n onClick={handleClick}\n >\n <Flex direction=\"column\" gap={1} alignItems=\"flex-start\">\n <Typography tag=\"h3\" fontWeight=\"semiBold\">\n {formatDate(version.createdAt, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </Typography>\n <Typography tag=\"p\" variant=\"pi\" textColor=\"neutral600\">\n <VersionAuthor version={version} isCurrent={isCurrent} />\n </Typography>\n </Flex>\n {version.status && <DocumentStatus status={version.status} size=\"XS\" />}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PaginationButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PaginationButtonProps {\n page: number;\n children: React.ReactNode;\n}\n\nconst PaginationButton = ({ page, children }: PaginationButtonProps) => {\n const [{ query }] = useQueryParams<{ id?: string }>();\n\n // Remove the id from the pagination link, so that the history page can redirect\n // to the id of the first history version in the new page once it's loaded\n const { id: _id, ...queryRest } = query;\n\n return (\n <Link to={{ search: stringify({ ...queryRest, page }) }} style={{ textDecoration: 'none' }}>\n <Typography variant=\"omega\" textColor=\"primary600\">\n {children}\n </Typography>\n </Link>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsListItems\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsListItems = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsListItems', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n\n return (\n <Box flex={1} overflow=\"auto\">\n {versions.meta.pagination.page > 1 && (\n <Box paddingTop={4} textAlign=\"center\">\n <PaginationButton page={page - 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-newer',\n defaultMessage: 'Show newer versions',\n })}\n </PaginationButton>\n </Box>\n )}\n <Flex\n direction=\"column\"\n gap={3}\n padding={{ initial: 0, medium: 4 }}\n tag=\"ul\"\n alignItems=\"stretch\"\n >\n {versions.data.map((version, index) => (\n <li\n key={version.id}\n aria-label={formatMessage({\n id: 'content-manager.history.sidebar.title.version-card.aria-label',\n defaultMessage: 'Version card',\n })}\n >\n <VersionCard version={version} isCurrent={page === 1 && index === 0} />\n </li>\n ))}\n </Flex>\n {versions.meta.pagination.page < versions.meta.pagination.pageCount && (\n <Box paddingBottom={4} textAlign=\"center\">\n <PaginationButton page={page + 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-older',\n defaultMessage: 'Show older versions',\n })}\n </PaginationButton>\n </Box>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsList = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsList', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n const isMobile = useIsMobile();\n\n const [{ query }] = useQueryParams<{ id?: string }>();\n const currentVersion = versions.data.find((version) => version.id.toString() === query.id);\n\n return !isMobile ? (\n <Flex\n shrink={0}\n direction=\"column\"\n alignItems=\"stretch\"\n width={{ initial: '28rem', large: '32rem' }}\n height=\"100%\"\n overflow=\"hidden\"\n background=\"neutral0\"\n borderColor=\"neutral200\"\n borderWidth=\"0 0 0 1px\"\n borderStyle=\"solid\"\n tag=\"aside\"\n >\n <Flex\n direction=\"row\"\n justifyContent=\"space-between\"\n padding={4}\n borderColor=\"neutral200\"\n borderWidth=\"0 0 1px\"\n borderStyle=\"solid\"\n tag=\"header\"\n role=\"banner\"\n >\n <Typography tag=\"h2\" variant=\"omega\" fontWeight=\"semiBold\">\n {formatMessage({\n id: 'content-manager.history.sidebar.title',\n defaultMessage: 'Versions',\n })}\n </Typography>\n <Box background=\"neutral150\" hasRadius padding={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {versions.meta.pagination.total}\n </Typography>\n </Box>\n </Flex>\n <VersionsListItems />\n </Flex>\n ) : (\n <>\n <ActionsDrawer.Root hasContent hasSideNav>\n <ActionsDrawer.Overlay />\n <ActionsDrawer.Header>\n {currentVersion && (\n <Flex gap={2} overflow=\"hidden\">\n <Box flex={1} overflow=\"hidden\">\n <Typography\n display=\"block\"\n variant=\"omega\"\n textColor=\"neutral600\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n <VersionAuthor\n version={currentVersion}\n isCurrent={page === 1 && versions.data.indexOf(currentVersion) === 0}\n />\n </Typography>\n </Box>\n {currentVersion.status && <DocumentStatus status={currentVersion.status} size=\"XS\" />}\n </Flex>\n )}\n </ActionsDrawer.Header>\n <ActionsDrawer.Content>\n <VersionsListItems />\n </ActionsDrawer.Content>\n </ActionsDrawer.Root>\n {/* Adding a fixed height to the bottom of the page to prevent \n the actions drawer from covering the content\n (32px + 12px * 2 padding + 1px border) */}\n <Box width=\"100%\" height=\"5.7rem\" />\n </>\n );\n};\n\nexport { VersionsList };\n"],"names":["BlueText","children","_jsx","Typography","textColor","variant","VersionAuthor","version","isCurrent","formatMessage","useIntl","author","createdBy","getDisplayName","_Fragment","id","defaultMessage","distanceToNow","RelativeTime","timestamp","Date","createdAt","isAnonymous","Boolean","b","VersionCard","formatDate","query","useQueryParams","setIsOpen","useActionsDrawer","s","isActive","toString","handleClick","_jsxs","Flex","direction","alignItems","gap","hasRadius","borderWidth","borderStyle","borderColor","color","padding","tag","Link","to","stringify","style","textDecoration","onClick","fontWeight","day","month","year","hour","minute","status","DocumentStatus","size","PaginationButton","page","_id","queryRest","search","VersionsListItems","versions","useHistoryContext","state","Box","flex","overflow","meta","pagination","paddingTop","textAlign","initial","medium","data","map","index","li","aria-label","pageCount","paddingBottom","VersionsList","isMobile","useIsMobile","currentVersion","find","shrink","width","large","height","background","justifyContent","role","total","ActionsDrawer","Root","hasContent","hasSideNav","Overlay","Header","display","textOverflow","whiteSpace","indexOf","Content"],"mappings":"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"}
1
+ {"version":3,"file":"VersionsList.js","sources":["../../../../admin/src/history/components/VersionsList.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { ActionsDrawer, useActionsDrawer } from '../../components/ActionsDrawer';\nimport { RelativeTime } from '../../components/RelativeTime';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDisplayName } from '../../utils/users';\nimport { useHistoryContext } from '../pages/History';\n\nimport type { HistoryVersions } from '../../../../shared/contracts';\n\n/* -------------------------------------------------------------------------------------------------\n * BlueText\n * -----------------------------------------------------------------------------------------------*/\n\nconst BlueText = (children: React.ReactNode) => (\n <Typography textColor=\"primary600\" variant=\"pi\">\n {children}\n </Typography>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * VersionAuthor\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionAuthor = ({\n version,\n isCurrent,\n}: {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}) => {\n const { formatMessage } = useIntl();\n const author = version.createdBy && getDisplayName(version.createdBy);\n return (\n <>\n {formatMessage(\n {\n id: 'content-manager.history.sidebar.versionDescription',\n defaultMessage:\n '{distanceToNow}{isAnonymous, select, true {} other { by {author}}}{isCurrent, select, true { <b>(current)</b>} other {}}',\n },\n {\n distanceToNow: <RelativeTime timestamp={new Date(version.createdAt)} />,\n author,\n isAnonymous: !version.createdBy,\n isCurrent,\n b: BlueText,\n }\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VersionCardProps {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}\n\nconst VersionCard = ({ version, isCurrent }: VersionCardProps) => {\n const { formatDate } = useIntl();\n const [{ query }] = useQueryParams<{ id?: string }>();\n const setIsOpen = useActionsDrawer('VersionCard', (s) => s?.setIsOpen, false);\n const isActive = query.id === version.id.toString();\n\n const handleClick = () => {\n setIsOpen?.(false);\n };\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={3}\n hasRadius\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={isActive ? 'primary600' : 'neutral200'}\n color=\"neutral800\"\n padding={5}\n tag={Link}\n to={`?${stringify({ ...query, id: version.id })}`}\n style={{ textDecoration: 'none' }}\n onClick={handleClick}\n >\n <Flex direction=\"column\" gap={1} alignItems=\"flex-start\">\n <Typography tag=\"h3\" fontWeight=\"semiBold\">\n {formatDate(version.createdAt, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </Typography>\n <Typography tag=\"p\" variant=\"pi\" textColor=\"neutral600\">\n <VersionAuthor version={version} isCurrent={isCurrent} />\n </Typography>\n </Flex>\n {version.status && <DocumentStatus status={version.status} size=\"XS\" />}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PaginationButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PaginationButtonProps {\n page: number;\n children: React.ReactNode;\n}\n\nconst PaginationButton = ({ page, children }: PaginationButtonProps) => {\n const [{ query }] = useQueryParams<{ id?: string }>();\n\n // Remove the id from the pagination link, so that the history page can redirect\n // to the id of the first history version in the new page once it's loaded\n const { id: _id, ...queryRest } = query;\n\n return (\n <Link to={{ search: stringify({ ...queryRest, page }) }} style={{ textDecoration: 'none' }}>\n <Typography variant=\"omega\" textColor=\"primary600\">\n {children}\n </Typography>\n </Link>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsListItems\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsListItems = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsListItems', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n\n return (\n <Box flex={1} overflow=\"auto\">\n {versions.meta.pagination.page > 1 && (\n <Box paddingTop={4} textAlign=\"center\">\n <PaginationButton page={page - 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-newer',\n defaultMessage: 'Show newer versions',\n })}\n </PaginationButton>\n </Box>\n )}\n <Flex\n direction=\"column\"\n gap={3}\n padding={{ initial: 0, medium: 4 }}\n tag=\"ul\"\n alignItems=\"stretch\"\n >\n {versions.data.map((version, index) => (\n <li\n key={version.id}\n aria-label={formatMessage({\n id: 'content-manager.history.sidebar.title.version-card.aria-label',\n defaultMessage: 'Version card',\n })}\n >\n <VersionCard version={version} isCurrent={page === 1 && index === 0} />\n </li>\n ))}\n </Flex>\n {versions.meta.pagination.page < versions.meta.pagination.pageCount && (\n <Box paddingBottom={4} textAlign=\"center\">\n <PaginationButton page={page + 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-older',\n defaultMessage: 'Show older versions',\n })}\n </PaginationButton>\n </Box>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsList = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsList', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n const isMobile = useIsMobile();\n\n const [{ query }] = useQueryParams<{ id?: string }>();\n const currentVersion = versions.data.find((version) => version.id.toString() === query.id);\n\n return !isMobile ? (\n <Flex\n shrink={0}\n direction=\"column\"\n alignItems=\"stretch\"\n width={{ initial: '28rem', large: '32rem' }}\n height=\"100%\"\n overflow=\"hidden\"\n background=\"neutral0\"\n borderColor=\"neutral200\"\n borderWidth=\"0 0 0 1px\"\n borderStyle=\"solid\"\n tag=\"aside\"\n >\n <Flex\n direction=\"row\"\n justifyContent=\"space-between\"\n padding={4}\n borderColor=\"neutral200\"\n borderWidth=\"0 0 1px\"\n borderStyle=\"solid\"\n tag=\"header\"\n role=\"banner\"\n >\n <Typography tag=\"h2\" variant=\"omega\" fontWeight=\"semiBold\">\n {formatMessage({\n id: 'content-manager.history.sidebar.title',\n defaultMessage: 'Versions',\n })}\n </Typography>\n <Box background=\"neutral150\" hasRadius padding={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {versions.meta.pagination.total}\n </Typography>\n </Box>\n </Flex>\n <VersionsListItems />\n </Flex>\n ) : (\n <>\n <ActionsDrawer.Root hasContent hasSideNav>\n <ActionsDrawer.Overlay />\n <ActionsDrawer.Header>\n {currentVersion && (\n <Flex gap={2} overflow=\"hidden\">\n <Box flex={1} overflow=\"hidden\">\n <Typography\n display=\"block\"\n variant=\"omega\"\n textColor=\"neutral600\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n <VersionAuthor\n version={currentVersion}\n isCurrent={page === 1 && versions.data.indexOf(currentVersion) === 0}\n />\n </Typography>\n </Box>\n {currentVersion.status && <DocumentStatus status={currentVersion.status} size=\"XS\" />}\n </Flex>\n )}\n </ActionsDrawer.Header>\n <ActionsDrawer.Content>\n <VersionsListItems />\n </ActionsDrawer.Content>\n </ActionsDrawer.Root>\n {/* Adding a fixed height to the bottom of the page to prevent \n the actions drawer from covering the content\n (32px + 12px * 2 padding + 1px border) */}\n <Box width=\"100%\" height=\"5.7rem\" />\n </>\n );\n};\n\nexport { VersionsList };\n"],"names":["BlueText","children","_jsx","Typography","textColor","variant","VersionAuthor","version","isCurrent","formatMessage","useIntl","author","createdBy","getDisplayName","_Fragment","id","defaultMessage","distanceToNow","RelativeTime","timestamp","Date","createdAt","isAnonymous","b","VersionCard","formatDate","query","useQueryParams","setIsOpen","useActionsDrawer","s","isActive","toString","handleClick","_jsxs","Flex","direction","alignItems","gap","hasRadius","borderWidth","borderStyle","borderColor","color","padding","tag","Link","to","stringify","style","textDecoration","onClick","fontWeight","day","month","year","hour","minute","status","DocumentStatus","size","PaginationButton","page","_id","queryRest","search","VersionsListItems","versions","useHistoryContext","state","Box","flex","overflow","meta","pagination","paddingTop","textAlign","initial","medium","data","map","index","li","aria-label","pageCount","paddingBottom","VersionsList","isMobile","useIsMobile","currentVersion","find","shrink","width","large","height","background","justifyContent","role","total","ActionsDrawer","Root","hasContent","hasSideNav","Overlay","Header","display","textOverflow","whiteSpace","indexOf","Content"],"mappings":"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"}
@@ -32,7 +32,7 @@ import { useHistoryContext } from '../pages/History.mjs';
32
32
  timestamp: new Date(version.createdAt)
33
33
  }),
34
34
  author,
35
- isAnonymous: !Boolean(version.createdBy),
35
+ isAnonymous: !version.createdBy,
36
36
  isCurrent,
37
37
  b: BlueText
38
38
  })