@strapi/content-manager 0.0.0-experimental.7d94d6f1299d54c2aa90675f15b27b5c463aacc7 → 0.0.0-experimental.7e6bb2fc6f3829ba115d567243904f12fc9d3cb2

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 (266) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/Widgets.js +161 -0
  6. package/dist/admin/components/Widgets.js.map +1 -0
  7. package/dist/admin/components/Widgets.mjs +158 -0
  8. package/dist/admin/components/Widgets.mjs.map +1 -0
  9. package/dist/admin/history/components/VersionContent.js +24 -3
  10. package/dist/admin/history/components/VersionContent.js.map +1 -1
  11. package/dist/admin/history/components/VersionContent.mjs +25 -4
  12. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionHeader.js +6 -0
  14. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  15. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  16. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  17. package/dist/admin/hooks/useDocumentActions.js +12 -4
  18. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  19. package/dist/admin/hooks/useDocumentActions.mjs +12 -4
  20. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  21. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  22. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  23. package/dist/admin/index.js +42 -5
  24. package/dist/admin/index.js.map +1 -1
  25. package/dist/admin/index.mjs +42 -3
  26. package/dist/admin/index.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/EditViewPage.js +92 -75
  28. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  29. package/dist/admin/pages/EditView/EditViewPage.mjs +93 -76
  30. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/DocumentActions.js +263 -75
  32. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/DocumentActions.mjs +266 -78
  34. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  36. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  38. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  46. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
  54. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -2
  56. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -3
  58. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
  60. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
  62. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +128 -55
  64. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +128 -55
  66. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +120 -32
  68. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +124 -36
  70. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
  72. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
  74. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  76. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  78. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  80. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  82. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  84. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  86. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  88. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  90. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/utils/data.js +103 -0
  92. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  93. package/dist/admin/pages/EditView/utils/data.mjs +103 -1
  94. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  95. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  96. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  97. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  98. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  99. package/dist/admin/pages/ListView/components/Filters.js +1 -0
  100. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  101. package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
  102. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  103. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  104. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  105. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  106. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  107. package/dist/admin/preview/components/PreviewHeader.js +1 -1
  108. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  109. package/dist/admin/preview/components/PreviewHeader.mjs +1 -1
  110. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  111. package/dist/admin/services/documents.js +2 -2
  112. package/dist/admin/services/documents.js.map +1 -1
  113. package/dist/admin/services/documents.mjs +2 -2
  114. package/dist/admin/services/documents.mjs.map +1 -1
  115. package/dist/admin/services/homepage.js +30 -0
  116. package/dist/admin/services/homepage.js.map +1 -0
  117. package/dist/admin/services/homepage.mjs +28 -0
  118. package/dist/admin/services/homepage.mjs.map +1 -0
  119. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  120. package/dist/admin/src/components/Widgets.d.ts +3 -0
  121. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  122. package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
  123. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  124. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
  125. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  126. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  127. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  128. package/dist/admin/src/services/documents.d.ts +7 -1
  129. package/dist/admin/src/services/homepage.d.ts +5 -0
  130. package/dist/admin/src/utils/validation.d.ts +1 -0
  131. package/dist/admin/translations/en.json.js +3 -1
  132. package/dist/admin/translations/en.json.js.map +1 -1
  133. package/dist/admin/translations/en.json.mjs +3 -1
  134. package/dist/admin/translations/en.json.mjs.map +1 -1
  135. package/dist/admin/translations/fr.json.js +6 -1
  136. package/dist/admin/translations/fr.json.js.map +1 -1
  137. package/dist/admin/translations/fr.json.mjs +6 -1
  138. package/dist/admin/translations/fr.json.mjs.map +1 -1
  139. package/dist/admin/translations/ru.json.js +235 -226
  140. package/dist/admin/translations/ru.json.js.map +1 -1
  141. package/dist/admin/translations/ru.json.mjs +230 -226
  142. package/dist/admin/translations/ru.json.mjs.map +1 -1
  143. package/dist/admin/utils/validation.js +17 -6
  144. package/dist/admin/utils/validation.js.map +1 -1
  145. package/dist/admin/utils/validation.mjs +17 -6
  146. package/dist/admin/utils/validation.mjs.map +1 -1
  147. package/dist/server/controllers/content-types.js +11 -1
  148. package/dist/server/controllers/content-types.js.map +1 -1
  149. package/dist/server/controllers/content-types.mjs +11 -1
  150. package/dist/server/controllers/content-types.mjs.map +1 -1
  151. package/dist/server/controllers/index.js +3 -1
  152. package/dist/server/controllers/index.js.map +1 -1
  153. package/dist/server/controllers/index.mjs +3 -1
  154. package/dist/server/controllers/index.mjs.map +1 -1
  155. package/dist/server/controllers/validation/index.js +14 -2
  156. package/dist/server/controllers/validation/index.js.map +1 -1
  157. package/dist/server/controllers/validation/index.mjs +14 -2
  158. package/dist/server/controllers/validation/index.mjs.map +1 -1
  159. package/dist/server/history/services/lifecycles.js +3 -0
  160. package/dist/server/history/services/lifecycles.js.map +1 -1
  161. package/dist/server/history/services/lifecycles.mjs +3 -0
  162. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  163. package/dist/server/homepage/controllers/homepage.js +57 -0
  164. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  165. package/dist/server/homepage/controllers/homepage.mjs +36 -0
  166. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  167. package/dist/server/homepage/controllers/index.js +10 -0
  168. package/dist/server/homepage/controllers/index.js.map +1 -0
  169. package/dist/server/homepage/controllers/index.mjs +8 -0
  170. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  171. package/dist/server/homepage/index.js +14 -0
  172. package/dist/server/homepage/index.js.map +1 -0
  173. package/dist/server/homepage/index.mjs +12 -0
  174. package/dist/server/homepage/index.mjs.map +1 -0
  175. package/dist/server/homepage/routes/homepage.js +25 -0
  176. package/dist/server/homepage/routes/homepage.js.map +1 -0
  177. package/dist/server/homepage/routes/homepage.mjs +23 -0
  178. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  179. package/dist/server/homepage/routes/index.js +13 -0
  180. package/dist/server/homepage/routes/index.js.map +1 -0
  181. package/dist/server/homepage/routes/index.mjs +11 -0
  182. package/dist/server/homepage/routes/index.mjs.map +1 -0
  183. package/dist/server/homepage/services/homepage.js +157 -0
  184. package/dist/server/homepage/services/homepage.js.map +1 -0
  185. package/dist/server/homepage/services/homepage.mjs +155 -0
  186. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  187. package/dist/server/homepage/services/index.js +10 -0
  188. package/dist/server/homepage/services/index.js.map +1 -0
  189. package/dist/server/homepage/services/index.mjs +8 -0
  190. package/dist/server/homepage/services/index.mjs.map +1 -0
  191. package/dist/server/preview/services/preview.js +0 -1
  192. package/dist/server/preview/services/preview.js.map +1 -1
  193. package/dist/server/preview/services/preview.mjs +0 -1
  194. package/dist/server/preview/services/preview.mjs.map +1 -1
  195. package/dist/server/routes/index.js +3 -1
  196. package/dist/server/routes/index.js.map +1 -1
  197. package/dist/server/routes/index.mjs +3 -1
  198. package/dist/server/routes/index.mjs.map +1 -1
  199. package/dist/server/services/data-mapper.js +4 -1
  200. package/dist/server/services/data-mapper.js.map +1 -1
  201. package/dist/server/services/data-mapper.mjs +4 -1
  202. package/dist/server/services/data-mapper.mjs.map +1 -1
  203. package/dist/server/services/document-manager.js +8 -1
  204. package/dist/server/services/document-manager.js.map +1 -1
  205. package/dist/server/services/document-manager.mjs +8 -1
  206. package/dist/server/services/document-manager.mjs.map +1 -1
  207. package/dist/server/services/document-metadata.js +3 -1
  208. package/dist/server/services/document-metadata.js.map +1 -1
  209. package/dist/server/services/document-metadata.mjs +3 -1
  210. package/dist/server/services/document-metadata.mjs.map +1 -1
  211. package/dist/server/services/index.js +3 -1
  212. package/dist/server/services/index.js.map +1 -1
  213. package/dist/server/services/index.mjs +3 -1
  214. package/dist/server/services/index.mjs.map +1 -1
  215. package/dist/server/services/utils/configuration/attributes.js +1 -1
  216. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  217. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  218. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  219. package/dist/server/services/utils/configuration/layouts.js +1 -1
  220. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  221. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  222. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  223. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  224. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  225. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  226. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  227. package/dist/server/services/utils/populate.js +11 -0
  228. package/dist/server/services/utils/populate.js.map +1 -1
  229. package/dist/server/services/utils/populate.mjs +11 -0
  230. package/dist/server/services/utils/populate.mjs.map +1 -1
  231. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  232. package/dist/server/src/controllers/index.d.ts.map +1 -1
  233. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  234. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  235. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  236. package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
  237. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  238. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  239. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  240. package/dist/server/src/homepage/index.d.ts +16 -0
  241. package/dist/server/src/homepage/index.d.ts.map +1 -0
  242. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  243. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  244. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  245. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  246. package/dist/server/src/homepage/services/homepage.d.ts +11 -0
  247. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  248. package/dist/server/src/homepage/services/index.d.ts +9 -0
  249. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  250. package/dist/server/src/index.d.ts +7 -0
  251. package/dist/server/src/index.d.ts.map +1 -1
  252. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  253. package/dist/server/src/routes/index.d.ts +1 -0
  254. package/dist/server/src/routes/index.d.ts.map +1 -1
  255. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  256. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  257. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  258. package/dist/server/src/services/index.d.ts +6 -0
  259. package/dist/server/src/services/index.d.ts.map +1 -1
  260. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  261. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  262. package/dist/shared/contracts/collection-types.d.ts +0 -1
  263. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  264. package/dist/shared/contracts/homepage.d.ts +25 -0
  265. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  266. package/package.json +11 -8
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sources":["../../../../../admin/src/pages/EditView/utils/data.ts"],"sourcesContent":["import { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\n\nimport { DOCUMENT_META_FIELDS } from '../../../constants/attributes';\n\nimport type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * traverseData\n * -----------------------------------------------------------------------------------------------*/\n\n// Make only attributes required since it's the only one Content History has\ntype PartialSchema = Partial<Schema.Schema> & Pick<Schema.Schema, 'attributes'>;\n\ntype Predicate = <TAttribute extends Schema.Attribute.AnyAttribute>(\n attribute: TAttribute,\n value: Schema.Attribute.Value<TAttribute>\n) => boolean;\ntype Transform = <TAttribute extends Schema.Attribute.AnyAttribute>(\n value: any,\n attribute: TAttribute\n) => any;\ntype AnyData = Omit<Document, 'id'>;\n\nconst BLOCK_LIST_ATTRIBUTE_KEYS = ['__component', '__temp_key__'];\n\n/**\n * @internal This function is used to traverse the data and transform the values.\n * Given a predicate function, it will transform the value (using the given transform function)\n * if the predicate returns true. If it finds that the attribute is a component or dynamiczone,\n * it will recursively traverse those data structures as well.\n *\n * It is possible to break the ContentManager by using this function incorrectly, for example,\n * if you transform a number into a string but the attribute type is a number, the ContentManager\n * will not be able to save the data and the Form will likely crash because the component it's\n * passing the data too won't succesfully be able to handle the value.\n */\nconst traverseData =\n (predicate: Predicate, transform: Transform) =>\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (data: AnyData = {}) => {\n const traverse = (datum: AnyData, attributes: Schema.Schema['attributes']) => {\n return Object.entries(datum).reduce<AnyData>((acc, [key, value]) => {\n const attribute = attributes[key];\n\n /**\n * If the attribute is a block list attribute, we don't want to transform it.\n * We also don't want to transform null or undefined values.\n */\n if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === undefined) {\n acc[key] = value;\n return acc;\n }\n\n if (attribute.type === 'component') {\n if (attribute.repeatable) {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, true>>;\n acc[key] = componentValue.map((componentData) =>\n traverse(componentData, components[attribute.component]?.attributes ?? {})\n );\n } else {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, false>>;\n\n acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamicZoneValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.DynamicZone>;\n\n acc[key] = dynamicZoneValue.map((componentData) =>\n traverse(componentData, components[componentData.__component]?.attributes ?? {})\n );\n } else if (predicate(attribute, value)) {\n acc[key] = transform(value, attribute);\n } else {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n };\n\n return traverse(data, schema.attributes);\n };\n\n/* -------------------------------------------------------------------------------------------------\n * removeProhibitedFields\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Removes all the fields that are not allowed.\n */\nconst removeProhibitedFields = (prohibitedFields: Schema.Attribute.Kind[]) =>\n traverseData(\n (attribute) => prohibitedFields.includes(attribute.type),\n () => ''\n );\n\n/* -------------------------------------------------------------------------------------------------\n * prepareRelations\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Sets all relation values to an empty array.\n */\nconst prepareRelations = traverseData(\n (attribute) => attribute.type === 'relation',\n () => ({\n connect: [],\n disconnect: [],\n })\n);\n\n/* -------------------------------------------------------------------------------------------------\n * prepareTempKeys\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each component and dynamiczone item. This gives us\n * a stable identifier regardless of its ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = traverseData(\n (attribute) =>\n (attribute.type === 'component' && attribute.repeatable) || attribute.type === 'dynamiczone',\n (data) => {\n if (Array.isArray(data) && data.length > 0) {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n }\n\n return data;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * removeFieldsThatDontExistOnSchema\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Fields that don't exist in the schema like createdAt etc. are only on the first level (not nested),\n * as such we don't need to traverse the components to remove them.\n */\nconst removeFieldsThatDontExistOnSchema = (schema: PartialSchema) => (data: AnyData) => {\n const schemaKeys = Object.keys(schema.attributes);\n const dataKeys = Object.keys(data);\n\n const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));\n\n const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {\n delete acc[key];\n\n return acc;\n }, structuredClone(data));\n\n return revisedData;\n};\n\n/**\n * @internal\n * @description We need to remove null fields from the data-structure because it will pass it\n * to the specific inputs breaking them as most would prefer empty strings or `undefined` if\n * they're controlled / uncontrolled.\n */\nconst removeNullValues = (data: AnyData) => {\n return Object.entries(data).reduce<AnyData>((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n\n acc[key] = value;\n\n return acc;\n }, {});\n};\n\n/* -------------------------------------------------------------------------------------------------\n * transformDocuments\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Takes a document data structure (this could be from the API or a default form structure)\n * and applies consistent data transformations to it. This is also used when we add new components to the\n * form to ensure the data is correctly prepared from their default state e.g. relations are set to an empty array.\n */\nconst transformDocument =\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (document: AnyData) => {\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n removeProhibitedFields(['password'])(schema, components),\n removeNullValues,\n prepareRelations(schema, components),\n prepareTempKeys(schema, components)\n );\n\n return transformations(document);\n };\n\nexport {\n removeProhibitedFields,\n prepareRelations,\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n transformDocument,\n};\nexport type { AnyData };\n"],"names":["BLOCK_LIST_ATTRIBUTE_KEYS","traverseData","predicate","transform","schema","components","data","traverse","datum","attributes","Object","entries","reduce","acc","key","value","attribute","includes","undefined","type","repeatable","componentValue","map","componentData","component","dynamicZoneValue","__component","removeProhibitedFields","prohibitedFields","prepareRelations","connect","disconnect","prepareTempKeys","Array","isArray","length","keys","generateNKeysBetween","index","__temp_key__","removeFieldsThatDontExistOnSchema","schemaKeys","dataKeys","keysToRemove","filter","revisedData","DOCUMENT_META_FIELDS","structuredClone","removeNullValues","transformDocument","document","transformations","pipe"],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sources":["../../../../../admin/src/pages/EditView/utils/data.ts"],"sourcesContent":["import { createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\n\nimport { DOCUMENT_META_FIELDS } from '../../../constants/attributes';\n\nimport type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * traverseData\n * -----------------------------------------------------------------------------------------------*/\n\n// Make only attributes required since it's the only one Content History has\ntype PartialSchema = Partial<Schema.Schema> & Pick<Schema.Schema, 'attributes'>;\n\ntype Predicate = <TAttribute extends Schema.Attribute.AnyAttribute>(\n attribute: TAttribute,\n value: Schema.Attribute.Value<TAttribute>\n) => boolean;\ntype Transform = <TAttribute extends Schema.Attribute.AnyAttribute>(\n value: any,\n attribute: TAttribute\n) => any;\ntype AnyData = Omit<Document, 'id'>;\n\nconst BLOCK_LIST_ATTRIBUTE_KEYS = ['__component', '__temp_key__'];\n\n/**\n * @internal This function is used to traverse the data and transform the values.\n * Given a predicate function, it will transform the value (using the given transform function)\n * if the predicate returns true. If it finds that the attribute is a component or dynamiczone,\n * it will recursively traverse those data structures as well.\n *\n * It is possible to break the ContentManager by using this function incorrectly, for example,\n * if you transform a number into a string but the attribute type is a number, the ContentManager\n * will not be able to save the data and the Form will likely crash because the component it's\n * passing the data too won't succesfully be able to handle the value.\n */\nconst traverseData =\n (predicate: Predicate, transform: Transform) =>\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (data: AnyData = {}) => {\n const traverse = (datum: AnyData, attributes: Schema.Schema['attributes']) => {\n return Object.entries(datum).reduce<AnyData>((acc, [key, value]) => {\n const attribute = attributes[key];\n\n /**\n * If the attribute is a block list attribute, we don't want to transform it.\n * We also don't want to transform null or undefined values.\n */\n if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === undefined) {\n acc[key] = value;\n return acc;\n }\n\n if (attribute.type === 'component') {\n if (attribute.repeatable) {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, true>>;\n acc[key] = componentValue.map((componentData) =>\n traverse(componentData, components[attribute.component]?.attributes ?? {})\n );\n } else {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, false>>;\n\n acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamicZoneValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.DynamicZone>;\n\n acc[key] = dynamicZoneValue.map((componentData) =>\n traverse(componentData, components[componentData.__component]?.attributes ?? {})\n );\n } else if (predicate(attribute, value)) {\n acc[key] = transform(value, attribute);\n } else {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n };\n\n return traverse(data, schema.attributes);\n };\n\n/* -------------------------------------------------------------------------------------------------\n * removeProhibitedFields\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Removes all the fields that are not allowed.\n */\nconst removeProhibitedFields = (prohibitedFields: Schema.Attribute.Kind[]) =>\n traverseData(\n (attribute) => prohibitedFields.includes(attribute.type),\n () => ''\n );\n\n/* -------------------------------------------------------------------------------------------------\n * prepareRelations\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Sets all relation values to an empty array.\n */\nconst prepareRelations = traverseData(\n (attribute) => attribute.type === 'relation',\n () => ({\n connect: [],\n disconnect: [],\n })\n);\n\n/* -------------------------------------------------------------------------------------------------\n * prepareTempKeys\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each component and dynamiczone item. This gives us\n * a stable identifier regardless of its ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = traverseData(\n (attribute) =>\n (attribute.type === 'component' && attribute.repeatable) || attribute.type === 'dynamiczone',\n (data) => {\n if (Array.isArray(data) && data.length > 0) {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n }\n\n return data;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * removeFieldsThatDontExistOnSchema\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Fields that don't exist in the schema like createdAt etc. are only on the first level (not nested),\n * as such we don't need to traverse the components to remove them.\n */\nconst removeFieldsThatDontExistOnSchema = (schema: PartialSchema) => (data: AnyData) => {\n const schemaKeys = Object.keys(schema.attributes);\n const dataKeys = Object.keys(data);\n\n const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));\n\n const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {\n delete acc[key];\n\n return acc;\n }, structuredClone(data));\n\n return revisedData;\n};\n\n/**\n * @internal\n * @description We need to remove null fields from the data-structure because it will pass it\n * to the specific inputs breaking them as most would prefer empty strings or `undefined` if\n * they're controlled / uncontrolled.\n */\nconst removeNullValues = (data: AnyData) => {\n return Object.entries(data).reduce<AnyData>((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n\n acc[key] = value;\n\n return acc;\n }, {});\n};\n\n/* -------------------------------------------------------------------------------------------------\n * transformDocuments\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Takes a document data structure (this could be from the API or a default form structure)\n * and applies consistent data transformations to it. This is also used when we add new components to the\n * form to ensure the data is correctly prepared from their default state e.g. relations are set to an empty array.\n */\nconst transformDocument =\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (document: AnyData) => {\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n removeProhibitedFields(['password'])(schema, components),\n removeNullValues,\n prepareRelations(schema, components),\n prepareTempKeys(schema, components)\n );\n\n return transformations(document);\n };\n\ntype HandleOptions = {\n schema?: Schema.ContentType | Schema.Component;\n initialValues?: AnyData;\n components?: Record<string, Schema.Component>;\n};\n\ntype RemovedFieldPath = string;\n\n/**\n * Removes values from the data object if their corresponding attribute has a\n * visibility condition that evaluates to false.\n *\n * @param {object} schema - The content type schema (with attributes).\n * @param {object} data - The data object to filter based on visibility.\n * @returns {object} A new data object with only visible fields retained.\n */\nconst handleInvisibleAttributes = (\n data: AnyData,\n { schema, initialValues = {}, components = {} }: HandleOptions,\n path: string[] = [],\n removedAttributes: RemovedFieldPath[] = []\n): {\n data: AnyData;\n removedAttributes: RemovedFieldPath[];\n} => {\n if (!schema?.attributes) return { data, removedAttributes };\n\n const rulesEngine = createRulesEngine();\n const result: AnyData = {};\n\n for (const [attrName, attrDef] of Object.entries(schema.attributes)) {\n const fullPath = [...path, attrName].join('.');\n const condition = attrDef?.conditions?.visible;\n const isVisible = condition ? rulesEngine.evaluate(condition, { ...data, ...result }) : true;\n\n if (!isVisible) {\n removedAttributes.push(fullPath);\n continue;\n }\n\n const userProvided = Object.prototype.hasOwnProperty.call(data, attrName);\n const currentValue = userProvided ? data[attrName] : undefined;\n const initialValue = initialValues?.[attrName];\n\n // 🔹 Handle components\n if (attrDef.type === 'component') {\n const compSchema = components[attrDef.component];\n const value = currentValue ?? initialValue;\n\n if (!value) {\n result[attrName] = attrDef.repeatable ? [] : null;\n continue;\n }\n\n if (attrDef.repeatable && Array.isArray(value)) {\n result[attrName] = value.map(\n (item, index) =>\n handleInvisibleAttributes(\n item,\n {\n schema: compSchema,\n initialValues: initialValue?.[index] ?? {},\n components,\n },\n [...path, `${attrName}[${index}]`],\n removedAttributes\n ).data\n );\n } else {\n result[attrName] = handleInvisibleAttributes(\n value,\n {\n schema: compSchema,\n initialValues: initialValue ?? {},\n components,\n },\n [...path, attrName],\n removedAttributes\n ).data;\n }\n\n continue;\n }\n\n // 🔸 Handle dynamic zones\n if (attrDef.type === 'dynamiczone') {\n if (!Array.isArray(currentValue)) {\n result[attrName] = [];\n continue;\n }\n\n result[attrName] = currentValue.map((dzItem, index) => {\n const compUID = dzItem?.__component;\n const compSchema = components[compUID];\n\n const cleaned = handleInvisibleAttributes(\n dzItem,\n {\n schema: compSchema,\n initialValues: initialValue?.[index] ?? {},\n components,\n },\n [...path, `${attrName}[${index}]`],\n removedAttributes\n ).data;\n\n return {\n __component: compUID,\n ...cleaned,\n };\n });\n\n continue;\n }\n\n // 🟡 Handle scalar/primitive\n if (currentValue !== undefined) {\n result[attrName] = currentValue;\n } else if (initialValue !== undefined) {\n result[attrName] = initialValue;\n } else {\n if (attrName === 'id' || attrName === 'documentId') {\n // If the attribute is 'id', we don't want to set it to null, as it should not be removed.\n continue;\n }\n result[attrName] = null;\n }\n }\n\n return {\n data: result,\n removedAttributes,\n };\n};\n\nexport {\n removeProhibitedFields,\n prepareRelations,\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n transformDocument,\n handleInvisibleAttributes,\n};\nexport type { AnyData };\n"],"names":["BLOCK_LIST_ATTRIBUTE_KEYS","traverseData","predicate","transform","schema","components","data","traverse","datum","attributes","Object","entries","reduce","acc","key","value","attribute","includes","undefined","type","repeatable","componentValue","map","componentData","component","dynamicZoneValue","__component","removeProhibitedFields","prohibitedFields","prepareRelations","connect","disconnect","prepareTempKeys","Array","isArray","length","keys","generateNKeysBetween","index","__temp_key__","removeFieldsThatDontExistOnSchema","schemaKeys","dataKeys","keysToRemove","filter","revisedData","DOCUMENT_META_FIELDS","structuredClone","removeNullValues","transformDocument","document","transformations","pipe","handleInvisibleAttributes","initialValues","path","removedAttributes","rulesEngine","createRulesEngine","result","attrName","attrDef","fullPath","join","condition","conditions","visible","isVisible","evaluate","push","userProvided","prototype","hasOwnProperty","call","currentValue","initialValue","compSchema","item","dzItem","compUID","cleaned"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { createRulesEngine } from '@strapi/admin/strapi-admin';
1
2
  import { generateNKeysBetween } from 'fractional-indexing';
2
3
  import pipe from 'lodash/fp/pipe';
3
4
  import { DOCUMENT_META_FIELDS } from '../../../constants/attributes.mjs';
@@ -124,6 +125,107 @@ const BLOCK_LIST_ATTRIBUTE_KEYS = [
124
125
  ])(schema, components), removeNullValues, prepareRelations(schema, components), prepareTempKeys(schema, components));
125
126
  return transformations(document);
126
127
  };
128
+ /**
129
+ * Removes values from the data object if their corresponding attribute has a
130
+ * visibility condition that evaluates to false.
131
+ *
132
+ * @param {object} schema - The content type schema (with attributes).
133
+ * @param {object} data - The data object to filter based on visibility.
134
+ * @returns {object} A new data object with only visible fields retained.
135
+ */ const handleInvisibleAttributes = (data, { schema, initialValues = {}, components = {} }, path = [], removedAttributes = [])=>{
136
+ if (!schema?.attributes) return {
137
+ data,
138
+ removedAttributes
139
+ };
140
+ const rulesEngine = createRulesEngine();
141
+ const result = {};
142
+ for (const [attrName, attrDef] of Object.entries(schema.attributes)){
143
+ const fullPath = [
144
+ ...path,
145
+ attrName
146
+ ].join('.');
147
+ const condition = attrDef?.conditions?.visible;
148
+ const isVisible = condition ? rulesEngine.evaluate(condition, {
149
+ ...data,
150
+ ...result
151
+ }) : true;
152
+ if (!isVisible) {
153
+ removedAttributes.push(fullPath);
154
+ continue;
155
+ }
156
+ const userProvided = Object.prototype.hasOwnProperty.call(data, attrName);
157
+ const currentValue = userProvided ? data[attrName] : undefined;
158
+ const initialValue = initialValues?.[attrName];
159
+ // 🔹 Handle components
160
+ if (attrDef.type === 'component') {
161
+ const compSchema = components[attrDef.component];
162
+ const value = currentValue ?? initialValue;
163
+ if (!value) {
164
+ result[attrName] = attrDef.repeatable ? [] : null;
165
+ continue;
166
+ }
167
+ if (attrDef.repeatable && Array.isArray(value)) {
168
+ result[attrName] = value.map((item, index)=>handleInvisibleAttributes(item, {
169
+ schema: compSchema,
170
+ initialValues: initialValue?.[index] ?? {},
171
+ components
172
+ }, [
173
+ ...path,
174
+ `${attrName}[${index}]`
175
+ ], removedAttributes).data);
176
+ } else {
177
+ result[attrName] = handleInvisibleAttributes(value, {
178
+ schema: compSchema,
179
+ initialValues: initialValue ?? {},
180
+ components
181
+ }, [
182
+ ...path,
183
+ attrName
184
+ ], removedAttributes).data;
185
+ }
186
+ continue;
187
+ }
188
+ // 🔸 Handle dynamic zones
189
+ if (attrDef.type === 'dynamiczone') {
190
+ if (!Array.isArray(currentValue)) {
191
+ result[attrName] = [];
192
+ continue;
193
+ }
194
+ result[attrName] = currentValue.map((dzItem, index)=>{
195
+ const compUID = dzItem?.__component;
196
+ const compSchema = components[compUID];
197
+ const cleaned = handleInvisibleAttributes(dzItem, {
198
+ schema: compSchema,
199
+ initialValues: initialValue?.[index] ?? {},
200
+ components
201
+ }, [
202
+ ...path,
203
+ `${attrName}[${index}]`
204
+ ], removedAttributes).data;
205
+ return {
206
+ __component: compUID,
207
+ ...cleaned
208
+ };
209
+ });
210
+ continue;
211
+ }
212
+ // 🟡 Handle scalar/primitive
213
+ if (currentValue !== undefined) {
214
+ result[attrName] = currentValue;
215
+ } else if (initialValue !== undefined) {
216
+ result[attrName] = initialValue;
217
+ } else {
218
+ if (attrName === 'id' || attrName === 'documentId') {
219
+ continue;
220
+ }
221
+ result[attrName] = null;
222
+ }
223
+ }
224
+ return {
225
+ data: result,
226
+ removedAttributes
227
+ };
228
+ };
127
229
 
128
- export { prepareRelations, prepareTempKeys, removeFieldsThatDontExistOnSchema, removeProhibitedFields, transformDocument };
230
+ export { handleInvisibleAttributes, prepareRelations, prepareTempKeys, removeFieldsThatDontExistOnSchema, removeProhibitedFields, transformDocument };
129
231
  //# sourceMappingURL=data.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.mjs","sources":["../../../../../admin/src/pages/EditView/utils/data.ts"],"sourcesContent":["import { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\n\nimport { DOCUMENT_META_FIELDS } from '../../../constants/attributes';\n\nimport type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * traverseData\n * -----------------------------------------------------------------------------------------------*/\n\n// Make only attributes required since it's the only one Content History has\ntype PartialSchema = Partial<Schema.Schema> & Pick<Schema.Schema, 'attributes'>;\n\ntype Predicate = <TAttribute extends Schema.Attribute.AnyAttribute>(\n attribute: TAttribute,\n value: Schema.Attribute.Value<TAttribute>\n) => boolean;\ntype Transform = <TAttribute extends Schema.Attribute.AnyAttribute>(\n value: any,\n attribute: TAttribute\n) => any;\ntype AnyData = Omit<Document, 'id'>;\n\nconst BLOCK_LIST_ATTRIBUTE_KEYS = ['__component', '__temp_key__'];\n\n/**\n * @internal This function is used to traverse the data and transform the values.\n * Given a predicate function, it will transform the value (using the given transform function)\n * if the predicate returns true. If it finds that the attribute is a component or dynamiczone,\n * it will recursively traverse those data structures as well.\n *\n * It is possible to break the ContentManager by using this function incorrectly, for example,\n * if you transform a number into a string but the attribute type is a number, the ContentManager\n * will not be able to save the data and the Form will likely crash because the component it's\n * passing the data too won't succesfully be able to handle the value.\n */\nconst traverseData =\n (predicate: Predicate, transform: Transform) =>\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (data: AnyData = {}) => {\n const traverse = (datum: AnyData, attributes: Schema.Schema['attributes']) => {\n return Object.entries(datum).reduce<AnyData>((acc, [key, value]) => {\n const attribute = attributes[key];\n\n /**\n * If the attribute is a block list attribute, we don't want to transform it.\n * We also don't want to transform null or undefined values.\n */\n if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === undefined) {\n acc[key] = value;\n return acc;\n }\n\n if (attribute.type === 'component') {\n if (attribute.repeatable) {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, true>>;\n acc[key] = componentValue.map((componentData) =>\n traverse(componentData, components[attribute.component]?.attributes ?? {})\n );\n } else {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, false>>;\n\n acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamicZoneValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.DynamicZone>;\n\n acc[key] = dynamicZoneValue.map((componentData) =>\n traverse(componentData, components[componentData.__component]?.attributes ?? {})\n );\n } else if (predicate(attribute, value)) {\n acc[key] = transform(value, attribute);\n } else {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n };\n\n return traverse(data, schema.attributes);\n };\n\n/* -------------------------------------------------------------------------------------------------\n * removeProhibitedFields\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Removes all the fields that are not allowed.\n */\nconst removeProhibitedFields = (prohibitedFields: Schema.Attribute.Kind[]) =>\n traverseData(\n (attribute) => prohibitedFields.includes(attribute.type),\n () => ''\n );\n\n/* -------------------------------------------------------------------------------------------------\n * prepareRelations\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Sets all relation values to an empty array.\n */\nconst prepareRelations = traverseData(\n (attribute) => attribute.type === 'relation',\n () => ({\n connect: [],\n disconnect: [],\n })\n);\n\n/* -------------------------------------------------------------------------------------------------\n * prepareTempKeys\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each component and dynamiczone item. This gives us\n * a stable identifier regardless of its ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = traverseData(\n (attribute) =>\n (attribute.type === 'component' && attribute.repeatable) || attribute.type === 'dynamiczone',\n (data) => {\n if (Array.isArray(data) && data.length > 0) {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n }\n\n return data;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * removeFieldsThatDontExistOnSchema\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Fields that don't exist in the schema like createdAt etc. are only on the first level (not nested),\n * as such we don't need to traverse the components to remove them.\n */\nconst removeFieldsThatDontExistOnSchema = (schema: PartialSchema) => (data: AnyData) => {\n const schemaKeys = Object.keys(schema.attributes);\n const dataKeys = Object.keys(data);\n\n const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));\n\n const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {\n delete acc[key];\n\n return acc;\n }, structuredClone(data));\n\n return revisedData;\n};\n\n/**\n * @internal\n * @description We need to remove null fields from the data-structure because it will pass it\n * to the specific inputs breaking them as most would prefer empty strings or `undefined` if\n * they're controlled / uncontrolled.\n */\nconst removeNullValues = (data: AnyData) => {\n return Object.entries(data).reduce<AnyData>((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n\n acc[key] = value;\n\n return acc;\n }, {});\n};\n\n/* -------------------------------------------------------------------------------------------------\n * transformDocuments\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Takes a document data structure (this could be from the API or a default form structure)\n * and applies consistent data transformations to it. This is also used when we add new components to the\n * form to ensure the data is correctly prepared from their default state e.g. relations are set to an empty array.\n */\nconst transformDocument =\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (document: AnyData) => {\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n removeProhibitedFields(['password'])(schema, components),\n removeNullValues,\n prepareRelations(schema, components),\n prepareTempKeys(schema, components)\n );\n\n return transformations(document);\n };\n\nexport {\n removeProhibitedFields,\n prepareRelations,\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n transformDocument,\n};\nexport type { AnyData };\n"],"names":["BLOCK_LIST_ATTRIBUTE_KEYS","traverseData","predicate","transform","schema","components","data","traverse","datum","attributes","Object","entries","reduce","acc","key","value","attribute","includes","undefined","type","repeatable","componentValue","map","componentData","component","dynamicZoneValue","__component","removeProhibitedFields","prohibitedFields","prepareRelations","connect","disconnect","prepareTempKeys","Array","isArray","length","keys","generateNKeysBetween","index","__temp_key__","removeFieldsThatDontExistOnSchema","schemaKeys","dataKeys","keysToRemove","filter","revisedData","DOCUMENT_META_FIELDS","structuredClone","removeNullValues","transformDocument","document","transformations","pipe"],"mappings":"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"}
1
+ {"version":3,"file":"data.mjs","sources":["../../../../../admin/src/pages/EditView/utils/data.ts"],"sourcesContent":["import { createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\n\nimport { DOCUMENT_META_FIELDS } from '../../../constants/attributes';\n\nimport type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * traverseData\n * -----------------------------------------------------------------------------------------------*/\n\n// Make only attributes required since it's the only one Content History has\ntype PartialSchema = Partial<Schema.Schema> & Pick<Schema.Schema, 'attributes'>;\n\ntype Predicate = <TAttribute extends Schema.Attribute.AnyAttribute>(\n attribute: TAttribute,\n value: Schema.Attribute.Value<TAttribute>\n) => boolean;\ntype Transform = <TAttribute extends Schema.Attribute.AnyAttribute>(\n value: any,\n attribute: TAttribute\n) => any;\ntype AnyData = Omit<Document, 'id'>;\n\nconst BLOCK_LIST_ATTRIBUTE_KEYS = ['__component', '__temp_key__'];\n\n/**\n * @internal This function is used to traverse the data and transform the values.\n * Given a predicate function, it will transform the value (using the given transform function)\n * if the predicate returns true. If it finds that the attribute is a component or dynamiczone,\n * it will recursively traverse those data structures as well.\n *\n * It is possible to break the ContentManager by using this function incorrectly, for example,\n * if you transform a number into a string but the attribute type is a number, the ContentManager\n * will not be able to save the data and the Form will likely crash because the component it's\n * passing the data too won't succesfully be able to handle the value.\n */\nconst traverseData =\n (predicate: Predicate, transform: Transform) =>\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (data: AnyData = {}) => {\n const traverse = (datum: AnyData, attributes: Schema.Schema['attributes']) => {\n return Object.entries(datum).reduce<AnyData>((acc, [key, value]) => {\n const attribute = attributes[key];\n\n /**\n * If the attribute is a block list attribute, we don't want to transform it.\n * We also don't want to transform null or undefined values.\n */\n if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === undefined) {\n acc[key] = value;\n return acc;\n }\n\n if (attribute.type === 'component') {\n if (attribute.repeatable) {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, true>>;\n acc[key] = componentValue.map((componentData) =>\n traverse(componentData, components[attribute.component]?.attributes ?? {})\n );\n } else {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, false>>;\n\n acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamicZoneValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.DynamicZone>;\n\n acc[key] = dynamicZoneValue.map((componentData) =>\n traverse(componentData, components[componentData.__component]?.attributes ?? {})\n );\n } else if (predicate(attribute, value)) {\n acc[key] = transform(value, attribute);\n } else {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n };\n\n return traverse(data, schema.attributes);\n };\n\n/* -------------------------------------------------------------------------------------------------\n * removeProhibitedFields\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Removes all the fields that are not allowed.\n */\nconst removeProhibitedFields = (prohibitedFields: Schema.Attribute.Kind[]) =>\n traverseData(\n (attribute) => prohibitedFields.includes(attribute.type),\n () => ''\n );\n\n/* -------------------------------------------------------------------------------------------------\n * prepareRelations\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Sets all relation values to an empty array.\n */\nconst prepareRelations = traverseData(\n (attribute) => attribute.type === 'relation',\n () => ({\n connect: [],\n disconnect: [],\n })\n);\n\n/* -------------------------------------------------------------------------------------------------\n * prepareTempKeys\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each component and dynamiczone item. This gives us\n * a stable identifier regardless of its ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = traverseData(\n (attribute) =>\n (attribute.type === 'component' && attribute.repeatable) || attribute.type === 'dynamiczone',\n (data) => {\n if (Array.isArray(data) && data.length > 0) {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n }\n\n return data;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * removeFieldsThatDontExistOnSchema\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Fields that don't exist in the schema like createdAt etc. are only on the first level (not nested),\n * as such we don't need to traverse the components to remove them.\n */\nconst removeFieldsThatDontExistOnSchema = (schema: PartialSchema) => (data: AnyData) => {\n const schemaKeys = Object.keys(schema.attributes);\n const dataKeys = Object.keys(data);\n\n const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));\n\n const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {\n delete acc[key];\n\n return acc;\n }, structuredClone(data));\n\n return revisedData;\n};\n\n/**\n * @internal\n * @description We need to remove null fields from the data-structure because it will pass it\n * to the specific inputs breaking them as most would prefer empty strings or `undefined` if\n * they're controlled / uncontrolled.\n */\nconst removeNullValues = (data: AnyData) => {\n return Object.entries(data).reduce<AnyData>((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n\n acc[key] = value;\n\n return acc;\n }, {});\n};\n\n/* -------------------------------------------------------------------------------------------------\n * transformDocuments\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Takes a document data structure (this could be from the API or a default form structure)\n * and applies consistent data transformations to it. This is also used when we add new components to the\n * form to ensure the data is correctly prepared from their default state e.g. relations are set to an empty array.\n */\nconst transformDocument =\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (document: AnyData) => {\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n removeProhibitedFields(['password'])(schema, components),\n removeNullValues,\n prepareRelations(schema, components),\n prepareTempKeys(schema, components)\n );\n\n return transformations(document);\n };\n\ntype HandleOptions = {\n schema?: Schema.ContentType | Schema.Component;\n initialValues?: AnyData;\n components?: Record<string, Schema.Component>;\n};\n\ntype RemovedFieldPath = string;\n\n/**\n * Removes values from the data object if their corresponding attribute has a\n * visibility condition that evaluates to false.\n *\n * @param {object} schema - The content type schema (with attributes).\n * @param {object} data - The data object to filter based on visibility.\n * @returns {object} A new data object with only visible fields retained.\n */\nconst handleInvisibleAttributes = (\n data: AnyData,\n { schema, initialValues = {}, components = {} }: HandleOptions,\n path: string[] = [],\n removedAttributes: RemovedFieldPath[] = []\n): {\n data: AnyData;\n removedAttributes: RemovedFieldPath[];\n} => {\n if (!schema?.attributes) return { data, removedAttributes };\n\n const rulesEngine = createRulesEngine();\n const result: AnyData = {};\n\n for (const [attrName, attrDef] of Object.entries(schema.attributes)) {\n const fullPath = [...path, attrName].join('.');\n const condition = attrDef?.conditions?.visible;\n const isVisible = condition ? rulesEngine.evaluate(condition, { ...data, ...result }) : true;\n\n if (!isVisible) {\n removedAttributes.push(fullPath);\n continue;\n }\n\n const userProvided = Object.prototype.hasOwnProperty.call(data, attrName);\n const currentValue = userProvided ? data[attrName] : undefined;\n const initialValue = initialValues?.[attrName];\n\n // 🔹 Handle components\n if (attrDef.type === 'component') {\n const compSchema = components[attrDef.component];\n const value = currentValue ?? initialValue;\n\n if (!value) {\n result[attrName] = attrDef.repeatable ? [] : null;\n continue;\n }\n\n if (attrDef.repeatable && Array.isArray(value)) {\n result[attrName] = value.map(\n (item, index) =>\n handleInvisibleAttributes(\n item,\n {\n schema: compSchema,\n initialValues: initialValue?.[index] ?? {},\n components,\n },\n [...path, `${attrName}[${index}]`],\n removedAttributes\n ).data\n );\n } else {\n result[attrName] = handleInvisibleAttributes(\n value,\n {\n schema: compSchema,\n initialValues: initialValue ?? {},\n components,\n },\n [...path, attrName],\n removedAttributes\n ).data;\n }\n\n continue;\n }\n\n // 🔸 Handle dynamic zones\n if (attrDef.type === 'dynamiczone') {\n if (!Array.isArray(currentValue)) {\n result[attrName] = [];\n continue;\n }\n\n result[attrName] = currentValue.map((dzItem, index) => {\n const compUID = dzItem?.__component;\n const compSchema = components[compUID];\n\n const cleaned = handleInvisibleAttributes(\n dzItem,\n {\n schema: compSchema,\n initialValues: initialValue?.[index] ?? {},\n components,\n },\n [...path, `${attrName}[${index}]`],\n removedAttributes\n ).data;\n\n return {\n __component: compUID,\n ...cleaned,\n };\n });\n\n continue;\n }\n\n // 🟡 Handle scalar/primitive\n if (currentValue !== undefined) {\n result[attrName] = currentValue;\n } else if (initialValue !== undefined) {\n result[attrName] = initialValue;\n } else {\n if (attrName === 'id' || attrName === 'documentId') {\n // If the attribute is 'id', we don't want to set it to null, as it should not be removed.\n continue;\n }\n result[attrName] = null;\n }\n }\n\n return {\n data: result,\n removedAttributes,\n };\n};\n\nexport {\n removeProhibitedFields,\n prepareRelations,\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n transformDocument,\n handleInvisibleAttributes,\n};\nexport type { AnyData };\n"],"names":["BLOCK_LIST_ATTRIBUTE_KEYS","traverseData","predicate","transform","schema","components","data","traverse","datum","attributes","Object","entries","reduce","acc","key","value","attribute","includes","undefined","type","repeatable","componentValue","map","componentData","component","dynamicZoneValue","__component","removeProhibitedFields","prohibitedFields","prepareRelations","connect","disconnect","prepareTempKeys","Array","isArray","length","keys","generateNKeysBetween","index","__temp_key__","removeFieldsThatDontExistOnSchema","schemaKeys","dataKeys","keysToRemove","filter","revisedData","DOCUMENT_META_FIELDS","structuredClone","removeNullValues","transformDocument","document","transformations","pipe","handleInvisibleAttributes","initialValues","path","removedAttributes","rulesEngine","createRulesEngine","result","attrName","attrDef","fullPath","join","condition","conditions","visible","isVisible","evaluate","push","userProvided","prototype","hasOwnProperty","call","currentValue","initialValue","compSchema","item","dzItem","compUID","cleaned"],"mappings":"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"}
@@ -64,7 +64,7 @@ const ConfirmBulkActionDialog = ({ onToggleDialog, isOpen = false, dialogBody, e
64
64
  children: [
65
65
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Cancel, {
66
66
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
67
- fullWidth: true,
67
+ width: '50%',
68
68
  onClick: onToggleDialog,
69
69
  variant: "tertiary",
70
70
  children: formatMessage({
@@ -154,6 +154,7 @@ const ConfirmDialogPublishAll = ({ isOpen, onToggleDialog, isConfirmButtonLoadin
154
154
  ]
155
155
  }),
156
156
  endAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
157
+ width: '50%',
157
158
  onClick: onConfirm,
158
159
  variant: "secondary",
159
160
  startIcon: /*#__PURE__*/ jsxRuntime.jsx(Icons.Check, {}),
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmBulkActionDialog.js","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button fullWidth onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n"],"names":["ConfirmBulkActionDialog","onToggleDialog","isOpen","dialogBody","endAction","formatMessage","useIntl","_jsx","Dialog","Root","open","_jsxs","Content","Header","id","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","WarningCircle","width","height","fill","Footer","Cancel","Button","fullWidth","onClick","variant","BoldChunk","chunks","Typography","fontWeight","ConfirmDialogPublishAll","isConfirmButtonLoading","onConfirm","selectedEntries","useTable","state","selectedRows","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","model","schema","useDoc","query","useQueryParams","enableDraftRelationsCount","data","countDraftRelations","isLoading","error","useGetManyDraftRelationCountQuery","documentIds","map","entry","documentId","locale","plugins","i18n","skip","React","useEffect","type","message","_Fragment","textAlign","b","count","entities","length","pluginOptions","textColor","em","Emphasis","startIcon","Check","loading"],"mappings":"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"}
1
+ {"version":3,"file":"ConfirmBulkActionDialog.js","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button width={'50%'} onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n width={'50%'}\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n"],"names":["ConfirmBulkActionDialog","onToggleDialog","isOpen","dialogBody","endAction","formatMessage","useIntl","_jsx","Dialog","Root","open","_jsxs","Content","Header","id","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","WarningCircle","width","height","fill","Footer","Cancel","Button","onClick","variant","BoldChunk","chunks","Typography","fontWeight","ConfirmDialogPublishAll","isConfirmButtonLoading","onConfirm","selectedEntries","useTable","state","selectedRows","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","model","schema","useDoc","query","useQueryParams","enableDraftRelationsCount","data","countDraftRelations","isLoading","error","useGetManyDraftRelationCountQuery","documentIds","map","entry","documentId","locale","plugins","i18n","skip","React","useEffect","type","message","_Fragment","textAlign","b","count","entities","length","pluginOptions","textColor","em","Emphasis","startIcon","Check","loading"],"mappings":"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"}
@@ -43,7 +43,7 @@ const ConfirmBulkActionDialog = ({ onToggleDialog, isOpen = false, dialogBody, e
43
43
  children: [
44
44
  /*#__PURE__*/ jsx(Dialog.Cancel, {
45
45
  children: /*#__PURE__*/ jsx(Button, {
46
- fullWidth: true,
46
+ width: '50%',
47
47
  onClick: onToggleDialog,
48
48
  variant: "tertiary",
49
49
  children: formatMessage({
@@ -133,6 +133,7 @@ const ConfirmDialogPublishAll = ({ isOpen, onToggleDialog, isConfirmButtonLoadin
133
133
  ]
134
134
  }),
135
135
  endAction: /*#__PURE__*/ jsx(Button, {
136
+ width: '50%',
136
137
  onClick: onConfirm,
137
138
  variant: "secondary",
138
139
  startIcon: /*#__PURE__*/ jsx(Check, {}),
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmBulkActionDialog.mjs","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button fullWidth onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n"],"names":["ConfirmBulkActionDialog","onToggleDialog","isOpen","dialogBody","endAction","formatMessage","useIntl","_jsx","Dialog","Root","open","_jsxs","Content","Header","id","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","WarningCircle","width","height","fill","Footer","Cancel","Button","fullWidth","onClick","variant","BoldChunk","chunks","Typography","fontWeight","ConfirmDialogPublishAll","isConfirmButtonLoading","onConfirm","selectedEntries","useTable","state","selectedRows","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","model","schema","useDoc","query","useQueryParams","enableDraftRelationsCount","data","countDraftRelations","isLoading","error","useGetManyDraftRelationCountQuery","documentIds","map","entry","documentId","locale","plugins","i18n","skip","React","useEffect","type","message","_Fragment","textAlign","b","count","entities","length","pluginOptions","textColor","em","Emphasis","startIcon","Check","loading"],"mappings":"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"}
1
+ {"version":3,"file":"ConfirmBulkActionDialog.mjs","sources":["../../../../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button width={'50%'} onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n width={'50%'}\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n"],"names":["ConfirmBulkActionDialog","onToggleDialog","isOpen","dialogBody","endAction","formatMessage","useIntl","_jsx","Dialog","Root","open","_jsxs","Content","Header","id","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","WarningCircle","width","height","fill","Footer","Cancel","Button","onClick","variant","BoldChunk","chunks","Typography","fontWeight","ConfirmDialogPublishAll","isConfirmButtonLoading","onConfirm","selectedEntries","useTable","state","selectedRows","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","model","schema","useDoc","query","useQueryParams","enableDraftRelationsCount","data","countDraftRelations","isLoading","error","useGetManyDraftRelationCountQuery","documentIds","map","entry","documentId","locale","plugins","i18n","skip","React","useEffect","type","message","_Fragment","textAlign","b","count","entities","length","pluginOptions","textColor","em","Emphasis","startIcon","Check","loading"],"mappings":"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"}
@@ -101,6 +101,7 @@ const FiltersImpl = ({ disabled, schema })=>{
101
101
  });
102
102
  return [
103
103
  'id',
104
+ 'documentId',
104
105
  ...allowedFields,
105
106
  ...DEFAULT_ALLOWED_FILTERS,
106
107
  ...canReadAdminUsers ? attributes.CREATOR_FIELDS : []
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.js","sources":["../../../../../admin/src/pages/ListView/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Filters,\n useField,\n useAuth,\n useTracking,\n useQueryParams,\n useAdminUsers,\n} from '@strapi/admin/strapi-admin';\nimport { Combobox, ComboboxOption, useCollator } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { CREATOR_FIELDS } from '../../../constants/attributes';\nimport { useContentTypeSchema } from '../../../hooks/useContentTypeSchema';\nimport { useDebounce } from '../../../hooks/useDebounce';\nimport { Schema } from '../../../hooks/useDocument';\nimport { useGetContentTypeConfigurationQuery } from '../../../services/contentTypes';\nimport { getMainField } from '../../../utils/attributes';\nimport { getDisplayName } from '../../../utils/users';\n\n/**\n * If new attributes are added, this list needs to be updated.\n */\nconst NOT_ALLOWED_FILTERS = [\n 'json',\n 'component',\n 'media',\n 'richtext',\n 'dynamiczone',\n 'password',\n 'blocks',\n];\nconst DEFAULT_ALLOWED_FILTERS = ['createdAt', 'updatedAt'];\nconst USER_FILTER_ATTRIBUTES = [...CREATOR_FIELDS, 'strapi_assignee'];\n\n/* -------------------------------------------------------------------------------------------------\n * Filters\n * -----------------------------------------------------------------------------------------------*/\ninterface FiltersProps {\n disabled?: boolean;\n schema: Schema;\n}\n\nconst FiltersImpl = ({ disabled, schema }: FiltersProps) => {\n const { attributes, uid: model, options } = schema;\n const { formatMessage, locale } = useIntl();\n const { trackUsage } = useTracking();\n const allPermissions = useAuth('FiltersImpl', (state) => state.permissions);\n const [{ query }] = useQueryParams<Filters.Query>();\n const { schemas } = useContentTypeSchema();\n\n const canReadAdminUsers = React.useMemo(\n () =>\n allPermissions.filter(\n (permission) => permission.action === 'admin::users.read' && permission.subject === null\n ).length > 0,\n [allPermissions]\n );\n\n const selectedUserIds = (query?.filters?.$and ?? []).reduce<string[]>((acc, filter) => {\n const [key, value] = Object.entries(filter)[0];\n if (typeof value.id !== 'object') {\n return acc;\n }\n\n const id = value.id.$eq || value.id.$ne;\n\n if (id && USER_FILTER_ATTRIBUTES.includes(key) && !acc.includes(id)) {\n acc.push(id);\n }\n\n return acc;\n }, []);\n\n const { data: userData, isLoading: isLoadingAdminUsers } = useAdminUsers(\n { filters: { id: { $in: selectedUserIds } } },\n {\n // fetch the list of admin users only if the filter contains users and the\n // current user has permissions to display users\n skip: selectedUserIds.length === 0 || !canReadAdminUsers,\n }\n );\n\n const { users = [] } = userData ?? {};\n\n const { metadata } = useGetContentTypeConfigurationQuery(model, {\n selectFromResult: ({ data }) => ({ metadata: data?.contentType.metadatas ?? {} }),\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const displayedFilters = React.useMemo(() => {\n const [{ properties: { fields = [] } = { fields: [] } }] = allPermissions.filter(\n (permission) =>\n permission.action === 'plugin::content-manager.explorer.read' &&\n permission.subject === model\n );\n\n const allowedFields = fields.filter((field) => {\n const attribute = attributes[field] ?? {};\n\n return attribute.type && !NOT_ALLOWED_FILTERS.includes(attribute.type);\n });\n\n return (\n [\n 'id',\n ...allowedFields,\n ...DEFAULT_ALLOWED_FILTERS,\n ...(canReadAdminUsers ? CREATOR_FIELDS : []),\n ]\n .map((name) => {\n const attribute = attributes[name];\n\n if (NOT_ALLOWED_FILTERS.includes(attribute.type)) {\n return null;\n }\n\n const { mainField: mainFieldName = '', label } = metadata[name].list;\n\n let filter: Filters.Filter = {\n name,\n label: label ?? '',\n mainField: getMainField(attribute, mainFieldName, { schemas, components: {} }),\n // @ts-expect-error – TODO: this is filtered out above in the `allowedFields` call but TS complains, is there a better way to solve this?\n type: attribute.type,\n };\n\n if (\n attribute.type === 'relation' &&\n 'target' in attribute &&\n attribute.target === 'admin::user'\n ) {\n filter = {\n ...filter,\n input: AdminUsersFilter,\n options: users.map((user) => ({\n label: getDisplayName(user),\n value: user.id.toString(),\n })),\n operators: [\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$eq',\n defaultMessage: 'is',\n }),\n value: '$eq',\n },\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$ne',\n defaultMessage: 'is not',\n }),\n value: '$ne',\n },\n ],\n mainField: {\n name: 'id',\n type: 'integer',\n },\n };\n }\n\n if (attribute.type === 'enumeration') {\n filter = {\n ...filter,\n options: attribute.enum.map((value) => ({\n label: value,\n value,\n })),\n };\n }\n\n return filter;\n })\n .filter(Boolean) as Filters.Filter[]\n ).toSorted((a, b) => formatter.compare(a.label, b.label));\n }, [\n allPermissions,\n canReadAdminUsers,\n model,\n attributes,\n metadata,\n schemas,\n users,\n formatMessage,\n formatter,\n ]);\n\n const onOpenChange = (isOpen: boolean) => {\n if (isOpen) {\n trackUsage('willFilterEntries');\n }\n };\n\n const handleFilterChange: Filters.Props['onChange'] = (data) => {\n const attribute = attributes[data.name];\n\n if (attribute) {\n trackUsage('didFilterEntries', {\n useRelation: attribute.type === 'relation',\n });\n }\n };\n\n return (\n <Filters.Root\n disabled={disabled}\n options={displayedFilters}\n onOpenChange={onOpenChange}\n onChange={handleFilterChange}\n >\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdminUsersFilter\n * -----------------------------------------------------------------------------------------------*/\n\nconst AdminUsersFilter = ({ name }: Filters.ValueInputProps) => {\n const [pageSize, setPageSize] = React.useState(10);\n const [search, setSearch] = React.useState('');\n const { formatMessage } = useIntl();\n\n const debouncedSearch = useDebounce(search, 300);\n\n const { data, isLoading } = useAdminUsers({\n pageSize,\n _q: debouncedSearch,\n });\n const field = useField(name);\n\n const handleOpenChange = (isOpen?: boolean) => {\n if (!isOpen) {\n setPageSize(10);\n }\n };\n\n const { users = [], pagination } = data ?? {};\n const { pageCount = 1, page = 1 } = pagination ?? {};\n\n return (\n <Combobox\n value={field.value}\n aria-label={formatMessage({\n id: 'content-manager.components.Filters.usersSelect.label',\n defaultMessage: 'Search and select a user to filter',\n })}\n onOpenChange={handleOpenChange}\n onChange={(value) => field.onChange(name, value)}\n loading={isLoading}\n onLoadMore={() => setPageSize(pageSize + 10)}\n hasMoreItems={page < pageCount}\n onInputChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.currentTarget.value);\n }}\n >\n {users.map((user) => {\n return (\n <ComboboxOption key={user.id} value={user.id.toString()}>\n {getDisplayName(user)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n\nexport { FiltersImpl as Filters };\nexport type { FiltersProps };\n"],"names":["NOT_ALLOWED_FILTERS","DEFAULT_ALLOWED_FILTERS","USER_FILTER_ATTRIBUTES","CREATOR_FIELDS","FiltersImpl","disabled","schema","attributes","uid","model","options","formatMessage","locale","useIntl","trackUsage","useTracking","allPermissions","useAuth","state","permissions","query","useQueryParams","schemas","useContentTypeSchema","canReadAdminUsers","React","useMemo","filter","permission","action","subject","length","selectedUserIds","filters","$and","reduce","acc","key","value","Object","entries","id","$eq","$ne","includes","push","data","userData","isLoading","isLoadingAdminUsers","useAdminUsers","$in","skip","users","metadata","useGetContentTypeConfigurationQuery","selectFromResult","contentType","metadatas","formatter","useCollator","sensitivity","displayedFilters","properties","fields","allowedFields","field","attribute","type","map","name","mainField","mainFieldName","label","list","getMainField","components","target","input","AdminUsersFilter","user","getDisplayName","toString","operators","defaultMessage","enum","Boolean","toSorted","a","b","compare","onOpenChange","isOpen","handleFilterChange","useRelation","_jsxs","Filters","Root","onChange","_jsx","Trigger","Popover","List","pageSize","setPageSize","useState","search","setSearch","debouncedSearch","useDebounce","_q","useField","handleOpenChange","pagination","pageCount","page","Combobox","aria-label","loading","onLoadMore","hasMoreItems","onInputChange","e","currentTarget","ComboboxOption"],"mappings":"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"}
1
+ {"version":3,"file":"Filters.js","sources":["../../../../../admin/src/pages/ListView/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Filters,\n useField,\n useAuth,\n useTracking,\n useQueryParams,\n useAdminUsers,\n} from '@strapi/admin/strapi-admin';\nimport { Combobox, ComboboxOption, useCollator } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { CREATOR_FIELDS } from '../../../constants/attributes';\nimport { useContentTypeSchema } from '../../../hooks/useContentTypeSchema';\nimport { useDebounce } from '../../../hooks/useDebounce';\nimport { Schema } from '../../../hooks/useDocument';\nimport { useGetContentTypeConfigurationQuery } from '../../../services/contentTypes';\nimport { getMainField } from '../../../utils/attributes';\nimport { getDisplayName } from '../../../utils/users';\n\n/**\n * If new attributes are added, this list needs to be updated.\n */\nconst NOT_ALLOWED_FILTERS = [\n 'json',\n 'component',\n 'media',\n 'richtext',\n 'dynamiczone',\n 'password',\n 'blocks',\n];\nconst DEFAULT_ALLOWED_FILTERS = ['createdAt', 'updatedAt'];\nconst USER_FILTER_ATTRIBUTES = [...CREATOR_FIELDS, 'strapi_assignee'];\n\n/* -------------------------------------------------------------------------------------------------\n * Filters\n * -----------------------------------------------------------------------------------------------*/\ninterface FiltersProps {\n disabled?: boolean;\n schema: Schema;\n}\n\nconst FiltersImpl = ({ disabled, schema }: FiltersProps) => {\n const { attributes, uid: model, options } = schema;\n const { formatMessage, locale } = useIntl();\n const { trackUsage } = useTracking();\n const allPermissions = useAuth('FiltersImpl', (state) => state.permissions);\n const [{ query }] = useQueryParams<Filters.Query>();\n const { schemas } = useContentTypeSchema();\n\n const canReadAdminUsers = React.useMemo(\n () =>\n allPermissions.filter(\n (permission) => permission.action === 'admin::users.read' && permission.subject === null\n ).length > 0,\n [allPermissions]\n );\n\n const selectedUserIds = (query?.filters?.$and ?? []).reduce<string[]>((acc, filter) => {\n const [key, value] = Object.entries(filter)[0];\n if (typeof value.id !== 'object') {\n return acc;\n }\n\n const id = value.id.$eq || value.id.$ne;\n\n if (id && USER_FILTER_ATTRIBUTES.includes(key) && !acc.includes(id)) {\n acc.push(id);\n }\n\n return acc;\n }, []);\n\n const { data: userData, isLoading: isLoadingAdminUsers } = useAdminUsers(\n { filters: { id: { $in: selectedUserIds } } },\n {\n // fetch the list of admin users only if the filter contains users and the\n // current user has permissions to display users\n skip: selectedUserIds.length === 0 || !canReadAdminUsers,\n }\n );\n\n const { users = [] } = userData ?? {};\n\n const { metadata } = useGetContentTypeConfigurationQuery(model, {\n selectFromResult: ({ data }) => ({ metadata: data?.contentType.metadatas ?? {} }),\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const displayedFilters = React.useMemo(() => {\n const [{ properties: { fields = [] } = { fields: [] } }] = allPermissions.filter(\n (permission) =>\n permission.action === 'plugin::content-manager.explorer.read' &&\n permission.subject === model\n );\n\n const allowedFields = fields.filter((field) => {\n const attribute = attributes[field] ?? {};\n\n return attribute.type && !NOT_ALLOWED_FILTERS.includes(attribute.type);\n });\n\n return (\n [\n 'id',\n 'documentId',\n ...allowedFields,\n ...DEFAULT_ALLOWED_FILTERS,\n ...(canReadAdminUsers ? CREATOR_FIELDS : []),\n ]\n .map((name) => {\n const attribute = attributes[name];\n\n if (NOT_ALLOWED_FILTERS.includes(attribute.type)) {\n return null;\n }\n\n const { mainField: mainFieldName = '', label } = metadata[name].list;\n\n let filter: Filters.Filter = {\n name,\n label: label ?? '',\n mainField: getMainField(attribute, mainFieldName, { schemas, components: {} }),\n // @ts-expect-error – TODO: this is filtered out above in the `allowedFields` call but TS complains, is there a better way to solve this?\n type: attribute.type,\n };\n\n if (\n attribute.type === 'relation' &&\n 'target' in attribute &&\n attribute.target === 'admin::user'\n ) {\n filter = {\n ...filter,\n input: AdminUsersFilter,\n options: users.map((user) => ({\n label: getDisplayName(user),\n value: user.id.toString(),\n })),\n operators: [\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$eq',\n defaultMessage: 'is',\n }),\n value: '$eq',\n },\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$ne',\n defaultMessage: 'is not',\n }),\n value: '$ne',\n },\n ],\n mainField: {\n name: 'id',\n type: 'integer',\n },\n };\n }\n\n if (attribute.type === 'enumeration') {\n filter = {\n ...filter,\n options: attribute.enum.map((value) => ({\n label: value,\n value,\n })),\n };\n }\n\n return filter;\n })\n .filter(Boolean) as Filters.Filter[]\n ).toSorted((a, b) => formatter.compare(a.label, b.label));\n }, [\n allPermissions,\n canReadAdminUsers,\n model,\n attributes,\n metadata,\n schemas,\n users,\n formatMessage,\n formatter,\n ]);\n\n const onOpenChange = (isOpen: boolean) => {\n if (isOpen) {\n trackUsage('willFilterEntries');\n }\n };\n\n const handleFilterChange: Filters.Props['onChange'] = (data) => {\n const attribute = attributes[data.name];\n\n if (attribute) {\n trackUsage('didFilterEntries', {\n useRelation: attribute.type === 'relation',\n });\n }\n };\n\n return (\n <Filters.Root\n disabled={disabled}\n options={displayedFilters}\n onOpenChange={onOpenChange}\n onChange={handleFilterChange}\n >\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdminUsersFilter\n * -----------------------------------------------------------------------------------------------*/\n\nconst AdminUsersFilter = ({ name }: Filters.ValueInputProps) => {\n const [pageSize, setPageSize] = React.useState(10);\n const [search, setSearch] = React.useState('');\n const { formatMessage } = useIntl();\n\n const debouncedSearch = useDebounce(search, 300);\n\n const { data, isLoading } = useAdminUsers({\n pageSize,\n _q: debouncedSearch,\n });\n const field = useField(name);\n\n const handleOpenChange = (isOpen?: boolean) => {\n if (!isOpen) {\n setPageSize(10);\n }\n };\n\n const { users = [], pagination } = data ?? {};\n const { pageCount = 1, page = 1 } = pagination ?? {};\n\n return (\n <Combobox\n value={field.value}\n aria-label={formatMessage({\n id: 'content-manager.components.Filters.usersSelect.label',\n defaultMessage: 'Search and select a user to filter',\n })}\n onOpenChange={handleOpenChange}\n onChange={(value) => field.onChange(name, value)}\n loading={isLoading}\n onLoadMore={() => setPageSize(pageSize + 10)}\n hasMoreItems={page < pageCount}\n onInputChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.currentTarget.value);\n }}\n >\n {users.map((user) => {\n return (\n <ComboboxOption key={user.id} value={user.id.toString()}>\n {getDisplayName(user)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n\nexport { FiltersImpl as Filters };\nexport type { FiltersProps };\n"],"names":["NOT_ALLOWED_FILTERS","DEFAULT_ALLOWED_FILTERS","USER_FILTER_ATTRIBUTES","CREATOR_FIELDS","FiltersImpl","disabled","schema","attributes","uid","model","options","formatMessage","locale","useIntl","trackUsage","useTracking","allPermissions","useAuth","state","permissions","query","useQueryParams","schemas","useContentTypeSchema","canReadAdminUsers","React","useMemo","filter","permission","action","subject","length","selectedUserIds","filters","$and","reduce","acc","key","value","Object","entries","id","$eq","$ne","includes","push","data","userData","isLoading","isLoadingAdminUsers","useAdminUsers","$in","skip","users","metadata","useGetContentTypeConfigurationQuery","selectFromResult","contentType","metadatas","formatter","useCollator","sensitivity","displayedFilters","properties","fields","allowedFields","field","attribute","type","map","name","mainField","mainFieldName","label","list","getMainField","components","target","input","AdminUsersFilter","user","getDisplayName","toString","operators","defaultMessage","enum","Boolean","toSorted","a","b","compare","onOpenChange","isOpen","handleFilterChange","useRelation","_jsxs","Filters","Root","onChange","_jsx","Trigger","Popover","List","pageSize","setPageSize","useState","search","setSearch","debouncedSearch","useDebounce","_q","useField","handleOpenChange","pagination","pageCount","page","Combobox","aria-label","loading","onLoadMore","hasMoreItems","onInputChange","e","currentTarget","ComboboxOption"],"mappings":"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"}
@@ -80,6 +80,7 @@ const FiltersImpl = ({ disabled, schema })=>{
80
80
  });
81
81
  return [
82
82
  'id',
83
+ 'documentId',
83
84
  ...allowedFields,
84
85
  ...DEFAULT_ALLOWED_FILTERS,
85
86
  ...canReadAdminUsers ? CREATOR_FIELDS : []