@strapi/admin 5.29.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 (375) 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/String.js +2 -1
  26. package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
  27. package/dist/admin/admin/src/components/FormInputs/String.mjs +2 -1
  28. package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
  30. package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  32. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  34. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  36. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  38. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  40. package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +8 -4
  42. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  43. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +8 -4
  44. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/NpsSurvey.js +5 -3
  46. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  47. package/dist/admin/admin/src/components/NpsSurvey.mjs +5 -3
  48. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  50. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
  52. package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
  53. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  54. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  55. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  56. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
  57. package/dist/admin/admin/src/components/Table.js +1 -1
  58. package/dist/admin/admin/src/components/Table.js.map +1 -1
  59. package/dist/admin/admin/src/components/Table.mjs +1 -1
  60. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  61. package/dist/admin/admin/src/components/Theme.js +34 -1
  62. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  63. package/dist/admin/admin/src/components/Theme.mjs +34 -1
  64. package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
  65. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  66. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  67. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  68. package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
  69. package/dist/admin/admin/src/core/apis/Plugin.js +0 -1
  70. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  71. package/dist/admin/admin/src/core/apis/Plugin.mjs +0 -1
  72. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  73. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  74. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  75. package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
  76. package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
  77. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  78. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  79. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  80. package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
  81. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  82. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  83. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  84. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  85. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  86. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  87. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  88. package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Auth/components/Login.js +1 -1
  90. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Auth/components/Login.mjs +1 -1
  92. package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  94. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  96. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js +2 -2
  98. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js.map +1 -1
  99. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs +2 -2
  100. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs.map +1 -1
  101. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
  102. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs.map +1 -1
  103. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js.map +1 -1
  104. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs.map +1 -1
  105. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js.map +1 -1
  106. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs.map +1 -1
  107. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js.map +1 -1
  108. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs.map +1 -1
  109. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  110. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  111. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +8 -1
  112. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +9 -2
  114. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  115. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  116. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  117. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  118. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  119. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js +1 -0
  120. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js.map +1 -1
  121. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs +1 -0
  122. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs.map +1 -1
  123. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  125. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  126. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  127. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  128. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  129. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +2 -0
  130. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  131. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +2 -0
  132. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  133. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  135. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +1 -0
  136. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  137. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +1 -0
  138. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
  141. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +10 -2
  144. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  145. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +10 -2
  146. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  147. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +9 -2
  148. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +9 -2
  150. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  151. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  155. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  157. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  159. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js +2 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs +2 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +2 -0
  176. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +2 -0
  178. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
  179. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -2
  180. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  181. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +9 -2
  182. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -1
  184. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -1
  186. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.js.map +1 -1
  188. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  192. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +1 -1
  198. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +9 -2
  200. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +9 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  203. package/dist/admin/admin/src/pages/UseCasePage.js +1 -0
  204. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  205. package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -0
  206. package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
  207. package/dist/admin/admin/src/services/api.js +2 -1
  208. package/dist/admin/admin/src/services/api.js.map +1 -1
  209. package/dist/admin/admin/src/services/api.mjs +2 -1
  210. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  211. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  212. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  213. package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
  214. package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
  215. package/dist/admin/admin/src/services/users.js.map +1 -1
  216. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  217. package/dist/admin/admin/src/services/webhooks.js.map +1 -1
  218. package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
  219. package/dist/admin/admin/src/translations/en.json.js +4 -0
  220. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  221. package/dist/admin/admin/src/translations/en.json.mjs +4 -0
  222. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  223. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  224. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  225. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  226. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  227. package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
  228. package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
  229. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  230. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  231. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  232. package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
  233. package/dist/admin/admin/src/utils/users.js.map +1 -1
  234. package/dist/admin/admin/src/utils/users.mjs.map +1 -1
  235. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  236. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
  237. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  238. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  239. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  240. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
  241. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  242. package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
  243. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  244. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  245. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -3
  246. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
  247. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -3
  248. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
  249. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  250. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
  251. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  252. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
  253. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
  254. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
  255. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
  256. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
  257. package/dist/admin/ee/admin/src/services/ai.js +14 -1
  258. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  259. package/dist/admin/ee/admin/src/services/ai.mjs +14 -2
  260. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  261. package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
  262. package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
  263. package/dist/admin/ee.js +1 -0
  264. package/dist/admin/ee.js.map +1 -1
  265. package/dist/admin/ee.mjs +1 -1
  266. package/dist/admin/src/components/Form.d.ts +1 -1
  267. package/dist/admin/src/core/store/configure.d.ts +2 -2
  268. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  269. package/dist/admin/src/ee.d.ts +1 -1
  270. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  271. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  272. package/dist/admin/src/selectors.d.ts +2 -2
  273. package/dist/admin/src/services/admin.d.ts +6 -6
  274. package/dist/admin/src/services/api.d.ts +1 -1
  275. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  276. package/dist/admin/src/services/auth.d.ts +13 -13
  277. package/dist/admin/src/services/contentApi.d.ts +1 -1
  278. package/dist/admin/src/services/contentManager.d.ts +1 -1
  279. package/dist/admin/src/services/homepage.d.ts +3 -3
  280. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  281. package/dist/admin/src/services/users.d.ts +8 -8
  282. package/dist/admin/src/services/webhooks.d.ts +2 -2
  283. package/dist/admin/tests/utils.d.ts +1 -1
  284. package/dist/ee/admin/src/services/ai.d.ts +6 -3
  285. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  286. package/dist/ee/server/src/ai/containers/ai.d.ts +11 -0
  287. package/dist/ee/server/src/ai/containers/ai.d.ts.map +1 -0
  288. package/dist/ee/server/src/ai/controllers/ai.d.ts +1 -0
  289. package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -1
  290. package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -1
  291. package/dist/ee/server/src/index.d.ts +1 -0
  292. package/dist/ee/server/src/index.d.ts.map +1 -1
  293. package/dist/server/ee/server/src/ai/containers/ai.js +18 -0
  294. package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -0
  295. package/dist/server/ee/server/src/ai/containers/ai.mjs +16 -0
  296. package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -0
  297. package/dist/server/ee/server/src/ai/controllers/ai.js +6 -0
  298. package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
  299. package/dist/server/ee/server/src/ai/controllers/ai.mjs +6 -0
  300. package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
  301. package/dist/server/ee/server/src/ai/routes/ai.js +11 -0
  302. package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
  303. package/dist/server/ee/server/src/ai/routes/ai.mjs +11 -0
  304. package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
  305. package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
  306. package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
  307. package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
  308. package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
  309. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  310. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  311. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  312. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  313. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  314. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  315. package/dist/server/ee/server/src/index.js +7 -0
  316. package/dist/server/ee/server/src/index.js.map +1 -1
  317. package/dist/server/ee/server/src/index.mjs +7 -0
  318. package/dist/server/ee/server/src/index.mjs.map +1 -1
  319. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  320. package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
  321. package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
  322. package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
  323. package/dist/server/ee/server/src/utils/index.js.map +1 -1
  324. package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
  325. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  326. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  327. package/dist/server/server/src/controllers/user.js +10 -0
  328. package/dist/server/server/src/controllers/user.js.map +1 -1
  329. package/dist/server/server/src/controllers/user.mjs +10 -0
  330. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  331. package/dist/server/server/src/domain/action/index.js.map +1 -1
  332. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  333. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  334. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  335. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  336. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  337. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  338. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  339. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  340. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  341. package/dist/server/server/src/services/api-token.js.map +1 -1
  342. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  343. package/dist/server/server/src/services/auth.js.map +1 -1
  344. package/dist/server/server/src/services/auth.mjs.map +1 -1
  345. package/dist/server/server/src/services/content-type.js.map +1 -1
  346. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  347. package/dist/server/server/src/services/encryption.js.map +1 -1
  348. package/dist/server/server/src/services/encryption.mjs.map +1 -1
  349. package/dist/server/server/src/services/homepage.js.map +1 -1
  350. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  351. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  352. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  353. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  354. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  355. package/dist/server/server/src/services/role.js.map +1 -1
  356. package/dist/server/server/src/services/role.mjs.map +1 -1
  357. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  358. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  359. package/dist/server/server/src/services/user.js +30 -0
  360. package/dist/server/server/src/services/user.js.map +1 -1
  361. package/dist/server/server/src/services/user.mjs +30 -0
  362. package/dist/server/server/src/services/user.mjs.map +1 -1
  363. package/dist/server/server/src/utils/index.js.map +1 -1
  364. package/dist/server/server/src/utils/index.mjs.map +1 -1
  365. package/dist/server/server/src/validation/action-provider.js.map +1 -1
  366. package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
  367. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  368. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
  369. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  370. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  371. package/dist/server/src/controllers/user.d.ts.map +1 -1
  372. package/dist/server/src/services/user.d.ts.map +1 -1
  373. package/dist/shared/contracts/ai.d.ts +16 -0
  374. package/dist/shared/contracts/ai.d.ts.map +1 -1
  375. package/package.json +7 -7
@@ -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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"}
@@ -78,7 +78,8 @@ const RoleForm = ({ disabled, role, values, errors, onChange, onBlur })=>{
78
78
  disabled: disabled,
79
79
  onChange: onChange,
80
80
  onBlur: onBlur,
81
- value: values.name || ''
81
+ value: values.name || '',
82
+ type: "text"
82
83
  }),
83
84
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
84
85
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"RoleForm.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid.Root gap={4}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.name || ''}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.description}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n"],"names":["RoleForm","disabled","role","values","errors","onChange","onBlur","formatMessage","useIntl","_jsx","Box","background","padding","shadow","hasRadius","_jsxs","Flex","direction","alignItems","gap","justifyContent","Typography","fontWeight","name","id","defaultMessage","textColor","variant","description","Button","number","usersCount","Grid","Root","Item","col","Field","error","required","Label","TextInput","value","Error","Textarea"],"mappings":";;;;;;AAuBA,MAAMA,QAAW,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAiB,GAAA;IACnF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACC,CAAAA,gBAAAA,EAAAA;QAAIC,UAAW,EAAA,UAAA;QAAWC,OAAS,EAAA,CAAA;QAAGC,MAAO,EAAA,cAAA;QAAeC,SAAS,EAAA,IAAA;AACpE,QAAA,QAAA,gBAAAC,eAACC,CAAAA,iBAAAA,EAAAA;YAAKC,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,SAAA;YAAUC,GAAK,EAAA,CAAA;;8BACjDJ,eAACC,CAAAA,iBAAAA,EAAAA;oBAAKI,cAAe,EAAA,eAAA;;sCACnBL,eAACL,CAAAA,gBAAAA,EAAAA;;8CACCD,cAACC,CAAAA,gBAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAAD,cAACY,CAAAA,uBAAAA,EAAAA;wCAAWC,UAAW,EAAA,MAAA;kDACpBpB,IACGA,GAAAA,IAAAA,CAAKqB,IAAI,GACThB,aAAc,CAAA;4CACZiB,EAAI,EAAA,gBAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;;8CAGRhB,cAACC,CAAAA,gBAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAAD,cAACY,CAAAA,uBAAAA,EAAAA;wCAAWK,SAAU,EAAA,YAAA;wCAAaC,OAAQ,EAAA,IAAA;kDACxCzB,IACGA,GAAAA,IAAAA,CAAK0B,WAAW,GAChBrB,aAAc,CAAA;4CACZiB,EAAI,EAAA,iCAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;;;;sCAIVhB,cAACoB,CAAAA,mBAAAA,EAAAA;4BAAO5B,QAAQ,EAAA,IAAA;4BAAC0B,OAAQ,EAAA,WAAA;sCACtBpB,aACC,CAAA;gCACEiB,EAAI,EAAA,4CAAA;gCACJC,cACE,EAAA;6BAEJ,EAAA;AAAEK,gCAAAA,MAAAA,EAAQ5B,KAAK6B;AAAW,6BAAA;;;;AAIhC,8BAAAhB,eAAA,CAACiB,kBAAKC,IAAI,EAAA;oBAACd,GAAK,EAAA,CAAA;;AACd,sCAAAV,cAAA,CAACuB,kBAAKE,IAAI,EAAA;4BAACC,GAAK,EAAA,CAAA;4BAAGlB,SAAU,EAAA,QAAA;4BAASC,UAAW,EAAA,SAAA;oDAC/CH,eAAA,CAACqB,mBAAMH,IAAI,EAAA;gCACTV,IAAK,EAAA,MAAA;gCACLc,KAAOjC,EAAAA,MAAAA,CAAOmB,IAAI,IAAIhB,aAAc,CAAA;AAAEiB,oCAAAA,EAAAA,EAAIpB,OAAOmB;AAAK,iCAAA,CAAA;gCACtDe,QAAQ,EAAA,IAAA;;AAER,kDAAA7B,cAAA,CAAC2B,mBAAMG,KAAK,EAAA;kDACThC,aAAc,CAAA;4CACbiB,EAAI,EAAA,aAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;kDAEFhB,cAAC+B,CAAAA,sBAAAA,EAAAA;wCACCvC,QAAUA,EAAAA,QAAAA;wCACVI,QAAUA,EAAAA,QAAAA;wCACVC,MAAQA,EAAAA,MAAAA;wCACRmC,KAAOtC,EAAAA,MAAAA,CAAOoB,IAAI,IAAI;;AAExB,kDAAAd,cAAA,CAAC2B,mBAAMM,KAAK,EAAA,EAAA;;;;AAGhB,sCAAAjC,cAAA,CAACuB,kBAAKE,IAAI,EAAA;4BAACC,GAAK,EAAA,CAAA;4BAAGlB,SAAU,EAAA,QAAA;4BAASC,UAAW,EAAA,SAAA;oDAC/CH,eAAA,CAACqB,mBAAMH,IAAI,EAAA;gCACTV,IAAK,EAAA,aAAA;gCACLc,KAAOjC,EAAAA,MAAAA,CAAOwB,WAAW,IAAIrB,aAAc,CAAA;AAAEiB,oCAAAA,EAAAA,EAAIpB,OAAOwB;AAAY,iCAAA,CAAA;;AAEpE,kDAAAnB,cAAA,CAAC2B,mBAAMG,KAAK,EAAA;kDACThC,aAAc,CAAA;4CACbiB,EAAI,EAAA,oBAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;kDAEFhB,cAACkC,CAAAA,qBAAAA,EAAAA;wCACC1C,QAAUA,EAAAA,QAAAA;wCACVI,QAAUA,EAAAA,QAAAA;wCACVC,MAAQA,EAAAA,MAAAA;AACRmC,wCAAAA,KAAAA,EAAOtC,OAAOyB;;AAEhB,kDAAAnB,cAAA,CAAC2B,mBAAMM,KAAK,EAAA,EAAA;;;;;;;;;AAO1B;;;;"}
1
+ {"version":3,"file":"RoleForm.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid.Root gap={4}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.name || ''}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.description}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n"],"names":["RoleForm","disabled","role","values","errors","onChange","onBlur","formatMessage","useIntl","_jsx","Box","background","padding","shadow","hasRadius","_jsxs","Flex","direction","alignItems","gap","justifyContent","Typography","fontWeight","name","id","defaultMessage","textColor","variant","description","Button","number","usersCount","Grid","Root","Item","col","Field","error","required","Label","TextInput","value","type","Error","Textarea"],"mappings":"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"}
@@ -76,7 +76,8 @@ const RoleForm = ({ disabled, role, values, errors, onChange, onBlur })=>{
76
76
  disabled: disabled,
77
77
  onChange: onChange,
78
78
  onBlur: onBlur,
79
- value: values.name || ''
79
+ value: values.name || '',
80
+ type: "text"
80
81
  }),
81
82
  /*#__PURE__*/ jsx(Field.Error, {})
82
83
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"RoleForm.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid.Root gap={4}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.name || ''}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.description}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n"],"names":["RoleForm","disabled","role","values","errors","onChange","onBlur","formatMessage","useIntl","_jsx","Box","background","padding","shadow","hasRadius","_jsxs","Flex","direction","alignItems","gap","justifyContent","Typography","fontWeight","name","id","defaultMessage","textColor","variant","description","Button","number","usersCount","Grid","Root","Item","col","Field","error","required","Label","TextInput","value","Error","Textarea"],"mappings":"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"}
1
+ {"version":3,"file":"RoleForm.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/RoleForm.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { FormikProps } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\nimport type { EditRoleFormValues } from '../EditPage';\n\ninterface RoleFormProps extends Pick<FormikProps<EditRoleFormValues>, 'values' | 'errors'> {\n onBlur: FormikProps<EditRoleFormValues>['handleBlur'];\n onChange: FormikProps<EditRoleFormValues>['handleChange'];\n disabled?: boolean;\n role: AdminRole;\n}\n\nconst RoleForm = ({ disabled, role, values, errors, onChange, onBlur }: RoleFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {role\n ? role.name\n : formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {role\n ? role.description\n : formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <Button disabled variant=\"secondary\">\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: role.usersCount }\n )}\n </Button>\n </Flex>\n <Grid.Root gap={4}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.name || ''}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n value={values.description}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nexport { RoleForm };\nexport type { RoleFormProps };\n"],"names":["RoleForm","disabled","role","values","errors","onChange","onBlur","formatMessage","useIntl","_jsx","Box","background","padding","shadow","hasRadius","_jsxs","Flex","direction","alignItems","gap","justifyContent","Typography","fontWeight","name","id","defaultMessage","textColor","variant","description","Button","number","usersCount","Grid","Root","Item","col","Field","error","required","Label","TextInput","value","type","Error","Textarea"],"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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"forms.mjs","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.mjs","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 +1 @@
1
- {"version":3,"file":"permissions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/permissions.ts"],"sourcesContent":["import { isObject } from '../../../../../utils/objects';\n\nimport { createArrayOfValues } from './createArrayOfValues';\n\nimport type { ConditionForm, Form, PropertyChildForm } from './forms';\nimport type { UpdatePermissions } from '../../../../../../../shared/contracts/roles';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\nimport type { PermissionsDataManagerContextValue } from '../hooks/usePermissionsDataManager';\n\ntype PermissionApiBody = UpdatePermissions.Request['body']['permissions'];\n\n/**\n * @description Given a users permissions array we find the first one that matches a provided subject & action\n */\nconst findMatchingPermission = (\n permissions: Permission[],\n action: string,\n subject: string | null\n) => permissions.find((perm) => perm.action === action && perm.subject === subject);\n\nconst formatPermissionsForAPI = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData']\n): PermissionApiBody => {\n const pluginsPermissions = formatSettingsPermissions(modifiedData.plugins);\n const settingsPermissions = formatSettingsPermissions(modifiedData.settings);\n const collectionTypesPermissions = formatContentTypesPermissions(modifiedData.collectionTypes);\n const singleTypesPermissions = formatContentTypesPermissions(modifiedData.singleTypes);\n\n return [\n ...pluginsPermissions,\n ...settingsPermissions,\n ...collectionTypesPermissions,\n ...singleTypesPermissions,\n ];\n};\n\nconst formatSettingsPermissions = (\n settingsPermissionsObject:\n | PermissionsDataManagerContextValue['modifiedData']['plugins']\n | PermissionsDataManagerContextValue['modifiedData']['settings']\n): PermissionApiBody => {\n return Object.values(settingsPermissionsObject).reduce<PermissionApiBody>((formAcc, form) => {\n const currentCategoryPermissions = Object.values(form).reduce<PermissionApiBody>(\n (childFormAcc, childForm) => {\n const permissions = Object.entries(childForm).reduce<PermissionApiBody>(\n (\n responsesAcc,\n [\n actionName,\n {\n conditions,\n properties: { enabled },\n },\n ]\n ) => {\n if (!enabled) {\n return responsesAcc;\n }\n\n responsesAcc.push({\n action: actionName,\n subject: null,\n conditions: createConditionsArray(conditions),\n properties: {},\n });\n\n return responsesAcc;\n },\n []\n );\n\n return [...childFormAcc, ...permissions];\n },\n []\n );\n\n return [...formAcc, ...currentCategoryPermissions];\n }, []);\n};\n\nconst formatContentTypesPermissions = (contentTypesPermissions: Form): PermissionApiBody => {\n const permissions = Object.entries(contentTypesPermissions).reduce<PermissionApiBody>(\n (allPermissions, current) => {\n const [subject, currentSubjectActions] = current;\n\n const permissions = Object.entries(currentSubjectActions).reduce<PermissionApiBody>(\n (acc, current) => {\n const [actionName, permissions] = current;\n const shouldCreatePermission = createArrayOfValues(permissions).some((val) => val);\n\n if (!shouldCreatePermission) {\n return acc;\n }\n\n if (!permissions?.properties?.enabled) {\n const createdPermissionsArray = Object.entries(permissions.properties).reduce<\n PermissionApiBody[number]\n >(\n (acc, current) => {\n const [propertyName, propertyValue] = current;\n\n // @ts-expect-error – `propertyValue` can be boolean or an object, but we don't account for it...\n acc.properties[propertyName] = createPropertyArray(propertyValue);\n\n return acc;\n },\n {\n action: actionName,\n subject,\n conditions: createConditionsArray(permissions.conditions),\n properties: {},\n }\n );\n\n return [...acc, createdPermissionsArray];\n }\n\n if (!permissions.properties.enabled) {\n return acc;\n }\n\n acc.push({\n action: actionName,\n subject,\n properties: {},\n conditions: createConditionsArray(permissions.conditions),\n });\n\n return acc;\n },\n []\n );\n\n return [...allPermissions, ...permissions];\n },\n []\n );\n\n return permissions;\n};\n\nconst createPropertyArray = (propertyValue: PropertyChildForm, prefix = ''): string[] => {\n return Object.entries(propertyValue).reduce<string[]>((acc, current) => {\n const [name, value] = current;\n\n if (isObject(value)) {\n return [...acc, ...createPropertyArray(value, `${prefix}${name}.`)];\n }\n\n if (value && !isObject(value)) {\n acc.push(`${prefix}${name}`);\n }\n\n return acc;\n }, []);\n};\n\nconst createConditionsArray = (conditions: ConditionForm) =>\n Object.entries(conditions)\n .filter(([, conditionValue]) => {\n return conditionValue;\n })\n .map(([conditionName]) => conditionName);\n\nexport { findMatchingPermission, formatPermissionsForAPI };\n"],"names":["findMatchingPermission","permissions","action","subject","find","perm","formatPermissionsForAPI","modifiedData","pluginsPermissions","formatSettingsPermissions","plugins","settingsPermissions","settings","collectionTypesPermissions","formatContentTypesPermissions","collectionTypes","singleTypesPermissions","singleTypes","settingsPermissionsObject","Object","values","reduce","formAcc","form","currentCategoryPermissions","childFormAcc","childForm","entries","responsesAcc","actionName","conditions","properties","enabled","push","createConditionsArray","contentTypesPermissions","allPermissions","current","currentSubjectActions","acc","shouldCreatePermission","createArrayOfValues","some","val","createdPermissionsArray","propertyName","propertyValue","createPropertyArray","prefix","name","value","isObject","filter","conditionValue","map","conditionName"],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/permissions.ts"],"sourcesContent":["import { isObject } from '../../../../../utils/objects';\n\nimport { createArrayOfValues } from './createArrayOfValues';\n\nimport type { ConditionForm, Form, PropertyChildForm } from './forms';\nimport type { UpdatePermissions } from '../../../../../../../shared/contracts/roles';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\nimport type { PermissionsDataManagerContextValue } from '../hooks/usePermissionsDataManager';\n\ntype PermissionApiBody = UpdatePermissions.Request['body']['permissions'];\n\n/**\n * @description Given a users permissions array we find the first one that matches a provided subject & action\n */\nconst findMatchingPermission = (\n permissions: Permission[],\n action: string,\n subject: string | null\n) => permissions.find((perm) => perm.action === action && perm.subject === subject);\n\nconst formatPermissionsForAPI = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData']\n): PermissionApiBody => {\n const pluginsPermissions = formatSettingsPermissions(modifiedData.plugins);\n const settingsPermissions = formatSettingsPermissions(modifiedData.settings);\n const collectionTypesPermissions = formatContentTypesPermissions(modifiedData.collectionTypes);\n const singleTypesPermissions = formatContentTypesPermissions(modifiedData.singleTypes);\n\n return [\n ...pluginsPermissions,\n ...settingsPermissions,\n ...collectionTypesPermissions,\n ...singleTypesPermissions,\n ];\n};\n\nconst formatSettingsPermissions = (\n settingsPermissionsObject:\n | PermissionsDataManagerContextValue['modifiedData']['plugins']\n | PermissionsDataManagerContextValue['modifiedData']['settings']\n): PermissionApiBody => {\n return Object.values(settingsPermissionsObject).reduce<PermissionApiBody>((formAcc, form) => {\n const currentCategoryPermissions = Object.values(form).reduce<PermissionApiBody>(\n (childFormAcc, childForm) => {\n const permissions = Object.entries(childForm).reduce<PermissionApiBody>(\n (\n responsesAcc,\n [\n actionName,\n {\n conditions,\n properties: { enabled },\n },\n ]\n ) => {\n if (!enabled) {\n return responsesAcc;\n }\n\n responsesAcc.push({\n action: actionName,\n subject: null,\n conditions: createConditionsArray(conditions),\n properties: {},\n });\n\n return responsesAcc;\n },\n []\n );\n\n return [...childFormAcc, ...permissions];\n },\n []\n );\n\n return [...formAcc, ...currentCategoryPermissions];\n }, []);\n};\n\nconst formatContentTypesPermissions = (contentTypesPermissions: Form): PermissionApiBody => {\n const permissions = Object.entries(contentTypesPermissions).reduce<PermissionApiBody>(\n (allPermissions, current) => {\n const [subject, currentSubjectActions] = current;\n\n const permissions = Object.entries(currentSubjectActions).reduce<PermissionApiBody>(\n (acc, current) => {\n const [actionName, permissions] = current;\n const shouldCreatePermission = createArrayOfValues(permissions).some((val) => val);\n\n if (!shouldCreatePermission) {\n return acc;\n }\n\n if (!permissions?.properties?.enabled) {\n const createdPermissionsArray = Object.entries(permissions.properties).reduce<\n PermissionApiBody[number]\n >(\n (acc, current) => {\n const [propertyName, propertyValue] = current;\n\n // @ts-expect-error – `propertyValue` can be boolean or an object, but we don't account for it...\n acc.properties[propertyName] = createPropertyArray(propertyValue);\n\n return acc;\n },\n {\n action: actionName,\n subject,\n conditions: createConditionsArray(permissions.conditions),\n properties: {},\n }\n );\n\n return [...acc, createdPermissionsArray];\n }\n\n if (!permissions.properties.enabled) {\n return acc;\n }\n\n acc.push({\n action: actionName,\n subject,\n properties: {},\n conditions: createConditionsArray(permissions.conditions),\n });\n\n return acc;\n },\n []\n );\n\n return [...allPermissions, ...permissions];\n },\n []\n );\n\n return permissions;\n};\n\nconst createPropertyArray = (propertyValue: PropertyChildForm, prefix = ''): string[] => {\n return Object.entries(propertyValue).reduce<string[]>((acc, current) => {\n const [name, value] = current;\n\n if (isObject(value)) {\n return [...acc, ...createPropertyArray(value, `${prefix}${name}.`)];\n }\n\n if (value && !isObject(value)) {\n acc.push(`${prefix}${name}`);\n }\n\n return acc;\n }, []);\n};\n\nconst createConditionsArray = (conditions: ConditionForm) =>\n Object.entries(conditions)\n .filter(([, conditionValue]) => {\n return conditionValue;\n })\n .map(([conditionName]) => conditionName);\n\nexport { findMatchingPermission, formatPermissionsForAPI };\n"],"names":["findMatchingPermission","permissions","action","subject","find","perm","formatPermissionsForAPI","modifiedData","pluginsPermissions","formatSettingsPermissions","plugins","settingsPermissions","settings","collectionTypesPermissions","formatContentTypesPermissions","collectionTypes","singleTypesPermissions","singleTypes","settingsPermissionsObject","Object","values","reduce","formAcc","form","currentCategoryPermissions","childFormAcc","childForm","entries","responsesAcc","actionName","conditions","properties","enabled","push","createConditionsArray","contentTypesPermissions","allPermissions","current","currentSubjectActions","acc","shouldCreatePermission","createArrayOfValues","some","val","createdPermissionsArray","propertyName","propertyValue","createPropertyArray","prefix","name","value","isObject","filter","conditionValue","map","conditionName"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/permissions.ts"],"sourcesContent":["import { isObject } from '../../../../../utils/objects';\n\nimport { createArrayOfValues } from './createArrayOfValues';\n\nimport type { ConditionForm, Form, PropertyChildForm } from './forms';\nimport type { UpdatePermissions } from '../../../../../../../shared/contracts/roles';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\nimport type { PermissionsDataManagerContextValue } from '../hooks/usePermissionsDataManager';\n\ntype PermissionApiBody = UpdatePermissions.Request['body']['permissions'];\n\n/**\n * @description Given a users permissions array we find the first one that matches a provided subject & action\n */\nconst findMatchingPermission = (\n permissions: Permission[],\n action: string,\n subject: string | null\n) => permissions.find((perm) => perm.action === action && perm.subject === subject);\n\nconst formatPermissionsForAPI = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData']\n): PermissionApiBody => {\n const pluginsPermissions = formatSettingsPermissions(modifiedData.plugins);\n const settingsPermissions = formatSettingsPermissions(modifiedData.settings);\n const collectionTypesPermissions = formatContentTypesPermissions(modifiedData.collectionTypes);\n const singleTypesPermissions = formatContentTypesPermissions(modifiedData.singleTypes);\n\n return [\n ...pluginsPermissions,\n ...settingsPermissions,\n ...collectionTypesPermissions,\n ...singleTypesPermissions,\n ];\n};\n\nconst formatSettingsPermissions = (\n settingsPermissionsObject:\n | PermissionsDataManagerContextValue['modifiedData']['plugins']\n | PermissionsDataManagerContextValue['modifiedData']['settings']\n): PermissionApiBody => {\n return Object.values(settingsPermissionsObject).reduce<PermissionApiBody>((formAcc, form) => {\n const currentCategoryPermissions = Object.values(form).reduce<PermissionApiBody>(\n (childFormAcc, childForm) => {\n const permissions = Object.entries(childForm).reduce<PermissionApiBody>(\n (\n responsesAcc,\n [\n actionName,\n {\n conditions,\n properties: { enabled },\n },\n ]\n ) => {\n if (!enabled) {\n return responsesAcc;\n }\n\n responsesAcc.push({\n action: actionName,\n subject: null,\n conditions: createConditionsArray(conditions),\n properties: {},\n });\n\n return responsesAcc;\n },\n []\n );\n\n return [...childFormAcc, ...permissions];\n },\n []\n );\n\n return [...formAcc, ...currentCategoryPermissions];\n }, []);\n};\n\nconst formatContentTypesPermissions = (contentTypesPermissions: Form): PermissionApiBody => {\n const permissions = Object.entries(contentTypesPermissions).reduce<PermissionApiBody>(\n (allPermissions, current) => {\n const [subject, currentSubjectActions] = current;\n\n const permissions = Object.entries(currentSubjectActions).reduce<PermissionApiBody>(\n (acc, current) => {\n const [actionName, permissions] = current;\n const shouldCreatePermission = createArrayOfValues(permissions).some((val) => val);\n\n if (!shouldCreatePermission) {\n return acc;\n }\n\n if (!permissions?.properties?.enabled) {\n const createdPermissionsArray = Object.entries(permissions.properties).reduce<\n PermissionApiBody[number]\n >(\n (acc, current) => {\n const [propertyName, propertyValue] = current;\n\n // @ts-expect-error – `propertyValue` can be boolean or an object, but we don't account for it...\n acc.properties[propertyName] = createPropertyArray(propertyValue);\n\n return acc;\n },\n {\n action: actionName,\n subject,\n conditions: createConditionsArray(permissions.conditions),\n properties: {},\n }\n );\n\n return [...acc, createdPermissionsArray];\n }\n\n if (!permissions.properties.enabled) {\n return acc;\n }\n\n acc.push({\n action: actionName,\n subject,\n properties: {},\n conditions: createConditionsArray(permissions.conditions),\n });\n\n return acc;\n },\n []\n );\n\n return [...allPermissions, ...permissions];\n },\n []\n );\n\n return permissions;\n};\n\nconst createPropertyArray = (propertyValue: PropertyChildForm, prefix = ''): string[] => {\n return Object.entries(propertyValue).reduce<string[]>((acc, current) => {\n const [name, value] = current;\n\n if (isObject(value)) {\n return [...acc, ...createPropertyArray(value, `${prefix}${name}.`)];\n }\n\n if (value && !isObject(value)) {\n acc.push(`${prefix}${name}`);\n }\n\n return acc;\n }, []);\n};\n\nconst createConditionsArray = (conditions: ConditionForm) =>\n Object.entries(conditions)\n .filter(([, conditionValue]) => {\n return conditionValue;\n })\n .map(([conditionName]) => conditionName);\n\nexport { findMatchingPermission, formatPermissionsForAPI };\n"],"names":["findMatchingPermission","permissions","action","subject","find","perm","formatPermissionsForAPI","modifiedData","pluginsPermissions","formatSettingsPermissions","plugins","settingsPermissions","settings","collectionTypesPermissions","formatContentTypesPermissions","collectionTypes","singleTypesPermissions","singleTypes","settingsPermissionsObject","Object","values","reduce","formAcc","form","currentCategoryPermissions","childFormAcc","childForm","entries","responsesAcc","actionName","conditions","properties","enabled","push","createConditionsArray","contentTypesPermissions","allPermissions","current","currentSubjectActions","acc","shouldCreatePermission","createArrayOfValues","some","val","createdPermissionsArray","propertyName","propertyValue","createPropertyArray","prefix","name","value","isObject","filter","conditionValue","map","conditionName"],"mappings":"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"}
1
+ {"version":3,"file":"permissions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/permissions.ts"],"sourcesContent":["import { isObject } from '../../../../../utils/objects';\n\nimport { createArrayOfValues } from './createArrayOfValues';\n\nimport type { ConditionForm, Form, PropertyChildForm } from './forms';\nimport type { UpdatePermissions } from '../../../../../../../shared/contracts/roles';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\nimport type { PermissionsDataManagerContextValue } from '../hooks/usePermissionsDataManager';\n\ntype PermissionApiBody = UpdatePermissions.Request['body']['permissions'];\n\n/**\n * @description Given a users permissions array we find the first one that matches a provided subject & action\n */\nconst findMatchingPermission = (\n permissions: Permission[],\n action: string,\n subject: string | null\n) => permissions.find((perm) => perm.action === action && perm.subject === subject);\n\nconst formatPermissionsForAPI = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData']\n): PermissionApiBody => {\n const pluginsPermissions = formatSettingsPermissions(modifiedData.plugins);\n const settingsPermissions = formatSettingsPermissions(modifiedData.settings);\n const collectionTypesPermissions = formatContentTypesPermissions(modifiedData.collectionTypes);\n const singleTypesPermissions = formatContentTypesPermissions(modifiedData.singleTypes);\n\n return [\n ...pluginsPermissions,\n ...settingsPermissions,\n ...collectionTypesPermissions,\n ...singleTypesPermissions,\n ];\n};\n\nconst formatSettingsPermissions = (\n settingsPermissionsObject:\n | PermissionsDataManagerContextValue['modifiedData']['plugins']\n | PermissionsDataManagerContextValue['modifiedData']['settings']\n): PermissionApiBody => {\n return Object.values(settingsPermissionsObject).reduce<PermissionApiBody>((formAcc, form) => {\n const currentCategoryPermissions = Object.values(form).reduce<PermissionApiBody>(\n (childFormAcc, childForm) => {\n const permissions = Object.entries(childForm).reduce<PermissionApiBody>(\n (\n responsesAcc,\n [\n actionName,\n {\n conditions,\n properties: { enabled },\n },\n ]\n ) => {\n if (!enabled) {\n return responsesAcc;\n }\n\n responsesAcc.push({\n action: actionName,\n subject: null,\n conditions: createConditionsArray(conditions),\n properties: {},\n });\n\n return responsesAcc;\n },\n []\n );\n\n return [...childFormAcc, ...permissions];\n },\n []\n );\n\n return [...formAcc, ...currentCategoryPermissions];\n }, []);\n};\n\nconst formatContentTypesPermissions = (contentTypesPermissions: Form): PermissionApiBody => {\n const permissions = Object.entries(contentTypesPermissions).reduce<PermissionApiBody>(\n (allPermissions, current) => {\n const [subject, currentSubjectActions] = current;\n\n const permissions = Object.entries(currentSubjectActions).reduce<PermissionApiBody>(\n (acc, current) => {\n const [actionName, permissions] = current;\n const shouldCreatePermission = createArrayOfValues(permissions).some((val) => val);\n\n if (!shouldCreatePermission) {\n return acc;\n }\n\n if (!permissions?.properties?.enabled) {\n const createdPermissionsArray = Object.entries(permissions.properties).reduce<\n PermissionApiBody[number]\n >(\n (acc, current) => {\n const [propertyName, propertyValue] = current;\n\n // @ts-expect-error – `propertyValue` can be boolean or an object, but we don't account for it...\n acc.properties[propertyName] = createPropertyArray(propertyValue);\n\n return acc;\n },\n {\n action: actionName,\n subject,\n conditions: createConditionsArray(permissions.conditions),\n properties: {},\n }\n );\n\n return [...acc, createdPermissionsArray];\n }\n\n if (!permissions.properties.enabled) {\n return acc;\n }\n\n acc.push({\n action: actionName,\n subject,\n properties: {},\n conditions: createConditionsArray(permissions.conditions),\n });\n\n return acc;\n },\n []\n );\n\n return [...allPermissions, ...permissions];\n },\n []\n );\n\n return permissions;\n};\n\nconst createPropertyArray = (propertyValue: PropertyChildForm, prefix = ''): string[] => {\n return Object.entries(propertyValue).reduce<string[]>((acc, current) => {\n const [name, value] = current;\n\n if (isObject(value)) {\n return [...acc, ...createPropertyArray(value, `${prefix}${name}.`)];\n }\n\n if (value && !isObject(value)) {\n acc.push(`${prefix}${name}`);\n }\n\n return acc;\n }, []);\n};\n\nconst createConditionsArray = (conditions: ConditionForm) =>\n Object.entries(conditions)\n .filter(([, conditionValue]) => {\n return conditionValue;\n })\n .map(([conditionName]) => conditionName);\n\nexport { findMatchingPermission, formatPermissionsForAPI };\n"],"names":["findMatchingPermission","permissions","action","subject","find","perm","formatPermissionsForAPI","modifiedData","pluginsPermissions","formatSettingsPermissions","plugins","settingsPermissions","settings","collectionTypesPermissions","formatContentTypesPermissions","collectionTypes","singleTypesPermissions","singleTypes","settingsPermissionsObject","Object","values","reduce","formAcc","form","currentCategoryPermissions","childFormAcc","childForm","entries","responsesAcc","actionName","conditions","properties","enabled","push","createConditionsArray","contentTypesPermissions","allPermissions","current","currentSubjectActions","acc","shouldCreatePermission","createArrayOfValues","some","val","createdPermissionsArray","propertyName","propertyValue","createPropertyArray","prefix","name","value","isObject","filter","conditionValue","map","conditionName"],"mappings":"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"}