@strapi/admin 5.30.0 → 5.30.1

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 (342) hide show
  1. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  2. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  3. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  4. package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  6. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
  7. package/dist/admin/admin/src/components/Filters.js +1 -1
  8. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  9. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  10. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  11. package/dist/admin/admin/src/components/Form.js +8 -3
  12. package/dist/admin/admin/src/components/Form.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.mjs +8 -3
  14. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +1 -1
  16. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +1 -1
  18. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Number.js +1 -1
  20. package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Number.mjs +1 -1
  22. package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  24. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
  26. package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  28. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  30. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  32. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  34. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  36. package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +8 -4
  38. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +8 -4
  40. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/NpsSurvey.js +5 -3
  42. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  43. package/dist/admin/admin/src/components/NpsSurvey.mjs +5 -3
  44. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  46. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  47. package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
  48. package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  50. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  52. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
  53. package/dist/admin/admin/src/components/Table.js +1 -1
  54. package/dist/admin/admin/src/components/Table.js.map +1 -1
  55. package/dist/admin/admin/src/components/Table.mjs +1 -1
  56. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  57. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  58. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  59. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  60. package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
  61. package/dist/admin/admin/src/core/apis/Plugin.js +0 -1
  62. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  63. package/dist/admin/admin/src/core/apis/Plugin.mjs +0 -1
  64. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  65. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  66. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  67. package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
  68. package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
  69. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  70. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  71. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  72. package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
  73. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  74. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  75. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  76. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  77. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  78. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  79. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  80. package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
  81. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  82. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  83. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  84. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  85. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js +2 -2
  86. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs +2 -2
  88. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
  90. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs.map +1 -1
  91. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js.map +1 -1
  92. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js.map +1 -1
  94. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js.map +1 -1
  96. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  98. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +8 -1
  100. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +9 -2
  102. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  104. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  105. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  106. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  107. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  108. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  109. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  110. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  111. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  112. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +2 -0
  114. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  115. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +2 -0
  116. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  117. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  118. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  119. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  120. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  121. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
  122. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
  123. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  125. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +9 -2
  126. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  127. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +9 -2
  128. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  129. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +9 -2
  130. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  131. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +9 -2
  132. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  133. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
  135. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  136. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  137. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  138. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  141. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  144. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  145. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  146. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  147. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  148. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  149. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
  151. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +2 -0
  154. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  155. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +2 -0
  156. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
  157. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -2
  158. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +9 -2
  160. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +9 -2
  176. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +9 -2
  178. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  179. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  180. package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
  181. package/dist/admin/admin/src/services/api.js +2 -1
  182. package/dist/admin/admin/src/services/api.js.map +1 -1
  183. package/dist/admin/admin/src/services/api.mjs +2 -1
  184. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  185. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  186. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  187. package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
  188. package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
  189. package/dist/admin/admin/src/services/users.js.map +1 -1
  190. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  191. package/dist/admin/admin/src/services/webhooks.js.map +1 -1
  192. package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
  193. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  194. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  195. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  196. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  197. package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
  198. package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
  199. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  200. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  201. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  202. package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
  203. package/dist/admin/admin/src/utils/users.js.map +1 -1
  204. package/dist/admin/admin/src/utils/users.mjs.map +1 -1
  205. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  206. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
  207. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  208. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  209. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  210. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
  211. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  212. package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
  213. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  214. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  215. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -3
  216. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
  217. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -3
  218. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
  219. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  220. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
  221. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  222. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
  223. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
  224. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
  225. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
  226. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
  227. package/dist/admin/ee/admin/src/services/ai.js +14 -1
  228. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  229. package/dist/admin/ee/admin/src/services/ai.mjs +14 -2
  230. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  231. package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
  232. package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
  233. package/dist/admin/ee.js +1 -0
  234. package/dist/admin/ee.js.map +1 -1
  235. package/dist/admin/ee.mjs +1 -1
  236. package/dist/admin/src/components/Form.d.ts +1 -1
  237. package/dist/admin/src/core/store/configure.d.ts +2 -2
  238. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  239. package/dist/admin/src/ee.d.ts +1 -1
  240. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  241. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  242. package/dist/admin/src/selectors.d.ts +2 -2
  243. package/dist/admin/src/services/admin.d.ts +6 -6
  244. package/dist/admin/src/services/api.d.ts +1 -1
  245. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  246. package/dist/admin/src/services/auth.d.ts +13 -13
  247. package/dist/admin/src/services/contentApi.d.ts +1 -1
  248. package/dist/admin/src/services/contentManager.d.ts +1 -1
  249. package/dist/admin/src/services/homepage.d.ts +3 -3
  250. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  251. package/dist/admin/src/services/users.d.ts +8 -8
  252. package/dist/admin/src/services/webhooks.d.ts +2 -2
  253. package/dist/admin/tests/utils.d.ts +1 -1
  254. package/dist/ee/admin/src/services/ai.d.ts +6 -3
  255. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  256. package/dist/ee/server/src/ai/containers/ai.d.ts +11 -0
  257. package/dist/ee/server/src/ai/containers/ai.d.ts.map +1 -0
  258. package/dist/ee/server/src/ai/controllers/ai.d.ts +1 -0
  259. package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -1
  260. package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -1
  261. package/dist/ee/server/src/index.d.ts +1 -0
  262. package/dist/ee/server/src/index.d.ts.map +1 -1
  263. package/dist/server/ee/server/src/ai/containers/ai.js +18 -0
  264. package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -0
  265. package/dist/server/ee/server/src/ai/containers/ai.mjs +16 -0
  266. package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -0
  267. package/dist/server/ee/server/src/ai/controllers/ai.js +6 -0
  268. package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
  269. package/dist/server/ee/server/src/ai/controllers/ai.mjs +6 -0
  270. package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
  271. package/dist/server/ee/server/src/ai/routes/ai.js +11 -0
  272. package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
  273. package/dist/server/ee/server/src/ai/routes/ai.mjs +11 -0
  274. package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
  275. package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
  276. package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
  277. package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
  278. package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
  279. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  280. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  281. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  282. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  283. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  284. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  285. package/dist/server/ee/server/src/index.js +7 -0
  286. package/dist/server/ee/server/src/index.js.map +1 -1
  287. package/dist/server/ee/server/src/index.mjs +7 -0
  288. package/dist/server/ee/server/src/index.mjs.map +1 -1
  289. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  290. package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
  291. package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
  292. package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
  293. package/dist/server/ee/server/src/utils/index.js.map +1 -1
  294. package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
  295. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  296. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  297. package/dist/server/server/src/controllers/user.js +10 -0
  298. package/dist/server/server/src/controllers/user.js.map +1 -1
  299. package/dist/server/server/src/controllers/user.mjs +10 -0
  300. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  301. package/dist/server/server/src/domain/action/index.js.map +1 -1
  302. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  303. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  304. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  305. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  306. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  307. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  308. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  309. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  310. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  311. package/dist/server/server/src/services/api-token.js.map +1 -1
  312. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  313. package/dist/server/server/src/services/auth.js.map +1 -1
  314. package/dist/server/server/src/services/auth.mjs.map +1 -1
  315. package/dist/server/server/src/services/content-type.js.map +1 -1
  316. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  317. package/dist/server/server/src/services/encryption.js.map +1 -1
  318. package/dist/server/server/src/services/encryption.mjs.map +1 -1
  319. package/dist/server/server/src/services/homepage.js.map +1 -1
  320. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  321. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  322. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  323. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  324. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  325. package/dist/server/server/src/services/role.js.map +1 -1
  326. package/dist/server/server/src/services/role.mjs.map +1 -1
  327. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  328. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  329. package/dist/server/server/src/services/user.js.map +1 -1
  330. package/dist/server/server/src/services/user.mjs.map +1 -1
  331. package/dist/server/server/src/utils/index.js.map +1 -1
  332. package/dist/server/server/src/utils/index.mjs.map +1 -1
  333. package/dist/server/server/src/validation/action-provider.js.map +1 -1
  334. package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
  335. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  336. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
  337. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  338. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  339. package/dist/server/src/controllers/user.d.ts.map +1 -1
  340. package/dist/shared/contracts/ai.d.ts +16 -0
  341. package/dist/shared/contracts/ai.d.ts.map +1 -1
  342. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Permissions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [] }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n // @ts-expect-error – TODO: type better\n if (!value && updatedValues.conditions) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","useCallback","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","state","action","produce","draftState","pathToData","get","forEach","collectionType","collectionTypeActionData","undefined","updatedValues","updateValues","updatedConditions","set","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","objValue","pathToDataToSet","isObject","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","pathToValue","oldValues","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
1
+ {"version":3,"file":"Permissions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [] }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n // @ts-expect-error – TODO: type better\n if (!value && updatedValues.conditions) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","useCallback","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","state","action","produce","draftState","pathToData","get","forEach","collectionType","collectionTypeActionData","undefined","updatedValues","updateValues","updatedConditions","set","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","objValue","pathToDataToSet","isObject","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","pathToValue","oldValues","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Permissions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [] }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n // @ts-expect-error – TODO: type better\n if (!value && updatedValues.conditions) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","useCallback","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","state","action","produce","draftState","pathToData","get","forEach","collectionType","collectionTypeActionData","undefined","updatedValues","updateValues","updatedConditions","set","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","objValue","pathToDataToSet","isObject","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","pathToValue","oldValues","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
1
+ {"version":3,"file":"Permissions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [] }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n // @ts-expect-error – TODO: type better\n if (!value && updatedValues.conditions) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","useCallback","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","state","action","produce","draftState","pathToData","get","forEach","collectionType","collectionTypeActionData","undefined","updatedValues","updateValues","updatedConditions","set","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","objValue","pathToDataToSet","isObject","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","pathToValue","oldValues","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PluginsAndSettings.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n return (\n <Grid.Item col={3} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper $disabled={isFormDisabled} $hasConditions={hasConditions}>\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","col","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
1
+ {"version":3,"file":"PluginsAndSettings.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n return (\n <Grid.Item col={3} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper $disabled={isFormDisabled} $hasConditions={hasConditions}>\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","col","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PluginsAndSettings.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n return (\n <Grid.Item col={3} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper $disabled={isFormDisabled} $hasConditions={hasConditions}>\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","col","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
1
+ {"version":3,"file":"PluginsAndSettings.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n return (\n <Grid.Item col={3} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper $disabled={isFormDisabled} $hasConditions={hasConditions}>\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","col","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
1
+ {"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}