@strapi/admin 4.9.0-alpha.0 → 4.9.0-exp.90df253ba90fd6879eb56a720a1f80d04ff745b8

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 (548) hide show
  1. package/admin/src/StrapiApp.js +1 -1
  2. package/admin/src/components/AutoReloadOverlayBlockerProvider/Blocker.js +6 -10
  3. package/admin/src/components/AutoReloadOverlayBlockerProvider/Overlay.js +2 -3
  4. package/admin/src/components/GuidedTour/Homepage/components/Step.js +1 -3
  5. package/admin/src/components/GuidedTour/Homepage/components/Stepper.js +1 -1
  6. package/admin/src/components/GuidedTour/Homepage/index.js +4 -8
  7. package/admin/src/components/GuidedTour/Modal/components/Content.js +35 -25
  8. package/admin/src/components/GuidedTour/Modal/components/Modal.js +7 -11
  9. package/admin/src/components/GuidedTour/Modal/components/StepNumberWithPadding.js +1 -1
  10. package/admin/src/components/GuidedTour/Modal/components/Stepper.js +2 -5
  11. package/admin/src/components/GuidedTour/Stepper/StepLine.js +1 -1
  12. package/admin/src/components/GuidedTour/Stepper/StepNumber.js +2 -4
  13. package/admin/src/components/LeftMenu/index.js +5 -10
  14. package/admin/src/components/Notifications/Notification/index.js +10 -3
  15. package/admin/src/components/Notifications/index.js +6 -4
  16. package/admin/src/components/Theme/index.js +1 -1
  17. package/admin/src/content-manager/components/AttributeFilter/Filters.js +2 -3
  18. package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +0 -2
  19. package/admin/src/content-manager/components/ComponentInitializer/index.js +4 -7
  20. package/admin/src/content-manager/components/DragLayer/RelationDragPreview.js +3 -3
  21. package/admin/src/content-manager/components/DynamicTable/CellContent/Media/FileWrapper.js +1 -2
  22. package/admin/src/content-manager/components/DynamicTable/CellContent/Media/index.js +3 -3
  23. package/admin/src/content-manager/components/DynamicTable/CellContent/MultipleMedias.js +1 -1
  24. package/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js +14 -11
  25. package/admin/src/content-manager/components/DynamicTable/CellContent/RelationSingle/index.js +1 -1
  26. package/admin/src/content-manager/components/DynamicTable/CellContent/RepeatableComponent/index.js +1 -4
  27. package/admin/src/content-manager/components/DynamicTable/CellContent/SingleComponent/index.js +1 -2
  28. package/admin/src/content-manager/components/DynamicTable/CellContent/index.js +1 -2
  29. package/admin/src/content-manager/components/DynamicTable/ConfirmDialogDelete/index.js +4 -9
  30. package/admin/src/content-manager/components/DynamicTable/ConfirmDialogDeleteAll/index.js +4 -9
  31. package/admin/src/content-manager/components/DynamicTable/TableRows/index.js +3 -9
  32. package/admin/src/content-manager/components/DynamicTable/index.js +1 -2
  33. package/admin/src/content-manager/components/DynamicZone/components/AddComponentButton.js +2 -5
  34. package/admin/src/content-manager/components/DynamicZone/components/ComponentCard.js +4 -6
  35. package/admin/src/content-manager/components/DynamicZone/components/ComponentCategory.js +1 -2
  36. package/admin/src/content-manager/components/DynamicZone/components/ComponentPicker.js +1 -4
  37. package/admin/src/content-manager/components/DynamicZone/components/DynamicComponent.js +3 -6
  38. package/admin/src/content-manager/components/DynamicZone/components/DynamicZoneLabel.js +1 -3
  39. package/admin/src/content-manager/components/DynamicZone/index.js +3 -3
  40. package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +3 -31
  41. package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +65 -134
  42. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/findAllAndReplace.js +85 -0
  43. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/index.js +1 -2
  44. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js +7 -1
  45. package/admin/src/content-manager/components/FieldComponent/Label.js +1 -3
  46. package/admin/src/content-manager/components/FieldComponent/index.js +4 -7
  47. package/admin/src/content-manager/components/FieldTypeIcon/index.js +15 -13
  48. package/admin/src/content-manager/components/Hint/index.js +1 -1
  49. package/admin/src/content-manager/components/InjectionZoneList/index.js +1 -1
  50. package/admin/src/content-manager/components/InputUID/endActionStyle.js +1 -3
  51. package/admin/src/content-manager/components/InputUID/index.js +2 -6
  52. package/admin/src/content-manager/components/NonRepeatableComponent/index.js +3 -5
  53. package/admin/src/content-manager/components/RelationInput/RelationInput.js +17 -14
  54. package/admin/src/content-manager/components/RelationInput/components/Option.js +1 -2
  55. package/admin/src/content-manager/components/RelationInput/components/Relation.js +9 -4
  56. package/admin/src/content-manager/components/RelationInput/components/RelationItem.js +4 -4
  57. package/admin/src/content-manager/components/RelationInput/components/RelationList.js +1 -1
  58. package/admin/src/content-manager/components/RelationInputDataManager/RelationInputDataManager.js +39 -33
  59. package/admin/src/content-manager/components/RepeatableComponent/components/Component.js +12 -6
  60. package/admin/src/content-manager/components/Wysiwyg/Editor.js +2 -2
  61. package/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js +2 -4
  62. package/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js +24 -18
  63. package/admin/src/content-manager/components/Wysiwyg/WysiwygStyles.js +1 -2
  64. package/admin/src/content-manager/components/Wysiwyg/index.js +5 -7
  65. package/admin/src/content-manager/components/Wysiwyg/utils/continueList.js +3 -3
  66. package/admin/src/content-manager/hooks/useRelation/useRelation.js +2 -2
  67. package/admin/src/content-manager/pages/App/LeftMenu/index.js +1 -1
  68. package/admin/src/content-manager/pages/App/index.js +1 -2
  69. package/admin/src/content-manager/pages/App/useModels.js +1 -1
  70. package/admin/src/content-manager/pages/App/utils/generateModelsLinks.js +9 -8
  71. package/admin/src/content-manager/pages/CollectionTypeRecursivePath/components/ErrorFallback.js +1 -1
  72. package/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js +2 -5
  73. package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFieldButton.js +2 -4
  74. package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js +6 -11
  75. package/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js +3 -3
  76. package/admin/src/content-manager/pages/EditSettingsView/components/FieldButtonContent.js +2 -6
  77. package/admin/src/content-manager/pages/EditSettingsView/components/FormModal.js +5 -5
  78. package/admin/src/content-manager/pages/EditSettingsView/components/GenericInput.js +1 -3
  79. package/admin/src/content-manager/pages/EditSettingsView/components/LinkToCTB.js +1 -1
  80. package/admin/src/content-manager/pages/EditSettingsView/components/ModalForm.js +1 -2
  81. package/admin/src/content-manager/pages/EditSettingsView/components/RowsLayout.js +1 -1
  82. package/admin/src/content-manager/pages/EditSettingsView/index.js +17 -13
  83. package/admin/src/content-manager/pages/EditView/DeleteLink/index.js +2 -2
  84. package/admin/src/content-manager/pages/EditView/DraftAndPublishBadge/index.js +3 -5
  85. package/admin/src/content-manager/pages/EditView/GridRow/index.js +1 -1
  86. package/admin/src/content-manager/pages/EditView/Header/index.js +17 -16
  87. package/admin/src/content-manager/pages/EditView/Information/index.js +9 -9
  88. package/admin/src/content-manager/pages/EditView/index.js +10 -15
  89. package/admin/src/content-manager/pages/ListSettingsView/components/CardPreview.js +4 -8
  90. package/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js +4 -9
  91. package/admin/src/content-manager/pages/ListSettingsView/components/EditFieldForm.js +8 -7
  92. package/admin/src/content-manager/pages/ListSettingsView/components/Settings.js +14 -10
  93. package/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js +4 -9
  94. package/admin/src/content-manager/pages/ListSettingsView/index.js +10 -7
  95. package/admin/src/content-manager/pages/ListView/FieldPicker/index.js +1 -2
  96. package/admin/src/content-manager/pages/ListView/PaginationFooter/index.js +1 -2
  97. package/admin/src/content-manager/pages/ListView/index.js +12 -10
  98. package/admin/src/content-manager/pages/NoContentType/index.js +2 -5
  99. package/admin/src/content-manager/pages/NoPermissions/index.js +1 -2
  100. package/admin/src/content-manager/utils/createDefaultForm.js +0 -8
  101. package/admin/src/hooks/index.js +2 -0
  102. package/admin/src/hooks/useLicenseLimitNotification/index.js +5 -0
  103. package/admin/src/hooks/useLicenseLimits/index.js +3 -0
  104. package/admin/src/hooks/useMenu/reducer.js +1 -3
  105. package/admin/src/hooks/useRegenerate/index.js +2 -2
  106. package/admin/src/hooks/useSettingsMenu/utils/defaultGlobalLinks.js +7 -0
  107. package/admin/src/index.js +0 -1
  108. package/admin/src/layouts/AppLayout/index.js +1 -3
  109. package/admin/src/layouts/UnauthenticatedLayout/LocaleToggle/index.js +1 -1
  110. package/admin/src/layouts/UnauthenticatedLayout/index.js +1 -2
  111. package/admin/src/pages/Admin/Onboarding/index.js +26 -7
  112. package/admin/src/pages/App/index.js +1 -1
  113. package/admin/src/pages/AuthPage/components/FieldActionWrapper/index.js +1 -1
  114. package/admin/src/pages/AuthPage/components/ForgotPassword/index.js +3 -9
  115. package/admin/src/pages/AuthPage/components/ForgotPasswordSuccess/index.js +1 -4
  116. package/admin/src/pages/AuthPage/components/Login/BaseLogin.js +4 -12
  117. package/admin/src/pages/AuthPage/components/Oops/index.js +1 -4
  118. package/admin/src/pages/AuthPage/components/Register/index.js +14 -13
  119. package/admin/src/pages/AuthPage/components/ResetPassword/index.js +4 -11
  120. package/admin/src/pages/HomePage/CloudBox.js +83 -0
  121. package/admin/src/pages/HomePage/ContentBlocks.js +6 -7
  122. package/admin/src/pages/HomePage/HomeHeader.js +5 -12
  123. package/admin/src/pages/HomePage/SocialLinks.js +37 -34
  124. package/admin/src/pages/HomePage/assets/strapi-cloud-background.png +0 -0
  125. package/admin/src/pages/HomePage/assets/strapi-cloud-flags.svg +1 -0
  126. package/admin/src/pages/HomePage/assets/strapi-cloud-icon.svg +1 -0
  127. package/admin/src/pages/HomePage/index.js +3 -4
  128. package/admin/src/pages/InstalledPluginsPage/Plugins.js +14 -5
  129. package/admin/src/pages/InternalErrorPage/index.js +2 -5
  130. package/admin/src/pages/MarketplacePage/components/EmptyNpmPackageSearch/EmptyNpmPackageGrid.js +1 -2
  131. package/admin/src/pages/MarketplacePage/components/EmptyNpmPackageSearch/index.js +2 -5
  132. package/admin/src/pages/MarketplacePage/components/MissingPluginBanner/index.js +2 -3
  133. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/CardButton.js +2 -4
  134. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/InstallPluginButton.js +2 -4
  135. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/PackageStats.js +4 -9
  136. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/index.js +5 -11
  137. package/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/FilterSelect.js +1 -1
  138. package/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/FiltersPopover.js +3 -6
  139. package/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/index.js +2 -5
  140. package/admin/src/pages/MarketplacePage/components/NpmPackagesGrid/index.js +1 -1
  141. package/admin/src/pages/MarketplacePage/components/PageHeader/index.js +3 -3
  142. package/admin/src/pages/MarketplacePage/components/SortSelect/index.js +1 -2
  143. package/admin/src/pages/MarketplacePage/index.js +15 -8
  144. package/admin/src/pages/NotFoundPage/index.js +2 -5
  145. package/admin/src/pages/ProfilePage/index.js +27 -24
  146. package/admin/src/pages/SettingsPage/components/Filters/index.js +2 -3
  147. package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +1 -1
  148. package/admin/src/pages/SettingsPage/{pages/ApiTokens/EditView/components → components/Tokens}/FormHead/index.js +41 -26
  149. package/admin/src/pages/SettingsPage/components/Tokens/LifeSpanInput/index.js +97 -0
  150. package/admin/src/pages/SettingsPage/components/Tokens/Regenerate/index.js +73 -0
  151. package/admin/src/pages/SettingsPage/components/Tokens/Table/DeleteButton/index.js +52 -0
  152. package/admin/src/pages/SettingsPage/{pages/ApiTokens/ListView/DynamicTable → components/Tokens/Table}/ReadButton/index.js +1 -1
  153. package/admin/src/pages/SettingsPage/{pages/ApiTokens/ListView/DynamicTable → components/Tokens/Table}/UpdateButton/index.js +1 -1
  154. package/admin/src/pages/SettingsPage/components/Tokens/Table/index.js +145 -0
  155. package/admin/src/pages/SettingsPage/{pages/ApiTokens/EditView/components/ContentBox → components/Tokens/TokenBox}/index.js +20 -18
  156. package/admin/src/pages/SettingsPage/components/Tokens/TokenDescription/index.js +51 -0
  157. package/admin/src/pages/SettingsPage/components/Tokens/TokenName/index.js +46 -0
  158. package/admin/src/pages/SettingsPage/components/Tokens/TokenTypeSelect/index.js +71 -0
  159. package/admin/src/pages/SettingsPage/components/Tokens/constants.js +2 -0
  160. package/admin/src/pages/SettingsPage/index.js +1 -1
  161. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ActionBoundRoutes/index.js +5 -7
  162. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/index.js +5 -7
  163. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/CheckBoxWrapper.js +1 -1
  164. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js +16 -9
  165. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ContenTypesSection/index.js +1 -1
  166. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js +56 -149
  167. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/LoadingView/index.js +2 -4
  168. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Permissions/index.js +3 -5
  169. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Regenerate/index.js +12 -8
  170. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +48 -19
  171. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/schema.js +1 -1
  172. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +18 -20
  173. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/AdminSeatInfo/index.js +5 -0
  174. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/CustomizationInfos/index.js +1 -3
  175. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/index.js +8 -5
  176. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/AddLogoDialog.js +1 -3
  177. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromComputerForm.js +14 -11
  178. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromUrlForm.js +1 -4
  179. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/ImageCardAsset.js +1 -1
  180. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/PendingLogoDialog.js +1 -5
  181. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/index.js +1 -2
  182. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +63 -74
  183. package/admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js +266 -4
  184. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/CollapseLabel/index.js +1 -1
  185. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsButton/index.js +2 -2
  186. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/index.js +2 -6
  187. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/index.js +5 -4
  188. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/index.js +4 -8
  189. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/index.js +3 -5
  190. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/CarretIcon/index.js +1 -1
  191. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/Header/index.js +1 -2
  192. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/index.js +3 -7
  193. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/index.js +1 -1
  194. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/utils/activeStyle.js +1 -1
  195. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypes/index.js +1 -1
  196. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Curve/index.js +1 -1
  197. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/index.js +12 -12
  198. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/index.js +1 -1
  199. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatLayoutForSettingsAndPlugins.js +12 -16
  200. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/Row/index.js +1 -2
  201. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/index.js +4 -12
  202. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/index.js +1 -1
  203. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RoleForm/index.js +12 -10
  204. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RowLabelWithCheckbox/index.js +1 -4
  205. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +6 -10
  206. package/admin/src/pages/SettingsPage/pages/Roles/ListPage/components/RoleRow/index.js +1 -5
  207. package/admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js +314 -129
  208. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js +142 -0
  209. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/LoadingView/index.js +48 -0
  210. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js +221 -0
  211. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/getDateOfExpiration.js +16 -0
  212. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/index.js +4 -0
  213. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js +11 -0
  214. package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js +194 -0
  215. package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/utils/tableHeaders.js +48 -0
  216. package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedCreateView/index.js +14 -0
  217. package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedEditView/index.js +14 -0
  218. package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedListView/index.js +12 -0
  219. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +19 -19
  220. package/admin/src/pages/SettingsPage/pages/Users/ListPage/CreateAction/index.js +24 -0
  221. package/admin/src/pages/SettingsPage/pages/Users/ListPage/DynamicTable/TableRows/index.js +11 -8
  222. package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/index.js +17 -12
  223. package/admin/src/pages/SettingsPage/pages/Users/ListPage/PaginationFooter/index.js +1 -2
  224. package/admin/src/pages/SettingsPage/pages/Users/ListPage/index.js +32 -34
  225. package/admin/src/pages/SettingsPage/pages/Users/ListPage/utils/tableHeaders.js +1 -2
  226. package/admin/src/pages/SettingsPage/pages/Users/components/SelectRoles/index.js +2 -2
  227. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/EventRow.js +1 -2
  228. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/index.js +3 -5
  229. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js +1 -1
  230. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js +12 -10
  231. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js +10 -16
  232. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js +17 -15
  233. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js +1 -1
  234. package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js +183 -182
  235. package/admin/src/pages/SettingsPage/utils/defaultRoutes.js +51 -10
  236. package/admin/src/pages/UseCasePage/index.js +13 -11
  237. package/admin/src/permissions/defaultPermissions.js +8 -0
  238. package/admin/src/translations/ca.json +13 -19
  239. package/admin/src/translations/de.json +6 -12
  240. package/admin/src/translations/dk.json +6 -12
  241. package/admin/src/translations/en.json +220 -190
  242. package/admin/src/translations/es.json +6 -12
  243. package/admin/src/translations/eu.json +178 -184
  244. package/admin/src/translations/fr.json +6 -12
  245. package/admin/src/translations/gu.json +0 -6
  246. package/admin/src/translations/he.json +0 -6
  247. package/admin/src/translations/hi.json +6 -12
  248. package/admin/src/translations/hu.json +19 -25
  249. package/admin/src/translations/id.json +0 -6
  250. package/admin/src/translations/it.json +0 -6
  251. package/admin/src/translations/ja.json +6 -12
  252. package/admin/src/translations/ko.json +6 -12
  253. package/admin/src/translations/ml.json +6 -12
  254. package/admin/src/translations/nl.json +19 -25
  255. package/admin/src/translations/no.json +0 -6
  256. package/admin/src/translations/pl.json +6 -12
  257. package/admin/src/translations/pt-BR.json +6 -12
  258. package/admin/src/translations/ru.json +859 -785
  259. package/admin/src/translations/sa.json +6 -12
  260. package/admin/src/translations/sk.json +2 -8
  261. package/admin/src/translations/sv.json +19 -25
  262. package/admin/src/translations/th.json +0 -6
  263. package/admin/src/translations/tr.json +19 -25
  264. package/admin/src/translations/zh-Hans.json +895 -669
  265. package/admin/src/translations/zh.json +19 -25
  266. package/build/2637.679b590b.chunk.js +1 -0
  267. package/build/27d16aefee06412db90a.png +0 -0
  268. package/build/4049.64715f20.chunk.js +1 -0
  269. package/build/5563.451e91ee.chunk.js +30 -0
  270. package/build/7112.2bf13da3.chunk.js +14 -0
  271. package/build/7259.7744297b.chunk.js +1 -0
  272. package/build/{5015.8e3fe50b.chunk.js → 8469.853c822b.chunk.js} +1 -6
  273. package/build/{2223.1bfea951.chunk.js → 8580.b0dcf37c.chunk.js} +66 -177
  274. package/build/9816.01ee964f.chunk.js +2 -0
  275. package/build/Admin-authenticatedApp.5aa08bf5.chunk.js +79 -0
  276. package/build/Admin_InternalErrorPage.4ad8b0df.chunk.js +1 -0
  277. package/build/Admin_homePage.1411fb7c.chunk.js +68 -0
  278. package/build/Admin_marketplace.0f6c8ee2.chunk.js +22 -0
  279. package/build/Admin_pluginsPage.15e3b0fd.chunk.js +1 -0
  280. package/build/Admin_profilePage.d2a8f9ab.chunk.js +15 -0
  281. package/build/Admin_settingsPage.489ec4eb.chunk.js +9 -0
  282. package/build/Upload_ConfigureTheView.34dde278.chunk.js +1 -0
  283. package/build/admin-app.4b313104.chunk.js +112 -0
  284. package/build/admin-edit-roles-page.3b196317.chunk.js +216 -0
  285. package/build/admin-edit-users.af3b0f15.chunk.js +10 -0
  286. package/build/admin-roles-list.0ad504a7.chunk.js +2 -0
  287. package/build/admin-users.af8c3123.chunk.js +11 -0
  288. package/build/{api-tokens-create-page.a31c7fba.chunk.js → api-tokens-create-page.2a6e22bd.chunk.js} +1 -1
  289. package/build/{api-tokens-edit-page.64fef287.chunk.js → api-tokens-edit-page.fa38cd63.chunk.js} +1 -1
  290. package/build/api-tokens-list-page.93f24348.chunk.js +16 -0
  291. package/build/audit-logs-settings-page.7be97e82.chunk.js +1 -0
  292. package/build/bb3108f7fd1e6179bde1.svg +1 -0
  293. package/build/bb4d0d527bdfb161bc5a.svg +1 -0
  294. package/build/ca-json.43e14418.chunk.js +1 -0
  295. package/build/content-manager.f530e141.chunk.js +1139 -0
  296. package/build/content-type-builder-list-view.cf38fe2f.chunk.js +191 -0
  297. package/build/content-type-builder-translation-zh-Hans-json.415577fb.chunk.js +1 -0
  298. package/build/content-type-builder.6ecd201d.chunk.js +126 -0
  299. package/build/de-json.fcac7381.chunk.js +1 -0
  300. package/build/dk-json.e34cad0d.chunk.js +1 -0
  301. package/build/email-settings-page.4bdbef9a.chunk.js +3 -0
  302. package/build/en-json.01a88a30.chunk.js +1 -0
  303. package/build/es-json.715b6fd8.chunk.js +1 -0
  304. package/build/eu-json.fb17c8f9.chunk.js +1 -0
  305. package/build/fr-json.f66c3211.chunk.js +1 -0
  306. package/build/gu-json.4d667d0c.chunk.js +1 -0
  307. package/build/{he-json.f0de8cdb.chunk.js → he-json.3cf0b48a.chunk.js} +1 -1
  308. package/build/hi-json.323be97d.chunk.js +1 -0
  309. package/build/hu-json.fe71e6c8.chunk.js +1 -0
  310. package/build/i18n-settings-page.2bb5be96.chunk.js +1 -0
  311. package/build/id-json.41e07c46.chunk.js +1 -0
  312. package/build/index.html +1 -1
  313. package/build/it-json.bfe27ed8.chunk.js +1 -0
  314. package/build/ja-json.81b6d1e3.chunk.js +1 -0
  315. package/build/ko-json.4539f4ba.chunk.js +1 -0
  316. package/build/main.43b93ff3.js +3843 -0
  317. package/build/ml-json.8988e374.chunk.js +1 -0
  318. package/build/nl-json.98345913.chunk.js +1 -0
  319. package/build/{no-json.9b3cd181.chunk.js → no-json.19a2dbfa.chunk.js} +1 -1
  320. package/build/pl-json.59a5dab3.chunk.js +1 -0
  321. package/build/pt-BR-json.9410688b.chunk.js +1 -0
  322. package/build/ru-json.6a01cea6.chunk.js +1 -0
  323. package/build/runtime~main.a40b1b57.js +2 -0
  324. package/build/sa-json.6359a11c.chunk.js +1 -0
  325. package/build/sk-json.2374f129.chunk.js +1 -0
  326. package/build/sso-settings-page.5a8588ef.chunk.js +1 -0
  327. package/build/sv-json.ae6e71ea.chunk.js +1 -0
  328. package/build/th-json.5f659396.chunk.js +1 -0
  329. package/build/tr-json.bac5dbd3.chunk.js +1 -0
  330. package/build/transfer-tokens-create-page.a1f14bb1.chunk.js +1 -0
  331. package/build/transfer-tokens-edit-page.00ee1c74.chunk.js +1 -0
  332. package/build/transfer-tokens-list-page.ce37354b.chunk.js +16 -0
  333. package/build/upload-settings.0200561d.chunk.js +1 -0
  334. package/build/upload-translation-zh-Hans-json.db163b6b.chunk.js +1 -0
  335. package/build/upload.c7da1611.chunk.js +13 -0
  336. package/build/users-advanced-settings-page.c0cae03a.chunk.js +1 -0
  337. package/build/users-email-settings-page.a3c80419.chunk.js +1 -0
  338. package/build/users-permissions-translation-zh-Hans-json.6ab714ee.chunk.js +1 -0
  339. package/build/users-providers-settings-page.5f86e45c.chunk.js +1 -0
  340. package/build/users-roles-settings-page.b02986df.chunk.js +30 -0
  341. package/build/webhook-edit-page.a2a2b7bb.chunk.js +23 -0
  342. package/build/webhook-list-page.029957a4.chunk.js +1 -0
  343. package/build/zh-Hans-json.4cfef87d.chunk.js +1 -0
  344. package/build/zh-json.3529f1e5.chunk.js +1 -0
  345. package/ee/admin/hooks/index.js +2 -0
  346. package/ee/admin/hooks/useLicenseLimitNotification/index.js +88 -0
  347. package/ee/admin/hooks/useLicenseLimits/index.js +31 -0
  348. package/ee/admin/hooks/useSettingsMenu/utils/customAdminLinks.js +12 -12
  349. package/ee/admin/hooks/useSettingsMenu/utils/customGlobalLinks.js +13 -21
  350. package/ee/admin/pages/AuthPage/components/Login/index.js +3 -7
  351. package/ee/admin/pages/AuthPage/components/Providers/SSOProviders.js +1 -4
  352. package/ee/admin/pages/AuthPage/components/Providers/index.js +3 -10
  353. package/ee/admin/pages/SettingsPage/pages/ApplicationInfosPage/components/AdminSeatInfo/index.js +88 -0
  354. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionBody.js +2 -7
  355. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionItem.js +1 -2
  356. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/Modal/index.js +1 -2
  357. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/PaginationFooter/index.js +1 -2
  358. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/TableRows/index.js +2 -5
  359. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/utils/getDisplayedFilters.js +21 -10
  360. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/utils/tableHeaders.js +1 -1
  361. package/ee/admin/pages/SettingsPage/pages/SingleSignOn/index.js +25 -11
  362. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/CreateAction/index.js +52 -0
  363. package/ee/admin/pages/SettingsPage/utils/customRoutes.js +2 -16
  364. package/ee/admin/permissions/customPermissions.js +0 -3
  365. package/ee/server/bootstrap.js +1 -7
  366. package/ee/server/config/admin-actions.js +0 -10
  367. package/ee/server/controllers/admin.js +49 -0
  368. package/ee/server/controllers/index.js +1 -3
  369. package/ee/server/controllers/role.js +0 -39
  370. package/ee/server/controllers/user.js +62 -4
  371. package/ee/server/index.js +0 -1
  372. package/ee/server/routes/index.js +9 -122
  373. package/ee/server/services/audit-logs.js +15 -5
  374. package/ee/server/services/index.js +2 -3
  375. package/ee/server/services/seat-enforcement.js +114 -0
  376. package/ee/server/services/user.js +234 -0
  377. package/ee/server/validation/role.js +28 -20
  378. package/package.json +18 -17
  379. package/server/bootstrap.js +2 -1
  380. package/server/config/admin-actions.js +48 -0
  381. package/server/content-types/User.js +4 -0
  382. package/server/content-types/api-token.js +1 -0
  383. package/server/content-types/index.js +2 -0
  384. package/server/content-types/transfer-token-permission.js +36 -0
  385. package/server/content-types/transfer-token.js +66 -0
  386. package/server/controllers/api-token.js +8 -7
  387. package/server/controllers/index.js +1 -0
  388. package/server/controllers/permission.js +2 -4
  389. package/server/controllers/role.js +70 -23
  390. package/server/controllers/transfer/index.js +13 -0
  391. package/server/controllers/transfer/runner.js +28 -0
  392. package/server/controllers/transfer/token.js +131 -0
  393. package/server/controllers/user.js +7 -1
  394. package/server/domain/user.js +3 -0
  395. package/server/middlewares/data-transfer.js +26 -0
  396. package/server/middlewares/index.js +1 -0
  397. package/server/register.js +2 -9
  398. package/server/routes/index.js +2 -0
  399. package/server/routes/roles.js +48 -0
  400. package/server/routes/transfer.js +102 -0
  401. package/server/services/api-token.js +2 -3
  402. package/server/services/constants.js +10 -0
  403. package/server/services/index.js +1 -0
  404. package/server/services/permission/permissions-manager/index.js +9 -5
  405. package/server/services/permission/permissions-manager/sanitize.js +101 -4
  406. package/server/services/permission/queries.js +1 -74
  407. package/server/services/transfer/index.js +7 -0
  408. package/server/services/transfer/permission.js +22 -0
  409. package/server/services/transfer/token.js +426 -0
  410. package/server/services/transfer/utils.js +38 -0
  411. package/server/strategies/api-token.js +4 -2
  412. package/server/strategies/data-transfer.js +109 -0
  413. package/server/strategies/index.js +1 -0
  414. package/server/utils/index.d.ts +2 -0
  415. package/server/validation/api-tokens.js +1 -6
  416. package/server/validation/permission.js +1 -82
  417. package/server/validation/role.js +44 -0
  418. package/server/validation/transfer/index.js +5 -0
  419. package/server/validation/transfer/token.js +42 -0
  420. package/webpack.alias.js +0 -1
  421. package/admin/src/assets/images/hot-air-balloon.png +0 -0
  422. package/admin/src/assets/images/upgrade-details.png +0 -0
  423. package/admin/src/components/UpgradePlanModal/index.js +0 -131
  424. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/findLeafByPathAndReplace.js +0 -51
  425. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/recursivelyFindPathsBasedOnCondition.js +0 -79
  426. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormBody/index.js +0 -78
  427. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/DeleteButton/index.js +0 -40
  428. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +0 -112
  429. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/utils/constants.js +0 -3
  430. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/utils/constants.js +0 -3
  431. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/constants.js +0 -3
  432. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/utils/constants.js +0 -3
  433. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/constants.js +0 -3
  434. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/constants.js +0 -3
  435. package/build/1412.936ed920.chunk.js +0 -159
  436. package/build/1683.d59d0f23.chunk.js +0 -268
  437. package/build/2607.2e48dbf8.chunk.js +0 -66
  438. package/build/2743.646a1015.chunk.js +0 -45
  439. package/build/3075.3ee481f1.chunk.js +0 -108
  440. package/build/3632.2e378cf8.chunk.js +0 -138
  441. package/build/4318.cd55ce02.chunk.js +0 -30
  442. package/build/617f9c948fa79e6d73bd.png +0 -0
  443. package/build/6d21938306785f176538.png +0 -0
  444. package/build/8633.00ccd382.chunk.js +0 -1
  445. package/build/9707.b36ed71e.chunk.js +0 -96
  446. package/build/Admin-authenticatedApp.a73577e1.chunk.js +0 -79
  447. package/build/Admin_InternalErrorPage.178ddb90.chunk.js +0 -1
  448. package/build/Admin_homePage.c2f5f27d.chunk.js +0 -77
  449. package/build/Admin_marketplace.1df49c42.chunk.js +0 -26
  450. package/build/Admin_pluginsPage.8d824408.chunk.js +0 -6
  451. package/build/Admin_profilePage.cb667bc5.chunk.js +0 -15
  452. package/build/Admin_settingsPage.f90615fb.chunk.js +0 -178
  453. package/build/Upload_ConfigureTheView.d306009d.chunk.js +0 -1
  454. package/build/admin-app.06f07029.chunk.js +0 -112
  455. package/build/admin-edit-roles-page.35199b9d.chunk.js +0 -1
  456. package/build/admin-edit-users.9e48b00d.chunk.js +0 -10
  457. package/build/admin-users.cf7b4151.chunk.js +0 -11
  458. package/build/api-tokens-list-page.e600ad3e.chunk.js +0 -16
  459. package/build/audit-logs-settings-page.d4da4579.chunk.js +0 -1
  460. package/build/ca-json.4d999055.chunk.js +0 -1
  461. package/build/content-manager.255c3a59.chunk.js +0 -1139
  462. package/build/content-type-builder-list-view.8d7a3d68.chunk.js +0 -193
  463. package/build/content-type-builder-translation-zh-Hans-json.52a30266.chunk.js +0 -1
  464. package/build/content-type-builder.3c8558a5.chunk.js +0 -126
  465. package/build/de-json.866f8a28.chunk.js +0 -1
  466. package/build/dk-json.10f7b1d1.chunk.js +0 -1
  467. package/build/email-settings-page.b19f2eb2.chunk.js +0 -10
  468. package/build/en-json.1997583c.chunk.js +0 -1
  469. package/build/es-json.ea15c957.chunk.js +0 -1
  470. package/build/eu-json.3bc24d60.chunk.js +0 -1
  471. package/build/fr-json.e88fbdfd.chunk.js +0 -1
  472. package/build/gu-json.94f0d242.chunk.js +0 -1
  473. package/build/hi-json.df3a7be2.chunk.js +0 -1
  474. package/build/hu-json.680e6eef.chunk.js +0 -1
  475. package/build/i18n-settings-page.a6b49eac.chunk.js +0 -60
  476. package/build/id-json.e0d83d41.chunk.js +0 -1
  477. package/build/it-json.8be59205.chunk.js +0 -1
  478. package/build/ja-json.97ee41ba.chunk.js +0 -1
  479. package/build/ko-json.4cbbf4f2.chunk.js +0 -1
  480. package/build/main.7f308c20.js +0 -4322
  481. package/build/ml-json.e3747091.chunk.js +0 -1
  482. package/build/nl-json.371a15ee.chunk.js +0 -1
  483. package/build/pl-json.e535cbce.chunk.js +0 -1
  484. package/build/pt-BR-json.e5fafa46.chunk.js +0 -1
  485. package/build/review-workflows-settings.7b4be1b0.chunk.js +0 -63
  486. package/build/ru-json.866f0ff1.chunk.js +0 -1
  487. package/build/runtime~main.bf374148.js +0 -2
  488. package/build/sa-json.7efeb257.chunk.js +0 -1
  489. package/build/sk-json.7bbeb0af.chunk.js +0 -1
  490. package/build/sso-settings-page.ad2143dd.chunk.js +0 -41
  491. package/build/sv-json.dc40951f.chunk.js +0 -1
  492. package/build/th-json.f664b96d.chunk.js +0 -1
  493. package/build/tr-json.b79eae31.chunk.js +0 -1
  494. package/build/upload-settings.eb1a7908.chunk.js +0 -84
  495. package/build/upload-translation-zh-Hans-json.3da5cf56.chunk.js +0 -1
  496. package/build/upload.700e2c84.chunk.js +0 -33
  497. package/build/users-advanced-settings-page.aae212f2.chunk.js +0 -8
  498. package/build/users-email-settings-page.8a9b0da1.chunk.js +0 -23
  499. package/build/users-permissions-translation-zh-Hans-json.0b31c705.chunk.js +0 -1
  500. package/build/users-providers-settings-page.e6be909d.chunk.js +0 -99
  501. package/build/users-roles-settings-page.97d06a80.chunk.js +0 -30
  502. package/build/webhook-edit-page.9eb0f789.chunk.js +0 -75
  503. package/build/webhook-list-page.66082323.chunk.js +0 -42
  504. package/build/zh-Hans-json.30a18940.chunk.js +0 -1
  505. package/build/zh-json.49d84433.chunk.js +0 -1
  506. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/ReviewWorkflows.js +0 -137
  507. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/actions/index.js +0 -42
  508. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage/AddStage.js +0 -87
  509. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage/index.js +0 -1
  510. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/Stage.js +0 -90
  511. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/index.js +0 -1
  512. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stages.js +0 -77
  513. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/index.js +0 -1
  514. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/constants.js +0 -6
  515. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.js +0 -63
  516. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/index.js +0 -3
  517. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js +0 -102
  518. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/getWorkflowValidationSchema.js +0 -25
  519. package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +0 -267
  520. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/utils/constants.js +0 -3
  521. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ConditionsSelect/MenuList/utils/constants.js +0 -3
  522. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/utils/constants.js +0 -3
  523. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/constants.js +0 -3
  524. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/utils/constants.js +0 -3
  525. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/constants.js +0 -3
  526. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/constants.js +0 -3
  527. package/ee/admin/pages/SettingsPage/pages/Roles/ListPage/index.js +0 -370
  528. package/ee/admin/pages/SettingsPage/pages/Roles/ProtectedListPage/index.js +0 -12
  529. package/ee/server/constants/default-stages.json +0 -14
  530. package/ee/server/constants/default-workflow.json +0 -1
  531. package/ee/server/constants/workflows.js +0 -7
  532. package/ee/server/content-types/index.js +0 -9
  533. package/ee/server/content-types/workflow/index.js +0 -34
  534. package/ee/server/content-types/workflow-stage/index.js +0 -36
  535. package/ee/server/controllers/permission.js +0 -21
  536. package/ee/server/controllers/workflows/index.js +0 -36
  537. package/ee/server/controllers/workflows/stages/index.js +0 -57
  538. package/ee/server/services/review-workflows/review-workflows.js +0 -54
  539. package/ee/server/services/review-workflows/stages.js +0 -133
  540. package/ee/server/services/review-workflows/workflows.js +0 -25
  541. package/ee/server/utils/index.js +0 -8
  542. package/ee/server/utils/test.js +0 -11
  543. package/ee/server/validation/permission.js +0 -8
  544. package/ee/server/validation/review-workflows.js +0 -17
  545. package/server/domain/role.js +0 -29
  546. package/admin/src/pages/SettingsPage/{pages/ApiTokens/ListView/DynamicTable → components/Tokens/Table}/DefaultButton/index.js +1 -1
  547. /package/{ee/admin → admin/src}/pages/SettingsPage/pages/Roles/CreatePage/utils/schema.js +0 -0
  548. /package/{ee/admin → admin/src}/pages/SettingsPage/pages/Roles/ListPage/reducer.js +0 -0
@@ -1,13 +1,8 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useIntl } from 'react-intl';
4
- import { Dialog, DialogBody, DialogFooter } from '@strapi/design-system/Dialog';
5
- import { Stack } from '@strapi/design-system/Stack';
6
- import { Flex } from '@strapi/design-system/Flex';
7
- import { Typography } from '@strapi/design-system/Typography';
8
- import { Button } from '@strapi/design-system/Button';
9
- import ExclamationMarkCircle from '@strapi/icons/ExclamationMarkCircle';
10
- import Trash from '@strapi/icons/Trash';
4
+ import { Dialog, DialogBody, DialogFooter, Flex, Typography, Button } from '@strapi/design-system';
5
+ import { ExclamationMarkCircle, Trash } from '@strapi/icons';
11
6
  import InjectionZoneList from '../../InjectionZoneList';
12
7
  import { getTrad } from '../../../utils';
13
8
 
@@ -26,7 +21,7 @@ const ConfirmDialogDeleteAll = ({ isConfirmButtonLoading, isOpen, onToggleDialog
26
21
  isOpen={isOpen}
27
22
  >
28
23
  <DialogBody icon={<ExclamationMarkCircle />}>
29
- <Stack spacing={2}>
24
+ <Flex direction="column" alignItems="stretch" gap={2}>
30
25
  <Flex justifyContent="center">
31
26
  <Typography id="confirm-description">
32
27
  {formatMessage({
@@ -38,7 +33,7 @@ const ConfirmDialogDeleteAll = ({ isConfirmButtonLoading, isOpen, onToggleDialog
38
33
  <Flex>
39
34
  <InjectionZoneList area="contentManager.listView.deleteModalAdditionalInfos" />
40
35
  </Flex>
41
- </Stack>
36
+ </Flex>
42
37
  </DialogBody>
43
38
  <DialogFooter
44
39
  startAction={
@@ -3,15 +3,9 @@ import PropTypes from 'prop-types';
3
3
  import { Link, useHistory } from 'react-router-dom';
4
4
  import { useIntl } from 'react-intl';
5
5
 
6
- import { BaseCheckbox } from '@strapi/design-system/BaseCheckbox';
7
- import { Box } from '@strapi/design-system/Box';
8
- import { IconButton } from '@strapi/design-system/IconButton';
9
- import { Tbody, Td, Tr } from '@strapi/design-system/Table';
10
- import { Flex } from '@strapi/design-system/Flex';
11
-
12
- import Trash from '@strapi/icons/Trash';
13
- import Duplicate from '@strapi/icons/Duplicate';
14
- import Pencil from '@strapi/icons/Pencil';
6
+ import { BaseCheckbox, Box, IconButton, Tbody, Td, Tr, Flex } from '@strapi/design-system';
7
+
8
+ import { Trash, Duplicate, Pencil } from '@strapi/icons';
15
9
 
16
10
  import { useTracking, stopPropagation, onRowClick } from '@strapi/helper-plugin';
17
11
 
@@ -5,8 +5,7 @@ import { DynamicTable as Table, useStrapiApp } from '@strapi/helper-plugin';
5
5
  import { useSelector } from 'react-redux';
6
6
  import styled from 'styled-components';
7
7
 
8
- import { Status } from '@strapi/design-system/Status';
9
- import { Typography } from '@strapi/design-system/Typography';
8
+ import { Status, Typography } from '@strapi/design-system';
10
9
 
11
10
  import { INJECT_COLUMN_IN_TABLE } from '../../../exposedHooks';
12
11
  import { selectDisplayedHeaders } from '../../pages/ListView/selectors';
@@ -8,11 +8,8 @@ import React from 'react';
8
8
  import PropTypes from 'prop-types';
9
9
  import { useIntl } from 'react-intl';
10
10
  import styled from 'styled-components';
11
- import PlusCircle from '@strapi/icons/PlusCircle';
12
- import { BaseButton } from '@strapi/design-system/BaseButton';
13
- import { Box } from '@strapi/design-system/Box';
14
- import { Flex } from '@strapi/design-system/Flex';
15
- import { Typography } from '@strapi/design-system/Typography';
11
+ import { PlusCircle } from '@strapi/icons';
12
+ import { BaseButton, Box, Flex, Typography } from '@strapi/design-system';
16
13
 
17
14
  import { getTrad } from '../../../utils';
18
15
 
@@ -8,9 +8,7 @@ import React from 'react';
8
8
  import PropTypes from 'prop-types';
9
9
  import styled from 'styled-components';
10
10
 
11
- import { Box } from '@strapi/design-system/Box';
12
- import { Typography } from '@strapi/design-system/Typography';
13
- import { Stack } from '@strapi/design-system/Stack';
11
+ import { Box, Typography, Flex } from '@strapi/design-system';
14
12
  import { pxToRem } from '@strapi/helper-plugin';
15
13
 
16
14
  import { ComponentIcon } from '../../ComponentIcon';
@@ -34,7 +32,7 @@ const ComponentBox = styled(Box)`
34
32
  color: ${({ theme }) => theme.colors.primary600};
35
33
  }
36
34
 
37
- /* > Stack > ComponentIcon */
35
+ /* > Flex > ComponentIcon */
38
36
  > div > div:first-child {
39
37
  background: ${({ theme }) => theme.colors.primary200};
40
38
  color: ${({ theme }) => theme.colors.primary600};
@@ -45,13 +43,13 @@ const ComponentBox = styled(Box)`
45
43
  export default function ComponentCard({ children, onClick }) {
46
44
  return (
47
45
  <ComponentBox as="button" type="button" onClick={onClick} hasRadius>
48
- <Stack spacing={1} alignItems="center" justifyContent="center">
46
+ <Flex direction="column" gap={1} alignItems="center" justifyContent="center">
49
47
  <ComponentIcon />
50
48
 
51
49
  <Typography variant="pi" fontWeight="bold" textColor="neutral600">
52
50
  {children}
53
51
  </Typography>
54
- </Stack>
52
+ </Flex>
55
53
  </ComponentBox>
56
54
  );
57
55
  }
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { Accordion, AccordionToggle, AccordionContent } from '@strapi/design-system/Accordion';
4
- import { Box } from '@strapi/design-system/Box';
3
+ import { Accordion, AccordionToggle, AccordionContent, Box } from '@strapi/design-system';
5
4
  import styled from 'styled-components';
6
5
  import { useIntl } from 'react-intl';
7
6
 
@@ -2,10 +2,7 @@ import React, { useEffect, useMemo, useState } from 'react';
2
2
  import groupBy from 'lodash/groupBy';
3
3
  import PropTypes from 'prop-types';
4
4
  import { useIntl } from 'react-intl';
5
- import { KeyboardNavigable } from '@strapi/design-system/KeyboardNavigable';
6
- import { Box } from '@strapi/design-system/Box';
7
- import { Flex } from '@strapi/design-system/Flex';
8
- import { Typography } from '@strapi/design-system/Typography';
5
+ import { KeyboardNavigable, Box, Flex, Typography } from '@strapi/design-system';
9
6
 
10
7
  import { getTrad } from '../../../utils';
11
8
  import { useContentTypeLayout } from '../../../hooks';
@@ -12,7 +12,6 @@ import {
12
12
  IconButton,
13
13
  Box,
14
14
  Flex,
15
- Stack,
16
15
  } from '@strapi/design-system';
17
16
  import { useCMEditViewDataManager } from '@strapi/helper-plugin';
18
17
  import { Trash, Drag } from '@strapi/icons';
@@ -22,7 +21,7 @@ import { composeRefs, getTrad, ItemTypes } from '../../../utils';
22
21
 
23
22
  import FieldComponent from '../../FieldComponent';
24
23
 
25
- const ActionsStack = styled(Stack)`
24
+ const ActionsFlex = styled(Flex)`
26
25
  /*
27
26
  we need to remove the background from the button but we can't
28
27
  wrap the element in styled because it breaks the forwardedAs which
@@ -42,8 +41,6 @@ const IconButtonCustom = styled(IconButton)`
42
41
  }
43
42
  `;
44
43
 
45
- // TODO: Delete once https://github.com/strapi/design-system/pull/858
46
- // is merged and released.
47
44
  const StyledBox = styled(Box)`
48
45
  > div:first-child {
49
46
  box-shadow: ${({ theme }) => theme.shadows.tableShadow};
@@ -151,7 +148,7 @@ const DynamicZoneComponent = ({
151
148
  const composedBoxRefs = composeRefs(boxRef, dropRef);
152
149
 
153
150
  const accordionActions = !isFieldAllowed ? null : (
154
- <ActionsStack horizontal spacing={0} expanded={isOpen}>
151
+ <ActionsFlex gap={0} expanded={isOpen}>
155
152
  <IconButtonCustom
156
153
  noBorder
157
154
  label={formatMessage(
@@ -181,7 +178,7 @@ const DynamicZoneComponent = ({
181
178
  >
182
179
  <Drag />
183
180
  </IconButton>
184
- </ActionsStack>
181
+ </ActionsFlex>
185
182
  );
186
183
 
187
184
  return (
@@ -9,9 +9,7 @@ import { useIntl } from 'react-intl';
9
9
  import PropTypes from 'prop-types';
10
10
  import styled from 'styled-components';
11
11
  import { pxToRem } from '@strapi/helper-plugin';
12
- import { Box } from '@strapi/design-system/Box';
13
- import { Flex } from '@strapi/design-system/Flex';
14
- import { Typography } from '@strapi/design-system/Typography';
12
+ import { Box, Flex, Typography } from '@strapi/design-system';
15
13
 
16
14
  const StyledBox = styled(Box)`
17
15
  border-radius: ${pxToRem(26)};
@@ -2,7 +2,7 @@ import React, { memo, useMemo, useState } from 'react';
2
2
  import get from 'lodash/get';
3
3
  import isEqual from 'react-fast-compare';
4
4
  import PropTypes from 'prop-types';
5
- import { Box, Stack, VisuallyHidden } from '@strapi/design-system';
5
+ import { Box, Flex, VisuallyHidden } from '@strapi/design-system';
6
6
  import { NotAllowedInput, useNotification } from '@strapi/helper-plugin';
7
7
  import { useIntl } from 'react-intl';
8
8
 
@@ -174,7 +174,7 @@ const DynamicZone = ({
174
174
  const ariaDescriptionId = `${name}-item-instructions`;
175
175
 
176
176
  return (
177
- <Stack spacing={6}>
177
+ <Flex direction="column" alignItems="stretch" gap={6}>
178
178
  {dynamicDisplayedComponentsLength > 0 && (
179
179
  <Box>
180
180
  <DynamicZoneLabel
@@ -228,7 +228,7 @@ const DynamicZone = ({
228
228
  components={fieldSchema.components ?? []}
229
229
  onClickAddComponent={handleAddComponent}
230
230
  />
231
- </Stack>
231
+ </Flex>
232
232
  );
233
233
  };
234
234
 
@@ -26,7 +26,7 @@ import { getTrad } from '../../utils';
26
26
  import selectCrudReducer from '../../sharedReducers/crudReducer/selectors';
27
27
 
28
28
  import reducer, { initialState } from './reducer';
29
- import { cleanData, createYupSchema, recursivelyFindPathsBasedOnCondition } from './utils';
29
+ import { cleanData, createYupSchema } from './utils';
30
30
  import { clearSetModifiedDataOnly } from '../../sharedReducers/crudReducer/actions';
31
31
  import { usePrev } from '../../hooks';
32
32
 
@@ -166,39 +166,11 @@ const EditViewDataManagerProvider = ({
166
166
  currentContentTypeLayout?.attributes &&
167
167
  !isEqual(previousInitialValues, initialValues)
168
168
  ) {
169
- /**
170
- * This will return an array of paths:
171
- * ['many_to_one', 'one_to_many', 'one_to_one']
172
- * it can also return a path to a relation:
173
- * ['relation_component.categories']
174
- */
175
- const relationalFieldPaths = recursivelyFindPathsBasedOnCondition(
176
- components,
177
- (value) => value.type === 'relation'
178
- )(currentContentTypeLayout.attributes);
179
-
180
- const componentPaths = recursivelyFindPathsBasedOnCondition(
181
- components,
182
- (value) => value.type === 'component' && !value.repeatable
183
- )(currentContentTypeLayout.attributes);
184
-
185
- const repeatableComponentPaths = recursivelyFindPathsBasedOnCondition(
186
- components,
187
- (value) => value.type === 'component' && value.repeatable
188
- )(currentContentTypeLayout.attributes);
189
-
190
- const dynamicZonePaths = recursivelyFindPathsBasedOnCondition(
191
- components,
192
- (value) => value.type === 'dynamiczone'
193
- )(currentContentTypeLayout.attributes);
194
-
195
169
  dispatch({
196
170
  type: 'INIT_FORM',
197
171
  initialValues,
198
- relationalFieldPaths,
199
- componentPaths,
200
- repeatableComponentPaths,
201
- dynamicZonePaths,
172
+ components,
173
+ attributes: currentContentTypeLayout.attributes,
202
174
  setModifiedDataOnly,
203
175
  });
204
176
 
@@ -5,16 +5,9 @@ import set from 'lodash/set';
5
5
  import take from 'lodash/take';
6
6
  import cloneDeep from 'lodash/cloneDeep';
7
7
  import uniqBy from 'lodash/uniqBy';
8
- import merge from 'lodash/merge';
9
- import castArray from 'lodash/castArray';
10
- import isNil from 'lodash/isNil';
11
8
  import { generateNKeysBetween } from 'fractional-indexing';
12
9
 
13
- import {
14
- findLeafByPathAndReplace,
15
- moveFields,
16
- recursivelyFindPathsBasedOnCondition,
17
- } from './utils';
10
+ import { findAllAndReplace, moveFields } from './utils';
18
11
  import { getMaxTempKey } from '../../utils';
19
12
 
20
13
  const initialState = {
@@ -38,35 +31,20 @@ const reducer = (state, action) =>
38
31
  case 'ADD_NON_REPEATABLE_COMPONENT_TO_FIELD': {
39
32
  const { componentLayoutData, allComponents } = action;
40
33
 
41
- const relationPaths = recursivelyFindPathsBasedOnCondition(
42
- allComponents,
43
- (value) => value.type === 'relation'
44
- )(componentLayoutData.attributes);
45
-
46
34
  const defaultDataStructure = {
47
35
  ...state.componentsDataStructure[componentLayoutData.uid],
48
36
  };
49
37
 
50
- const repeatableFields = recursivelyFindPathsBasedOnCondition(
38
+ const findAllRelationsAndReplaceWithEmptyArray = findAllAndReplace(
51
39
  allComponents,
52
- (value) => value.type === 'component' && value.repeatable
53
- )(componentLayoutData.attributes);
54
-
55
- const componentDataStructure = relationPaths.reduce((acc, current) => {
56
- const [componentName] = current.split('.');
57
-
58
- /**
59
- * Why do we do this? Because if a repeatable component
60
- * has another repeatable component inside of it we
61
- * don't need to attach the array at this point because that will be
62
- * done again deeper in the nest.
63
- */
64
- if (!repeatableFields.includes(componentName)) {
65
- set(acc, current, []);
66
- }
40
+ (value) => value.type === 'relation',
41
+ []
42
+ );
67
43
 
68
- return acc;
69
- }, defaultDataStructure);
44
+ const componentDataStructure = findAllRelationsAndReplaceWithEmptyArray(
45
+ defaultDataStructure,
46
+ componentLayoutData.attributes
47
+ );
70
48
 
71
49
  set(draftState, ['modifiedData', ...action.keys], componentDataStructure);
72
50
 
@@ -98,49 +76,16 @@ const reducer = (state, action) =>
98
76
  __temp_key__: getMaxTempKey(currentValue) + 1,
99
77
  };
100
78
 
101
- const relationPaths = recursivelyFindPathsBasedOnCondition(
102
- allComponents,
103
- (value) => value.type === 'relation'
104
- )(componentLayoutData.attributes);
105
-
106
- const repeatableFields = recursivelyFindPathsBasedOnCondition(
107
- allComponents,
108
- (value) => value.type === 'component' && value.repeatable
109
- )(componentLayoutData.attributes);
110
-
111
- const nonRepeatableComponentPaths = recursivelyFindPathsBasedOnCondition(
79
+ const findAllRelationsAndReplaceWithEmptyArray = findAllAndReplace(
112
80
  allComponents,
113
- (value) => value.type === 'component' && !value.repeatable
114
- )(componentLayoutData.attributes);
115
-
116
- const componentDataStructure = relationPaths.reduce((acc, current) => {
117
- const [componentName] = current.split('.');
118
-
119
- /**
120
- * Why do we do this? Because if a repeatable component
121
- * has another repeatable component inside of it we
122
- * don't need to attach the array at this point because that will be
123
- * done again deeper in the nest.
124
- *
125
- * We also need to handle cases with single components nested within
126
- * repeatables by checking that the relation path does not match a
127
- * non-repeatable component path. This accounts for component
128
- * structures such as:
129
- * - outer_single_compo
130
- * - level_one_repeatable
131
- * - level_two_single_component
132
- * - level_three_repeatable
133
- */
134
-
135
- if (
136
- !repeatableFields.includes(componentName) &&
137
- !nonRepeatableComponentPaths.includes(componentName)
138
- ) {
139
- set(acc, current, []);
140
- }
81
+ (value) => value.type === 'relation',
82
+ []
83
+ );
141
84
 
142
- return acc;
143
- }, defaultDataStructure);
85
+ const componentDataStructure = findAllRelationsAndReplaceWithEmptyArray(
86
+ defaultDataStructure,
87
+ componentLayoutData.attributes
88
+ );
144
89
 
145
90
  const newValue = Array.isArray(currentValue)
146
91
  ? [...currentValue, componentDataStructure]
@@ -156,11 +101,13 @@ const reducer = (state, action) =>
156
101
  const initialDataRelations = get(state, initialDataPath);
157
102
  const modifiedDataRelations = get(state, modifiedDataPath);
158
103
 
159
- const valuesToLoad = value.filter((relation) => {
160
- return !initialDataRelations.some((initialDataRelation) => {
161
- return initialDataRelation.id === relation.id;
162
- });
163
- });
104
+ const valuesToLoad = !initialDataRelations
105
+ ? value
106
+ : value.filter((relation) => {
107
+ return !initialDataRelations.some((initialDataRelation) => {
108
+ return initialDataRelation.id === relation.id;
109
+ });
110
+ });
164
111
 
165
112
  const keys = generateNKeysBetween(
166
113
  null,
@@ -261,14 +208,7 @@ const reducer = (state, action) =>
261
208
  * but also every time you press publish.
262
209
  */
263
210
  case 'INIT_FORM': {
264
- const {
265
- initialValues,
266
- relationalFieldPaths = [],
267
- componentPaths = [],
268
- repeatableComponentPaths = [],
269
- dynamicZonePaths = [],
270
- setModifiedDataOnly,
271
- } = action;
211
+ const { initialValues, components = {}, attributes = {}, setModifiedDataOnly } = action;
272
212
 
273
213
  /**
274
214
  * You can't mutate an actions value.
@@ -278,63 +218,54 @@ const reducer = (state, action) =>
278
218
  */
279
219
  const data = cloneDeep(initialValues);
280
220
 
281
- /**
282
- * relationalFieldPaths won't be an array which is what we're expecting
283
- * Therefore we reset these bits of state to the correct data type
284
- * which is an array. Hence why we replace those fields.
285
- *
286
- */
221
+ const findAllRelationsAndReplaceWithEmptyArray = findAllAndReplace(
222
+ components,
223
+ (value) => value.type === 'relation',
224
+ (_, { path }) => {
225
+ if (state.modifiedData?.id === data.id && get(state.modifiedData, path)) {
226
+ return get(state.modifiedData, path);
227
+ }
287
228
 
288
- const mergeDataWithPreparedRelations = relationalFieldPaths
289
- .map((path) => path.split('.'))
290
- .reduce((acc, currentPaths) => {
291
- const [componentName] = currentPaths;
229
+ return [];
230
+ }
231
+ );
292
232
 
293
- const existingComponents = castArray(acc[componentName] || []);
294
- existingComponents.reduce((result, currentEntry) => {
295
- if (!isNil(get(currentEntry, [`__temp_key__`]))) {
296
- return result;
297
- }
233
+ const mergedDataWithPreparedRelations = findAllRelationsAndReplaceWithEmptyArray(
234
+ data,
235
+ attributes
236
+ );
298
237
 
299
- set(currentEntry, [`__temp_key__`], getMaxTempKey(result) + 1);
300
-
301
- return result;
302
- }, existingComponents);
303
-
304
- if (state.modifiedData && get(state.modifiedData, componentName)) {
305
- /**
306
- * this will be null on initial load, however subsequent calls
307
- * will have data in them correlating to the names of the relational fields.
308
- *
309
- * We also merge the fetched data so that things like `id` for components can be copied over
310
- * which would be `undefined` in the `browserState`.
311
- */
312
- const currentState = cloneDeep(get(state.modifiedData, componentName));
313
- set(acc, componentName, merge(currentState, get(initialValues, componentName)));
314
- } else if (
315
- repeatableComponentPaths.includes(componentName) ||
316
- dynamicZonePaths.includes(componentName) ||
317
- componentPaths.includes(componentName)
318
- ) {
319
- /**
320
- * if the componentName is a repeatable field or dynamic zone we collect the list of paths e.g.
321
- * ["repeatable_single_component_relation","categories"] and then reduce this
322
- * recursively
323
- */
324
- const findleaf = findLeafByPathAndReplace(currentPaths.slice(-1)[0], []);
325
- currentPaths.reduce(findleaf, acc);
326
- } else {
327
- set(acc, currentPaths, []);
328
- }
238
+ const findComponentsAndReplaceWithTempKey = findAllAndReplace(
239
+ components,
240
+ (value) =>
241
+ value.type === 'dynamiczone' || (value.type === 'component' && !value.repeatable),
242
+ (data) => {
243
+ /**
244
+ * If the data is an array, we have the dynamic zone if it's not, its a regular component.
245
+ */
246
+ return Array.isArray(data)
247
+ ? data.map((datum, index) => ({
248
+ ...datum,
249
+ __temp_key__: index,
250
+ }))
251
+ : {
252
+ ...data,
253
+ __temp_key__: 0,
254
+ };
255
+ }
256
+ );
329
257
 
330
- return acc;
331
- }, data);
258
+ const mergedDataWithTmpKeys = findComponentsAndReplaceWithTempKey(
259
+ mergedDataWithPreparedRelations,
260
+ attributes,
261
+ { ignoreFalseyValues: true }
262
+ );
332
263
 
333
264
  if (!setModifiedDataOnly) {
334
- draftState.initialData = mergeDataWithPreparedRelations;
265
+ draftState.initialData = mergedDataWithTmpKeys;
335
266
  }
336
267
 
337
- draftState.modifiedData = mergeDataWithPreparedRelations;
268
+ draftState.modifiedData = mergedDataWithTmpKeys;
338
269
 
339
270
  draftState.formErrors = {};
340
271
 
@@ -0,0 +1,85 @@
1
+ /**
2
+ * @typedef Attribute
3
+ * @type { { type: string; repeatable: boolean }}
4
+ *
5
+ * @typedef Attributes
6
+ * @type {{ [key: string]: Attribute }}
7
+ *
8
+ * @typedef ReplacementFn
9
+ * @type {<TData extends object, TKey extends string>(data: TData[TKey], { path: string[]; parent: TData }) => any}
10
+ */
11
+
12
+ /**
13
+ * This function will recursively find everything and replace it with a value
14
+ * based on the boolean return of the predicate function e.g. `type === 'relation'`.
15
+ *
16
+ * If you provide a function it will call that function with data value you're replacing with
17
+ * a second argument with the path to the value and it's parent.
18
+ *
19
+ * It's original use was for the preperation of action items for the INIT_FORM action. It requires
20
+ * knowledge of the `components` in the entity, however `components` doesn't change nor does the predicate
21
+ * function so we don't need to pass it everytime hence why it's curried.
22
+ *
23
+ * @type {<TData extends object = object>(data: { [key: string]: { attributes: Attributes } }, predicate?: (value: Attribute, { path: string[]; parent: TData }) => boolean, replacement?: ReplacementFn<TData, keyof TKey> | any) => (data: TData, attributes: Attributes) => TData}
24
+ */
25
+ const findAllAndReplaceSetup = (components, predicate = () => false, replacement = undefined) => {
26
+ /**
27
+ * @type {<TData extends object = object>(data: TData, attributes: Attributes, options?: { ignoreFalseyValues?: boolean}) => TData}
28
+ */
29
+ const findAllAndReplace = (data, attributes, { ignoreFalseyValues = false, path = [] } = {}) => {
30
+ return Object.entries(attributes).reduce(
31
+ (acc, [key, value]) => {
32
+ if (
33
+ ignoreFalseyValues &&
34
+ (acc === null || acc === undefined || acc[key] === undefined || acc[key] === null)
35
+ ) {
36
+ return acc;
37
+ }
38
+
39
+ if (predicate(value, { path: [...path, key], parent: acc })) {
40
+ acc[key] =
41
+ typeof replacement === 'function'
42
+ ? replacement(acc[key], { path: [...path, key], parent: acc })
43
+ : replacement;
44
+ }
45
+
46
+ if (value.type === 'component') {
47
+ const componentAttributes = components[value.component].attributes;
48
+
49
+ if (!value.repeatable) {
50
+ acc[key] = findAllAndReplace(acc[key], componentAttributes, {
51
+ ignoreFalseyValues,
52
+ path: [...path, key],
53
+ });
54
+ } else if (value.repeatable && Array.isArray(acc[key])) {
55
+ acc[key] = acc[key].map((datum, index) => {
56
+ const data = findAllAndReplace(datum, componentAttributes, {
57
+ ignoreFalseyValues,
58
+ path: [...path, key, index],
59
+ });
60
+
61
+ return data;
62
+ });
63
+ }
64
+ } else if (value.type === 'dynamiczone' && Array.isArray(acc[key])) {
65
+ acc[key] = acc[key].map((datum, index) => {
66
+ const componentAttributes = components[datum.__component].attributes;
67
+ const data = findAllAndReplace(datum, componentAttributes, {
68
+ ignoreFalseyValues,
69
+ path: [...path, key, index],
70
+ });
71
+
72
+ return data;
73
+ });
74
+ }
75
+
76
+ return acc;
77
+ },
78
+ { ...data }
79
+ );
80
+ };
81
+
82
+ return findAllAndReplace;
83
+ };
84
+
85
+ export { findAllAndReplaceSetup as findAllAndReplace };
@@ -1,5 +1,4 @@
1
1
  export { default as moveFields } from './moveFields';
2
2
  export { default as cleanData } from './cleanData';
3
3
  export { default as createYupSchema } from './schema';
4
- export { recursivelyFindPathsBasedOnCondition } from './recursivelyFindPathsBasedOnCondition';
5
- export { findLeafByPathAndReplace } from './findLeafByPathAndReplace';
4
+ export { findAllAndReplace } from './findAllAndReplace';
@@ -216,6 +216,10 @@ const createYupSchemaAttribute = (type, validations, options) => {
216
216
  schema = yup
217
217
  .mixed(errorsTrads.json)
218
218
  .test('isJSON', errorsTrads.json, (value) => {
219
+ if (!value || !value.length) {
220
+ return true;
221
+ }
222
+
219
223
  try {
220
224
  JSON.parse(value);
221
225
 
@@ -226,7 +230,9 @@ const createYupSchemaAttribute = (type, validations, options) => {
226
230
  })
227
231
  .nullable()
228
232
  .test('required', errorsTrads.required, (value) => {
229
- if (validations.required && !value.length) return false;
233
+ if (validations.required && (!value || !value.length)) {
234
+ return false;
235
+ }
230
236
 
231
237
  return true;
232
238
  });
@@ -2,9 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useIntl } from 'react-intl';
4
4
  import styled from 'styled-components';
5
- import { Box } from '@strapi/design-system/Box';
6
- import { Flex } from '@strapi/design-system/Flex';
7
- import { Typography } from '@strapi/design-system/Typography';
5
+ import { Box, Flex, Typography } from '@strapi/design-system';
8
6
 
9
7
  const LabelAction = styled(Box)`
10
8
  svg path {