@strapi/content-manager 0.0.0-experimental.1d1bb7782aff2a3dab6c460d8a4b24062f767bce → 0.0.0-experimental.1f56e9319665c8cc385eb5e4178ceb6741c6d490

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 (244) hide show
  1. package/dist/admin/components/LeftMenu.js +13 -15
  2. package/dist/admin/components/LeftMenu.js.map +1 -1
  3. package/dist/admin/components/LeftMenu.mjs +14 -16
  4. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  5. package/dist/admin/components/Widgets.js +269 -9
  6. package/dist/admin/components/Widgets.js.map +1 -1
  7. package/dist/admin/components/Widgets.mjs +252 -12
  8. package/dist/admin/components/Widgets.mjs.map +1 -1
  9. package/dist/admin/history/components/VersionContent.js +8 -1
  10. package/dist/admin/history/components/VersionContent.js.map +1 -1
  11. package/dist/admin/history/components/VersionContent.mjs +8 -1
  12. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  13. package/dist/admin/hooks/useDocumentActions.js +5 -5
  14. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  15. package/dist/admin/hooks/useDocumentActions.mjs +6 -6
  16. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  17. package/dist/admin/index.js +47 -8
  18. package/dist/admin/index.js.map +1 -1
  19. package/dist/admin/index.mjs +47 -9
  20. package/dist/admin/index.mjs.map +1 -1
  21. package/dist/admin/layout.js +1 -27
  22. package/dist/admin/layout.js.map +1 -1
  23. package/dist/admin/layout.mjs +2 -9
  24. package/dist/admin/layout.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/EditViewPage.js +16 -16
  26. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  27. package/dist/admin/pages/EditView/EditViewPage.mjs +18 -18
  28. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  30. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  31. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  32. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  33. package/dist/admin/pages/EditView/components/DocumentActions.js +47 -60
  34. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/DocumentActions.mjs +49 -62
  36. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +2 -2
  38. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +3 -3
  40. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  42. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  44. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +156 -105
  46. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +159 -108
  48. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  54. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  56. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormLayout.js +9 -1
  58. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormLayout.mjs +9 -1
  60. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/InputRenderer.js +20 -7
  62. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -7
  64. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/utils/data.js +35 -10
  66. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  67. package/dist/admin/pages/EditView/utils/data.mjs +35 -10
  68. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  69. package/dist/admin/pages/ListView/ListViewPage.js +221 -203
  70. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  71. package/dist/admin/pages/ListView/ListViewPage.mjs +222 -204
  72. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  73. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  74. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  75. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  76. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  77. package/dist/admin/pages/ListView/components/Filters.js +3 -1
  78. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  79. package/dist/admin/pages/ListView/components/Filters.mjs +3 -1
  80. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  81. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  82. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  83. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  84. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  85. package/dist/admin/preview/components/InputPopover.js +189 -0
  86. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  87. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  88. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  89. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  90. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  91. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  92. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  93. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  94. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  95. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  96. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  97. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  98. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  99. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  100. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  101. package/dist/admin/preview/pages/Preview.js +172 -68
  102. package/dist/admin/preview/pages/Preview.js.map +1 -1
  103. package/dist/admin/preview/pages/Preview.mjs +174 -70
  104. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  105. package/dist/admin/preview/utils/constants.js +56 -0
  106. package/dist/admin/preview/utils/constants.js.map +1 -0
  107. package/dist/admin/preview/utils/constants.mjs +52 -0
  108. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  109. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  110. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  111. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  112. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  113. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  114. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  115. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  116. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  117. package/dist/admin/preview/utils/previewScript.js +534 -0
  118. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  119. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  120. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  121. package/dist/admin/services/api.js +4 -1
  122. package/dist/admin/services/api.js.map +1 -1
  123. package/dist/admin/services/api.mjs +4 -1
  124. package/dist/admin/services/api.mjs.map +1 -1
  125. package/dist/admin/services/documents.js +42 -16
  126. package/dist/admin/services/documents.js.map +1 -1
  127. package/dist/admin/services/documents.mjs +42 -16
  128. package/dist/admin/services/documents.mjs.map +1 -1
  129. package/dist/admin/src/components/Widgets.d.ts +2 -1
  130. package/dist/admin/src/exports.d.ts +1 -0
  131. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  132. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  133. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  134. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  135. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  136. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  137. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  138. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  139. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  140. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  141. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  142. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  143. package/dist/admin/src/services/api.d.ts +1 -1
  144. package/dist/admin/src/services/components.d.ts +2 -2
  145. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  146. package/dist/admin/src/services/documents.d.ts +23 -17
  147. package/dist/admin/src/services/homepage.d.ts +1 -1
  148. package/dist/admin/src/services/init.d.ts +1 -1
  149. package/dist/admin/src/services/relations.d.ts +2 -2
  150. package/dist/admin/src/services/uid.d.ts +3 -3
  151. package/dist/admin/src/utils/api.d.ts +1 -1
  152. package/dist/admin/translations/en.json.js +12 -0
  153. package/dist/admin/translations/en.json.js.map +1 -1
  154. package/dist/admin/translations/en.json.mjs +12 -0
  155. package/dist/admin/translations/en.json.mjs.map +1 -1
  156. package/dist/admin/translations/es.json.js +6 -2
  157. package/dist/admin/translations/es.json.js.map +1 -1
  158. package/dist/admin/translations/es.json.mjs +6 -2
  159. package/dist/admin/translations/es.json.mjs.map +1 -1
  160. package/dist/admin/translations/fr.json.js +11 -2
  161. package/dist/admin/translations/fr.json.js.map +1 -1
  162. package/dist/admin/translations/fr.json.mjs +11 -2
  163. package/dist/admin/translations/fr.json.mjs.map +1 -1
  164. package/dist/admin/utils/api.js +1 -1
  165. package/dist/admin/utils/api.js.map +1 -1
  166. package/dist/admin/utils/api.mjs +1 -1
  167. package/dist/admin/utils/api.mjs.map +1 -1
  168. package/dist/admin/utils/validation.js +2 -1
  169. package/dist/admin/utils/validation.js.map +1 -1
  170. package/dist/admin/utils/validation.mjs +2 -1
  171. package/dist/admin/utils/validation.mjs.map +1 -1
  172. package/dist/server/controllers/collection-types.js +0 -4
  173. package/dist/server/controllers/collection-types.js.map +1 -1
  174. package/dist/server/controllers/collection-types.mjs +0 -4
  175. package/dist/server/controllers/collection-types.mjs.map +1 -1
  176. package/dist/server/controllers/relations.js +2 -2
  177. package/dist/server/controllers/relations.js.map +1 -1
  178. package/dist/server/controllers/relations.mjs +2 -2
  179. package/dist/server/controllers/relations.mjs.map +1 -1
  180. package/dist/server/history/services/lifecycles.js +20 -19
  181. package/dist/server/history/services/lifecycles.js.map +1 -1
  182. package/dist/server/history/services/lifecycles.mjs +20 -19
  183. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  184. package/dist/server/homepage/controllers/homepage.js +5 -0
  185. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  186. package/dist/server/homepage/controllers/homepage.mjs +5 -0
  187. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  188. package/dist/server/homepage/routes/homepage.js +11 -0
  189. package/dist/server/homepage/routes/homepage.js.map +1 -1
  190. package/dist/server/homepage/routes/homepage.mjs +11 -0
  191. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  192. package/dist/server/homepage/services/homepage.js +86 -46
  193. package/dist/server/homepage/services/homepage.js.map +1 -1
  194. package/dist/server/homepage/services/homepage.mjs +86 -46
  195. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  196. package/dist/server/preview/services/preview-config.js +5 -1
  197. package/dist/server/preview/services/preview-config.js.map +1 -1
  198. package/dist/server/preview/services/preview-config.mjs +5 -1
  199. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  200. package/dist/server/preview/services/preview.js +4 -0
  201. package/dist/server/preview/services/preview.js.map +1 -1
  202. package/dist/server/preview/services/preview.mjs +4 -0
  203. package/dist/server/preview/services/preview.mjs.map +1 -1
  204. package/dist/server/services/document-manager.js +3 -0
  205. package/dist/server/services/document-manager.js.map +1 -1
  206. package/dist/server/services/document-manager.mjs +3 -0
  207. package/dist/server/services/document-manager.mjs.map +1 -1
  208. package/dist/server/services/document-metadata.js +1 -1
  209. package/dist/server/services/document-metadata.js.map +1 -1
  210. package/dist/server/services/document-metadata.mjs +1 -1
  211. package/dist/server/services/document-metadata.mjs.map +1 -1
  212. package/dist/server/services/utils/populate.js +11 -0
  213. package/dist/server/services/utils/populate.js.map +1 -1
  214. package/dist/server/services/utils/populate.mjs +11 -0
  215. package/dist/server/services/utils/populate.mjs.map +1 -1
  216. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  217. package/dist/server/src/homepage/controllers/homepage.d.ts +2 -1
  218. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  219. package/dist/server/src/homepage/index.d.ts +7 -0
  220. package/dist/server/src/homepage/index.d.ts.map +1 -1
  221. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -1
  222. package/dist/server/src/homepage/services/homepage.d.ts +4 -1
  223. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  224. package/dist/server/src/homepage/services/index.d.ts +7 -0
  225. package/dist/server/src/homepage/services/index.d.ts.map +1 -1
  226. package/dist/server/src/index.d.ts +7 -0
  227. package/dist/server/src/index.d.ts.map +1 -1
  228. package/dist/server/src/preview/services/index.d.ts +1 -0
  229. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  230. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  231. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  232. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  233. package/dist/server/src/preview/utils.d.ts +1 -0
  234. package/dist/server/src/preview/utils.d.ts.map +1 -1
  235. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  236. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  237. package/dist/server/src/services/index.d.ts +7 -0
  238. package/dist/server/src/services/index.d.ts.map +1 -1
  239. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  240. package/dist/shared/contracts/collection-types.d.ts +0 -1
  241. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  242. package/dist/shared/contracts/homepage.d.ts +13 -0
  243. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  244. package/package.json +7 -8
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import 'react';
3
- import { useQueryParams, useNotification, Page, Form, useRBAC, useForm, Blocker } from '@strapi/admin/strapi-admin';
4
- import { Tabs, Main, Grid } from '@strapi/design-system';
3
+ import { useQueryParams, useNotification, Page, tours, Form, useRBAC } from '@strapi/admin/strapi-admin';
4
+ import { Tabs, Main, Box, Grid } from '@strapi/design-system';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { useLocation, useParams } from 'react-router-dom';
7
7
  import { styled } from 'styled-components';
@@ -14,6 +14,7 @@ import { useLazyComponents } from '../../hooks/useLazyComponents.mjs';
14
14
  import { useOnce } from '../../hooks/useOnce.mjs';
15
15
  import { getTranslation } from '../../utils/translations.mjs';
16
16
  import { createYupSchema } from '../../utils/validation.mjs';
17
+ import { Blocker } from './components/Blocker.mjs';
17
18
  import { FormLayout } from './components/FormLayout.mjs';
18
19
  import { Header } from './components/Header.mjs';
19
20
  import { Panels } from './components/Panels.mjs';
@@ -21,16 +22,7 @@ import { handleInvisibleAttributes } from './utils/data.mjs';
21
22
 
22
23
  /* -------------------------------------------------------------------------------------------------
23
24
  * EditViewPage
24
- * -----------------------------------------------------------------------------------------------*/ // Needs to be wrapped in a component to have access to the form context via a hook.
25
- // Using the Form component's render prop instead would cause unnecessary re-renders of Form children
26
- const BlockerWrapper = ()=>{
27
- const resetForm = useForm('BlockerWrapper', (state)=>state.resetForm);
28
- // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284
29
- return /*#__PURE__*/ jsx(Blocker, {
30
- onProceed: resetForm
31
- });
32
- };
33
- const EditViewPage = ()=>{
25
+ * -----------------------------------------------------------------------------------------------*/ const EditViewPage = ()=>{
34
26
  const location = useLocation();
35
27
  const [{ query: { status } }, setQuery] = useQueryParams({
36
28
  status: 'draft'
@@ -94,6 +86,9 @@ const EditViewPage = ()=>{
94
86
  /*#__PURE__*/ jsx(Page.Title, {
95
87
  children: pageTitle
96
88
  }),
89
+ isSingleType && /*#__PURE__*/ jsx(tours.contentManager.Introduction, {
90
+ children: /*#__PURE__*/ jsx(Box, {})
91
+ }),
97
92
  /*#__PURE__*/ jsx(Form, {
98
93
  disabled: hasDraftAndPublished && status === 'published',
99
94
  initialValues: initialValues,
@@ -164,12 +159,17 @@ const EditViewPage = ()=>{
164
159
  direction: "column",
165
160
  alignItems: "stretch",
166
161
  children: [
167
- /*#__PURE__*/ jsx(Tabs.Content, {
162
+ /*#__PURE__*/ jsxs(Tabs.Content, {
168
163
  value: "draft",
169
- children: /*#__PURE__*/ jsx(FormLayout, {
170
- layout: layout,
171
- document: doc
172
- })
164
+ children: [
165
+ /*#__PURE__*/ jsx(tours.contentManager.Fields, {
166
+ children: /*#__PURE__*/ jsx(Box, {})
167
+ }),
168
+ /*#__PURE__*/ jsx(FormLayout, {
169
+ layout: layout,
170
+ document: doc
171
+ })
172
+ ]
173
173
  }),
174
174
  /*#__PURE__*/ jsx(Tabs.Content, {
175
175
  value: "published",
@@ -191,7 +191,7 @@ const EditViewPage = ()=>{
191
191
  })
192
192
  ]
193
193
  }),
194
- /*#__PURE__*/ jsx(BlockerWrapper, {})
194
+ /*#__PURE__*/ jsx(Blocker, {})
195
195
  ]
196
196
  })
197
197
  })
@@ -1 +1 @@
1
- {"version":3,"file":"EditViewPage.mjs","sources":["../../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Blocker,\n Form,\n useForm,\n useRBAC,\n useNotification,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc, type UseDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\nimport { handleInvisibleAttributes } from './utils/data';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\n// Needs to be wrapped in a component to have access to the form context via a hook.\n// Using the Form component's render prop instead would cause unnecessary re-renders of Form children\nconst BlockerWrapper = () => {\n const resetForm = useForm('BlockerWrapper', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <Blocker onProceed={resetForm} />;\n};\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const doc = useDoc();\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = doc;\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n const pageTitle = getTitle(mainField);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{pageTitle}</Page.Title>\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n // removes hidden fields from the validation\n // this is necessary because the yup schema doesn't know about the visibility conditions\n // and we don't want to validate fields that are not visible\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema,\n initialValues,\n components,\n });\n\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n removedAttributes,\n ...options,\n });\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={pageTitle}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <Tabs.Content value=\"draft\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <BlockerWrapper />\n </>\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["BlockerWrapper","resetForm","useForm","state","_jsx","Blocker","onProceed","EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","doc","useDoc","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","hasDraftAndPublished","options","draftAndPublish","useOnce","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","pageTitle","isLazyLoading","useLazyComponents","initialValues","documentId","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","Form","disabled","method","validate","data","cleanedValues","removedAttributes","handleInvisibleAttributes","initialErrors","forceValidation","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","paddingTop","gap","Item","col","s","direction","alignItems","Content","FormLayout","Panels","styled","Trigger","docStatus","statuses","find","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
1
+ {"version":3,"file":"EditViewPage.mjs","sources":["../../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Form,\n useRBAC,\n useNotification,\n useQueryParams,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc, type UseDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { Blocker } from './components/Blocker';\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\nimport { handleInvisibleAttributes } from './utils/data';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const doc = useDoc();\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = doc;\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n const pageTitle = getTitle(mainField);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{pageTitle}</Page.Title>\n {isSingleType && (\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n )}\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n // removes hidden fields from the validation\n // this is necessary because the yup schema doesn't know about the visibility conditions\n // and we don't want to validate fields that are not visible\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema,\n initialValues,\n components,\n });\n\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n removedAttributes,\n ...options,\n });\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={pageTitle}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <Tabs.Content value=\"draft\">\n <tours.contentManager.Fields>\n <Box />\n </tours.contentManager.Fields>\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <Blocker />\n </>\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","doc","useDoc","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","hasDraftAndPublished","options","draftAndPublish","useOnce","state","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","pageTitle","isLazyLoading","useLazyComponents","initialValues","documentId","_jsx","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","tours","contentManager","Introduction","Box","Form","disabled","method","validate","data","cleanedValues","removedAttributes","handleInvisibleAttributes","initialErrors","forceValidation","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","paddingTop","gap","Item","col","s","direction","alignItems","Content","Fields","FormLayout","Panels","Blocker","styled","Trigger","docStatus","statuses","find","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
5
+
6
+ // Needs to be wrapped in a component to have access to the form context via a hook.
7
+ /**
8
+ * Prevents users from leaving the page with unsaved form changes
9
+ */ const Blocker = ()=>{
10
+ const resetForm = strapiAdmin.useForm('Blocker', (state)=>state.resetForm);
11
+ // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284
12
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Blocker, {
13
+ onProceed: resetForm
14
+ });
15
+ };
16
+
17
+ exports.Blocker = Blocker;
18
+ //# sourceMappingURL=Blocker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blocker.js","sources":["../../../../../admin/src/pages/EditView/components/Blocker.tsx"],"sourcesContent":["// Needs to be wrapped in a component to have access to the form context via a hook.\n\nimport { Blocker as BaseBlocker, useForm } from '@strapi/admin/strapi-admin';\n\n/**\n * Prevents users from leaving the page with unsaved form changes\n */\nconst Blocker = () => {\n const resetForm = useForm('Blocker', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <BaseBlocker onProceed={resetForm} />;\n};\n\nexport { Blocker };\n"],"names":["Blocker","resetForm","useForm","state","_jsx","BaseBlocker","onProceed"],"mappings":";;;;;AAAA;AAIA;;AAEC,UACKA,OAAU,GAAA,IAAA;AACd,IAAA,MAAMC,YAAYC,mBAAQ,CAAA,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMF,SAAS,CAAA;;AAG/D,IAAA,qBAAOG,cAACC,CAAAA,mBAAAA,EAAAA;QAAYC,SAAWL,EAAAA;;AACjC;;;;"}
@@ -0,0 +1,16 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useForm, Blocker as Blocker$1 } from '@strapi/admin/strapi-admin';
3
+
4
+ // Needs to be wrapped in a component to have access to the form context via a hook.
5
+ /**
6
+ * Prevents users from leaving the page with unsaved form changes
7
+ */ const Blocker = ()=>{
8
+ const resetForm = useForm('Blocker', (state)=>state.resetForm);
9
+ // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284
10
+ return /*#__PURE__*/ jsx(Blocker$1, {
11
+ onProceed: resetForm
12
+ });
13
+ };
14
+
15
+ export { Blocker };
16
+ //# sourceMappingURL=Blocker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blocker.mjs","sources":["../../../../../admin/src/pages/EditView/components/Blocker.tsx"],"sourcesContent":["// Needs to be wrapped in a component to have access to the form context via a hook.\n\nimport { Blocker as BaseBlocker, useForm } from '@strapi/admin/strapi-admin';\n\n/**\n * Prevents users from leaving the page with unsaved form changes\n */\nconst Blocker = () => {\n const resetForm = useForm('Blocker', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <BaseBlocker onProceed={resetForm} />;\n};\n\nexport { Blocker };\n"],"names":["Blocker","resetForm","useForm","state","_jsx","BaseBlocker","onProceed"],"mappings":";;;AAAA;AAIA;;AAEC,UACKA,OAAU,GAAA,IAAA;AACd,IAAA,MAAMC,YAAYC,OAAQ,CAAA,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMF,SAAS,CAAA;;AAG/D,IAAA,qBAAOG,GAACC,CAAAA,SAAAA,EAAAA;QAAYC,SAAWL,EAAAA;;AACjC;;;;"}
@@ -11,7 +11,6 @@ var merge = require('lodash/merge');
11
11
  var set = require('lodash/set');
12
12
  var reactIntl = require('react-intl');
13
13
  var reactRouterDom = require('react-router-dom');
14
- var styledComponents = require('styled-components');
15
14
  var attributes = require('../../../constants/attributes.js');
16
15
  var collections = require('../../../constants/collections.js');
17
16
  var DocumentRBAC = require('../../../features/DocumentRBAC.js');
@@ -97,23 +96,33 @@ const DocumentActions = ({ actions })=>{
97
96
  alignItems: "stretch",
98
97
  width: "100%",
99
98
  children: [
100
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
101
- gap: 2,
102
- children: [
103
- /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
104
- ...primaryAction,
105
- variant: primaryAction.variant || 'default'
106
- }),
107
- restActions.length > 0 ? /*#__PURE__*/ jsxRuntime.jsx(DocumentActionsMenu, {
108
- actions: restActions,
109
- label: formatMessage({
110
- id: 'content-manager.containers.edit.panels.default.more-actions',
111
- defaultMessage: 'More document actions'
112
- })
113
- }) : null
114
- ]
99
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentManager.Publish, {
100
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
101
+ gap: 2,
102
+ children: [
103
+ primaryAction.label === 'Publish' ? /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
104
+ ...primaryAction,
105
+ variant: primaryAction.variant || 'default'
106
+ }) : /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
107
+ ...primaryAction,
108
+ variant: primaryAction.variant || 'default'
109
+ }),
110
+ restActions.length > 0 ? /*#__PURE__*/ jsxRuntime.jsx(DocumentActionsMenu, {
111
+ actions: restActions,
112
+ label: formatMessage({
113
+ id: 'content-manager.containers.edit.panels.default.more-actions',
114
+ defaultMessage: 'More document actions'
115
+ })
116
+ }) : null
117
+ ]
118
+ })
115
119
  }),
116
- secondaryAction ? /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
120
+ secondaryAction ? secondaryAction.label === 'Publish' ? /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentManager.Publish, {
121
+ children: /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
122
+ ...secondaryAction,
123
+ variant: secondaryAction.variant || 'secondary'
124
+ })
125
+ }) : /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
117
126
  ...secondaryAction,
118
127
  variant: secondaryAction.variant || 'secondary'
119
128
  }) : null
@@ -175,11 +184,6 @@ const DocumentActionButton = (action)=>{
175
184
  ]
176
185
  });
177
186
  };
178
- const MenuItem = styledComponents.styled(designSystem.Menu.Item)`
179
- &:hover {
180
- background: ${({ theme, isVariantDanger, isDisabled })=>isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};
181
- }
182
- `;
183
187
  const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })=>{
184
188
  const [isOpen, setIsOpen] = React__namespace.useState(false);
185
189
  const [dialogId, setDialogId] = React__namespace.useState(null);
@@ -241,27 +245,19 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
241
245
  popoverPlacement: "bottom-end",
242
246
  children: [
243
247
  actions.map((action)=>{
244
- return /*#__PURE__*/ jsxRuntime.jsx(MenuItem, {
248
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
245
249
  disabled: action.disabled,
246
250
  /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */ onSelect: handleClick(action),
247
251
  display: "block",
248
- isVariantDanger: action.variant === 'danger',
249
- isDisabled: action.disabled,
252
+ variant: action.variant === 'danger' ? action.variant : 'default',
253
+ startIcon: action.icon,
250
254
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
251
255
  justifyContent: "space-between",
252
256
  gap: 4,
253
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
254
- color: !action.disabled ? convertActionVariantToColor(action.variant) : 'inherit',
257
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
255
258
  gap: 2,
256
259
  tag: "span",
257
- children: [
258
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
259
- tag: "span",
260
- color: !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit',
261
- children: action.icon
262
- }),
263
- action.label
264
- ]
260
+ children: action.label
265
261
  })
266
262
  })
267
263
  }, action.id);
@@ -289,30 +285,6 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
289
285
  ]
290
286
  });
291
287
  };
292
- const convertActionVariantToColor = (variant = 'secondary')=>{
293
- switch(variant){
294
- case 'danger':
295
- return 'danger600';
296
- case 'secondary':
297
- return undefined;
298
- case 'success':
299
- return 'success600';
300
- default:
301
- return 'primary600';
302
- }
303
- };
304
- const convertActionVariantToIconColor = (variant = 'secondary')=>{
305
- switch(variant){
306
- case 'danger':
307
- return 'danger600';
308
- case 'secondary':
309
- return 'neutral500';
310
- case 'success':
311
- return 'success600';
312
- default:
313
- return 'primary600';
314
- }
315
- };
316
288
  const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
317
289
  const { formatMessage } = reactIntl.useIntl();
318
290
  const handleClose = async ()=>{
@@ -444,6 +416,7 @@ const transformData = (data)=>{
444
416
  const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
445
417
  const documentHistory = RelationModal.useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
446
418
  const rootDocumentMeta = RelationModal.useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
419
+ const dispatchGuidedTour = strapiAdmin.useGuidedTour('PublishAction', (s)=>s.dispatch);
447
420
  const { currentDocumentMeta } = useDocumentContext.useDocumentContext('PublishAction');
448
421
  const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
449
422
  const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
@@ -587,6 +560,12 @@ const transformData = (data)=>{
587
560
  // Reset form if successful
588
561
  if ('data' in res) {
589
562
  resetForm();
563
+ dispatchGuidedTour({
564
+ type: 'set_completed_actions',
565
+ payload: [
566
+ strapiAdmin.GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent
567
+ ]
568
+ });
590
569
  }
591
570
  if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
592
571
  /**
@@ -710,6 +689,7 @@ PublishAction.position = [
710
689
  'relation-modal'
711
690
  ];
712
691
  const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
692
+ const dispatchGuidedTour = strapiAdmin.useGuidedTour('UpdateAction', (s)=>s.dispatch);
713
693
  const navigate = reactRouterDom.useNavigate();
714
694
  const { toggleNotification } = strapiAdmin.useNotification();
715
695
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
@@ -877,6 +857,12 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
877
857
  }
878
858
  }
879
859
  } finally{
860
+ dispatchGuidedTour({
861
+ type: 'set_completed_actions',
862
+ payload: [
863
+ strapiAdmin.GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent
864
+ ]
865
+ });
880
866
  setSubmitting(false);
881
867
  if (onPreview) {
882
868
  onPreview();
@@ -917,7 +903,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
917
903
  initialValues,
918
904
  schema,
919
905
  components,
920
- relationalModalSchema
906
+ relationalModalSchema,
907
+ dispatchGuidedTour
921
908
  ]);
922
909
  // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
923
910
  React__namespace.useEffect(()=>{