@strapi/admin 5.48.1 → 5.50.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 (657) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +33 -20
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +6 -1
  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/ErrorElement.js +97 -2
  12. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  13. package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
  14. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/Filters.js +3 -2
  16. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  17. package/dist/admin/admin/src/components/Form.js +9 -5
  18. package/dist/admin/admin/src/components/Form.js.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  20. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  22. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  24. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  26. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  27. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  28. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  30. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  31. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  32. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  33. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  34. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  35. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  36. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  38. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  40. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  41. package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
  42. package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
  43. package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
  44. package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
  45. package/dist/admin/admin/src/components/LeftMenu.js +3 -2
  46. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  47. package/dist/admin/admin/src/components/MainNav/NavUser.js +10 -0
  48. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  49. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
  50. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  52. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  53. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  54. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  55. package/dist/admin/admin/src/components/Pagination.js +3 -2
  56. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  57. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  58. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  59. package/dist/admin/admin/src/components/RelativeTime.js +6 -4
  60. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  61. package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
  62. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  63. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  64. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  65. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  66. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  67. package/dist/admin/admin/src/components/Table.js +3 -2
  68. package/dist/admin/admin/src/components/Table.js.map +1 -1
  69. package/dist/admin/admin/src/components/Theme.js +3 -2
  70. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  71. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  72. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  73. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  74. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  75. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  76. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  77. package/dist/admin/admin/src/core/apis/router.js +39 -33
  78. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  79. package/dist/admin/admin/src/core/apis/router.mjs +19 -17
  80. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  81. package/dist/admin/admin/src/features/Auth.js +78 -6
  82. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  83. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  84. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  85. package/dist/admin/admin/src/features/BackButton.js +3 -2
  86. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  87. package/dist/admin/admin/src/features/Configuration.js +3 -2
  88. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  89. package/dist/admin/admin/src/features/Notifications.js +3 -2
  90. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  91. package/dist/admin/admin/src/features/Tracking.js +7 -3
  92. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  93. package/dist/admin/admin/src/features/Widgets.js +3 -2
  94. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  95. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  96. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  97. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  98. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  99. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  100. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  101. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  102. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  103. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  104. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  105. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  106. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  107. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  108. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  109. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  110. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  111. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  112. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  113. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  114. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  115. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  116. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  117. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  118. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  119. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  120. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  121. package/dist/admin/admin/src/hooks/useMenu.js +7 -3
  122. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  123. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  124. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  125. package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
  126. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  127. package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
  128. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  129. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  130. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  131. package/dist/admin/admin/src/hooks/useSettingsMenu.js +7 -3
  132. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  133. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  134. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  135. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -7
  136. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  137. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -2
  138. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
  140. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  141. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
  142. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  144. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  145. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  146. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  147. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  148. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  150. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  151. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  152. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  153. package/dist/admin/admin/src/pages/Home/HomePage.js +3 -2
  154. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  155. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  156. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  157. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +7 -3
  158. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  160. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  161. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  162. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  163. package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
  164. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
  165. package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
  166. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
  167. package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
  168. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
  170. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  172. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  174. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  176. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  178. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  179. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  180. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  181. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  182. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  184. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  186. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  188. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  192. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  194. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +4 -2
  196. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -0
  198. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  200. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +11 -3
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +11 -4
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  211. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  212. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  213. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -6
  214. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  215. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
  216. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  217. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  218. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  219. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  220. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  221. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  222. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  223. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  224. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  225. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +71 -27
  226. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  227. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
  228. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  229. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  230. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  231. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  232. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  233. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  234. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  235. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +26 -4
  236. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  237. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
  238. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  239. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  240. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  241. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
  242. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
  243. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
  244. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
  245. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  246. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  247. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  248. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  249. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  250. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  251. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  252. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  253. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  254. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  255. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  256. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  257. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  258. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  259. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  260. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  261. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  262. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  263. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  264. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  265. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  266. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  267. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  268. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  269. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  270. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  271. package/dist/admin/admin/src/router.js +9 -0
  272. package/dist/admin/admin/src/router.js.map +1 -1
  273. package/dist/admin/admin/src/router.mjs +9 -0
  274. package/dist/admin/admin/src/router.mjs.map +1 -1
  275. package/dist/admin/admin/src/services/auth.js +43 -2
  276. package/dist/admin/admin/src/services/auth.js.map +1 -1
  277. package/dist/admin/admin/src/services/auth.mjs +41 -3
  278. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  279. package/dist/admin/admin/src/translations/en.json.js +22 -0
  280. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  281. package/dist/admin/admin/src/translations/en.json.mjs +22 -0
  282. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  283. package/dist/admin/admin/src/translations/ja.json.js +748 -265
  284. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  285. package/dist/admin/admin/src/translations/ja.json.mjs +745 -266
  286. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  287. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
  288. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  289. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
  290. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  291. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  292. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  293. package/dist/admin/admin/src/utils/locales.js +3 -2
  294. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  295. package/dist/admin/admin/src/utils/objects.js +9 -4
  296. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  297. package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
  298. package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
  299. package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
  300. package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
  301. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  302. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  303. package/dist/admin/admin/src/utils/urls.js +5 -1
  304. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  305. package/dist/admin/admin/tests/server.js +25 -0
  306. package/dist/admin/admin/tests/server.js.map +1 -1
  307. package/dist/admin/admin/tests/server.mjs +25 -0
  308. package/dist/admin/admin/tests/server.mjs.map +1 -1
  309. package/dist/admin/admin/tests/utils.js +3 -2
  310. package/dist/admin/admin/tests/utils.js.map +1 -1
  311. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  312. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  313. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  314. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  315. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  316. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  317. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  318. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  319. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  320. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  321. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  322. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  323. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  324. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  325. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  326. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  327. package/dist/admin/index.js +2 -0
  328. package/dist/admin/index.js.map +1 -1
  329. package/dist/admin/index.mjs +1 -0
  330. package/dist/admin/index.mjs.map +1 -1
  331. package/dist/admin/src/StrapiApp.d.ts +11 -5
  332. package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
  333. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
  334. package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
  335. package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
  336. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
  337. package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
  338. package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
  339. package/dist/admin/src/components/FormInputs/Renderer.d.ts +0 -1
  340. package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
  341. package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
  342. package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
  343. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
  344. package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
  345. package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
  346. package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
  347. package/dist/admin/src/components/SubNav.d.ts +5 -6
  348. package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
  349. package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
  350. package/dist/admin/src/core/apis/router.d.ts +2 -3
  351. package/dist/admin/src/core/store/configure.d.ts +2 -2
  352. package/dist/admin/src/core/utils/createHook.d.ts +4 -4
  353. package/dist/admin/src/features/AppInfo.d.ts +1 -2
  354. package/dist/admin/src/features/StrapiApp.d.ts +1 -2
  355. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  356. package/dist/admin/src/hooks/useAdminRoles.d.ts +2 -2
  357. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  358. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  359. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  360. package/dist/admin/src/hooks/useQueryParams.d.ts +1 -1
  361. package/dist/admin/src/hooks/useThrottledCallback.d.ts +0 -1
  362. package/dist/admin/src/index.d.ts +1 -0
  363. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  364. package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
  365. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
  366. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  367. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
  368. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
  369. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
  370. package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
  371. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
  372. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
  373. package/dist/admin/src/reducer.d.ts +1 -1
  374. package/dist/admin/src/services/admin.d.ts +2 -2
  375. package/dist/admin/src/services/api.d.ts +1 -1
  376. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  377. package/dist/admin/src/services/auth.d.ts +29 -27
  378. package/dist/admin/src/services/contentApi.d.ts +1 -1
  379. package/dist/admin/src/services/users.d.ts +7 -7
  380. package/dist/admin/src/services/webhooks.d.ts +2 -2
  381. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
  382. package/dist/admin/src/utils/locales.d.ts +0 -1
  383. package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
  384. package/dist/admin/src/utils/shims.d.ts +1 -1
  385. package/dist/admin/tests/store.d.ts +4 -4
  386. package/dist/admin/tests/utils.d.ts +5 -5
  387. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
  388. package/dist/ee/admin/src/services/ai.d.ts +2 -2
  389. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
  390. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
  391. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
  392. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  393. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
  394. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
  395. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  396. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
  397. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  398. package/dist/ee/server/src/controllers/index.d.ts +1 -2
  399. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  400. package/dist/ee/server/src/controllers/user.d.ts +1 -1
  401. package/dist/ee/server/src/destroy.d.ts.map +1 -1
  402. package/dist/ee/server/src/index.d.ts +2 -3
  403. package/dist/ee/server/src/index.d.ts.map +1 -1
  404. package/dist/ee/server/src/register.d.ts.map +1 -1
  405. package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
  406. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  407. package/dist/ee/server/src/services/index.d.ts +1 -1
  408. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  409. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
  410. package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
  411. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  412. package/dist/ee/server/src/services/role.d.ts.map +1 -1
  413. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  414. package/dist/ee/server/src/utils/index.d.ts.map +1 -1
  415. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
  416. package/dist/ee/server/src/validation/authentication.d.ts +2 -2
  417. package/dist/ee/server/src/validation/role.d.ts +6 -6
  418. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  419. package/dist/ee/server/src/validation/user.d.ts.map +1 -1
  420. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  421. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  422. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  423. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  424. package/dist/server/ee/server/src/controllers/user.js +6 -2
  425. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  426. package/dist/server/ee/server/src/services/auth.js +5 -1
  427. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  428. package/dist/server/ee/server/src/services/user.js +8 -4
  429. package/dist/server/ee/server/src/services/user.js.map +1 -1
  430. package/dist/server/index.js +6 -2
  431. package/dist/server/index.js.map +1 -1
  432. package/dist/server/server/src/ai/services/ai.js +10 -4
  433. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  434. package/dist/server/server/src/content-types/session.js +6 -0
  435. package/dist/server/server/src/content-types/session.js.map +1 -1
  436. package/dist/server/server/src/content-types/session.mjs +6 -0
  437. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  438. package/dist/server/server/src/controllers/admin.js +9 -4
  439. package/dist/server/server/src/controllers/admin.js.map +1 -1
  440. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  441. package/dist/server/server/src/controllers/authenticated-session.js +61 -0
  442. package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
  443. package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
  444. package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
  445. package/dist/server/server/src/controllers/authentication.js +18 -6
  446. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  447. package/dist/server/server/src/controllers/authentication.mjs +12 -5
  448. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  449. package/dist/server/server/src/controllers/index.js +2 -0
  450. package/dist/server/server/src/controllers/index.js.map +1 -1
  451. package/dist/server/server/src/controllers/index.mjs +2 -0
  452. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  453. package/dist/server/server/src/controllers/role.js +2 -4
  454. package/dist/server/server/src/controllers/role.js.map +1 -1
  455. package/dist/server/server/src/controllers/role.mjs +2 -4
  456. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  457. package/dist/server/server/src/controllers/user.js +3 -2
  458. package/dist/server/server/src/controllers/user.js.map +1 -1
  459. package/dist/server/server/src/controllers/webhooks.js +7 -2
  460. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  461. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  462. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  463. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  464. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  465. package/dist/server/server/src/routes/serve-admin-panel.js +9 -4
  466. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  467. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  468. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  469. package/dist/server/server/src/routes/users.js +12 -26
  470. package/dist/server/server/src/routes/users.js.map +1 -1
  471. package/dist/server/server/src/routes/users.mjs +12 -26
  472. package/dist/server/server/src/routes/users.mjs.map +1 -1
  473. package/dist/server/server/src/services/api-token.js +7 -3
  474. package/dist/server/server/src/services/api-token.js.map +1 -1
  475. package/dist/server/server/src/services/auth.js +8 -3
  476. package/dist/server/server/src/services/auth.js.map +1 -1
  477. package/dist/server/server/src/services/content-type.js +6 -2
  478. package/dist/server/server/src/services/content-type.js.map +1 -1
  479. package/dist/server/server/src/services/encryption.js +8 -4
  480. package/dist/server/server/src/services/encryption.js.map +1 -1
  481. package/dist/server/server/src/services/passport.js +6 -2
  482. package/dist/server/server/src/services/passport.js.map +1 -1
  483. package/dist/server/server/src/services/permission/engine.js +5 -1
  484. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  485. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  486. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  487. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  488. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  489. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
  490. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  491. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
  492. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  493. package/dist/server/server/src/services/permission/queries.js +5 -1
  494. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  495. package/dist/server/server/src/services/project-settings.js +6 -2
  496. package/dist/server/server/src/services/project-settings.js.map +1 -1
  497. package/dist/server/server/src/services/role.js +10 -5
  498. package/dist/server/server/src/services/role.js.map +1 -1
  499. package/dist/server/server/src/services/role.mjs +2 -1
  500. package/dist/server/server/src/services/role.mjs.map +1 -1
  501. package/dist/server/server/src/services/token.js +7 -2
  502. package/dist/server/server/src/services/token.js.map +1 -1
  503. package/dist/server/server/src/services/transfer/permission.js +5 -1
  504. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  505. package/dist/server/server/src/services/transfer/token.js +10 -5
  506. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  507. package/dist/server/server/src/services/user.js +10 -6
  508. package/dist/server/server/src/services/user.js.map +1 -1
  509. package/dist/server/server/src/strategies/admin.js +4 -0
  510. package/dist/server/server/src/strategies/admin.js.map +1 -1
  511. package/dist/server/server/src/strategies/admin.mjs +4 -0
  512. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  513. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  514. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  515. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  516. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  517. package/dist/server/server/src/validation/common-validators.js +6 -2
  518. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  519. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  520. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  521. package/dist/server/shared/utils/session-auth.js +5 -1
  522. package/dist/server/shared/utils/session-auth.js.map +1 -1
  523. package/dist/server/src/ai/controllers/ai.d.ts +3 -3
  524. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  525. package/dist/server/src/bootstrap.d.ts.map +1 -1
  526. package/dist/server/src/config/admin-conditions.d.ts +2 -2
  527. package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
  528. package/dist/server/src/content-types/index.d.ts +6 -0
  529. package/dist/server/src/content-types/index.d.ts.map +1 -1
  530. package/dist/server/src/content-types/session.d.ts +6 -0
  531. package/dist/server/src/content-types/session.d.ts.map +1 -1
  532. package/dist/server/src/controllers/admin-token.d.ts +5 -5
  533. package/dist/server/src/controllers/api-token.d.ts +1 -1
  534. package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
  535. package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
  536. package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
  537. package/dist/server/src/controllers/authentication.d.ts +4 -4
  538. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  539. package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
  540. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  541. package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
  542. package/dist/server/src/controllers/homepage.d.ts +2 -2
  543. package/dist/server/src/controllers/homepage.d.ts.map +1 -1
  544. package/dist/server/src/controllers/index.d.ts +33 -43
  545. package/dist/server/src/controllers/index.d.ts.map +1 -1
  546. package/dist/server/src/controllers/role.d.ts +4 -4
  547. package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
  548. package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
  549. package/dist/server/src/controllers/transfer/token.d.ts +1 -1
  550. package/dist/server/src/controllers/user.d.ts +2 -2
  551. package/dist/server/src/controllers/webhooks.d.ts +4 -4
  552. package/dist/server/src/domain/action/index.d.ts +4 -65
  553. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  554. package/dist/server/src/domain/action/provider.d.ts +30 -3
  555. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  556. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  557. package/dist/server/src/domain/condition/provider.d.ts +19 -2
  558. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  559. package/dist/server/src/domain/permission/index.d.ts +0 -1
  560. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  561. package/dist/server/src/domain/user.d.ts.map +1 -1
  562. package/dist/server/src/index.d.ts +51 -63
  563. package/dist/server/src/index.d.ts.map +1 -1
  564. package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
  565. package/dist/server/src/middlewares/index.d.ts +0 -1
  566. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  567. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  568. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  569. package/dist/server/src/policies/index.d.ts.map +1 -1
  570. package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
  571. package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
  572. package/dist/server/src/register.d.ts.map +1 -1
  573. package/dist/server/src/routes/index.d.ts +0 -1
  574. package/dist/server/src/routes/index.d.ts.map +1 -1
  575. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  576. package/dist/server/src/routes/transfer.d.ts +0 -1
  577. package/dist/server/src/routes/transfer.d.ts.map +1 -1
  578. package/dist/server/src/routes/users.d.ts.map +1 -1
  579. package/dist/server/src/services/action.d.ts.map +1 -1
  580. package/dist/server/src/services/api-token.d.ts +5 -6
  581. package/dist/server/src/services/api-token.d.ts.map +1 -1
  582. package/dist/server/src/services/auth.d.ts.map +1 -1
  583. package/dist/server/src/services/condition.d.ts.map +1 -1
  584. package/dist/server/src/services/content-type.d.ts.map +1 -1
  585. package/dist/server/src/services/encryption.d.ts.map +1 -1
  586. package/dist/server/src/services/homepage.d.ts.map +1 -1
  587. package/dist/server/src/services/index.d.ts +12 -21
  588. package/dist/server/src/services/index.d.ts.map +1 -1
  589. package/dist/server/src/services/metrics.d.ts.map +1 -1
  590. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  591. package/dist/server/src/services/passport.d.ts +0 -1
  592. package/dist/server/src/services/passport.d.ts.map +1 -1
  593. package/dist/server/src/services/permission/engine.d.ts +1 -2
  594. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  595. package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
  596. package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
  597. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  598. package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
  599. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
  600. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  601. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  602. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  603. package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
  604. package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
  605. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  606. package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
  607. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  608. package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
  609. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  610. package/dist/server/src/services/permission.d.ts +13 -38
  611. package/dist/server/src/services/permission.d.ts.map +1 -1
  612. package/dist/server/src/services/project-settings.d.ts +2 -4
  613. package/dist/server/src/services/project-settings.d.ts.map +1 -1
  614. package/dist/server/src/services/role.d.ts +7 -1
  615. package/dist/server/src/services/role.d.ts.map +1 -1
  616. package/dist/server/src/services/token.d.ts +1 -1
  617. package/dist/server/src/services/token.d.ts.map +1 -1
  618. package/dist/server/src/services/transfer/token.d.ts +11 -11
  619. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  620. package/dist/server/src/services/user.d.ts +3 -3
  621. package/dist/server/src/services/user.d.ts.map +1 -1
  622. package/dist/server/src/strategies/admin-token.d.ts +4 -4
  623. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  624. package/dist/server/src/strategies/admin.d.ts.map +1 -1
  625. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
  626. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  627. package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
  628. package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
  629. package/dist/server/src/validation/action-provider.d.ts +2 -2
  630. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  631. package/dist/server/src/validation/admin-tokens.d.ts +2 -2
  632. package/dist/server/src/validation/api-tokens.d.ts +4 -4
  633. package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
  634. package/dist/server/src/validation/authentication/login.d.ts +1 -1
  635. package/dist/server/src/validation/authentication/register.d.ts +6 -6
  636. package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
  637. package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
  638. package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
  639. package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
  640. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  641. package/dist/server/src/validation/permission.d.ts +6 -6
  642. package/dist/server/src/validation/permission.d.ts.map +1 -1
  643. package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
  644. package/dist/server/src/validation/project-settings.d.ts +6 -6
  645. package/dist/server/src/validation/role.d.ts +8 -8
  646. package/dist/server/src/validation/role.d.ts.map +1 -1
  647. package/dist/server/src/validation/transfer/token.d.ts +4 -4
  648. package/dist/server/src/validation/user.d.ts +8 -8
  649. package/dist/shared/contracts/permissions.d.ts +1 -0
  650. package/dist/shared/contracts/permissions.d.ts.map +1 -1
  651. package/dist/shared/contracts/sessions.d.ts +62 -0
  652. package/dist/shared/contracts/sessions.d.ts.map +1 -0
  653. package/dist/shared/contracts/shared.d.ts +1 -1
  654. package/dist/shared/contracts/shared.d.ts.map +1 -1
  655. package/dist/shared/utils/session-auth.d.ts +1 -1
  656. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  657. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"PluginsAndSettings.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const {\n modifiedData,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n checkUserHasPermission,\n userPermissions,\n } = usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n const userHasPermission = checkUserHasPermission(action, null);\n\n return (\n <Grid.Item col={4} m={6} xs={12} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper\n $disabled={isFormDisabled || !userHasPermission}\n $hasConditions={hasConditions}\n >\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled || !userHasPermission}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n isReadOnly={userPermissions !== undefined}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","checkUserHasPermission","userPermissions","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","userHasPermission","col","m","xs","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","isReadOnly","undefined","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
1
+ {"version":3,"file":"PluginsAndSettings.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const {\n modifiedData,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n checkUserHasPermission,\n userPermissions,\n } = usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n const userHasPermission = checkUserHasPermission(action, null);\n\n return (\n <Grid.Item col={4} m={6} xs={12} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper\n $disabled={isFormDisabled || !userHasPermission}\n $hasConditions={hasConditions}\n >\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled || !userHasPermission}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n isReadOnly={userPermissions !== undefined}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","checkUserHasPermission","userPermissions","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","userHasPermission","col","m","xs","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","isReadOnly","undefined","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
@@ -4,7 +4,8 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var reactContext = require('@radix-ui/react-context');
6
6
 
7
- function _interopNamespaceDefault(e) {
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
8
9
  var n = Object.create(null);
9
10
  if (e) {
10
11
  Object.keys(e).forEach(function (k) {
@@ -21,7 +22,7 @@ function _interopNamespaceDefault(e) {
21
22
  return Object.freeze(n);
22
23
  }
23
24
 
24
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
25
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
25
26
 
26
27
  // eslint-disable-next-line check-file/filename-naming-convention
27
28
  const [PermissionsDataManagerProviderRaw, usePermissionsDataManagerContext] = reactContext.createContext('PermissionsDataManager');
@@ -1 +1 @@
1
- {"version":3,"file":"usePermissionsDataManager.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.tsx"],"sourcesContent":["// eslint-disable-next-line check-file/filename-naming-convention\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { Condition } from '../../../../../../../shared/contracts/permissions';\nimport { Permission as AuthPermission } from '../../../../../features/Auth';\n\nimport type {\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n State,\n} from '../components/Permissions';\n\n// Note: I had to guess most of these types based on the name and usage, but I actually don't\n// know if they are correct, because the usage is very generic. Feel free to correct them if\n// they create problems.\nexport interface PermissionsDataManagerContextValue extends Pick<State, 'modifiedData'> {\n availableConditions: Condition[];\n onChangeCollectionTypeLeftActionRowCheckbox: (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => void;\n onChangeConditions: (conditions: OnChangeConditionsAction['conditions']) => void;\n onChangeSimpleCheckbox: (event: { target: { name: string; value: boolean } }) => void;\n onChangeParentCheckbox: (event: { target: { name: string; value: boolean } }) => void;\n onChangeCollectionTypeGlobalActionCheckbox: (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => void;\n userPermissions?: AuthPermission[];\n checkUserHasPermission: (action: string, subject?: string | null, field?: string) => boolean;\n}\n\nconst [PermissionsDataManagerProviderRaw, usePermissionsDataManagerContext] =\n createContext<PermissionsDataManagerContextValue>('PermissionsDataManager');\n\nexport const usePermissionsDataManager = () =>\n usePermissionsDataManagerContext('usePermissionsDataManager');\n\ninterface PermissionsDataManagerProviderProps\n extends Omit<PermissionsDataManagerContextValue, 'checkUserHasPermission'> {\n children: React.ReactNode;\n}\n\nconst PermissionsDataManagerProvider = ({\n children,\n userPermissions,\n availableConditions,\n modifiedData,\n onChangeConditions,\n onChangeSimpleCheckbox,\n onChangeParentCheckbox,\n onChangeCollectionTypeLeftActionRowCheckbox,\n onChangeCollectionTypeGlobalActionCheckbox,\n}: PermissionsDataManagerProviderProps) => {\n const checkUserHasPermission = React.useCallback(\n (action: string, subject?: string | null, field?: string): boolean => {\n if (userPermissions === undefined) {\n return true;\n }\n\n const matchingPermission = userPermissions.find(\n (perm) => perm.action === action && perm.subject === subject\n );\n\n if (matchingPermission === undefined) {\n return false;\n }\n\n if (field === undefined) {\n return true;\n }\n\n const fields = matchingPermission.properties?.fields;\n\n if (fields === null || fields === undefined) {\n return true;\n }\n\n if (Array.isArray(fields) === false || fields.length === 0) {\n return false;\n }\n\n return fields.some(\n (allowedField) => allowedField === field || field.startsWith(`${allowedField}.`)\n );\n },\n [userPermissions]\n );\n\n return (\n <PermissionsDataManagerProviderRaw\n availableConditions={availableConditions}\n modifiedData={modifiedData}\n onChangeConditions={onChangeConditions}\n onChangeSimpleCheckbox={onChangeSimpleCheckbox}\n onChangeParentCheckbox={onChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={onChangeCollectionTypeLeftActionRowCheckbox}\n onChangeCollectionTypeGlobalActionCheckbox={onChangeCollectionTypeGlobalActionCheckbox}\n userPermissions={userPermissions}\n checkUserHasPermission={checkUserHasPermission}\n >\n {children}\n </PermissionsDataManagerProviderRaw>\n );\n};\n\nexport { PermissionsDataManagerProvider };\n"],"names":["PermissionsDataManagerProviderRaw","usePermissionsDataManagerContext","createContext","usePermissionsDataManager","PermissionsDataManagerProvider","children","userPermissions","availableConditions","modifiedData","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","checkUserHasPermission","React","useCallback","action","subject","field","undefined","matchingPermission","find","perm","fields","properties","Array","isArray","length","some","allowedField","startsWith","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAsCA,MAAM,CAACA,iCAAAA,EAAmCC,gCAAAA,CAAiC,GACzEC,0BAAAA,CAAkD,wBAAA,CAAA;AAE7C,MAAMC,yBAAAA,GAA4B,IACvCF,gCAAAA,CAAiC,2BAAA;AAOnC,MAAMG,8BAAAA,GAAiC,CAAC,EACtCC,QAAQ,EACRC,eAAe,EACfC,mBAAmB,EACnBC,YAAY,EACZC,kBAAkB,EAClBC,sBAAsB,EACtBC,sBAAsB,EACtBC,2CAA2C,EAC3CC,0CAA0C,EACN,GAAA;AACpC,IAAA,MAAMC,yBAAyBC,gBAAAA,CAAMC,WAAW,CAC9C,CAACC,QAAgBC,OAAAA,EAAyBC,KAAAA,GAAAA;AACxC,QAAA,IAAIb,oBAAoBc,SAAAA,EAAW;YACjC,OAAO,IAAA;AACT,QAAA;AAEA,QAAA,MAAMC,kBAAAA,GAAqBf,eAAAA,CAAgBgB,IAAI,CAC7C,CAACC,IAAAA,GAASA,IAAAA,CAAKN,MAAM,KAAKA,MAAAA,IAAUM,IAAAA,CAAKL,OAAO,KAAKA,OAAAA,CAAAA;AAGvD,QAAA,IAAIG,uBAAuBD,SAAAA,EAAW;YACpC,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,IAAID,UAAUC,SAAAA,EAAW;YACvB,OAAO,IAAA;AACT,QAAA;QAEA,MAAMI,MAAAA,GAASH,kBAAAA,CAAmBI,UAAU,EAAED,MAAAA;QAE9C,IAAIA,MAAAA,KAAW,IAAA,IAAQA,MAAAA,KAAWJ,SAAAA,EAAW;YAC3C,OAAO,IAAA;AACT,QAAA;QAEA,IAAIM,KAAAA,CAAMC,OAAO,CAACH,MAAAA,CAAAA,KAAY,SAASA,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;YAC1D,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,OAAOJ,MAAAA,CAAOK,IAAI,CAChB,CAACC,YAAAA,GAAiBA,YAAAA,KAAiBX,KAAAA,IAASA,KAAAA,CAAMY,UAAU,CAAC,CAAA,EAAGD,YAAAA,CAAa,CAAC,CAAC,CAAA,CAAA;IAEnF,CAAA,EACA;AAACxB,QAAAA;AAAgB,KAAA,CAAA;AAGnB,IAAA,qBACE0B,cAAA,CAAChC,iCAAAA,EAAAA;QACCO,mBAAAA,EAAqBA,mBAAAA;QACrBC,YAAAA,EAAcA,YAAAA;QACdC,kBAAAA,EAAoBA,kBAAAA;QACpBC,sBAAAA,EAAwBA,sBAAAA;QACxBC,sBAAAA,EAAwBA,sBAAAA;QACxBC,2CAAAA,EAA6CA,2CAAAA;QAC7CC,0CAAAA,EAA4CA,0CAAAA;QAC5CP,eAAAA,EAAiBA,eAAAA;QACjBQ,sBAAAA,EAAwBA,sBAAAA;AAEvBT,QAAAA,QAAAA,EAAAA;;AAGP;;;;;"}
1
+ {"version":3,"file":"usePermissionsDataManager.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.tsx"],"sourcesContent":["// eslint-disable-next-line check-file/filename-naming-convention\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { Condition } from '../../../../../../../shared/contracts/permissions';\nimport { Permission as AuthPermission } from '../../../../../features/Auth';\n\nimport type {\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n State,\n} from '../components/Permissions';\n\n// Note: I had to guess most of these types based on the name and usage, but I actually don't\n// know if they are correct, because the usage is very generic. Feel free to correct them if\n// they create problems.\nexport interface PermissionsDataManagerContextValue extends Pick<State, 'modifiedData'> {\n availableConditions: Condition[];\n onChangeCollectionTypeLeftActionRowCheckbox: (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => void;\n onChangeConditions: (conditions: OnChangeConditionsAction['conditions']) => void;\n onChangeSimpleCheckbox: (event: { target: { name: string; value: boolean } }) => void;\n onChangeParentCheckbox: (event: { target: { name: string; value: boolean } }) => void;\n onChangeCollectionTypeGlobalActionCheckbox: (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => void;\n userPermissions?: AuthPermission[];\n checkUserHasPermission: (action: string, subject?: string | null, field?: string) => boolean;\n}\n\nconst [PermissionsDataManagerProviderRaw, usePermissionsDataManagerContext] =\n createContext<PermissionsDataManagerContextValue>('PermissionsDataManager');\n\nexport const usePermissionsDataManager = () =>\n usePermissionsDataManagerContext('usePermissionsDataManager');\n\ninterface PermissionsDataManagerProviderProps\n extends Omit<PermissionsDataManagerContextValue, 'checkUserHasPermission'> {\n children: React.ReactNode;\n}\n\nconst PermissionsDataManagerProvider = ({\n children,\n userPermissions,\n availableConditions,\n modifiedData,\n onChangeConditions,\n onChangeSimpleCheckbox,\n onChangeParentCheckbox,\n onChangeCollectionTypeLeftActionRowCheckbox,\n onChangeCollectionTypeGlobalActionCheckbox,\n}: PermissionsDataManagerProviderProps) => {\n const checkUserHasPermission = React.useCallback(\n (action: string, subject?: string | null, field?: string): boolean => {\n if (userPermissions === undefined) {\n return true;\n }\n\n const matchingPermission = userPermissions.find(\n (perm) => perm.action === action && perm.subject === subject\n );\n\n if (matchingPermission === undefined) {\n return false;\n }\n\n if (field === undefined) {\n return true;\n }\n\n const fields = matchingPermission.properties?.fields;\n\n if (fields === null || fields === undefined) {\n return true;\n }\n\n if (Array.isArray(fields) === false || fields.length === 0) {\n return false;\n }\n\n return fields.some(\n (allowedField) => allowedField === field || field.startsWith(`${allowedField}.`)\n );\n },\n [userPermissions]\n );\n\n return (\n <PermissionsDataManagerProviderRaw\n availableConditions={availableConditions}\n modifiedData={modifiedData}\n onChangeConditions={onChangeConditions}\n onChangeSimpleCheckbox={onChangeSimpleCheckbox}\n onChangeParentCheckbox={onChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={onChangeCollectionTypeLeftActionRowCheckbox}\n onChangeCollectionTypeGlobalActionCheckbox={onChangeCollectionTypeGlobalActionCheckbox}\n userPermissions={userPermissions}\n checkUserHasPermission={checkUserHasPermission}\n >\n {children}\n </PermissionsDataManagerProviderRaw>\n );\n};\n\nexport { PermissionsDataManagerProvider };\n"],"names":["PermissionsDataManagerProviderRaw","usePermissionsDataManagerContext","createContext","usePermissionsDataManager","PermissionsDataManagerProvider","children","userPermissions","availableConditions","modifiedData","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","checkUserHasPermission","React","useCallback","action","subject","field","undefined","matchingPermission","find","perm","fields","properties","Array","isArray","length","some","allowedField","startsWith","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAsCA,MAAM,CAACA,iCAAAA,EAAmCC,gCAAAA,CAAiC,GACzEC,0BAAAA,CAAkD,wBAAA,CAAA;AAE7C,MAAMC,yBAAAA,GAA4B,IACvCF,gCAAAA,CAAiC,2BAAA;AAOnC,MAAMG,8BAAAA,GAAiC,CAAC,EACtCC,QAAQ,EACRC,eAAe,EACfC,mBAAmB,EACnBC,YAAY,EACZC,kBAAkB,EAClBC,sBAAsB,EACtBC,sBAAsB,EACtBC,2CAA2C,EAC3CC,0CAA0C,EACN,GAAA;AACpC,IAAA,MAAMC,yBAAyBC,gBAAAA,CAAMC,WAAW,CAC9C,CAACC,QAAgBC,OAAAA,EAAyBC,KAAAA,GAAAA;AACxC,QAAA,IAAIb,oBAAoBc,SAAAA,EAAW;YACjC,OAAO,IAAA;AACT,QAAA;AAEA,QAAA,MAAMC,kBAAAA,GAAqBf,eAAAA,CAAgBgB,IAAI,CAC7C,CAACC,IAAAA,GAASA,IAAAA,CAAKN,MAAM,KAAKA,MAAAA,IAAUM,IAAAA,CAAKL,OAAO,KAAKA,OAAAA,CAAAA;AAGvD,QAAA,IAAIG,uBAAuBD,SAAAA,EAAW;YACpC,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,IAAID,UAAUC,SAAAA,EAAW;YACvB,OAAO,IAAA;AACT,QAAA;QAEA,MAAMI,MAAAA,GAASH,kBAAAA,CAAmBI,UAAU,EAAED,MAAAA;QAE9C,IAAIA,MAAAA,KAAW,IAAA,IAAQA,MAAAA,KAAWJ,SAAAA,EAAW;YAC3C,OAAO,IAAA;AACT,QAAA;QAEA,IAAIM,KAAAA,CAAMC,OAAO,CAACH,MAAAA,CAAAA,KAAY,SAASA,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;YAC1D,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,OAAOJ,MAAAA,CAAOK,IAAI,CAChB,CAACC,YAAAA,GAAiBA,YAAAA,KAAiBX,KAAAA,IAASA,KAAAA,CAAMY,UAAU,CAAC,CAAA,EAAGD,YAAAA,CAAa,CAAC,CAAC,CAAA,CAAA;IAEnF,CAAA,EACA;AAACxB,QAAAA;AAAgB,KAAA,CAAA;AAGnB,IAAA,qBACE0B,cAAA,CAAChC,iCAAAA,EAAAA;QACCO,mBAAAA,EAAqBA,mBAAAA;QACrBC,YAAAA,EAAcA,YAAAA;QACdC,kBAAAA,EAAoBA,kBAAAA;QACpBC,sBAAAA,EAAwBA,sBAAAA;QACxBC,sBAAAA,EAAwBA,sBAAAA;QACxBC,2CAAAA,EAA6CA,2CAAAA;QAC7CC,0CAAAA,EAA4CA,0CAAAA;QAC5CP,eAAAA,EAAiBA,eAAAA;QACjBQ,sBAAAA,EAAwBA,sBAAAA;AAEvBT,QAAAA,QAAAA,EAAAA;;AAGP;;;;;"}
@@ -4,12 +4,18 @@ var isEqual = require('lodash/isEqual');
4
4
  var isObject = require('lodash/isObject');
5
5
  var transform = require('lodash/transform');
6
6
 
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
10
+ var isObject__default = /*#__PURE__*/_interopDefault(isObject);
11
+ var transform__default = /*#__PURE__*/_interopDefault(transform);
12
+
7
13
  function difference(object, base) {
8
14
  function changes(object, base) {
9
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- return transform(object, (result, value, key)=>{
11
- if (!isEqual(value, base[key])) {
12
- result[key] = isObject(value) && isObject(base[key]) ? changes(value, base[key]) : value;
16
+ return transform__default.default(object, (result, value, key)=>{
17
+ if (!isEqual__default.default(value, base[key])) {
18
+ result[key] = isObject__default.default(value) && isObject__default.default(base[key]) ? changes(value, base[key]) : value;
13
19
  }
14
20
  return result;
15
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"difference.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/difference.ts"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isObject from 'lodash/isObject';\nimport transform from 'lodash/transform';\n\ntype ObjectDiff<T> = {\n [P in keyof T]?: T[P] extends Record<string, unknown> ? ObjectDiff<T[P]> : T[P];\n};\n\nfunction difference<T extends Record<string, unknown>>(object: T, base: T): ObjectDiff<T> {\n function changes(object: T, base: T): ObjectDiff<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return transform(object, (result, value: any, key: keyof ObjectDiff<T>) => {\n if (!isEqual(value, base[key])) {\n result[key] =\n isObject(value) && isObject(base[key]) ? changes(value as T, base[key] as T) : value;\n }\n return result;\n });\n }\n\n return changes(object, base);\n}\n\nexport { difference };\n"],"names":["difference","object","base","changes","transform","result","value","key","isEqual","isObject"],"mappings":";;;;;;AAQA,SAASA,UAAAA,CAA8CC,MAAS,EAAEC,IAAO,EAAA;IACvE,SAASC,OAAAA,CAAQF,MAAS,EAAEC,IAAO,EAAA;;AAEjC,QAAA,OAAOE,SAAAA,CAAUH,MAAAA,EAAQ,CAACI,MAAAA,EAAQC,KAAAA,EAAYC,GAAAA,GAAAA;AAC5C,YAAA,IAAI,CAACC,OAAAA,CAAQF,KAAAA,EAAOJ,IAAI,CAACK,IAAI,CAAA,EAAG;AAC9BF,gBAAAA,MAAM,CAACE,GAAAA,CAAI,GACTE,QAAAA,CAASH,UAAUG,QAAAA,CAASP,IAAI,CAACK,GAAAA,CAAI,IAAIJ,OAAAA,CAAQG,KAAAA,EAAYJ,IAAI,CAACK,IAAI,CAAA,GAASD,KAAAA;AACnF,YAAA;YACA,OAAOD,MAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,OAAOF,QAAQF,MAAAA,EAAQC,IAAAA,CAAAA;AACzB;;;;"}
1
+ {"version":3,"file":"difference.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/difference.ts"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isObject from 'lodash/isObject';\nimport transform from 'lodash/transform';\n\ntype ObjectDiff<T> = {\n [P in keyof T]?: T[P] extends Record<string, unknown> ? ObjectDiff<T[P]> : T[P];\n};\n\nfunction difference<T extends Record<string, unknown>>(object: T, base: T): ObjectDiff<T> {\n function changes(object: T, base: T): ObjectDiff<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return transform(object, (result, value: any, key: keyof ObjectDiff<T>) => {\n if (!isEqual(value, base[key])) {\n result[key] =\n isObject(value) && isObject(base[key]) ? changes(value as T, base[key] as T) : value;\n }\n return result;\n });\n }\n\n return changes(object, base);\n}\n\nexport { difference };\n"],"names":["difference","object","base","changes","transform","result","value","key","isEqual","isObject"],"mappings":";;;;;;;;;;;;AAQA,SAASA,UAAAA,CAA8CC,MAAS,EAAEC,IAAO,EAAA;IACvE,SAASC,OAAAA,CAAQF,MAAS,EAAEC,IAAO,EAAA;;AAEjC,QAAA,OAAOE,0BAAAA,CAAUH,MAAAA,EAAQ,CAACI,MAAAA,EAAQC,KAAAA,EAAYC,GAAAA,GAAAA;AAC5C,YAAA,IAAI,CAACC,wBAAAA,CAAQF,KAAAA,EAAOJ,IAAI,CAACK,IAAI,CAAA,EAAG;AAC9BF,gBAAAA,MAAM,CAACE,GAAAA,CAAI,GACTE,yBAAAA,CAASH,UAAUG,yBAAAA,CAASP,IAAI,CAACK,GAAAA,CAAI,IAAIJ,OAAAA,CAAQG,KAAAA,EAAYJ,IAAI,CAACK,IAAI,CAAA,GAASD,KAAAA;AACnF,YAAA;YACA,OAAOD,MAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,OAAOF,QAAQF,MAAAA,EAAQC,IAAAA,CAAAA;AACzB;;;;"}
@@ -4,6 +4,11 @@ var isEmpty = require('lodash/isEmpty');
4
4
  var merge = require('lodash/merge');
5
5
  var permissions = require('./permissions.js');
6
6
 
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var isEmpty__default = /*#__PURE__*/_interopDefault(isEmpty);
10
+ var merge__default = /*#__PURE__*/_interopDefault(merge);
11
+
7
12
  /**
8
13
  * Creates the default condition form: { [conditionId]: false }
9
14
  */ const createDefaultConditionsForm = (conditions, initialConditions = [])=>conditions.reduce((acc, current)=>{
@@ -29,6 +34,23 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
29
34
  return acc;
30
35
  }, {});
31
36
  };
37
+ const resolvePermissionPropertyValues = (property, matchingPermission)=>{
38
+ const rawValue = matchingPermission?.properties[property.value];
39
+ // null means "all locales" — expand to every available locale rather than
40
+ // folding into [] which would then narrow to [defaultLocale] on save.
41
+ if (rawValue === null && property.value === 'locales') {
42
+ return (property.children ?? []).map((child)=>child.value);
43
+ }
44
+ const storedValues = Array.isArray(rawValue) ? rawValue : [];
45
+ const shouldDefaultToLocale = property.value === 'locales' && matchingPermission !== undefined && storedValues.length === 0;
46
+ if (!shouldDefaultToLocale) {
47
+ return storedValues;
48
+ }
49
+ const defaultLocaleCode = property.children?.find((child)=>child.isDefault)?.value;
50
+ return defaultLocaleCode ? [
51
+ defaultLocaleCode
52
+ ] : (property.children ?? []).map((child)=>child.value);
53
+ };
32
54
  /**
33
55
  * Creates the default form for all the properties found in a content type's layout
34
56
  */ const createDefaultPropertiesForm = (properties, subject, matchingPermission)=>{
@@ -48,7 +70,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
48
70
  return properties.reduce((acc, currentPropertyName)=>{
49
71
  const foundProperty = subject.properties.find(({ value })=>value === currentPropertyName);
50
72
  if (foundProperty) {
51
- const matchingPermissionPropertyValues = matchingPermission?.properties[foundProperty.value] ?? [];
73
+ const matchingPermissionPropertyValues = resolvePermissionPropertyValues(foundProperty, matchingPermission);
52
74
  const propertyForm = recursivelyCreatePropertyForm(foundProperty, matchingPermissionPropertyValues);
53
75
  acc.properties[currentPropertyName] = propertyForm;
54
76
  }
@@ -71,7 +93,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
71
93
  // This can happen when an action is not related to a content type
72
94
  // for instance the D&P permission is applied only with the cts that
73
95
  // have the D&P features enabled
74
- if (isEmpty(subjectLayouts)) {
96
+ if (isEmpty__default.default(subjectLayouts)) {
75
97
  return defaultForm;
76
98
  }
77
99
  // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }
@@ -85,7 +107,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
85
107
  if (!acc[currentCTUID]) {
86
108
  acc[currentCTUID] = {};
87
109
  }
88
- if (isEmpty(applyToProperties) || doesNothaveProperty) {
110
+ if (isEmpty__default.default(applyToProperties) || doesNothaveProperty) {
89
111
  acc[currentCTUID][actionId] = {
90
112
  properties: {
91
113
  enabled: matchingPermission !== undefined
@@ -101,7 +123,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
101
123
  };
102
124
  return acc;
103
125
  }, {});
104
- return merge(defaultForm, contentTypesActions);
126
+ return merge__default.default(defaultForm, contentTypesActions);
105
127
  }, {});
106
128
  };
107
129
 
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
1
+ {"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\nconst resolvePermissionPropertyValues = (\n property: SubjectProperty,\n matchingPermission?: Permission\n): string[] => {\n const rawValue = matchingPermission?.properties[property.value];\n\n // null means \"all locales\" — expand to every available locale rather than\n // folding into [] which would then narrow to [defaultLocale] on save.\n if (rawValue === null && property.value === 'locales') {\n return (property.children ?? []).map((child) => child.value);\n }\n\n const storedValues: string[] = Array.isArray(rawValue) ? rawValue : [];\n\n const shouldDefaultToLocale =\n property.value === 'locales' && matchingPermission !== undefined && storedValues.length === 0;\n\n if (!shouldDefaultToLocale) {\n return storedValues;\n }\n\n const defaultLocaleCode = property.children?.find((child) => child.isDefault)?.value;\n\n return defaultLocaleCode\n ? [defaultLocaleCode]\n : (property.children ?? []).map((child) => child.value);\n};\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues = resolvePermissionPropertyValues(\n foundProperty,\n matchingPermission\n );\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","resolvePermissionPropertyValues","property","matchingPermission","rawValue","value","children","map","child","storedValues","Array","isArray","shouldDefaultToLocale","length","defaultLocaleCode","find","isDefault","createDefaultPropertiesForm","subject","recursivelyCreatePropertyForm","propertyValues","prefix","hasProperty","currentPropertyName","foundProperty","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","doesNothaveProperty","every","conditionsForm","propertiesForm","merge"],"mappings":"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"}
@@ -27,6 +27,23 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
27
27
  return acc;
28
28
  }, {});
29
29
  };
30
+ const resolvePermissionPropertyValues = (property, matchingPermission)=>{
31
+ const rawValue = matchingPermission?.properties[property.value];
32
+ // null means "all locales" — expand to every available locale rather than
33
+ // folding into [] which would then narrow to [defaultLocale] on save.
34
+ if (rawValue === null && property.value === 'locales') {
35
+ return (property.children ?? []).map((child)=>child.value);
36
+ }
37
+ const storedValues = Array.isArray(rawValue) ? rawValue : [];
38
+ const shouldDefaultToLocale = property.value === 'locales' && matchingPermission !== undefined && storedValues.length === 0;
39
+ if (!shouldDefaultToLocale) {
40
+ return storedValues;
41
+ }
42
+ const defaultLocaleCode = property.children?.find((child)=>child.isDefault)?.value;
43
+ return defaultLocaleCode ? [
44
+ defaultLocaleCode
45
+ ] : (property.children ?? []).map((child)=>child.value);
46
+ };
30
47
  /**
31
48
  * Creates the default form for all the properties found in a content type's layout
32
49
  */ const createDefaultPropertiesForm = (properties, subject, matchingPermission)=>{
@@ -46,7 +63,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
46
63
  return properties.reduce((acc, currentPropertyName)=>{
47
64
  const foundProperty = subject.properties.find(({ value })=>value === currentPropertyName);
48
65
  if (foundProperty) {
49
- const matchingPermissionPropertyValues = matchingPermission?.properties[foundProperty.value] ?? [];
66
+ const matchingPermissionPropertyValues = resolvePermissionPropertyValues(foundProperty, matchingPermission);
50
67
  const propertyForm = recursivelyCreatePropertyForm(foundProperty, matchingPermissionPropertyValues);
51
68
  acc.properties[currentPropertyName] = propertyForm;
52
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"forms.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
1
+ {"version":3,"file":"forms.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\nconst resolvePermissionPropertyValues = (\n property: SubjectProperty,\n matchingPermission?: Permission\n): string[] => {\n const rawValue = matchingPermission?.properties[property.value];\n\n // null means \"all locales\" — expand to every available locale rather than\n // folding into [] which would then narrow to [defaultLocale] on save.\n if (rawValue === null && property.value === 'locales') {\n return (property.children ?? []).map((child) => child.value);\n }\n\n const storedValues: string[] = Array.isArray(rawValue) ? rawValue : [];\n\n const shouldDefaultToLocale =\n property.value === 'locales' && matchingPermission !== undefined && storedValues.length === 0;\n\n if (!shouldDefaultToLocale) {\n return storedValues;\n }\n\n const defaultLocaleCode = property.children?.find((child) => child.isDefault)?.value;\n\n return defaultLocaleCode\n ? [defaultLocaleCode]\n : (property.children ?? []).map((child) => child.value);\n};\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues = resolvePermissionPropertyValues(\n foundProperty,\n matchingPermission\n );\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","resolvePermissionPropertyValues","property","matchingPermission","rawValue","value","children","map","child","storedValues","Array","isArray","shouldDefaultToLocale","length","defaultLocaleCode","find","isDefault","createDefaultPropertiesForm","subject","recursivelyCreatePropertyForm","propertyValues","prefix","hasProperty","currentPropertyName","foundProperty","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","doesNothaveProperty","every","conditionsForm","propertiesForm","merge"],"mappings":"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"}
@@ -2,11 +2,15 @@
2
2
 
3
3
  var groupBy = require('lodash/groupBy');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var groupBy__default = /*#__PURE__*/_interopDefault(groupBy);
8
+
5
9
  const formatLayout = (layout, groupByKey)=>{
6
- return Object.entries(groupBy(layout, groupByKey)).map(([itemName, item])=>({
10
+ return Object.entries(groupBy__default.default(layout, groupByKey)).map(([itemName, item])=>({
7
11
  category: itemName,
8
12
  categoryId: itemName.split(' ').join('-'),
9
- childrenForm: Object.entries(groupBy(item, 'subCategory')).map(([subCategoryName, actions])=>({
13
+ childrenForm: Object.entries(groupBy__default.default(item, 'subCategory')).map(([subCategoryName, actions])=>({
10
14
  subCategoryName,
11
15
  subCategoryId: subCategoryName.split(' ').join('-'),
12
16
  actions
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/layouts.ts"],"sourcesContent":["import groupBy from 'lodash/groupBy';\n\nimport { SettingPermission } from '../../../../../../../shared/contracts/permissions';\n\ninterface GenericLayout<TLayout> {\n category: string;\n categoryId: string;\n childrenForm: Array<{\n subCategoryName: string;\n subCategoryId: string;\n actions: TLayout[];\n }>;\n}\n\nconst formatLayout = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: TLayout[],\n groupByKey: keyof TLayout\n): GenericLayout<TLayout>[] => {\n return Object.entries(groupBy(layout, groupByKey)).map(([itemName, item]) => ({\n category: itemName,\n categoryId: itemName.split(' ').join('-'),\n childrenForm: Object.entries(groupBy(item, 'subCategory')).map(\n ([subCategoryName, actions]) => ({\n subCategoryName,\n subCategoryId: subCategoryName.split(' ').join('-'),\n actions,\n })\n ),\n }));\n};\n\nexport { formatLayout };\nexport type { GenericLayout };\n"],"names":["formatLayout","layout","groupByKey","Object","entries","groupBy","map","itemName","item","category","categoryId","split","join","childrenForm","subCategoryName","actions","subCategoryId"],"mappings":";;;;AAcA,MAAMA,YAAAA,GAAe,CACnBC,MAAAA,EACAC,UAAAA,GAAAA;AAEA,IAAA,OAAOC,MAAAA,CAAOC,OAAO,CAACC,OAAAA,CAAQJ,MAAAA,EAAQC,UAAAA,CAAAA,CAAAA,CAAaI,GAAG,CAAC,CAAC,CAACC,QAAAA,EAAUC,IAAAA,CAAK,IAAM;YAC5EC,QAAAA,EAAUF,QAAAA;AACVG,YAAAA,UAAAA,EAAYH,QAAAA,CAASI,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA;AACrCC,YAAAA,YAAAA,EAAcV,MAAAA,CAAOC,OAAO,CAACC,OAAAA,CAAQG,IAAAA,EAAM,aAAA,CAAA,CAAA,CAAgBF,GAAG,CAC5D,CAAC,CAACQ,eAAAA,EAAiBC,OAAAA,CAAQ,IAAM;AAC/BD,oBAAAA,eAAAA;AACAE,oBAAAA,aAAAA,EAAeF,eAAAA,CAAgBH,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA;AAC/CG,oBAAAA;iBACF,CAAA;SAEJ,CAAA,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"layouts.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/layouts.ts"],"sourcesContent":["import groupBy from 'lodash/groupBy';\n\nimport { SettingPermission } from '../../../../../../../shared/contracts/permissions';\n\ninterface GenericLayout<TLayout> {\n category: string;\n categoryId: string;\n childrenForm: Array<{\n subCategoryName: string;\n subCategoryId: string;\n actions: TLayout[];\n }>;\n}\n\nconst formatLayout = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: TLayout[],\n groupByKey: keyof TLayout\n): GenericLayout<TLayout>[] => {\n return Object.entries(groupBy(layout, groupByKey)).map(([itemName, item]) => ({\n category: itemName,\n categoryId: itemName.split(' ').join('-'),\n childrenForm: Object.entries(groupBy(item, 'subCategory')).map(\n ([subCategoryName, actions]) => ({\n subCategoryName,\n subCategoryId: subCategoryName.split(' ').join('-'),\n actions,\n })\n ),\n }));\n};\n\nexport { formatLayout };\nexport type { GenericLayout };\n"],"names":["formatLayout","layout","groupByKey","Object","entries","groupBy","map","itemName","item","category","categoryId","split","join","childrenForm","subCategoryName","actions","subCategoryId"],"mappings":";;;;;;;;AAcA,MAAMA,YAAAA,GAAe,CACnBC,MAAAA,EACAC,UAAAA,GAAAA;AAEA,IAAA,OAAOC,MAAAA,CAAOC,OAAO,CAACC,wBAAAA,CAAQJ,MAAAA,EAAQC,UAAAA,CAAAA,CAAAA,CAAaI,GAAG,CAAC,CAAC,CAACC,QAAAA,EAAUC,IAAAA,CAAK,IAAM;YAC5EC,QAAAA,EAAUF,QAAAA;AACVG,YAAAA,UAAAA,EAAYH,QAAAA,CAASI,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA;AACrCC,YAAAA,YAAAA,EAAcV,MAAAA,CAAOC,OAAO,CAACC,wBAAAA,CAAQG,IAAAA,EAAM,aAAA,CAAA,CAAA,CAAgBF,GAAG,CAC5D,CAAC,CAACQ,eAAAA,EAAiBC,OAAAA,CAAQ,IAAM;AAC/BD,oBAAAA,eAAAA;AACAE,oBAAAA,aAAAA,EAAeF,eAAAA,CAAgBH,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA;AAC/CG,oBAAAA;iBACF,CAAA;SAEJ,CAAA,CAAA;AACF;;;;"}
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ var omit = require('lodash/omit');
4
+ var objects = require('../../../../../utils/objects.js');
5
+ var createArrayOfValues = require('./createArrayOfValues.js');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var omit__default = /*#__PURE__*/_interopDefault(omit);
10
+
11
+ const getActionLocales = (actionData)=>{
12
+ if (!('properties' in actionData)) {
13
+ return undefined;
14
+ }
15
+ const { properties } = actionData;
16
+ if (!objects.isObject(properties) || !('locales' in properties)) {
17
+ return undefined;
18
+ }
19
+ return properties.locales;
20
+ };
21
+ const isActionEnabled = (actionData)=>{
22
+ return createArrayOfValues.createArrayOfValues(omit__default.default(actionData, 'conditions')).some(Boolean);
23
+ };
24
+ const hasSelectedLocales = (locales)=>{
25
+ return createArrayOfValues.createArrayOfValues(locales).some(Boolean);
26
+ };
27
+ const subjectHasLocaleValidationError = (actions = {})=>{
28
+ return Object.values(actions).some((actionData)=>{
29
+ const locales = getActionLocales(actionData);
30
+ if (locales === undefined) {
31
+ return false;
32
+ }
33
+ return isActionEnabled(actionData) && !hasSelectedLocales(locales);
34
+ });
35
+ };
36
+ const hasLocaleValidationErrors = (modifiedData)=>{
37
+ return [
38
+ 'collectionTypes',
39
+ 'singleTypes'
40
+ ].some((kind)=>Object.values(modifiedData[kind] ?? {}).some(subjectHasLocaleValidationError));
41
+ };
42
+ const getLocaleValidationErrorActionKeys = (modifiedData, kind, subject)=>{
43
+ const actions = modifiedData[kind]?.[subject];
44
+ if (!actions) {
45
+ return [];
46
+ }
47
+ return Object.keys(actions).filter((actionKey)=>{
48
+ const actionData = actions[actionKey];
49
+ const locales = getActionLocales(actionData);
50
+ if (locales === undefined) {
51
+ return false;
52
+ }
53
+ return isActionEnabled(actionData) && !hasSelectedLocales(locales);
54
+ });
55
+ };
56
+
57
+ exports.getLocaleValidationErrorActionKeys = getLocaleValidationErrorActionKeys;
58
+ exports.hasLocaleValidationErrors = hasLocaleValidationErrors;
59
+ //# sourceMappingURL=localePermissionValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localePermissionValidation.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.ts"],"sourcesContent":["import omit from 'lodash/omit';\n\nimport { isObject } from '../../../../../utils/objects';\n\nimport { createArrayOfValues } from './createArrayOfValues';\n\nimport type { ChildrenForm } from './forms';\nimport type { PermissionsDataManagerContextValue } from '../hooks/usePermissionsDataManager';\n\ntype ContentTypeKind = 'collectionTypes' | 'singleTypes';\n\nconst getActionLocales = (actionData: ChildrenForm[string]): unknown => {\n if (!('properties' in actionData)) {\n return undefined;\n }\n\n const { properties } = actionData;\n\n if (!isObject(properties) || !('locales' in properties)) {\n return undefined;\n }\n\n return properties.locales;\n};\n\nconst isActionEnabled = (actionData: ChildrenForm[string]) => {\n return createArrayOfValues(omit(actionData, 'conditions')).some(Boolean);\n};\n\nconst hasSelectedLocales = (locales: unknown) => {\n return createArrayOfValues(locales).some(Boolean);\n};\n\nconst subjectHasLocaleValidationError = (actions: ChildrenForm = {}): boolean => {\n return Object.values(actions).some((actionData) => {\n const locales = getActionLocales(actionData);\n\n if (locales === undefined) {\n return false;\n }\n\n return isActionEnabled(actionData) && !hasSelectedLocales(locales);\n });\n};\n\nconst hasLocaleValidationErrors = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData']\n): boolean => {\n return (['collectionTypes', 'singleTypes'] as const).some((kind) =>\n Object.values(modifiedData[kind] ?? {}).some(subjectHasLocaleValidationError)\n );\n};\n\nconst getLocaleValidationErrorActionKeys = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n kind: ContentTypeKind,\n subject: string\n): string[] => {\n const actions = modifiedData[kind]?.[subject];\n\n if (!actions) {\n return [];\n }\n\n return Object.keys(actions).filter((actionKey) => {\n const actionData = actions[actionKey];\n const locales = getActionLocales(actionData);\n\n if (locales === undefined) {\n return false;\n }\n\n return isActionEnabled(actionData) && !hasSelectedLocales(locales);\n });\n};\n\nexport { hasLocaleValidationErrors, getLocaleValidationErrorActionKeys };\n"],"names":["getActionLocales","actionData","undefined","properties","isObject","locales","isActionEnabled","createArrayOfValues","omit","some","Boolean","hasSelectedLocales","subjectHasLocaleValidationError","actions","Object","values","hasLocaleValidationErrors","modifiedData","kind","getLocaleValidationErrorActionKeys","subject","keys","filter","actionKey"],"mappings":";;;;;;;;;;AAWA,MAAMA,mBAAmB,CAACC,UAAAA,GAAAA;AACxB,IAAA,IAAI,EAAE,YAAA,IAAgBA,UAAS,CAAA,EAAI;QACjC,OAAOC,SAAAA;AACT,IAAA;IAEA,MAAM,EAAEC,UAAU,EAAE,GAAGF,UAAAA;AAEvB,IAAA,IAAI,CAACG,gBAAAA,CAASD,UAAAA,CAAAA,IAAe,EAAE,SAAA,IAAaA,UAAS,CAAA,EAAI;QACvD,OAAOD,SAAAA;AACT,IAAA;AAEA,IAAA,OAAOC,WAAWE,OAAO;AAC3B,CAAA;AAEA,MAAMC,kBAAkB,CAACL,UAAAA,GAAAA;AACvB,IAAA,OAAOM,uCAAAA,CAAoBC,qBAAAA,CAAKP,UAAAA,EAAY,YAAA,CAAA,CAAA,CAAeQ,IAAI,CAACC,OAAAA,CAAAA;AAClE,CAAA;AAEA,MAAMC,qBAAqB,CAACN,OAAAA,GAAAA;IAC1B,OAAOE,uCAAAA,CAAoBF,OAAAA,CAAAA,CAASI,IAAI,CAACC,OAAAA,CAAAA;AAC3C,CAAA;AAEA,MAAME,+BAAAA,GAAkC,CAACC,OAAAA,GAAwB,EAAE,GAAA;AACjE,IAAA,OAAOC,OAAOC,MAAM,CAACF,OAAAA,CAAAA,CAASJ,IAAI,CAAC,CAACR,UAAAA,GAAAA;AAClC,QAAA,MAAMI,UAAUL,gBAAAA,CAAiBC,UAAAA,CAAAA;AAEjC,QAAA,IAAII,YAAYH,SAAAA,EAAW;YACzB,OAAO,KAAA;AACT,QAAA;QAEA,OAAOI,eAAAA,CAAgBL,UAAAA,CAAAA,IAAe,CAACU,kBAAAA,CAAmBN,OAAAA,CAAAA;AAC5D,IAAA,CAAA,CAAA;AACF,CAAA;AAEA,MAAMW,4BAA4B,CAChCC,YAAAA,GAAAA;AAEA,IAAA,OAAO;AAAE,QAAA,iBAAA;AAAmB,QAAA;AAAc,KAAA,CAAWR,IAAI,CAAC,CAACS,IAAAA,GACzDJ,OAAOC,MAAM,CAACE,YAAY,CAACC,IAAAA,CAAK,IAAI,EAAC,CAAA,CAAGT,IAAI,CAACG,+BAAAA,CAAAA,CAAAA;AAEjD;AAEA,MAAMO,kCAAAA,GAAqC,CACzCF,YAAAA,EACAC,IAAAA,EACAE,OAAAA,GAAAA;AAEA,IAAA,MAAMP,UAAUI,YAAY,CAACC,IAAAA,CAAK,GAAGE,OAAAA,CAAQ;AAE7C,IAAA,IAAI,CAACP,OAAAA,EAAS;AACZ,QAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,OAAOC,OAAOO,IAAI,CAACR,OAAAA,CAAAA,CAASS,MAAM,CAAC,CAACC,SAAAA,GAAAA;QAClC,MAAMtB,UAAAA,GAAaY,OAAO,CAACU,SAAAA,CAAU;AACrC,QAAA,MAAMlB,UAAUL,gBAAAA,CAAiBC,UAAAA,CAAAA;AAEjC,QAAA,IAAII,YAAYH,SAAAA,EAAW;YACzB,OAAO,KAAA;AACT,QAAA;QAEA,OAAOI,eAAAA,CAAgBL,UAAAA,CAAAA,IAAe,CAACU,kBAAAA,CAAmBN,OAAAA,CAAAA;AAC5D,IAAA,CAAA,CAAA;AACF;;;;;"}
@@ -0,0 +1,52 @@
1
+ import omit from 'lodash/omit';
2
+ import { isObject } from '../../../../../utils/objects.mjs';
3
+ import { createArrayOfValues } from './createArrayOfValues.mjs';
4
+
5
+ const getActionLocales = (actionData)=>{
6
+ if (!('properties' in actionData)) {
7
+ return undefined;
8
+ }
9
+ const { properties } = actionData;
10
+ if (!isObject(properties) || !('locales' in properties)) {
11
+ return undefined;
12
+ }
13
+ return properties.locales;
14
+ };
15
+ const isActionEnabled = (actionData)=>{
16
+ return createArrayOfValues(omit(actionData, 'conditions')).some(Boolean);
17
+ };
18
+ const hasSelectedLocales = (locales)=>{
19
+ return createArrayOfValues(locales).some(Boolean);
20
+ };
21
+ const subjectHasLocaleValidationError = (actions = {})=>{
22
+ return Object.values(actions).some((actionData)=>{
23
+ const locales = getActionLocales(actionData);
24
+ if (locales === undefined) {
25
+ return false;
26
+ }
27
+ return isActionEnabled(actionData) && !hasSelectedLocales(locales);
28
+ });
29
+ };
30
+ const hasLocaleValidationErrors = (modifiedData)=>{
31
+ return [
32
+ 'collectionTypes',
33
+ 'singleTypes'
34
+ ].some((kind)=>Object.values(modifiedData[kind] ?? {}).some(subjectHasLocaleValidationError));
35
+ };
36
+ const getLocaleValidationErrorActionKeys = (modifiedData, kind, subject)=>{
37
+ const actions = modifiedData[kind]?.[subject];
38
+ if (!actions) {
39
+ return [];
40
+ }
41
+ return Object.keys(actions).filter((actionKey)=>{
42
+ const actionData = actions[actionKey];
43
+ const locales = getActionLocales(actionData);
44
+ if (locales === undefined) {
45
+ return false;
46
+ }
47
+ return isActionEnabled(actionData) && !hasSelectedLocales(locales);
48
+ });
49
+ };
50
+
51
+ export { getLocaleValidationErrorActionKeys, hasLocaleValidationErrors };
52
+ //# sourceMappingURL=localePermissionValidation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localePermissionValidation.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.ts"],"sourcesContent":["import omit from 'lodash/omit';\n\nimport { isObject } from '../../../../../utils/objects';\n\nimport { createArrayOfValues } from './createArrayOfValues';\n\nimport type { ChildrenForm } from './forms';\nimport type { PermissionsDataManagerContextValue } from '../hooks/usePermissionsDataManager';\n\ntype ContentTypeKind = 'collectionTypes' | 'singleTypes';\n\nconst getActionLocales = (actionData: ChildrenForm[string]): unknown => {\n if (!('properties' in actionData)) {\n return undefined;\n }\n\n const { properties } = actionData;\n\n if (!isObject(properties) || !('locales' in properties)) {\n return undefined;\n }\n\n return properties.locales;\n};\n\nconst isActionEnabled = (actionData: ChildrenForm[string]) => {\n return createArrayOfValues(omit(actionData, 'conditions')).some(Boolean);\n};\n\nconst hasSelectedLocales = (locales: unknown) => {\n return createArrayOfValues(locales).some(Boolean);\n};\n\nconst subjectHasLocaleValidationError = (actions: ChildrenForm = {}): boolean => {\n return Object.values(actions).some((actionData) => {\n const locales = getActionLocales(actionData);\n\n if (locales === undefined) {\n return false;\n }\n\n return isActionEnabled(actionData) && !hasSelectedLocales(locales);\n });\n};\n\nconst hasLocaleValidationErrors = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData']\n): boolean => {\n return (['collectionTypes', 'singleTypes'] as const).some((kind) =>\n Object.values(modifiedData[kind] ?? {}).some(subjectHasLocaleValidationError)\n );\n};\n\nconst getLocaleValidationErrorActionKeys = (\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n kind: ContentTypeKind,\n subject: string\n): string[] => {\n const actions = modifiedData[kind]?.[subject];\n\n if (!actions) {\n return [];\n }\n\n return Object.keys(actions).filter((actionKey) => {\n const actionData = actions[actionKey];\n const locales = getActionLocales(actionData);\n\n if (locales === undefined) {\n return false;\n }\n\n return isActionEnabled(actionData) && !hasSelectedLocales(locales);\n });\n};\n\nexport { hasLocaleValidationErrors, getLocaleValidationErrorActionKeys };\n"],"names":["getActionLocales","actionData","undefined","properties","isObject","locales","isActionEnabled","createArrayOfValues","omit","some","Boolean","hasSelectedLocales","subjectHasLocaleValidationError","actions","Object","values","hasLocaleValidationErrors","modifiedData","kind","getLocaleValidationErrorActionKeys","subject","keys","filter","actionKey"],"mappings":";;;;AAWA,MAAMA,mBAAmB,CAACC,UAAAA,GAAAA;AACxB,IAAA,IAAI,EAAE,YAAA,IAAgBA,UAAS,CAAA,EAAI;QACjC,OAAOC,SAAAA;AACT,IAAA;IAEA,MAAM,EAAEC,UAAU,EAAE,GAAGF,UAAAA;AAEvB,IAAA,IAAI,CAACG,QAAAA,CAASD,UAAAA,CAAAA,IAAe,EAAE,SAAA,IAAaA,UAAS,CAAA,EAAI;QACvD,OAAOD,SAAAA;AACT,IAAA;AAEA,IAAA,OAAOC,WAAWE,OAAO;AAC3B,CAAA;AAEA,MAAMC,kBAAkB,CAACL,UAAAA,GAAAA;AACvB,IAAA,OAAOM,mBAAAA,CAAoBC,IAAAA,CAAKP,UAAAA,EAAY,YAAA,CAAA,CAAA,CAAeQ,IAAI,CAACC,OAAAA,CAAAA;AAClE,CAAA;AAEA,MAAMC,qBAAqB,CAACN,OAAAA,GAAAA;IAC1B,OAAOE,mBAAAA,CAAoBF,OAAAA,CAAAA,CAASI,IAAI,CAACC,OAAAA,CAAAA;AAC3C,CAAA;AAEA,MAAME,+BAAAA,GAAkC,CAACC,OAAAA,GAAwB,EAAE,GAAA;AACjE,IAAA,OAAOC,OAAOC,MAAM,CAACF,OAAAA,CAAAA,CAASJ,IAAI,CAAC,CAACR,UAAAA,GAAAA;AAClC,QAAA,MAAMI,UAAUL,gBAAAA,CAAiBC,UAAAA,CAAAA;AAEjC,QAAA,IAAII,YAAYH,SAAAA,EAAW;YACzB,OAAO,KAAA;AACT,QAAA;QAEA,OAAOI,eAAAA,CAAgBL,UAAAA,CAAAA,IAAe,CAACU,kBAAAA,CAAmBN,OAAAA,CAAAA;AAC5D,IAAA,CAAA,CAAA;AACF,CAAA;AAEA,MAAMW,4BAA4B,CAChCC,YAAAA,GAAAA;AAEA,IAAA,OAAO;AAAE,QAAA,iBAAA;AAAmB,QAAA;AAAc,KAAA,CAAWR,IAAI,CAAC,CAACS,IAAAA,GACzDJ,OAAOC,MAAM,CAACE,YAAY,CAACC,IAAAA,CAAK,IAAI,EAAC,CAAA,CAAGT,IAAI,CAACG,+BAAAA,CAAAA,CAAAA;AAEjD;AAEA,MAAMO,kCAAAA,GAAqC,CACzCF,YAAAA,EACAC,IAAAA,EACAE,OAAAA,GAAAA;AAEA,IAAA,MAAMP,UAAUI,YAAY,CAACC,IAAAA,CAAK,GAAGE,OAAAA,CAAQ;AAE7C,IAAA,IAAI,CAACP,OAAAA,EAAS;AACZ,QAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,OAAOC,OAAOO,IAAI,CAACR,OAAAA,CAAAA,CAASS,MAAM,CAAC,CAACC,SAAAA,GAAAA;QAClC,MAAMtB,UAAAA,GAAaY,OAAO,CAACU,SAAAA,CAAU;AACrC,QAAA,MAAMlB,UAAUL,gBAAAA,CAAiBC,UAAAA,CAAAA;AAEjC,QAAA,IAAII,YAAYH,SAAAA,EAAW;YACzB,OAAO,KAAA;AACT,QAAA;QAEA,OAAOI,eAAAA,CAAgBL,UAAAA,CAAAA,IAAe,CAACU,kBAAAA,CAAmBN,OAAAA,CAAAA;AAC5D,IAAA,CAAA,CAAA;AACF;;;;"}