@strapi/admin 5.48.0 → 5.49.0

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 (414) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +41 -25
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +15 -7
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/Context.js +4 -3
  8. package/dist/admin/admin/src/components/Context.js.map +1 -1
  9. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
  10. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  11. package/dist/admin/admin/src/components/Filters.js +3 -2
  12. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.js +9 -5
  14. package/dist/admin/admin/src/components/Form.js.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  16. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  19. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  20. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  21. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  22. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  23. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  24. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  25. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  26. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  27. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  28. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  30. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  31. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  32. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  33. package/dist/admin/admin/src/components/LeftMenu.js +4 -3
  34. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  35. package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
  36. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  38. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  39. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  40. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  41. package/dist/admin/admin/src/components/Pagination.js +3 -2
  42. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  43. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  44. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  45. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  46. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  47. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  48. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  49. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  50. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  51. package/dist/admin/admin/src/components/Table.js +3 -2
  52. package/dist/admin/admin/src/components/Table.js.map +1 -1
  53. package/dist/admin/admin/src/components/Theme.js +3 -2
  54. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  55. package/dist/admin/admin/src/components/UpsellBanner.js +1 -1
  56. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  57. package/dist/admin/admin/src/components/UpsellBanner.mjs +1 -1
  58. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  59. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  60. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  61. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  62. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  63. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  64. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  65. package/dist/admin/admin/src/core/apis/router.js +20 -16
  66. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  67. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  68. package/dist/admin/admin/src/features/Auth.js +78 -6
  69. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  70. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  71. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  72. package/dist/admin/admin/src/features/BackButton.js +3 -2
  73. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  74. package/dist/admin/admin/src/features/Configuration.js +3 -2
  75. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  76. package/dist/admin/admin/src/features/Notifications.js +3 -2
  77. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  78. package/dist/admin/admin/src/features/Tracking.js +7 -3
  79. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  80. package/dist/admin/admin/src/features/Widgets.js +3 -2
  81. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  82. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  83. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  84. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  85. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  86. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  87. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  88. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  89. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  90. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  91. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  92. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  93. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  94. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  95. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  96. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  97. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  98. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  99. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  100. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  101. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  102. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  103. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  104. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  105. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  106. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  107. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  108. package/dist/admin/admin/src/hooks/useMenu.js +47 -8
  109. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  110. package/dist/admin/admin/src/hooks/useMenu.mjs +40 -6
  111. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  112. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  113. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  114. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  115. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  116. package/dist/admin/admin/src/hooks/useSettingsMenu.js +68 -4
  117. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  118. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs +61 -2
  119. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs.map +1 -1
  120. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  121. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  122. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +11 -5
  123. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  125. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  126. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  127. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  128. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  129. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  130. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  131. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  132. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  133. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Home/HomePage.js +9 -4
  135. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  136. package/dist/admin/admin/src/pages/Home/HomePage.mjs +6 -2
  137. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  138. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  139. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +8 -4
  141. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  143. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  144. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  145. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  146. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  147. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  148. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  149. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  151. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  153. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  155. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  157. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  159. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  161. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  163. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  165. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  169. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  171. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +5 -2
  173. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -0
  175. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  176. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  177. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  179. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +4 -3
  181. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +4 -3
  183. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  184. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  185. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  186. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -6
  187. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  188. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  189. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  191. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  192. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  193. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  195. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +33 -25
  197. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  198. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  199. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  200. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  201. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  202. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +8 -3
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  211. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  212. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  213. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  214. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  215. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  216. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  217. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  218. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  219. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  220. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  221. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  222. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  223. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  224. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  225. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  226. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  227. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  228. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  229. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  230. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  231. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  232. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  233. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  234. package/dist/admin/admin/src/translations/ar.json.js +1 -1
  235. package/dist/admin/admin/src/translations/ar.json.mjs +1 -1
  236. package/dist/admin/admin/src/translations/cs.json.js +1 -1
  237. package/dist/admin/admin/src/translations/cs.json.mjs +1 -1
  238. package/dist/admin/admin/src/translations/de.json.js +1 -1
  239. package/dist/admin/admin/src/translations/de.json.mjs +1 -1
  240. package/dist/admin/admin/src/translations/en.json.js +1 -1
  241. package/dist/admin/admin/src/translations/en.json.mjs +1 -1
  242. package/dist/admin/admin/src/translations/es.json.js +1 -1
  243. package/dist/admin/admin/src/translations/es.json.mjs +1 -1
  244. package/dist/admin/admin/src/translations/fi.json.js +1 -1
  245. package/dist/admin/admin/src/translations/fi.json.mjs +1 -1
  246. package/dist/admin/admin/src/translations/fr.json.js +1 -1
  247. package/dist/admin/admin/src/translations/fr.json.mjs +1 -1
  248. package/dist/admin/admin/src/translations/it.json.js +1 -1
  249. package/dist/admin/admin/src/translations/it.json.mjs +1 -1
  250. package/dist/admin/admin/src/translations/ko.json.js +1 -1
  251. package/dist/admin/admin/src/translations/ko.json.mjs +1 -1
  252. package/dist/admin/admin/src/translations/nl.json.js +1 -1
  253. package/dist/admin/admin/src/translations/nl.json.mjs +1 -1
  254. package/dist/admin/admin/src/translations/pl.json.js +1 -1
  255. package/dist/admin/admin/src/translations/pl.json.mjs +1 -1
  256. package/dist/admin/admin/src/translations/ru.json.js +1 -1
  257. package/dist/admin/admin/src/translations/ru.json.mjs +1 -1
  258. package/dist/admin/admin/src/translations/tr.json.js +1 -1
  259. package/dist/admin/admin/src/translations/tr.json.mjs +1 -1
  260. package/dist/admin/admin/src/translations/uk.json.js +1 -1
  261. package/dist/admin/admin/src/translations/uk.json.mjs +1 -1
  262. package/dist/admin/admin/src/translations/vi.json.js +1 -1
  263. package/dist/admin/admin/src/translations/vi.json.mjs +1 -1
  264. package/dist/admin/admin/src/translations/zh-Hans.json.js +1 -1
  265. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +1 -1
  266. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  267. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  268. package/dist/admin/admin/src/utils/locales.js +3 -2
  269. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  270. package/dist/admin/admin/src/utils/objects.js +9 -4
  271. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  272. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  273. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  274. package/dist/admin/admin/src/utils/urls.js +5 -1
  275. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  276. package/dist/admin/admin/src/utils/widgetVisibility.js +25 -0
  277. package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -0
  278. package/dist/admin/admin/src/utils/widgetVisibility.mjs +22 -0
  279. package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -0
  280. package/dist/admin/admin/tests/utils.js +3 -2
  281. package/dist/admin/admin/tests/utils.js.map +1 -1
  282. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  283. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  284. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  285. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  286. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  287. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  288. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +6 -4
  289. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  290. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +6 -4
  291. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  292. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  293. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  294. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  295. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  296. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  297. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  298. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  299. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  300. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  301. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  302. package/dist/admin/src/StrapiApp.d.ts +7 -1
  303. package/dist/admin/src/core/apis/router.d.ts +1 -2
  304. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  305. package/dist/admin/src/hooks/useMenu.d.ts +2 -1
  306. package/dist/admin/src/hooks/useSettingsMenu.d.ts +2 -1
  307. package/dist/admin/src/utils/widgetVisibility.d.ts +18 -0
  308. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  309. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  310. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  311. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  312. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  313. package/dist/server/ee/server/src/controllers/user.js +12 -7
  314. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  315. package/dist/server/ee/server/src/controllers/user.mjs +7 -6
  316. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  317. package/dist/server/ee/server/src/services/auth.js +5 -1
  318. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  319. package/dist/server/ee/server/src/services/user.js +8 -4
  320. package/dist/server/ee/server/src/services/user.js.map +1 -1
  321. package/dist/server/index.js +6 -2
  322. package/dist/server/index.js.map +1 -1
  323. package/dist/server/server/src/ai/services/ai.js +10 -4
  324. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  325. package/dist/server/server/src/controllers/admin.js +9 -4
  326. package/dist/server/server/src/controllers/admin.js.map +1 -1
  327. package/dist/server/server/src/controllers/authenticated-user.js +25 -4
  328. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  329. package/dist/server/server/src/controllers/authenticated-user.mjs +25 -4
  330. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  331. package/dist/server/server/src/controllers/authentication.js +8 -18
  332. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  333. package/dist/server/server/src/controllers/authentication.mjs +1 -16
  334. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  335. package/dist/server/server/src/controllers/user.js +9 -7
  336. package/dist/server/server/src/controllers/user.js.map +1 -1
  337. package/dist/server/server/src/controllers/user.mjs +6 -5
  338. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  339. package/dist/server/server/src/controllers/webhooks.js +7 -2
  340. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  341. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  342. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  343. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  344. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  345. package/dist/server/server/src/routes/authentication.js +4 -1
  346. package/dist/server/server/src/routes/authentication.js.map +1 -1
  347. package/dist/server/server/src/routes/authentication.mjs +4 -1
  348. package/dist/server/server/src/routes/authentication.mjs.map +1 -1
  349. package/dist/server/server/src/routes/serve-admin-panel.js +8 -3
  350. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  351. package/dist/server/server/src/services/api-token.js +7 -3
  352. package/dist/server/server/src/services/api-token.js.map +1 -1
  353. package/dist/server/server/src/services/auth.js +8 -3
  354. package/dist/server/server/src/services/auth.js.map +1 -1
  355. package/dist/server/server/src/services/content-type.js +6 -2
  356. package/dist/server/server/src/services/content-type.js.map +1 -1
  357. package/dist/server/server/src/services/encryption.js +8 -4
  358. package/dist/server/server/src/services/encryption.js.map +1 -1
  359. package/dist/server/server/src/services/passport.js +6 -2
  360. package/dist/server/server/src/services/passport.js.map +1 -1
  361. package/dist/server/server/src/services/permission/engine.js +5 -1
  362. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  363. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  364. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  365. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +20 -11
  366. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  367. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +21 -12
  368. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  369. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  370. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  371. package/dist/server/server/src/services/permission/queries.js +5 -1
  372. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  373. package/dist/server/server/src/services/project-settings.js +6 -2
  374. package/dist/server/server/src/services/project-settings.js.map +1 -1
  375. package/dist/server/server/src/services/role.js +8 -4
  376. package/dist/server/server/src/services/role.js.map +1 -1
  377. package/dist/server/server/src/services/token.js +7 -2
  378. package/dist/server/server/src/services/token.js.map +1 -1
  379. package/dist/server/server/src/services/transfer/permission.js +5 -1
  380. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  381. package/dist/server/server/src/services/transfer/token.js +10 -5
  382. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  383. package/dist/server/server/src/services/user.js +50 -9
  384. package/dist/server/server/src/services/user.js.map +1 -1
  385. package/dist/server/server/src/services/user.mjs +40 -3
  386. package/dist/server/server/src/services/user.mjs.map +1 -1
  387. package/dist/server/server/src/utils/normalize-email.js +24 -0
  388. package/dist/server/server/src/utils/normalize-email.js.map +1 -0
  389. package/dist/server/server/src/utils/normalize-email.mjs +22 -0
  390. package/dist/server/server/src/utils/normalize-email.mjs.map +1 -0
  391. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  392. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  393. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  394. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  395. package/dist/server/server/src/validation/common-validators.js +6 -2
  396. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  397. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  398. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  399. package/dist/server/shared/utils/session-auth.js +5 -1
  400. package/dist/server/shared/utils/session-auth.js.map +1 -1
  401. package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
  402. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  403. package/dist/server/src/controllers/user.d.ts.map +1 -1
  404. package/dist/server/src/index.d.ts +1 -0
  405. package/dist/server/src/index.d.ts.map +1 -1
  406. package/dist/server/src/routes/authentication.d.ts.map +1 -1
  407. package/dist/server/src/services/index.d.ts +1 -0
  408. package/dist/server/src/services/index.d.ts.map +1 -1
  409. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  410. package/dist/server/src/services/user.d.ts +1 -0
  411. package/dist/server/src/services/user.d.ts.map +1 -1
  412. package/dist/server/src/utils/normalize-email.d.ts +12 -0
  413. package/dist/server/src/utils/normalize-email.d.ts.map +1 -0
  414. package/package.json +11 -13
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const { id } = useParams();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, currentData: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { currentData: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(`../roles/${res.data.id.toString()}`, { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <Layouts.Header\n primaryAction={\n <Flex width=\"100%\" gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n fullWidth\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} startIcon={<Check />} fullWidth>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\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 {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\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: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid.Root gap={4}>\n <Grid.Item m={6} xs={12} 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 type=\"text\" onChange={handleChange} value={values.name} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item m={6} xs={12} 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 onChange={handleChange} value={values.description} />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: 1.2rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["CREATE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","CreatePage","useParams","toggleNotification","useNotification","formatMessage","useIntl","navigate","useNavigate","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","currentData","permissionsLayout","useGetRolePermissionLayoutQuery","role","rolePermissions","isLoadingRole","useGetRolePermissionsQuery","skip","refetchOnMountOrArgChange","createRole","useCreateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","handleCreateRoleSubmit","data","formik","res","isBaseQueryError","error","setErrors","type","message","permissionsToSend","current","getPermissions","Array","isArray","length","updateRes","permissions","defaultMessage","toString","replace","err","_jsx","Page","Loading","_jsxs","Main","Title","Formik","initialValues","format","Date","onSubmit","validationSchema","validateOnChange","values","errors","handleReset","handleChange","isSubmitting","Form","_Fragment","Layouts","Header","primaryAction","Flex","width","gap","Button","variant","onClick","resetForm","fullWidth","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","background","padding","shadow","hasRadius","justifyContent","Typography","fontWeight","textColor","UsersRoleNumber","number","Grid","Root","Item","m","xs","Field","Label","TextInput","onChange","value","Error","Textarea","Permissions","isFormDisabled","ref","layout","styled","div","theme","colors","primary200","primary100","spaces","primary600","borderRadius","ProtectedCreatePage","useTypedSelector","state","admin_app","settings","roles","create","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Field,\n Flex,\n Grid,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().required(translatedErrors.required.id),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const { id } = useParams();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, currentData: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { currentData: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.roles.created', defaultMessage: 'created' }),\n });\n\n navigate(`../roles/${res.data.id.toString()}`, { replace: true });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if ((isLoadingPermissionsLayout && isLoadingRole) || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <Layouts.Header\n primaryAction={\n <Flex width=\"100%\" gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n fullWidth\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} startIcon={<Check />} fullWidth>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\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 {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\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: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid.Root gap={4}>\n <Grid.Item m={6} xs={12} 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 type=\"text\" onChange={handleChange} value={values.name} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item m={6} xs={12} 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 onChange={handleChange} value={values.description} />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: 1.2rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <CreatePage />\n </Page.Protect>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":["CREATE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","CreatePage","useParams","toggleNotification","useNotification","formatMessage","useIntl","navigate","useNavigate","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","currentData","permissionsLayout","useGetRolePermissionLayoutQuery","role","rolePermissions","isLoadingRole","useGetRolePermissionsQuery","skip","refetchOnMountOrArgChange","createRole","useCreateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","handleCreateRoleSubmit","data","formik","res","isBaseQueryError","error","setErrors","type","message","permissionsToSend","current","getPermissions","Array","isArray","length","updateRes","permissions","defaultMessage","toString","replace","err","_jsx","Page","Loading","_jsxs","Main","Title","Formik","initialValues","format","Date","onSubmit","validationSchema","validateOnChange","values","errors","handleReset","handleChange","isSubmitting","Form","_Fragment","Layouts","Header","primaryAction","Flex","width","gap","Button","variant","onClick","resetForm","fullWidth","loading","startIcon","Check","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","direction","alignItems","background","padding","shadow","hasRadius","justifyContent","Typography","fontWeight","textColor","UsersRoleNumber","number","Grid","Root","Item","m","xs","Field","Label","TextInput","onChange","value","Error","Textarea","Permissions","isFormDisabled","ref","layout","styled","div","theme","colors","primary200","primary100","spaces","primary600","borderRadius","ProtectedCreatePage","useTypedSelector","state","admin_app","settings","roles","create","Protect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA;;AAEkG,qGAElG,MAAMA,aAAAA,GAAgBC,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IACvCC,IAAAA,EAAMH,cAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,CAACC,iCAAAA,CAAiBD,QAAQ,CAACE,EAAE,CAAA;IACxDC,WAAAA,EAAaR,cAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,CAACC,iCAAAA,CAAiBD,QAAQ,CAACE,EAAE;AACjE,CAAA,CAAA;AAUA;;;AAGC,UACKE,UAAAA,GAAa,IAAA;IACjB,MAAM,EAAEF,EAAE,EAAE,GAAGG,wBAAAA,EAAAA;IACf,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;IACjB,MAAMC,cAAAA,GAAiBC,gBAAAA,CAAMC,MAAM,CAAiB,IAAA,CAAA;IACpD,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AACvB,IAAA,MAAM,EACJC,uBAAAA,EAAyBC,cAAc,EACvCC,+BAAAA,EAAiCC,sBAAsB,EACxD,GAAGC,qCAAAA,EAAAA;IAEJ,MAAM,EAAEC,WAAWC,0BAA0B,EAAEC,aAAaC,iBAAiB,EAAE,GAC7EC,qCAAAA,CAAgC;AAC9B;;;AAGC,UACDC,MAAMzB,EAAAA,IAAM;AACd,KAAA,CAAA;AAEF;;;MAIA,MAAM,EAAEsB,WAAAA,EAAaI,eAAe,EAAEN,SAAAA,EAAWO,aAAa,EAAE,GAAGC,gCAAAA,CACjE;QACE5B,EAAAA,EAAIA;KACN,EACA;AACE6B,QAAAA,IAAAA,EAAM,CAAC7B,EAAAA;QACP8B,yBAAAA,EAA2B;AAC7B,KAAA,CAAA;IAGF,MAAM,CAACC,WAAW,GAAGC,2BAAAA,EAAAA;IACrB,MAAM,CAACC,sBAAsB,GAAGC,sCAAAA,EAAAA;IAEhC,MAAMC,sBAAAA,GAAyB,OAC7BC,IAAAA,EACAC,MAAAA,GAAAA;QAEA,IAAI;AACF,YAAA,IAAIrC,EAAAA,EAAI;gBACNa,UAAAA,CAAW,mBAAA,CAAA;YACb,CAAA,MAAO;gBACLA,UAAAA,CAAW,mBAAA,CAAA;AACb,YAAA;YAEA,MAAMyB,GAAAA,GAAM,MAAMP,UAAAA,CAAWK,IAAAA,CAAAA;AAE7B,YAAA,IAAI,WAAWE,GAAAA,EAAK;gBAClB,IAAIC,0BAAAA,CAAiBD,IAAIE,KAAK,CAAA,IAAKF,IAAIE,KAAK,CAAC5C,IAAI,KAAK,iBAAA,EAAmB;AACvEyC,oBAAAA,MAAAA,CAAOI,SAAS,CAACvB,sBAAAA,CAAuBoB,GAAAA,CAAIE,KAAK,CAAA,CAAA;gBACnD,CAAA,MAAO;oBACLpC,kBAAAA,CAAmB;wBACjBsC,IAAAA,EAAM,QAAA;wBACNC,OAAAA,EAAS3B,cAAAA,CAAesB,IAAIE,KAAK;AACnC,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA;AACF,YAAA;YAEA,MAAM,EAAEI,iBAAiB,EAAE,GAAGlC,eAAemC,OAAO,EAAEC,oBAAoB,EAAC;AAE3E,YAAA,IAAIR,GAAAA,CAAIF,IAAI,CAACpC,EAAE,IAAI+C,KAAAA,CAAMC,OAAO,CAACJ,iBAAAA,CAAAA,IAAsBA,iBAAAA,CAAkBK,MAAM,GAAG,CAAA,EAAG;gBACnF,MAAMC,SAAAA,GAAY,MAAMjB,qBAAAA,CAAsB;oBAC5CjC,EAAAA,EAAIsC,GAAAA,CAAIF,IAAI,CAACpC,EAAE;oBACfmD,WAAAA,EAAaP;AACf,iBAAA,CAAA;AAEA,gBAAA,IAAI,WAAWM,SAAAA,EAAW;oBACxB,IAAIX,0BAAAA,CAAiBW,UAAUV,KAAK,CAAA,IAAKU,UAAUV,KAAK,CAAC5C,IAAI,KAAK,iBAAA,EAAmB;AACnFyC,wBAAAA,MAAAA,CAAOI,SAAS,CAACvB,sBAAAA,CAAuBgC,SAAAA,CAAUV,KAAK,CAAA,CAAA;oBACzD,CAAA,MAAO;wBACLpC,kBAAAA,CAAmB;4BACjBsC,IAAAA,EAAM,QAAA;4BACNC,OAAAA,EAAS3B,cAAAA,CAAekC,UAAUV,KAAK;AACzC,yBAAA,CAAA;AACF,oBAAA;AAEA,oBAAA;AACF,gBAAA;AACF,YAAA;YAEApC,kBAAAA,CAAmB;gBACjBsC,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAASrC,aAAAA,CAAc;oBAAEN,EAAAA,EAAI,wBAAA;oBAA0BoD,cAAAA,EAAgB;AAAU,iBAAA;AACnF,aAAA,CAAA;YAEA5C,QAAAA,CAAS,CAAC,SAAS,EAAE8B,GAAAA,CAAIF,IAAI,CAACpC,EAAE,CAACqD,QAAQ,EAAA,CAAA,CAAI,EAAE;gBAAEC,OAAAA,EAAS;AAAK,aAAA,CAAA;AACjE,QAAA,CAAA,CAAE,OAAOC,GAAAA,EAAK;YACZnD,kBAAAA,CAAmB;gBACjBsC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASrC,aAAAA,CAAc;oBAAEN,EAAAA,EAAI,oBAAA;oBAAsBoD,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAI,0BAAC/B,IAA8BM,aAAAA,IAAkB,CAACJ,iBAAAA,EAAmB;QACvE,qBAAOiC,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;AAEA,IAAA,qBACEC,eAAA,CAACC,iBAAAA,EAAAA;;AACC,0BAAAJ,cAAA,CAACC,iBAAKI,KAAK,EAAA;0BACRvD,aAAAA,CACC;oBAAEN,EAAAA,EAAI,oBAAA;oBAAsBoD,cAAAA,EAAgB;iBAAoB,EAChE;oBACExD,IAAAA,EAAM;AACR,iBAAA;;0BAGJ4D,cAAA,CAACM,aAAAA,EAAAA;gBACCC,aAAAA,EACE;oBACEnE,IAAAA,EAAM,EAAA;AACNK,oBAAAA,WAAAA,EAAa,GAAGK,aAAAA,CAAc;wBAC5BN,EAAAA,EAAI,6BAAA;wBACJoD,cAAAA,EAAgB;AAClB,qBAAA,CAAA,CAAG,CAAC,EAAEY,cAAAA,CAAO,IAAIC,QAAQ,KAAA,CAAA,CAAA;AAC3B,iBAAA;gBAEFC,QAAAA,EAAU/B,sBAAAA;gBACVgC,gBAAAA,EAAkB3E,aAAAA;gBAClB4E,gBAAAA,EAAkB,KAAA;AAEjB,gBAAA,QAAA,EAAA,CAAC,EAAEC,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAEC,YAAY,EAAEC,YAAY,EAAE,iBAC3DjB,cAAA,CAACkB,WAAAA,EAAAA;gDACCf,eAAA,CAAAgB,mBAAA,EAAA;;AACE,8CAAAnB,cAAA,CAACoB,eAAQC,MAAM,EAAA;AACbC,oCAAAA,aAAAA,gBACEnB,eAAA,CAACoB,iBAAAA,EAAAA;wCAAKC,KAAAA,EAAM,MAAA;wCAAOC,GAAAA,EAAK,CAAA;;0DACtBzB,cAAA,CAAC0B,mBAAAA,EAAAA;gDACCC,OAAAA,EAAQ,WAAA;gDACRC,OAAAA,EAAS,IAAA;AACPb,oDAAAA,WAAAA,EAAAA;AACA7D,oDAAAA,cAAAA,CAAemC,OAAO,EAAEwC,SAAAA,EAAAA;AAC1B,gDAAA,CAAA;gDACAC,SAAS,EAAA,IAAA;0DAERhF,aAAAA,CAAc;oDACbN,EAAAA,EAAI,6BAAA;oDACJoD,cAAAA,EAAgB;AAClB,iDAAA;;0DAEFI,cAAA,CAAC0B,mBAAAA,EAAAA;gDAAOxC,IAAAA,EAAK,QAAA;gDAAS6C,OAAAA,EAASd,YAAAA;AAAce,gDAAAA,SAAAA,gBAAWhC,cAAA,CAACiC,WAAAA,EAAAA,EAAAA,CAAAA;gDAAUH,SAAS,EAAA,IAAA;0DACzEhF,aAAAA,CAAc;oDACbN,EAAAA,EAAI,aAAA;oDACJoD,cAAAA,EAAgB;AAClB,iDAAA;;;;AAINsC,oCAAAA,KAAAA,EAAOpF,aAAAA,CAAc;wCACnBN,EAAAA,EAAI,6BAAA;wCACJoD,cAAAA,EAAgB;AAClB,qCAAA,CAAA;AACAuC,oCAAAA,QAAAA,EAAUrF,aAAAA,CAAc;wCACtBN,EAAAA,EAAI,mCAAA;wCACJoD,cAAAA,EAAgB;AAClB,qCAAA,CAAA;AACAwC,oCAAAA,gBAAAA;kDAEEpC,cAAA,CAACqC,gBAAAA,EAAAA;wCAAIC,OAAAA,EAAS;4CAAEC,OAAAA,EAAS,MAAA;4CAAQC,MAAAA,EAAQ;AAAQ,yCAAA;AAC/C,wCAAA,QAAA,gBAAAxC,cAAA,CAACyC,qBAAAA,EAAAA;4CAAWC,QAAAA,EAAS;;;;AAI3B,8CAAA1C,cAAA,CAACoB,eAAQuB,OAAO,EAAA;AACd,oCAAA,QAAA,gBAAAxC,eAAA,CAACoB,iBAAAA,EAAAA;wCAAKqB,SAAAA,EAAU,QAAA;wCAASC,UAAAA,EAAW,SAAA;wCAAUpB,GAAAA,EAAK,CAAA;;0DACjDzB,cAAA,CAACqC,gBAAAA,EAAAA;gDAAIS,UAAAA,EAAW,UAAA;gDAAWC,OAAAA,EAAS,CAAA;gDAAGC,MAAAA,EAAO,cAAA;gDAAeC,SAAS,EAAA,IAAA;AACpE,gDAAA,QAAA,gBAAA9C,eAAA,CAACoB,iBAAAA,EAAAA;oDAAKqB,SAAAA,EAAU,QAAA;oDAASC,UAAAA,EAAW,SAAA;oDAAUpB,GAAAA,EAAK,CAAA;;sEACjDtB,eAAA,CAACoB,iBAAAA,EAAAA;4DAAK2B,cAAAA,EAAe,eAAA;;8EACnB/C,eAAA,CAACkC,gBAAAA,EAAAA;;sFACCrC,cAAA,CAACqC,gBAAAA,EAAAA;AACC,4EAAA,QAAA,gBAAArC,cAAA,CAACmD,uBAAAA,EAAAA;gFAAWC,UAAAA,EAAW,MAAA;0FACpBtG,aAAAA,CAAc;oFACbN,EAAAA,EAAI,gBAAA;oFACJoD,cAAAA,EAAgB;AAClB,iFAAA;;;sFAGJI,cAAA,CAACqC,gBAAAA,EAAAA;AACC,4EAAA,QAAA,gBAAArC,cAAA,CAACmD,uBAAAA,EAAAA;gFAAWxB,OAAAA,EAAQ,IAAA;gFAAK0B,SAAAA,EAAU,YAAA;0FAChCvG,aAAAA,CAAc;oFACbN,EAAAA,EAAI,iCAAA;oFACJoD,cAAAA,EAAgB;AAClB,iFAAA;;;;;8EAINI,cAAA,CAACsD,eAAAA,EAAAA;8EACExG,aAAAA,CACC;wEACEN,EAAAA,EAAI,4CAAA;wEACJoD,cAAAA,EACE;qEACJ,EACA;wEAAE2D,MAAAA,EAAQ;AAAE,qEAAA;;;;AAIlB,sEAAApD,eAAA,CAACqD,kBAAKC,IAAI,EAAA;4DAAChC,GAAAA,EAAK,CAAA;;AACd,8EAAAzB,cAAA,CAACwD,kBAAKE,IAAI,EAAA;oEAACC,CAAAA,EAAG,CAAA;oEAAGC,EAAAA,EAAI,EAAA;oEAAIhB,SAAAA,EAAU,QAAA;oEAASC,UAAAA,EAAW,SAAA;4FACrD1C,eAAA,CAAC0D,mBAAMJ,IAAI,EAAA;wEACTrH,IAAAA,EAAK,MAAA;wEACL4C,KAAAA,EAAO8B,MAAAA,CAAO1E,IAAI,IAAIU,aAAAA,CAAc;AAAEN,4EAAAA,EAAAA,EAAIsE,OAAO1E;AAAK,yEAAA,CAAA;wEACtDE,QAAQ,EAAA,IAAA;;AAER,0FAAA0D,cAAA,CAAC6D,mBAAMC,KAAK,EAAA;0FACThH,aAAAA,CAAc;oFACbN,EAAAA,EAAI,aAAA;oFACJoD,cAAAA,EAAgB;AAClB,iFAAA;;0FAEFI,cAAA,CAAC+D,sBAAAA,EAAAA;gFAAU7E,IAAAA,EAAK,MAAA;gFAAO8E,QAAAA,EAAUhD,YAAAA;AAAciD,gFAAAA,KAAAA,EAAOpD,OAAOzE;;AAC7D,0FAAA4D,cAAA,CAAC6D,mBAAMK,KAAK,EAAA,EAAA;;;;AAGhB,8EAAAlE,cAAA,CAACwD,kBAAKE,IAAI,EAAA;oEAACC,CAAAA,EAAG,CAAA;oEAAGC,EAAAA,EAAI,EAAA;oEAAIhB,SAAAA,EAAU,QAAA;oEAASC,UAAAA,EAAW,SAAA;4FACrD1C,eAAA,CAAC0D,mBAAMJ,IAAI,EAAA;wEACTrH,IAAAA,EAAK,aAAA;wEACL4C,KAAAA,EAAO8B,MAAAA,CAAOrE,WAAW,IAAIK,aAAAA,CAAc;AAAEN,4EAAAA,EAAAA,EAAIsE,OAAOrE;AAAY,yEAAA,CAAA;;AAEpE,0FAAAuD,cAAA,CAAC6D,mBAAMC,KAAK,EAAA;0FACThH,aAAAA,CAAc;oFACbN,EAAAA,EAAI,oBAAA;oFACJoD,cAAAA,EAAgB;AAClB,iFAAA;;0FAEFI,cAAA,CAACmE,qBAAAA,EAAAA;gFAASH,QAAAA,EAAUhD,YAAAA;AAAciD,gFAAAA,KAAAA,EAAOpD,OAAOpE;;;;;;;;;;0DAM1DuD,cAAA,CAACqC,gBAAAA,EAAAA;gDAAIW,MAAAA,EAAO,cAAA;gDAAeC,SAAS,EAAA,IAAA;AAClC,gDAAA,QAAA,gBAAAjD,cAAA,CAACoE,uBAAAA,EAAAA;oDACCC,cAAAA,EAAgB,KAAA;oDAChBC,GAAAA,EAAKpH,cAAAA;oDACLyC,WAAAA,EAAazB,eAAAA;oDACbqG,MAAAA,EAAQxG;;;;;;;;;;;;AAW9B;AAEA,MAAMuF,eAAAA,GAAkBkB,aAAAA,CAAOC,GAAG;oBACd,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;cAC/C,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACE,UAAU,CAAC;AAC5C,WAAA,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAK,CAAA,EAAGA,MAAMI,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC,EAAEJ,KAAAA,CAAMI,MAAM,CAAC,CAAA,CAAE,EAAE,CAAC;SAC3D,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACI,UAAU,CAAC;AACjC,iBAAA,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAAA,CAAMM,YAAY,CAAC;;;AAGrD,CAAC;AAED;;AAEkG,2GAE5FC,mBAAAA,GAAsB,IAAA;IAC1B,MAAMtF,WAAAA,GAAcuF,sBAAAA,CAClB,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,SAAS,CAACzF,WAAW,CAAC0F,QAAQ,EAAEC,KAAAA,CAAMC,MAAAA,CAAAA;IAGzD,qBACEvF,cAAA,CAACC,iBAAKuF,OAAO,EAAA;QAAC7F,WAAAA,EAAaA,WAAAA;AACzB,QAAA,QAAA,gBAAAK,cAAA,CAACtD,UAAAA,EAAAA,EAAAA;;AAGP;;;;;"}
@@ -22,7 +22,8 @@ var translatedErrors = require('../../../../utils/translatedErrors.js');
22
22
  var Permissions = require('./components/Permissions.js');
23
23
  var RoleForm = require('./components/RoleForm.js');
24
24
 
25
- function _interopNamespaceDefault(e) {
25
+ function _interopNamespace(e) {
26
+ if (e && e.__esModule) return e;
26
27
  var n = Object.create(null);
27
28
  if (e) {
28
29
  Object.keys(e).forEach(function (k) {
@@ -39,8 +40,8 @@ function _interopNamespaceDefault(e) {
39
40
  return Object.freeze(n);
40
41
  }
41
42
 
42
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
43
- var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
43
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
44
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
44
45
 
45
46
  const EDIT_ROLE_SCHEMA = yup__namespace.object().shape({
46
47
  name: yup__namespace.string().required(translatedErrors.translatedErrors.required.id),
@@ -1 +1 @@
1
- {"version":3,"file":"EditPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Navigate to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n if (isLoadingPermissionsLayout || isRoleLoading || isLoadingPermissions || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n <Button\n type=\"submit\"\n startIcon={<Check />}\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.update\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":["EDIT_ROLE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","optional","EditPage","toggleNotification","useNotification","formatMessage","useIntl","match","useMatch","params","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","data","permissionsLayout","useGetRolePermissionLayoutQuery","role","roles","isRoleLoading","refetch","refetchRole","useAdminRoles","refetchOnMountOrArgChange","permissions","isLoadingPermissions","useGetRolePermissionsQuery","skip","updateRole","useUpdateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","_jsx","Navigate","to","handleEditRoleSubmit","formik","permissionsToSend","didUpdateConditions","current","getPermissions","res","isBaseQueryError","error","setErrors","type","message","code","updateRes","setFormAfterSubmit","defaultMessage","isFormDisabled","Page","Loading","_jsxs","Main","Title","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","validateOnChange","handleSubmit","values","errors","handleChange","handleBlur","isSubmitting","form","Layouts","Header","primaryAction","Button","startIcon","Check","disabled","loading","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","direction","alignItems","gap","RoleForm","onChange","onBlur","shadow","hasRadius","Permissions","ref","layout","ProtectedEditPage","useTypedSelector","state","admin_app","settings","update","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"EditPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAdminRoles } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport {\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRoleMutation,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\nimport { RoleForm } from './components/RoleForm';\n\nconst EDIT_ROLE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required.id),\n description: yup.string().optional(),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface EditRoleFormValues {\n name: string;\n description: string;\n}\n\nconst EditPage = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/roles/:id');\n const id = match?.params.id;\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n const {\n roles,\n isLoading: isRoleLoading,\n refetch: refetchRole,\n } = useAdminRoles(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const role = roles[0] ?? {};\n\n const { data: permissions, isLoading: isLoadingPermissions } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [updateRole] = useUpdateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n if (!id) {\n return <Navigate to=\"/settings/roles\" />;\n }\n\n const handleEditRoleSubmit = async (\n data: EditRoleFormValues,\n formik: FormikHelpers<EditRoleFormValues>\n ) => {\n try {\n const { permissionsToSend, didUpdateConditions } =\n permissionsRef.current?.getPermissions() ?? {};\n\n const res = await updateRole({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n if (role.code !== 'strapi-super-admin' && permissionsToSend) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n\n if (didUpdateConditions) {\n trackUsage('didUpdateConditions');\n }\n }\n\n permissionsRef.current?.setFormAfterSubmit();\n\n await refetchRole();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const isFormDisabled = !isRoleLoading && role.code === 'strapi-super-admin';\n\n if (isLoadingPermissionsLayout || isRoleLoading || isLoadingPermissions || !permissionsLayout) {\n return <Page.Loading />;\n }\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={\n {\n name: role.name ?? '',\n description: role.description ?? '',\n } satisfies EditRoleFormValues\n }\n onSubmit={handleEditRoleSubmit}\n validationSchema={EDIT_ROLE_SCHEMA}\n validateOnChange={false}\n >\n {({ handleSubmit, values, errors, handleChange, handleBlur, isSubmitting }) => (\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n <Button\n type=\"submit\"\n startIcon={<Check />}\n disabled={role.code === 'strapi-super-admin'}\n loading={isSubmitting}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.roles.edit.title',\n defaultMessage: 'Edit a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"../roles\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <RoleForm\n disabled={isFormDisabled}\n errors={errors}\n values={values}\n onChange={handleChange}\n onBlur={handleBlur}\n role={role}\n />\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={isFormDisabled}\n permissions={permissions}\n ref={permissionsRef}\n layout={permissionsLayout}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.update\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\nexport type { EditRoleFormValues };\n"],"names":["EDIT_ROLE_SCHEMA","yup","object","shape","name","string","required","translatedErrors","id","description","optional","EditPage","toggleNotification","useNotification","formatMessage","useIntl","match","useMatch","params","permissionsRef","React","useRef","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingPermissionsLayout","data","permissionsLayout","useGetRolePermissionLayoutQuery","role","roles","isRoleLoading","refetch","refetchRole","useAdminRoles","refetchOnMountOrArgChange","permissions","isLoadingPermissions","useGetRolePermissionsQuery","skip","updateRole","useUpdateRoleMutation","updateRolePermissions","useUpdateRolePermissionsMutation","_jsx","Navigate","to","handleEditRoleSubmit","formik","permissionsToSend","didUpdateConditions","current","getPermissions","res","isBaseQueryError","error","setErrors","type","message","code","updateRes","setFormAfterSubmit","defaultMessage","isFormDisabled","Page","Loading","_jsxs","Main","Title","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","validateOnChange","handleSubmit","values","errors","handleChange","handleBlur","isSubmitting","form","Layouts","Header","primaryAction","Button","startIcon","Check","disabled","loading","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","direction","alignItems","gap","RoleForm","onChange","onBlur","shadow","hasRadius","Permissions","ref","layout","ProtectedEditPage","useTypedSelector","state","admin_app","settings","update","Protect"],"mappings":"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"}
@@ -22,7 +22,8 @@ var selectors = require('../../../../selectors.js');
22
22
  var getFetchClient = require('../../../../utils/getFetchClient.js');
23
23
  var RoleRow = require('./components/RoleRow.js');
24
24
 
25
- function _interopNamespaceDefault(e) {
25
+ function _interopNamespace(e) {
26
+ if (e && e.__esModule) return e;
26
27
  var n = Object.create(null);
27
28
  if (e) {
28
29
  Object.keys(e).forEach(function (k) {
@@ -39,7 +40,7 @@ function _interopNamespaceDefault(e) {
39
40
  return Object.freeze(n);
40
41
  }
41
42
 
42
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
43
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
43
44
 
44
45
  const ListPage = ()=>{
45
46
  const { formatMessage } = reactIntl.useIntl();
@@ -1 +1 @@
1
- {"version":3,"file":"ListPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isFetchError } from '../../../../utils/getFetchClient';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (isFetchError(error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\" fullWidth>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n />\n {canRead && (\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <Layouts.Content>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter cursor=\"pointer\" onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n cursor=\"pointer\"\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n children: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n children: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n children: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </Layouts.Content>\n )}\n <Dialog.Root open={isWarningDeleteAllOpened} onOpenChange={handleToggleModal}>\n <ConfirmDialog onConfirm={handleDeleteData} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["ListPage","formatMessage","useIntl","permissions","useTypedSelector","selectAdminPermissions","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","isWarningDeleteAllOpened","setIsWarningDeleteAllOpenend","React","useState","query","useQueryParams","isLoading","isLoadingForPermissions","allowedActions","canCreate","canDelete","canRead","canUpdate","useRBAC","settings","roles","refetch","refetchRoles","useAdminRoles","filters","_q","name","$containsi","undefined","refetchOnMountOrArgChange","skip","navigate","useNavigate","roleToDelete","dispatch","useReducer","reducer","initialState","post","useFetchClient","handleDeleteData","type","ids","error","isFetchError","message","handleNewRoleClick","handleToggleModal","prev","handleClickDelete","role","e","preventDefault","stopPropagation","usersCount","id","handleClickDuplicate","rowCount","length","colCount","_jsx","Page","Loading","_jsxs","Main","Title","defaultMessage","Layouts","Header","primaryAction","Button","onClick","startIcon","Plus","size","fullWidth","title","subtitle","Action","startActions","SearchInput","label","target","Content","Table","footer","TFooter","cursor","icon","Thead","Tr","aria-rowindex","Th","Typography","variant","textColor","VisuallyHidden","Tbody","map","index","RoleRow","description","icons","children","Duplicate","toString","Pencil","Trash","filter","Boolean","rowIndex","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","showModalConfirmButtonLoading","shouldRefetchData","state","action","produce","draftState","ProtectedListPage","admin_app","read","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"ListPage.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isFetchError } from '../../../../utils/getFetchClient';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (isFetchError(error)) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\" fullWidth>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n />\n {canRead && (\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <Layouts.Content>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter cursor=\"pointer\" onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n cursor=\"pointer\"\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n children: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n children: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n children: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </Layouts.Content>\n )}\n <Dialog.Root open={isWarningDeleteAllOpened} onOpenChange={handleToggleModal}>\n <ConfirmDialog onConfirm={handleDeleteData} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["ListPage","formatMessage","useIntl","permissions","useTypedSelector","selectAdminPermissions","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","isWarningDeleteAllOpened","setIsWarningDeleteAllOpenend","React","useState","query","useQueryParams","isLoading","isLoadingForPermissions","allowedActions","canCreate","canDelete","canRead","canUpdate","useRBAC","settings","roles","refetch","refetchRoles","useAdminRoles","filters","_q","name","$containsi","undefined","refetchOnMountOrArgChange","skip","navigate","useNavigate","roleToDelete","dispatch","useReducer","reducer","initialState","post","useFetchClient","handleDeleteData","type","ids","error","isFetchError","message","handleNewRoleClick","handleToggleModal","prev","handleClickDelete","role","e","preventDefault","stopPropagation","usersCount","id","handleClickDuplicate","rowCount","length","colCount","_jsx","Page","Loading","_jsxs","Main","Title","defaultMessage","Layouts","Header","primaryAction","Button","onClick","startIcon","Plus","size","fullWidth","title","subtitle","Action","startActions","SearchInput","label","target","Content","Table","footer","TFooter","cursor","icon","Thead","Tr","aria-rowindex","Th","Typography","variant","textColor","VisuallyHidden","Tbody","map","index","RoleRow","description","icons","children","Duplicate","toString","Pencil","Trash","filter","Boolean","rowIndex","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","showModalConfirmButtonLoading","shouldRefetchData","state","action","produce","draftState","ProtectedListPage","admin_app","read","Protect"],"mappings":"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"}
@@ -15,7 +15,10 @@ var HiddenAction = require('./HiddenAction.js');
15
15
  var RequiredSign = require('./RequiredSign.js');
16
16
  var RowLabelWithCheckbox = require('./RowLabelWithCheckbox.js');
17
17
 
18
- function _interopNamespaceDefault(e) {
18
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
19
+
20
+ function _interopNamespace(e) {
21
+ if (e && e.__esModule) return e;
19
22
  var n = Object.create(null);
20
23
  if (e) {
21
24
  Object.keys(e).forEach(function (k) {
@@ -32,7 +35,8 @@ function _interopNamespaceDefault(e) {
32
35
  return Object.freeze(n);
33
36
  }
34
37
 
35
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
38
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
39
+ var get__default = /*#__PURE__*/_interopDefault(get);
36
40
 
37
41
  const CollapsePropertyMatrix = ({ availableActions = [], childrenForm = [], isFormDisabled, label, pathToData, propertyName, subject })=>{
38
42
  const propertyActions = React__namespace.useMemo(()=>availableActions.map((action)=>{
@@ -150,7 +154,7 @@ const ActionRow = ({ childrenForm = [], label, isFormDisabled = false, name, req
150
154
  name
151
155
  ];
152
156
  if (!isCollapsable) {
153
- const checkboxValue = get(modifiedData, checkboxName, false);
157
+ const checkboxValue = get__default.default(modifiedData, checkboxName, false);
154
158
  const fieldPath = propertyName === 'fields' ? name : undefined;
155
159
  const userHasPermission = checkUserHasPermission(actionId, subject, fieldPath);
156
160
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
@@ -179,7 +183,7 @@ const ActionRow = ({ childrenForm = [], label, isFormDisabled = false, name, req
179
183
  })
180
184
  }, actionId);
181
185
  }
182
- const data = get(modifiedData, checkboxName, {});
186
+ const data = get__default.default(modifiedData, checkboxName, {});
183
187
  const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState.getCheckboxState(data);
184
188
  const fieldPath = propertyName === 'fields' ? name : undefined;
185
189
  const userHasPermission = checkUserHasPermission(actionId, subject, fieldPath);
@@ -237,7 +241,7 @@ const ActionRow = ({ childrenForm = [], label, isFormDisabled = false, name, req
237
241
  return acc;
238
242
  }, []);
239
243
  const data = actionIds.reduce((acc, current)=>{
240
- const mainData = get(modifiedData, [
244
+ const mainData = get__default.default(modifiedData, [
241
245
  ...pathToContentType.split('..'),
242
246
  current,
243
247
  'properties',
@@ -380,7 +384,7 @@ const SubActionRow = ({ childrenForm = [], isFormDisabled, recursiveLevel, pathT
380
384
  ...parentName.split('..'),
381
385
  value
382
386
  ];
383
- const checkboxValue = get(modifiedData, checkboxName, false);
387
+ const checkboxValue = get__default.default(modifiedData, checkboxName, false);
384
388
  if (!subChildrenForm) {
385
389
  const fieldPath = propertyName === 'fields' ? `${parentName}.${value}` : undefined;
386
390
  const userHasPermission = checkUserHasPermission(actionId, subject, fieldPath);