@strapi/admin 5.48.0 → 5.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +41 -25
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +15 -7
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/Context.js +4 -3
  8. package/dist/admin/admin/src/components/Context.js.map +1 -1
  9. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
  10. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  11. package/dist/admin/admin/src/components/Filters.js +3 -2
  12. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.js +9 -5
  14. package/dist/admin/admin/src/components/Form.js.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  16. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  19. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  20. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  21. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  22. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  23. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  24. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  25. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  26. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  27. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  28. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  30. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  31. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  32. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  33. package/dist/admin/admin/src/components/LeftMenu.js +4 -3
  34. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  35. package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
  36. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  38. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  39. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  40. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  41. package/dist/admin/admin/src/components/Pagination.js +3 -2
  42. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  43. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  44. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  45. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  46. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  47. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  48. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  49. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  50. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  51. package/dist/admin/admin/src/components/Table.js +3 -2
  52. package/dist/admin/admin/src/components/Table.js.map +1 -1
  53. package/dist/admin/admin/src/components/Theme.js +3 -2
  54. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  55. package/dist/admin/admin/src/components/UpsellBanner.js +1 -1
  56. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  57. package/dist/admin/admin/src/components/UpsellBanner.mjs +1 -1
  58. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  59. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  60. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  61. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  62. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  63. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  64. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  65. package/dist/admin/admin/src/core/apis/router.js +20 -16
  66. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  67. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  68. package/dist/admin/admin/src/features/Auth.js +78 -6
  69. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  70. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  71. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  72. package/dist/admin/admin/src/features/BackButton.js +3 -2
  73. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  74. package/dist/admin/admin/src/features/Configuration.js +3 -2
  75. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  76. package/dist/admin/admin/src/features/Notifications.js +3 -2
  77. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  78. package/dist/admin/admin/src/features/Tracking.js +7 -3
  79. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  80. package/dist/admin/admin/src/features/Widgets.js +3 -2
  81. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  82. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  83. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  84. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  85. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  86. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  87. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  88. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  89. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  90. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  91. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  92. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  93. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  94. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  95. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  96. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  97. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  98. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  99. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  100. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  101. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  102. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  103. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  104. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  105. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  106. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  107. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  108. package/dist/admin/admin/src/hooks/useMenu.js +47 -8
  109. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  110. package/dist/admin/admin/src/hooks/useMenu.mjs +40 -6
  111. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  112. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  113. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  114. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  115. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  116. package/dist/admin/admin/src/hooks/useSettingsMenu.js +68 -4
  117. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  118. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs +61 -2
  119. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs.map +1 -1
  120. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  121. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  122. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +11 -5
  123. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  125. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  126. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  127. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  128. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  129. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  130. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  131. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  132. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  133. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Home/HomePage.js +9 -4
  135. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  136. package/dist/admin/admin/src/pages/Home/HomePage.mjs +6 -2
  137. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  138. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  139. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +8 -4
  141. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  143. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  144. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  145. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  146. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  147. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  148. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  149. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  151. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  153. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  155. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  157. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  159. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  161. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  163. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  165. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  169. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  171. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +5 -2
  173. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -0
  175. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  176. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  177. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  179. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +4 -3
  181. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +4 -3
  183. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  184. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  185. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  186. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -6
  187. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  188. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  189. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  191. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  192. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  193. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  195. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +33 -25
  197. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  198. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  199. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  200. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  201. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  202. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +8 -3
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  211. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  212. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  213. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  214. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  215. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  216. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  217. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  218. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  219. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  220. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  221. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  222. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  223. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  224. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  225. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  226. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  227. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  228. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  229. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  230. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  231. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  232. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  233. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  234. package/dist/admin/admin/src/translations/ar.json.js +1 -1
  235. package/dist/admin/admin/src/translations/ar.json.mjs +1 -1
  236. package/dist/admin/admin/src/translations/cs.json.js +1 -1
  237. package/dist/admin/admin/src/translations/cs.json.mjs +1 -1
  238. package/dist/admin/admin/src/translations/de.json.js +1 -1
  239. package/dist/admin/admin/src/translations/de.json.mjs +1 -1
  240. package/dist/admin/admin/src/translations/en.json.js +1 -1
  241. package/dist/admin/admin/src/translations/en.json.mjs +1 -1
  242. package/dist/admin/admin/src/translations/es.json.js +1 -1
  243. package/dist/admin/admin/src/translations/es.json.mjs +1 -1
  244. package/dist/admin/admin/src/translations/fi.json.js +1 -1
  245. package/dist/admin/admin/src/translations/fi.json.mjs +1 -1
  246. package/dist/admin/admin/src/translations/fr.json.js +1 -1
  247. package/dist/admin/admin/src/translations/fr.json.mjs +1 -1
  248. package/dist/admin/admin/src/translations/it.json.js +1 -1
  249. package/dist/admin/admin/src/translations/it.json.mjs +1 -1
  250. package/dist/admin/admin/src/translations/ko.json.js +1 -1
  251. package/dist/admin/admin/src/translations/ko.json.mjs +1 -1
  252. package/dist/admin/admin/src/translations/nl.json.js +1 -1
  253. package/dist/admin/admin/src/translations/nl.json.mjs +1 -1
  254. package/dist/admin/admin/src/translations/pl.json.js +1 -1
  255. package/dist/admin/admin/src/translations/pl.json.mjs +1 -1
  256. package/dist/admin/admin/src/translations/ru.json.js +1 -1
  257. package/dist/admin/admin/src/translations/ru.json.mjs +1 -1
  258. package/dist/admin/admin/src/translations/tr.json.js +1 -1
  259. package/dist/admin/admin/src/translations/tr.json.mjs +1 -1
  260. package/dist/admin/admin/src/translations/uk.json.js +1 -1
  261. package/dist/admin/admin/src/translations/uk.json.mjs +1 -1
  262. package/dist/admin/admin/src/translations/vi.json.js +1 -1
  263. package/dist/admin/admin/src/translations/vi.json.mjs +1 -1
  264. package/dist/admin/admin/src/translations/zh-Hans.json.js +1 -1
  265. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +1 -1
  266. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  267. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  268. package/dist/admin/admin/src/utils/locales.js +3 -2
  269. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  270. package/dist/admin/admin/src/utils/objects.js +9 -4
  271. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  272. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  273. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  274. package/dist/admin/admin/src/utils/urls.js +5 -1
  275. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  276. package/dist/admin/admin/src/utils/widgetVisibility.js +25 -0
  277. package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -0
  278. package/dist/admin/admin/src/utils/widgetVisibility.mjs +22 -0
  279. package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -0
  280. package/dist/admin/admin/tests/utils.js +3 -2
  281. package/dist/admin/admin/tests/utils.js.map +1 -1
  282. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  283. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  284. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  285. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  286. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  287. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  288. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +6 -4
  289. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  290. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +6 -4
  291. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  292. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  293. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  294. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  295. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  296. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  297. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  298. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  299. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  300. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  301. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  302. package/dist/admin/src/StrapiApp.d.ts +7 -1
  303. package/dist/admin/src/core/apis/router.d.ts +1 -2
  304. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  305. package/dist/admin/src/hooks/useMenu.d.ts +2 -1
  306. package/dist/admin/src/hooks/useSettingsMenu.d.ts +2 -1
  307. package/dist/admin/src/utils/widgetVisibility.d.ts +18 -0
  308. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  309. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  310. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  311. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  312. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  313. package/dist/server/ee/server/src/controllers/user.js +12 -7
  314. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  315. package/dist/server/ee/server/src/controllers/user.mjs +7 -6
  316. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  317. package/dist/server/ee/server/src/services/auth.js +5 -1
  318. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  319. package/dist/server/ee/server/src/services/user.js +8 -4
  320. package/dist/server/ee/server/src/services/user.js.map +1 -1
  321. package/dist/server/index.js +6 -2
  322. package/dist/server/index.js.map +1 -1
  323. package/dist/server/server/src/ai/services/ai.js +10 -4
  324. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  325. package/dist/server/server/src/controllers/admin.js +9 -4
  326. package/dist/server/server/src/controllers/admin.js.map +1 -1
  327. package/dist/server/server/src/controllers/authenticated-user.js +25 -4
  328. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  329. package/dist/server/server/src/controllers/authenticated-user.mjs +25 -4
  330. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  331. package/dist/server/server/src/controllers/authentication.js +8 -18
  332. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  333. package/dist/server/server/src/controllers/authentication.mjs +1 -16
  334. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  335. package/dist/server/server/src/controllers/user.js +9 -7
  336. package/dist/server/server/src/controllers/user.js.map +1 -1
  337. package/dist/server/server/src/controllers/user.mjs +6 -5
  338. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  339. package/dist/server/server/src/controllers/webhooks.js +7 -2
  340. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  341. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  342. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  343. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  344. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  345. package/dist/server/server/src/routes/authentication.js +4 -1
  346. package/dist/server/server/src/routes/authentication.js.map +1 -1
  347. package/dist/server/server/src/routes/authentication.mjs +4 -1
  348. package/dist/server/server/src/routes/authentication.mjs.map +1 -1
  349. package/dist/server/server/src/routes/serve-admin-panel.js +8 -3
  350. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  351. package/dist/server/server/src/services/api-token.js +7 -3
  352. package/dist/server/server/src/services/api-token.js.map +1 -1
  353. package/dist/server/server/src/services/auth.js +8 -3
  354. package/dist/server/server/src/services/auth.js.map +1 -1
  355. package/dist/server/server/src/services/content-type.js +6 -2
  356. package/dist/server/server/src/services/content-type.js.map +1 -1
  357. package/dist/server/server/src/services/encryption.js +8 -4
  358. package/dist/server/server/src/services/encryption.js.map +1 -1
  359. package/dist/server/server/src/services/passport.js +6 -2
  360. package/dist/server/server/src/services/passport.js.map +1 -1
  361. package/dist/server/server/src/services/permission/engine.js +5 -1
  362. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  363. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  364. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  365. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +20 -11
  366. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  367. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +21 -12
  368. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  369. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  370. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  371. package/dist/server/server/src/services/permission/queries.js +5 -1
  372. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  373. package/dist/server/server/src/services/project-settings.js +6 -2
  374. package/dist/server/server/src/services/project-settings.js.map +1 -1
  375. package/dist/server/server/src/services/role.js +8 -4
  376. package/dist/server/server/src/services/role.js.map +1 -1
  377. package/dist/server/server/src/services/token.js +7 -2
  378. package/dist/server/server/src/services/token.js.map +1 -1
  379. package/dist/server/server/src/services/transfer/permission.js +5 -1
  380. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  381. package/dist/server/server/src/services/transfer/token.js +10 -5
  382. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  383. package/dist/server/server/src/services/user.js +50 -9
  384. package/dist/server/server/src/services/user.js.map +1 -1
  385. package/dist/server/server/src/services/user.mjs +40 -3
  386. package/dist/server/server/src/services/user.mjs.map +1 -1
  387. package/dist/server/server/src/utils/normalize-email.js +24 -0
  388. package/dist/server/server/src/utils/normalize-email.js.map +1 -0
  389. package/dist/server/server/src/utils/normalize-email.mjs +22 -0
  390. package/dist/server/server/src/utils/normalize-email.mjs.map +1 -0
  391. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  392. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  393. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  394. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  395. package/dist/server/server/src/validation/common-validators.js +6 -2
  396. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  397. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  398. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  399. package/dist/server/shared/utils/session-auth.js +5 -1
  400. package/dist/server/shared/utils/session-auth.js.map +1 -1
  401. package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
  402. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  403. package/dist/server/src/controllers/user.d.ts.map +1 -1
  404. package/dist/server/src/index.d.ts +1 -0
  405. package/dist/server/src/index.d.ts.map +1 -1
  406. package/dist/server/src/routes/authentication.d.ts.map +1 -1
  407. package/dist/server/src/services/index.d.ts +1 -0
  408. package/dist/server/src/services/index.d.ts.map +1 -1
  409. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  410. package/dist/server/src/services/user.d.ts +1 -0
  411. package/dist/server/src/services/user.d.ts.map +1 -1
  412. package/dist/server/src/utils/normalize-email.d.ts +12 -0
  413. package/dist/server/src/utils/normalize-email.d.ts.map +1 -0
  414. package/package.json +11 -13
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Helpers that decide which widgets should be displayed (when/where), as opposed to
3
+ * `widgetLayout.ts`, which handles how widgets are sized and positioned.
4
+ */ /**
5
+ * UID of the deploy-now widget, a Strapi Cloud upsell promoting a first deployment.
6
+ */ const DEPLOY_NOW_WIDGET_UID = 'plugin::admin.deploy-now';
7
+ /**
8
+ * Hides the deploy-now upsell widget when the project runs in production.
9
+ *
10
+ * The widget promotes deploying the project for the first time, which is no longer
11
+ * relevant once the project is live. This relies on the server-reported environment
12
+ * (`currentEnvironment` from `/admin/information`) rather than any frontend
13
+ * production heuristic, and keeps the widget visible when the environment is unknown.
14
+ */ const hideDeployNowWidgetInProduction = (widgets, currentEnvironment)=>{
15
+ if (currentEnvironment !== 'production') {
16
+ return widgets;
17
+ }
18
+ return widgets.filter((widget)=>widget.uid !== DEPLOY_NOW_WIDGET_UID);
19
+ };
20
+
21
+ export { DEPLOY_NOW_WIDGET_UID, hideDeployNowWidgetInProduction };
22
+ //# sourceMappingURL=widgetVisibility.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widgetVisibility.mjs","sources":["../../../../../admin/src/utils/widgetVisibility.ts"],"sourcesContent":["/**\n * Helpers that decide which widgets should be displayed (when/where), as opposed to\n * `widgetLayout.ts`, which handles how widgets are sized and positioned.\n */\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\n/**\n * UID of the deploy-now widget, a Strapi Cloud upsell promoting a first deployment.\n */\nexport const DEPLOY_NOW_WIDGET_UID = 'plugin::admin.deploy-now';\n\n/**\n * Hides the deploy-now upsell widget when the project runs in production.\n *\n * The widget promotes deploying the project for the first time, which is no longer\n * relevant once the project is live. This relies on the server-reported environment\n * (`currentEnvironment` from `/admin/information`) rather than any frontend\n * production heuristic, and keeps the widget visible when the environment is unknown.\n */\nexport const hideDeployNowWidgetInProduction = (\n widgets: WidgetWithUID[],\n currentEnvironment?: string\n): WidgetWithUID[] => {\n if (currentEnvironment !== 'production') {\n return widgets;\n }\n\n return widgets.filter((widget) => widget.uid !== DEPLOY_NOW_WIDGET_UID);\n};\n"],"names":["DEPLOY_NOW_WIDGET_UID","hideDeployNowWidgetInProduction","widgets","currentEnvironment","filter","widget","uid"],"mappings":"AAAA;;;;;IAUO,MAAMA,qBAAAA,GAAwB;AAErC;;;;;;;AAOC,IACM,MAAMC,+BAAAA,GAAkC,CAC7CC,OAAAA,EACAC,kBAAAA,GAAAA;AAEA,IAAA,IAAIA,uBAAuB,YAAA,EAAc;QACvC,OAAOD,OAAAA;AACT,IAAA;AAEA,IAAA,OAAOA,QAAQE,MAAM,CAAC,CAACC,MAAAA,GAAWA,MAAAA,CAAOC,GAAG,KAAKN,qBAAAA,CAAAA;AACnD;;;;"}
@@ -26,7 +26,8 @@ var api = require('../src/services/api.js');
26
26
  var server = require('./server.js');
27
27
  var store = require('./store.js');
28
28
 
29
- function _interopNamespaceDefault(e) {
29
+ function _interopNamespace(e) {
30
+ if (e && e.__esModule) return e;
30
31
  var n = Object.create(null);
31
32
  if (e) {
32
33
  Object.keys(e).forEach(function (k) {
@@ -43,7 +44,7 @@ function _interopNamespaceDefault(e) {
43
44
  return Object.freeze(n);
44
45
  }
45
46
 
46
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
47
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
47
48
 
48
49
  reactQuery.setLogger({
49
50
  log: ()=>{},
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../admin/tests/utils.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { ConfigureStoreOptions, configureStore } from '@reduxjs/toolkit';\nimport { fixtures } from '@strapi/admin-test-utils';\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport {\n fireEvent,\n renderHook as renderHookRTL,\n render as renderRTL,\n waitFor,\n RenderOptions as RTLRenderOptions,\n RenderResult,\n act,\n screen,\n RenderHookOptions,\n RenderHookResult,\n Queries,\n} from '@testing-library/react';\nimport { userEvent } from '@testing-library/user-event';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { QueryClient, QueryClientProvider, setLogger } from 'react-query';\nimport { Provider } from 'react-redux';\nimport { MemoryRouterProps, RouterProvider, createMemoryRouter } from 'react-router-dom';\n\nimport { GuidedTourContext } from '../src/components/GuidedTour/Context';\nimport { LanguageProvider } from '../src/components/LanguageProvider';\nimport { Theme } from '../src/components/Theme';\nimport { RBAC } from '../src/core/apis/rbac';\nimport { AppInfoProvider } from '../src/features/AppInfo';\nimport { AuthProvider, type Permission } from '../src/features/Auth';\nimport { _internalConfigurationContextProvider as ConfigurationContextProvider } from '../src/features/Configuration';\nimport { NotificationsProvider } from '../src/features/Notifications';\nimport { StrapiAppProvider } from '../src/features/StrapiApp';\nimport { reducer as appReducer } from '../src/reducer';\nimport { adminApi } from '../src/services/api';\n\nimport { server } from './server';\nimport { initialState } from './store';\n\nsetLogger({\n log: () => {},\n warn: () => {},\n error: () => {},\n});\n\n/**\n * RTL's `rerender()` updates the `children` passed to our test `render()` helper.\n * However, we keep a stable `routerRef` to avoid recreating the data router (which\n * can crash React Router). That means the route element tree would otherwise keep\n * rendering the initial children forever.\n *\n * We solve this by passing `children` via React context, so consumers inside the\n * router element tree still update on rerenders without recreating the router.\n */\nconst TestChildrenContext = React.createContext<React.ReactNode>(null);\n\nconst TestChildrenOutlet = () => {\n return <>{React.useContext(TestChildrenContext)}</>;\n};\n\ninterface ProvidersProps {\n children: React.ReactNode;\n initialEntries?: MemoryRouterProps['initialEntries'];\n storeConfig?: Partial<ConfigureStoreOptions>;\n permissions?: Permission[] | ((defaultPermissions: Permission[]) => Permission[] | undefined);\n}\n\nconst defaultTestStoreConfig = () => ({\n preloadedState: initialState(),\n reducer: {\n [adminApi.reducerPath]: adminApi.reducer,\n admin_app: appReducer,\n },\n // @ts-expect-error – this fails.\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware({\n // Disable timing checks for test env\n immutableCheck: false,\n serializableCheck: false,\n }),\n adminApi.middleware,\n ],\n});\n\nconst DEFAULT_PERMISSIONS = [\n ...fixtures.permissions.allPermissions,\n {\n id: 314,\n action: 'admin::users.read',\n subject: null,\n properties: {},\n conditions: [],\n actionParameters: {},\n },\n];\n\nconst Providers = ({ children, initialEntries, storeConfig, permissions = [] }: ProvidersProps) => {\n /**\n * Keep these instances stable for the lifetime of the render.\n * Recreating the data router on rerenders can crash React Router.\n */\n const queryClientRef = React.useRef<QueryClient | null>(null);\n const storeRef = React.useRef<ReturnType<typeof configureStore> | null>(null);\n const routerRef = React.useRef<ReturnType<typeof createMemoryRouter> | null>(null);\n\n if (queryClientRef.current === null) {\n queryClientRef.current = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n },\n },\n });\n }\n\n if (storeRef.current === null) {\n storeRef.current = configureStore({\n ...defaultTestStoreConfig(),\n ...storeConfig,\n });\n }\n\n let allPermissions: Permission[];\n\n if (typeof permissions === 'function') {\n /**\n * The callback form can return `undefined` to mean \"use defaults\".\n * Guard against passing `undefined` into AuthProvider.\n */\n allPermissions = permissions(DEFAULT_PERMISSIONS) ?? DEFAULT_PERMISSIONS;\n } else {\n allPermissions = [...DEFAULT_PERMISSIONS, ...permissions];\n }\n\n if (routerRef.current === null) {\n routerRef.current = createMemoryRouter(\n [\n {\n path: '/*',\n element: (\n <StrapiAppProvider\n components={{}}\n rbac={new RBAC()}\n widgets={\n {\n widgets: [],\n getAll: jest.fn(),\n register: jest.fn(),\n } as unknown as React.ComponentProps<typeof StrapiAppProvider>['widgets']\n }\n customFields={{\n customFields: {},\n get: jest.fn().mockReturnValue({\n name: 'color',\n pluginId: 'mycustomfields',\n type: 'text',\n icon: jest.fn(),\n intlLabel: {\n id: 'mycustomfields.color.label',\n defaultMessage: 'Color',\n },\n intlDescription: {\n id: 'mycustomfields.color.description',\n defaultMessage: 'Select any color',\n },\n components: {\n Input: jest.fn().mockResolvedValue({ default: jest.fn() }),\n },\n }),\n getAll: jest.fn(),\n register: jest.fn(),\n }}\n fields={{}}\n menu={[]}\n getAdminInjectedComponents={jest.fn()}\n getPlugin={jest.fn()}\n plugins={{}}\n runHookParallel={jest.fn()}\n runHookWaterfall={jest.fn().mockImplementation((_name, initialValue) => initialValue)}\n runHookSeries={jest.fn()}\n settings={{}}\n >\n <Provider store={storeRef.current!}>\n <AuthProvider _defaultPermissions={allPermissions} _disableRenewToken={true}>\n <QueryClientProvider client={queryClientRef.current!}>\n <DndProvider backend={HTML5Backend}>\n <LanguageProvider messages={{}}>\n <Theme\n themes={{\n dark: darkTheme,\n light: lightTheme,\n }}\n >\n <NotificationsProvider>\n <GuidedTourContext enabled={false}>\n <ConfigurationContextProvider\n showReleaseNotification={false}\n logos={{\n auth: { default: 'default' },\n menu: { default: 'default' },\n }}\n updateProjectSettings={jest.fn()}\n >\n <AppInfoProvider\n autoReload\n useYarn\n dependencies={{\n '@strapi/plugin-documentation': '4.2.0',\n '@strapi/provider-upload-cloudinary': '4.2.0',\n }}\n strapiVersion=\"4.1.0\"\n communityEdition\n shouldUpdateStrapi={false}\n >\n <TestChildrenOutlet />\n </AppInfoProvider>\n </ConfigurationContextProvider>\n </GuidedTourContext>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </DndProvider>\n </QueryClientProvider>\n </AuthProvider>\n </Provider>\n </StrapiAppProvider>\n ),\n },\n ],\n {\n initialEntries,\n }\n );\n }\n\n // en is the default locale of the admin app.\n return (\n <TestChildrenContext.Provider value={children}>\n <RouterProvider router={routerRef.current!} />\n </TestChildrenContext.Provider>\n );\n};\n\n// eslint-disable-next-line react/jsx-no-useless-fragment\nconst fallbackWrapper = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nexport interface RenderOptions {\n renderOptions?: RTLRenderOptions;\n userEventOptions?: Parameters<typeof userEvent.setup>[0];\n initialEntries?: MemoryRouterProps['initialEntries'];\n providerOptions?: Pick<ProvidersProps, 'storeConfig' | 'permissions'>;\n}\n\n/**\n * @alpha\n * @description A custom render function that wraps the component with the necessary providers,\n * for use of testing components within the Strapi Admin.\n */\nconst render = (\n ui: React.ReactElement,\n { renderOptions, userEventOptions, initialEntries, providerOptions }: RenderOptions = {}\n): RenderResult & { user: ReturnType<typeof userEvent.setup> } => {\n const { wrapper: Wrapper = fallbackWrapper, ...restOptions } = renderOptions ?? {};\n\n return {\n ...renderRTL(ui, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n }),\n user: userEvent.setup({\n skipHover: true,\n ...userEventOptions,\n }),\n };\n};\n\n/**\n * @alpha\n * @description A custom render-hook function that wraps the component with the necessary providers,\n * for use of testing hooks within the Strapi Admin.\n */\nconst renderHook = <\n Result,\n Props,\n Q extends Queries,\n Container extends Element | DocumentFragment = HTMLElement,\n BaseElement extends Element | DocumentFragment = Container,\n>(\n hook: (initialProps: Props) => Result,\n options?: RenderHookOptions<Props, Q, Container, BaseElement> &\n Pick<RenderOptions, 'initialEntries' | 'providerOptions'>\n): RenderHookResult<Result, Props> => {\n const {\n wrapper: Wrapper = fallbackWrapper,\n initialEntries,\n providerOptions,\n ...restOptions\n } = options ?? {};\n\n return renderHookRTL(hook, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n });\n};\n\nexport { render, renderHook, waitFor, server, act, screen, fireEvent, defaultTestStoreConfig };\n"],"names":["setLogger","log","warn","error","TestChildrenContext","React","createContext","TestChildrenOutlet","_jsx","_Fragment","useContext","defaultTestStoreConfig","preloadedState","initialState","reducer","adminApi","reducerPath","admin_app","appReducer","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","DEFAULT_PERMISSIONS","fixtures","permissions","allPermissions","id","action","subject","properties","conditions","actionParameters","Providers","children","initialEntries","storeConfig","queryClientRef","useRef","storeRef","routerRef","current","QueryClient","defaultOptions","queries","retry","configureStore","createMemoryRouter","path","element","StrapiAppProvider","components","rbac","RBAC","widgets","getAll","jest","fn","register","customFields","get","mockReturnValue","name","pluginId","type","icon","intlLabel","defaultMessage","intlDescription","Input","mockResolvedValue","default","fields","menu","getAdminInjectedComponents","getPlugin","plugins","runHookParallel","runHookWaterfall","mockImplementation","_name","initialValue","runHookSeries","settings","Provider","store","AuthProvider","_defaultPermissions","_disableRenewToken","QueryClientProvider","client","DndProvider","backend","HTML5Backend","LanguageProvider","messages","Theme","themes","dark","darkTheme","light","lightTheme","NotificationsProvider","GuidedTourContext","enabled","ConfigurationContextProvider","showReleaseNotification","logos","auth","updateProjectSettings","AppInfoProvider","autoReload","useYarn","dependencies","strapiVersion","communityEdition","shouldUpdateStrapi","value","RouterProvider","router","fallbackWrapper","render","ui","renderOptions","userEventOptions","providerOptions","wrapper","Wrapper","restOptions","renderRTL","user","userEvent","setup","skipHover","renderHook","hook","options","renderHookRTL"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../admin/tests/utils.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { ConfigureStoreOptions, configureStore } from '@reduxjs/toolkit';\nimport { fixtures } from '@strapi/admin-test-utils';\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport {\n fireEvent,\n renderHook as renderHookRTL,\n render as renderRTL,\n waitFor,\n RenderOptions as RTLRenderOptions,\n RenderResult,\n act,\n screen,\n RenderHookOptions,\n RenderHookResult,\n Queries,\n} from '@testing-library/react';\nimport { userEvent } from '@testing-library/user-event';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { QueryClient, QueryClientProvider, setLogger } from 'react-query';\nimport { Provider } from 'react-redux';\nimport { MemoryRouterProps, RouterProvider, createMemoryRouter } from 'react-router-dom';\n\nimport { GuidedTourContext } from '../src/components/GuidedTour/Context';\nimport { LanguageProvider } from '../src/components/LanguageProvider';\nimport { Theme } from '../src/components/Theme';\nimport { RBAC } from '../src/core/apis/rbac';\nimport { AppInfoProvider } from '../src/features/AppInfo';\nimport { AuthProvider, type Permission } from '../src/features/Auth';\nimport { _internalConfigurationContextProvider as ConfigurationContextProvider } from '../src/features/Configuration';\nimport { NotificationsProvider } from '../src/features/Notifications';\nimport { StrapiAppProvider } from '../src/features/StrapiApp';\nimport { reducer as appReducer } from '../src/reducer';\nimport { adminApi } from '../src/services/api';\n\nimport { server } from './server';\nimport { initialState } from './store';\n\nsetLogger({\n log: () => {},\n warn: () => {},\n error: () => {},\n});\n\n/**\n * RTL's `rerender()` updates the `children` passed to our test `render()` helper.\n * However, we keep a stable `routerRef` to avoid recreating the data router (which\n * can crash React Router). That means the route element tree would otherwise keep\n * rendering the initial children forever.\n *\n * We solve this by passing `children` via React context, so consumers inside the\n * router element tree still update on rerenders without recreating the router.\n */\nconst TestChildrenContext = React.createContext<React.ReactNode>(null);\n\nconst TestChildrenOutlet = () => {\n return <>{React.useContext(TestChildrenContext)}</>;\n};\n\ninterface ProvidersProps {\n children: React.ReactNode;\n initialEntries?: MemoryRouterProps['initialEntries'];\n storeConfig?: Partial<ConfigureStoreOptions>;\n permissions?: Permission[] | ((defaultPermissions: Permission[]) => Permission[] | undefined);\n}\n\nconst defaultTestStoreConfig = () => ({\n preloadedState: initialState(),\n reducer: {\n [adminApi.reducerPath]: adminApi.reducer,\n admin_app: appReducer,\n },\n // @ts-expect-error – this fails.\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware({\n // Disable timing checks for test env\n immutableCheck: false,\n serializableCheck: false,\n }),\n adminApi.middleware,\n ],\n});\n\nconst DEFAULT_PERMISSIONS = [\n ...fixtures.permissions.allPermissions,\n {\n id: 314,\n action: 'admin::users.read',\n subject: null,\n properties: {},\n conditions: [],\n actionParameters: {},\n },\n];\n\nconst Providers = ({ children, initialEntries, storeConfig, permissions = [] }: ProvidersProps) => {\n /**\n * Keep these instances stable for the lifetime of the render.\n * Recreating the data router on rerenders can crash React Router.\n */\n const queryClientRef = React.useRef<QueryClient | null>(null);\n const storeRef = React.useRef<ReturnType<typeof configureStore> | null>(null);\n const routerRef = React.useRef<ReturnType<typeof createMemoryRouter> | null>(null);\n\n if (queryClientRef.current === null) {\n queryClientRef.current = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n },\n },\n });\n }\n\n if (storeRef.current === null) {\n storeRef.current = configureStore({\n ...defaultTestStoreConfig(),\n ...storeConfig,\n });\n }\n\n let allPermissions: Permission[];\n\n if (typeof permissions === 'function') {\n /**\n * The callback form can return `undefined` to mean \"use defaults\".\n * Guard against passing `undefined` into AuthProvider.\n */\n allPermissions = permissions(DEFAULT_PERMISSIONS) ?? DEFAULT_PERMISSIONS;\n } else {\n allPermissions = [...DEFAULT_PERMISSIONS, ...permissions];\n }\n\n if (routerRef.current === null) {\n routerRef.current = createMemoryRouter(\n [\n {\n path: '/*',\n element: (\n <StrapiAppProvider\n components={{}}\n rbac={new RBAC()}\n widgets={\n {\n widgets: [],\n getAll: jest.fn(),\n register: jest.fn(),\n } as unknown as React.ComponentProps<typeof StrapiAppProvider>['widgets']\n }\n customFields={{\n customFields: {},\n get: jest.fn().mockReturnValue({\n name: 'color',\n pluginId: 'mycustomfields',\n type: 'text',\n icon: jest.fn(),\n intlLabel: {\n id: 'mycustomfields.color.label',\n defaultMessage: 'Color',\n },\n intlDescription: {\n id: 'mycustomfields.color.description',\n defaultMessage: 'Select any color',\n },\n components: {\n Input: jest.fn().mockResolvedValue({ default: jest.fn() }),\n },\n }),\n getAll: jest.fn(),\n register: jest.fn(),\n }}\n fields={{}}\n menu={[]}\n getAdminInjectedComponents={jest.fn()}\n getPlugin={jest.fn()}\n plugins={{}}\n runHookParallel={jest.fn()}\n runHookWaterfall={jest.fn().mockImplementation((_name, initialValue) => initialValue)}\n runHookSeries={jest.fn()}\n settings={{}}\n >\n <Provider store={storeRef.current!}>\n <AuthProvider _defaultPermissions={allPermissions} _disableRenewToken={true}>\n <QueryClientProvider client={queryClientRef.current!}>\n <DndProvider backend={HTML5Backend}>\n <LanguageProvider messages={{}}>\n <Theme\n themes={{\n dark: darkTheme,\n light: lightTheme,\n }}\n >\n <NotificationsProvider>\n <GuidedTourContext enabled={false}>\n <ConfigurationContextProvider\n showReleaseNotification={false}\n logos={{\n auth: { default: 'default' },\n menu: { default: 'default' },\n }}\n updateProjectSettings={jest.fn()}\n >\n <AppInfoProvider\n autoReload\n useYarn\n dependencies={{\n '@strapi/plugin-documentation': '4.2.0',\n '@strapi/provider-upload-cloudinary': '4.2.0',\n }}\n strapiVersion=\"4.1.0\"\n communityEdition\n shouldUpdateStrapi={false}\n >\n <TestChildrenOutlet />\n </AppInfoProvider>\n </ConfigurationContextProvider>\n </GuidedTourContext>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </DndProvider>\n </QueryClientProvider>\n </AuthProvider>\n </Provider>\n </StrapiAppProvider>\n ),\n },\n ],\n {\n initialEntries,\n }\n );\n }\n\n // en is the default locale of the admin app.\n return (\n <TestChildrenContext.Provider value={children}>\n <RouterProvider router={routerRef.current!} />\n </TestChildrenContext.Provider>\n );\n};\n\n// eslint-disable-next-line react/jsx-no-useless-fragment\nconst fallbackWrapper = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nexport interface RenderOptions {\n renderOptions?: RTLRenderOptions;\n userEventOptions?: Parameters<typeof userEvent.setup>[0];\n initialEntries?: MemoryRouterProps['initialEntries'];\n providerOptions?: Pick<ProvidersProps, 'storeConfig' | 'permissions'>;\n}\n\n/**\n * @alpha\n * @description A custom render function that wraps the component with the necessary providers,\n * for use of testing components within the Strapi Admin.\n */\nconst render = (\n ui: React.ReactElement,\n { renderOptions, userEventOptions, initialEntries, providerOptions }: RenderOptions = {}\n): RenderResult & { user: ReturnType<typeof userEvent.setup> } => {\n const { wrapper: Wrapper = fallbackWrapper, ...restOptions } = renderOptions ?? {};\n\n return {\n ...renderRTL(ui, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n }),\n user: userEvent.setup({\n skipHover: true,\n ...userEventOptions,\n }),\n };\n};\n\n/**\n * @alpha\n * @description A custom render-hook function that wraps the component with the necessary providers,\n * for use of testing hooks within the Strapi Admin.\n */\nconst renderHook = <\n Result,\n Props,\n Q extends Queries,\n Container extends Element | DocumentFragment = HTMLElement,\n BaseElement extends Element | DocumentFragment = Container,\n>(\n hook: (initialProps: Props) => Result,\n options?: RenderHookOptions<Props, Q, Container, BaseElement> &\n Pick<RenderOptions, 'initialEntries' | 'providerOptions'>\n): RenderHookResult<Result, Props> => {\n const {\n wrapper: Wrapper = fallbackWrapper,\n initialEntries,\n providerOptions,\n ...restOptions\n } = options ?? {};\n\n return renderHookRTL(hook, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n });\n};\n\nexport { render, renderHook, waitFor, server, act, screen, fireEvent, defaultTestStoreConfig };\n"],"names":["setLogger","log","warn","error","TestChildrenContext","React","createContext","TestChildrenOutlet","_jsx","_Fragment","useContext","defaultTestStoreConfig","preloadedState","initialState","reducer","adminApi","reducerPath","admin_app","appReducer","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","DEFAULT_PERMISSIONS","fixtures","permissions","allPermissions","id","action","subject","properties","conditions","actionParameters","Providers","children","initialEntries","storeConfig","queryClientRef","useRef","storeRef","routerRef","current","QueryClient","defaultOptions","queries","retry","configureStore","createMemoryRouter","path","element","StrapiAppProvider","components","rbac","RBAC","widgets","getAll","jest","fn","register","customFields","get","mockReturnValue","name","pluginId","type","icon","intlLabel","defaultMessage","intlDescription","Input","mockResolvedValue","default","fields","menu","getAdminInjectedComponents","getPlugin","plugins","runHookParallel","runHookWaterfall","mockImplementation","_name","initialValue","runHookSeries","settings","Provider","store","AuthProvider","_defaultPermissions","_disableRenewToken","QueryClientProvider","client","DndProvider","backend","HTML5Backend","LanguageProvider","messages","Theme","themes","dark","darkTheme","light","lightTheme","NotificationsProvider","GuidedTourContext","enabled","ConfigurationContextProvider","showReleaseNotification","logos","auth","updateProjectSettings","AppInfoProvider","autoReload","useYarn","dependencies","strapiVersion","communityEdition","shouldUpdateStrapi","value","RouterProvider","router","fallbackWrapper","render","ui","renderOptions","userEventOptions","providerOptions","wrapper","Wrapper","restOptions","renderRTL","user","userEvent","setup","skipHover","renderHook","hook","options","renderHookRTL"],"mappings":"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"}
@@ -7,7 +7,10 @@ var reactRouterDom = require('react-router-dom');
7
7
  var Notifications = require('../../../../admin/src/features/Notifications.js');
8
8
  var useLicenseLimits = require('./useLicenseLimits.js');
9
9
 
10
- function _interopNamespaceDefault(e) {
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
11
14
  var n = Object.create(null);
12
15
  if (e) {
13
16
  Object.keys(e).forEach(function (k) {
@@ -24,7 +27,8 @@ function _interopNamespaceDefault(e) {
24
27
  return Object.freeze(n);
25
28
  }
26
29
 
27
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
+ var isNil__default = /*#__PURE__*/_interopDefault(isNil);
28
32
 
29
33
  const STORAGE_KEY_PREFIX = 'strapi-notification-seat-limit';
30
34
  const BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';
@@ -39,7 +43,7 @@ const useLicenseLimitNotification = ()=>{
39
43
  if (isError || isLoading) {
40
44
  return;
41
45
  }
42
- const shouldDisplayNotification = !isNil(permittedSeats) && !window.sessionStorage.getItem(`${STORAGE_KEY_PREFIX}-${pathname}`) && licenseLimitStatus === 'OVER_LIMIT';
46
+ const shouldDisplayNotification = !isNil__default.default(permittedSeats) && !window.sessionStorage.getItem(`${STORAGE_KEY_PREFIX}-${pathname}`) && licenseLimitStatus === 'OVER_LIMIT';
43
47
  let notificationType;
44
48
  if (licenseLimitStatus === 'OVER_LIMIT') {
45
49
  notificationType = 'danger';
@@ -1 +1 @@
1
- {"version":3,"file":"useLicenseLimitNotification.js","sources":["../../../../../../ee/admin/src/hooks/useLicenseLimitNotification.ts"],"sourcesContent":["/**\n *\n * useLicenseLimitNotification\n *\n */\nimport * as React from 'react';\n\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { NotificationConfig, useNotification } from '../../../../admin/src/features/Notifications';\n\nimport { useLicenseLimits } from './useLicenseLimits';\n\nconst STORAGE_KEY_PREFIX = 'strapi-notification-seat-limit';\n\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\nconst MANAGE_SEATS_URL = 'https://strapi.io/billing/manage-seats';\n\nexport const useLicenseLimitNotification = () => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n const { toggleNotification } = useNotification();\n const { pathname } = useLocation();\n\n const { enforcementUserCount, permittedSeats, licenseLimitStatus, type } = license ?? {};\n\n React.useEffect(() => {\n if (isError || isLoading) {\n return;\n }\n\n const shouldDisplayNotification =\n !isNil(permittedSeats) &&\n !window.sessionStorage.getItem(`${STORAGE_KEY_PREFIX}-${pathname}`) &&\n licenseLimitStatus === 'OVER_LIMIT';\n\n let notificationType: NotificationConfig['type'];\n\n if (licenseLimitStatus === 'OVER_LIMIT') {\n notificationType = 'danger';\n }\n\n if (shouldDisplayNotification) {\n toggleNotification({\n type: notificationType,\n message: formatMessage(\n {\n id: 'notification.ee.warning.over-.message',\n defaultMessage:\n \"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app.\",\n },\n { licenseLimitStatus }\n ),\n title: formatMessage(\n {\n id: 'notification.ee.warning.at-seat-limit.title',\n defaultMessage:\n '{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})',\n },\n {\n licenseLimitStatus,\n enforcementUserCount,\n permittedSeats,\n }\n ),\n link: {\n url: type === 'gold' ? BILLING_SELF_HOSTED_URL : MANAGE_SEATS_URL,\n label: formatMessage({\n id: 'notification.ee.warning.seat-limit.link',\n defaultMessage: type === 'gold' ? 'Contact sales' : 'Manage seats',\n }),\n },\n blockTransition: true,\n onClose() {\n window.sessionStorage.setItem(`${STORAGE_KEY_PREFIX}-${pathname}`, 'true');\n },\n });\n }\n }, [\n toggleNotification,\n license,\n pathname,\n formatMessage,\n isLoading,\n permittedSeats,\n licenseLimitStatus,\n enforcementUserCount,\n isError,\n type,\n ]);\n};\n"],"names":["STORAGE_KEY_PREFIX","BILLING_SELF_HOSTED_URL","MANAGE_SEATS_URL","useLicenseLimitNotification","formatMessage","useIntl","license","isError","isLoading","useLicenseLimits","toggleNotification","useNotification","pathname","useLocation","enforcementUserCount","permittedSeats","licenseLimitStatus","type","React","useEffect","shouldDisplayNotification","isNil","window","sessionStorage","getItem","notificationType","message","id","defaultMessage","title","link","url","label","blockTransition","onClose","setItem"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAMA,kBAAAA,GAAqB,gCAAA;AAE3B,MAAMC,uBAAAA,GAA0B,yCAAA;AAChC,MAAMC,gBAAAA,GAAmB,wCAAA;MAEZC,2BAAAA,GAA8B,IAAA;IACzC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGC,iCAAAA,EAAAA;IACxC,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,QAAQ,EAAE,GAAGC,0BAAAA,EAAAA;IAErB,MAAM,EAAEC,oBAAoB,EAAEC,cAAc,EAAEC,kBAAkB,EAAEC,IAAI,EAAE,GAAGX,OAAAA,IAAW,EAAC;AAEvFY,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIZ,WAAWC,SAAAA,EAAW;AACxB,YAAA;AACF,QAAA;AAEA,QAAA,MAAMY,4BACJ,CAACC,KAAAA,CAAMN,cAAAA,CAAAA,IACP,CAACO,OAAOC,cAAc,CAACC,OAAO,CAAC,GAAGxB,kBAAAA,CAAmB,CAAC,EAAEY,QAAAA,CAAAA,CAAU,KAClEI,kBAAAA,KAAuB,YAAA;QAEzB,IAAIS,gBAAAA;AAEJ,QAAA,IAAIT,uBAAuB,YAAA,EAAc;YACvCS,gBAAAA,GAAmB,QAAA;AACrB,QAAA;AAEA,QAAA,IAAIL,yBAAAA,EAA2B;YAC7BV,kBAAAA,CAAmB;gBACjBO,IAAAA,EAAMQ,gBAAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CACP;oBACEuB,EAAAA,EAAI,uCAAA;oBACJC,cAAAA,EACE;iBACJ,EACA;AAAEZ,oBAAAA;AAAmB,iBAAA,CAAA;AAEvBa,gBAAAA,KAAAA,EAAOzB,aAAAA,CACL;oBACEuB,EAAAA,EAAI,6CAAA;oBACJC,cAAAA,EACE;iBACJ,EACA;AACEZ,oBAAAA,kBAAAA;AACAF,oBAAAA,oBAAAA;AACAC,oBAAAA;AACF,iBAAA,CAAA;gBAEFe,IAAAA,EAAM;oBACJC,GAAAA,EAAKd,IAAAA,KAAS,SAAShB,uBAAAA,GAA0BC,gBAAAA;AACjD8B,oBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;wBACnBuB,EAAAA,EAAI,yCAAA;wBACJC,cAAAA,EAAgBX,IAAAA,KAAS,SAAS,eAAA,GAAkB;AACtD,qBAAA;AACF,iBAAA;gBACAgB,eAAAA,EAAiB,IAAA;AACjBC,gBAAAA,OAAAA,CAAAA,GAAAA;oBACEZ,MAAAA,CAAOC,cAAc,CAACY,OAAO,CAAC,GAAGnC,kBAAAA,CAAmB,CAAC,EAAEY,QAAAA,CAAAA,CAAU,EAAE,MAAA,CAAA;AACrE,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AACDF,QAAAA,kBAAAA;AACAJ,QAAAA,OAAAA;AACAM,QAAAA,QAAAA;AACAR,QAAAA,aAAAA;AACAI,QAAAA,SAAAA;AACAO,QAAAA,cAAAA;AACAC,QAAAA,kBAAAA;AACAF,QAAAA,oBAAAA;AACAP,QAAAA,OAAAA;AACAU,QAAAA;AACD,KAAA,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"useLicenseLimitNotification.js","sources":["../../../../../../ee/admin/src/hooks/useLicenseLimitNotification.ts"],"sourcesContent":["/**\n *\n * useLicenseLimitNotification\n *\n */\nimport * as React from 'react';\n\nimport isNil from 'lodash/isNil';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { NotificationConfig, useNotification } from '../../../../admin/src/features/Notifications';\n\nimport { useLicenseLimits } from './useLicenseLimits';\n\nconst STORAGE_KEY_PREFIX = 'strapi-notification-seat-limit';\n\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\nconst MANAGE_SEATS_URL = 'https://strapi.io/billing/manage-seats';\n\nexport const useLicenseLimitNotification = () => {\n const { formatMessage } = useIntl();\n const { license, isError, isLoading } = useLicenseLimits();\n const { toggleNotification } = useNotification();\n const { pathname } = useLocation();\n\n const { enforcementUserCount, permittedSeats, licenseLimitStatus, type } = license ?? {};\n\n React.useEffect(() => {\n if (isError || isLoading) {\n return;\n }\n\n const shouldDisplayNotification =\n !isNil(permittedSeats) &&\n !window.sessionStorage.getItem(`${STORAGE_KEY_PREFIX}-${pathname}`) &&\n licenseLimitStatus === 'OVER_LIMIT';\n\n let notificationType: NotificationConfig['type'];\n\n if (licenseLimitStatus === 'OVER_LIMIT') {\n notificationType = 'danger';\n }\n\n if (shouldDisplayNotification) {\n toggleNotification({\n type: notificationType,\n message: formatMessage(\n {\n id: 'notification.ee.warning.over-.message',\n defaultMessage:\n \"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app.\",\n },\n { licenseLimitStatus }\n ),\n title: formatMessage(\n {\n id: 'notification.ee.warning.at-seat-limit.title',\n defaultMessage:\n '{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})',\n },\n {\n licenseLimitStatus,\n enforcementUserCount,\n permittedSeats,\n }\n ),\n link: {\n url: type === 'gold' ? BILLING_SELF_HOSTED_URL : MANAGE_SEATS_URL,\n label: formatMessage({\n id: 'notification.ee.warning.seat-limit.link',\n defaultMessage: type === 'gold' ? 'Contact sales' : 'Manage seats',\n }),\n },\n blockTransition: true,\n onClose() {\n window.sessionStorage.setItem(`${STORAGE_KEY_PREFIX}-${pathname}`, 'true');\n },\n });\n }\n }, [\n toggleNotification,\n license,\n pathname,\n formatMessage,\n isLoading,\n permittedSeats,\n licenseLimitStatus,\n enforcementUserCount,\n isError,\n type,\n ]);\n};\n"],"names":["STORAGE_KEY_PREFIX","BILLING_SELF_HOSTED_URL","MANAGE_SEATS_URL","useLicenseLimitNotification","formatMessage","useIntl","license","isError","isLoading","useLicenseLimits","toggleNotification","useNotification","pathname","useLocation","enforcementUserCount","permittedSeats","licenseLimitStatus","type","React","useEffect","shouldDisplayNotification","isNil","window","sessionStorage","getItem","notificationType","message","id","defaultMessage","title","link","url","label","blockTransition","onClose","setItem"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAMA,kBAAAA,GAAqB,gCAAA;AAE3B,MAAMC,uBAAAA,GAA0B,yCAAA;AAChC,MAAMC,gBAAAA,GAAmB,wCAAA;MAEZC,2BAAAA,GAA8B,IAAA;IACzC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGC,iCAAAA,EAAAA;IACxC,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;IAC/B,MAAM,EAAEC,QAAQ,EAAE,GAAGC,0BAAAA,EAAAA;IAErB,MAAM,EAAEC,oBAAoB,EAAEC,cAAc,EAAEC,kBAAkB,EAAEC,IAAI,EAAE,GAAGX,OAAAA,IAAW,EAAC;AAEvFY,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIZ,WAAWC,SAAAA,EAAW;AACxB,YAAA;AACF,QAAA;AAEA,QAAA,MAAMY,4BACJ,CAACC,sBAAAA,CAAMN,cAAAA,CAAAA,IACP,CAACO,OAAOC,cAAc,CAACC,OAAO,CAAC,GAAGxB,kBAAAA,CAAmB,CAAC,EAAEY,QAAAA,CAAAA,CAAU,KAClEI,kBAAAA,KAAuB,YAAA;QAEzB,IAAIS,gBAAAA;AAEJ,QAAA,IAAIT,uBAAuB,YAAA,EAAc;YACvCS,gBAAAA,GAAmB,QAAA;AACrB,QAAA;AAEA,QAAA,IAAIL,yBAAAA,EAA2B;YAC7BV,kBAAAA,CAAmB;gBACjBO,IAAAA,EAAMQ,gBAAAA;AACNC,gBAAAA,OAAAA,EAAStB,aAAAA,CACP;oBACEuB,EAAAA,EAAI,uCAAA;oBACJC,cAAAA,EACE;iBACJ,EACA;AAAEZ,oBAAAA;AAAmB,iBAAA,CAAA;AAEvBa,gBAAAA,KAAAA,EAAOzB,aAAAA,CACL;oBACEuB,EAAAA,EAAI,6CAAA;oBACJC,cAAAA,EACE;iBACJ,EACA;AACEZ,oBAAAA,kBAAAA;AACAF,oBAAAA,oBAAAA;AACAC,oBAAAA;AACF,iBAAA,CAAA;gBAEFe,IAAAA,EAAM;oBACJC,GAAAA,EAAKd,IAAAA,KAAS,SAAShB,uBAAAA,GAA0BC,gBAAAA;AACjD8B,oBAAAA,KAAAA,EAAO5B,aAAAA,CAAc;wBACnBuB,EAAAA,EAAI,yCAAA;wBACJC,cAAAA,EAAgBX,IAAAA,KAAS,SAAS,eAAA,GAAkB;AACtD,qBAAA;AACF,iBAAA;gBACAgB,eAAAA,EAAiB,IAAA;AACjBC,gBAAAA,OAAAA,CAAAA,GAAAA;oBACEZ,MAAAA,CAAOC,cAAc,CAACY,OAAO,CAAC,GAAGnC,kBAAAA,CAAmB,CAAC,EAAEY,QAAAA,CAAAA,CAAU,EAAE,MAAA,CAAA;AACrE,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AACDF,QAAAA,kBAAAA;AACAJ,QAAAA,OAAAA;AACAM,QAAAA,QAAAA;AACAR,QAAAA,aAAAA;AACAI,QAAAA,SAAAA;AACAO,QAAAA,cAAAA;AACAC,QAAAA,kBAAAA;AACAF,QAAAA,oBAAAA;AACAP,QAAAA,OAAAA;AACAU,QAAAA;AACD,KAAA,CAAA;AACH;;;;"}
@@ -3,7 +3,8 @@
3
3
  var React = require('react');
4
4
  var admin = require('../../../../admin/src/services/admin.js');
5
5
 
6
- function _interopNamespaceDefault(e) {
6
+ function _interopNamespace(e) {
7
+ if (e && e.__esModule) return e;
7
8
  var n = Object.create(null);
8
9
  if (e) {
9
10
  Object.keys(e).forEach(function (k) {
@@ -20,7 +21,7 @@ function _interopNamespaceDefault(e) {
20
21
  return Object.freeze(n);
21
22
  }
22
23
 
23
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
24
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
24
25
 
25
26
  function useLicenseLimits({ enabled } = {
26
27
  enabled: true
@@ -1 +1 @@
1
- {"version":3,"file":"useLicenseLimits.js","sources":["../../../../../../ee/admin/src/hooks/useLicenseLimits.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useGetLicenseLimitsQuery } from '../../../../admin/src/services/admin';\nimport { GetLicenseLimitInformation } from '../../../../shared/contracts/admin';\n\ninterface UseLicenseLimitsArgs {\n enabled?: boolean;\n}\n\nfunction useLicenseLimits({ enabled }: UseLicenseLimitsArgs = { enabled: true }) {\n const { data, isError, isLoading } = useGetLicenseLimitsQuery(undefined, {\n skip: !enabled,\n });\n\n type FeatureNames = GetLicenseLimitInformation.Response['data']['features'][number]['name'];\n\n type GetFeatureType = <T>(name: FeatureNames) => Record<string, T> | undefined;\n\n const getFeature = React.useCallback<GetFeatureType>(\n (name) => {\n const feature = data?.data?.features.find((feature) => feature.name === name);\n\n if (feature && 'options' in feature) {\n return feature.options;\n } else {\n return {};\n }\n },\n [data]\n );\n\n return {\n license: data?.data,\n getFeature,\n isError,\n isLoading,\n isTrial: data?.data?.isTrial ?? false,\n };\n}\n\nexport { useLicenseLimits };\nexport type { UseLicenseLimitsArgs };\n"],"names":["useLicenseLimits","enabled","data","isError","isLoading","useGetLicenseLimitsQuery","undefined","skip","getFeature","React","useCallback","name","feature","features","find","options","license","isTrial"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AASA,SAASA,gBAAAA,CAAiB,EAAEC,OAAO,EAAwB,GAAG;IAAEA,OAAAA,EAAS;AAAK,CAAC,EAAA;IAC7E,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGC,8BAAAA,CAAyBC,SAAAA,EAAW;AACvEC,QAAAA,IAAAA,EAAM,CAACN;AACT,KAAA,CAAA;AAMA,IAAA,MAAMO,UAAAA,GAAaC,gBAAAA,CAAMC,WAAW,CAClC,CAACC,IAAAA,GAAAA;QACC,MAAMC,OAAAA,GAAUV,MAAMA,IAAAA,EAAMW,QAAAA,CAASC,KAAK,CAACF,OAAAA,GAAYA,OAAAA,CAAQD,IAAI,KAAKA,IAAAA,CAAAA;QAExE,IAAIC,OAAAA,IAAW,aAAaA,OAAAA,EAAS;AACnC,YAAA,OAAOA,QAAQG,OAAO;QACxB,CAAA,MAAO;AACL,YAAA,OAAO,EAAC;AACV,QAAA;IACF,CAAA,EACA;AAACb,QAAAA;AAAK,KAAA,CAAA;IAGR,OAAO;AACLc,QAAAA,OAAAA,EAASd,IAAAA,EAAMA,IAAAA;AACfM,QAAAA,UAAAA;AACAL,QAAAA,OAAAA;AACAC,QAAAA,SAAAA;QACAa,OAAAA,EAASf,IAAAA,EAAMA,MAAMe,OAAAA,IAAW;AAClC,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"useLicenseLimits.js","sources":["../../../../../../ee/admin/src/hooks/useLicenseLimits.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useGetLicenseLimitsQuery } from '../../../../admin/src/services/admin';\nimport { GetLicenseLimitInformation } from '../../../../shared/contracts/admin';\n\ninterface UseLicenseLimitsArgs {\n enabled?: boolean;\n}\n\nfunction useLicenseLimits({ enabled }: UseLicenseLimitsArgs = { enabled: true }) {\n const { data, isError, isLoading } = useGetLicenseLimitsQuery(undefined, {\n skip: !enabled,\n });\n\n type FeatureNames = GetLicenseLimitInformation.Response['data']['features'][number]['name'];\n\n type GetFeatureType = <T>(name: FeatureNames) => Record<string, T> | undefined;\n\n const getFeature = React.useCallback<GetFeatureType>(\n (name) => {\n const feature = data?.data?.features.find((feature) => feature.name === name);\n\n if (feature && 'options' in feature) {\n return feature.options;\n } else {\n return {};\n }\n },\n [data]\n );\n\n return {\n license: data?.data,\n getFeature,\n isError,\n isLoading,\n isTrial: data?.data?.isTrial ?? false,\n };\n}\n\nexport { useLicenseLimits };\nexport type { UseLicenseLimitsArgs };\n"],"names":["useLicenseLimits","enabled","data","isError","isLoading","useGetLicenseLimitsQuery","undefined","skip","getFeature","React","useCallback","name","feature","features","find","options","license","isTrial"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AASA,SAASA,gBAAAA,CAAiB,EAAEC,OAAO,EAAwB,GAAG;IAAEA,OAAAA,EAAS;AAAK,CAAC,EAAA;IAC7E,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGC,8BAAAA,CAAyBC,SAAAA,EAAW;AACvEC,QAAAA,IAAAA,EAAM,CAACN;AACT,KAAA,CAAA;AAMA,IAAA,MAAMO,UAAAA,GAAaC,gBAAAA,CAAMC,WAAW,CAClC,CAACC,IAAAA,GAAAA;QACC,MAAMC,OAAAA,GAAUV,MAAMA,IAAAA,EAAMW,QAAAA,CAASC,KAAK,CAACF,OAAAA,GAAYA,OAAAA,CAAQD,IAAI,KAAKA,IAAAA,CAAAA;QAExE,IAAIC,OAAAA,IAAW,aAAaA,OAAAA,EAAS;AACnC,YAAA,OAAOA,QAAQG,OAAO;QACxB,CAAA,MAAO;AACL,YAAA,OAAO,EAAC;AACV,QAAA;IACF,CAAA,EACA;AAACb,QAAAA;AAAK,KAAA,CAAA;IAGR,OAAO;AACLc,QAAAA,OAAAA,EAASd,IAAAA,EAAMA,IAAAA;AACfM,QAAAA,UAAAA;AACAL,QAAAA,OAAAA;AACAC,QAAAA,SAAAA;QACAa,OAAAA,EAASf,IAAAA,EAAMA,MAAMe,OAAAA,IAAW;AAClC,KAAA;AACF;;;;"}
@@ -9,7 +9,8 @@ var hooks = require('../../../../admin/src/core/store/hooks.js');
9
9
  var reducer = require('../../../../admin/src/reducer.js');
10
10
  var cookies = require('../../../../admin/src/utils/cookies.js');
11
11
 
12
- function _interopNamespaceDefault(e) {
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
13
14
  var n = Object.create(null);
14
15
  if (e) {
15
16
  Object.keys(e).forEach(function (k) {
@@ -26,7 +27,7 @@ function _interopNamespaceDefault(e) {
26
27
  return Object.freeze(n);
27
28
  }
28
29
 
29
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
31
 
31
32
  const AuthResponse = ()=>{
32
33
  const match = reactRouterDom.useMatch('/auth/login/:authResponse');
@@ -1 +1 @@
1
- {"version":3,"file":"AuthResponse.js","sources":["../../../../../../ee/admin/src/pages/AuthResponse.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\n\nimport { Page } from '../../../../admin/src/components/PageHelpers';\nimport { useTypedDispatch } from '../../../../admin/src/core/store/hooks';\nimport { login } from '../../../../admin/src/reducer';\nimport { getCookieValue } from '../../../../admin/src/utils/cookies';\n\nconst AuthResponse = () => {\n const match = useMatch('/auth/login/:authResponse');\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const dispatch = useTypedDispatch();\n\n const redirectToOops = React.useCallback(() => {\n navigate({\n pathname: '/auth/oops',\n search: `?info=${encodeURIComponent(\n formatMessage({\n id: 'Auth.form.button.login.providers.error',\n defaultMessage: 'We cannot connect you through the selected provider.',\n })\n )}`,\n });\n }, [navigate, formatMessage]);\n\n React.useEffect(() => {\n if (match?.params.authResponse === 'error') {\n redirectToOops();\n }\n\n if (match?.params.authResponse === 'success') {\n const jwtToken = getCookieValue('jwtToken');\n\n if (jwtToken) {\n dispatch(\n login({\n token: jwtToken,\n })\n );\n\n navigate('/auth/login');\n } else {\n redirectToOops();\n }\n }\n }, [dispatch, match, redirectToOops, navigate]);\n\n return <Page.Loading />;\n};\n\nexport { AuthResponse };\n"],"names":["AuthResponse","match","useMatch","formatMessage","useIntl","navigate","useNavigate","dispatch","useTypedDispatch","redirectToOops","React","useCallback","pathname","search","encodeURIComponent","id","defaultMessage","useEffect","params","authResponse","jwtToken","getCookieValue","login","token","_jsx","Page","Loading"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAMA,YAAAA,GAAe,IAAA;AACnB,IAAA,MAAMC,QAAQC,uBAAAA,CAAS,2BAAA,CAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;AACjB,IAAA,MAAMC,QAAAA,GAAWC,sBAAAA,EAAAA;IAEjB,MAAMC,cAAAA,GAAiBC,gBAAAA,CAAMC,WAAW,CAAC,IAAA;QACvCN,QAAAA,CAAS;YACPO,QAAAA,EAAU,YAAA;AACVC,YAAAA,MAAAA,EAAQ,CAAC,MAAM,EAAEC,kBAAAA,CACfX,aAAAA,CAAc;gBACZY,EAAAA,EAAI,wCAAA;gBACJC,cAAAA,EAAgB;aAClB,CAAA,CAAA,CAAA;AAEJ,SAAA,CAAA;IACF,CAAA,EAAG;AAACX,QAAAA,QAAAA;AAAUF,QAAAA;AAAc,KAAA,CAAA;AAE5BO,IAAAA,gBAAAA,CAAMO,SAAS,CAAC,IAAA;QACd,IAAIhB,KAAAA,EAAOiB,MAAAA,CAAOC,YAAAA,KAAiB,OAAA,EAAS;AAC1CV,YAAAA,cAAAA,EAAAA;AACF,QAAA;QAEA,IAAIR,KAAAA,EAAOiB,MAAAA,CAAOC,YAAAA,KAAiB,SAAA,EAAW;AAC5C,YAAA,MAAMC,WAAWC,sBAAAA,CAAe,UAAA,CAAA;AAEhC,YAAA,IAAID,QAAAA,EAAU;AACZb,gBAAAA,QAAAA,CACEe,aAAAA,CAAM;oBACJC,KAAAA,EAAOH;AACT,iBAAA,CAAA,CAAA;gBAGFf,QAAAA,CAAS,aAAA,CAAA;YACX,CAAA,MAAO;AACLI,gBAAAA,cAAAA,EAAAA;AACF,YAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACF,QAAAA,QAAAA;AAAUN,QAAAA,KAAAA;AAAOQ,QAAAA,cAAAA;AAAgBJ,QAAAA;AAAS,KAAA,CAAA;IAE9C,qBAAOmB,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;;;;"}
1
+ {"version":3,"file":"AuthResponse.js","sources":["../../../../../../ee/admin/src/pages/AuthResponse.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\n\nimport { Page } from '../../../../admin/src/components/PageHelpers';\nimport { useTypedDispatch } from '../../../../admin/src/core/store/hooks';\nimport { login } from '../../../../admin/src/reducer';\nimport { getCookieValue } from '../../../../admin/src/utils/cookies';\n\nconst AuthResponse = () => {\n const match = useMatch('/auth/login/:authResponse');\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const dispatch = useTypedDispatch();\n\n const redirectToOops = React.useCallback(() => {\n navigate({\n pathname: '/auth/oops',\n search: `?info=${encodeURIComponent(\n formatMessage({\n id: 'Auth.form.button.login.providers.error',\n defaultMessage: 'We cannot connect you through the selected provider.',\n })\n )}`,\n });\n }, [navigate, formatMessage]);\n\n React.useEffect(() => {\n if (match?.params.authResponse === 'error') {\n redirectToOops();\n }\n\n if (match?.params.authResponse === 'success') {\n const jwtToken = getCookieValue('jwtToken');\n\n if (jwtToken) {\n dispatch(\n login({\n token: jwtToken,\n })\n );\n\n navigate('/auth/login');\n } else {\n redirectToOops();\n }\n }\n }, [dispatch, match, redirectToOops, navigate]);\n\n return <Page.Loading />;\n};\n\nexport { AuthResponse };\n"],"names":["AuthResponse","match","useMatch","formatMessage","useIntl","navigate","useNavigate","dispatch","useTypedDispatch","redirectToOops","React","useCallback","pathname","search","encodeURIComponent","id","defaultMessage","useEffect","params","authResponse","jwtToken","getCookieValue","login","token","_jsx","Page","Loading"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAMA,YAAAA,GAAe,IAAA;AACnB,IAAA,MAAMC,QAAQC,uBAAAA,CAAS,2BAAA,CAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;AACjB,IAAA,MAAMC,QAAAA,GAAWC,sBAAAA,EAAAA;IAEjB,MAAMC,cAAAA,GAAiBC,gBAAAA,CAAMC,WAAW,CAAC,IAAA;QACvCN,QAAAA,CAAS;YACPO,QAAAA,EAAU,YAAA;AACVC,YAAAA,MAAAA,EAAQ,CAAC,MAAM,EAAEC,kBAAAA,CACfX,aAAAA,CAAc;gBACZY,EAAAA,EAAI,wCAAA;gBACJC,cAAAA,EAAgB;aAClB,CAAA,CAAA,CAAA;AAEJ,SAAA,CAAA;IACF,CAAA,EAAG;AAACX,QAAAA,QAAAA;AAAUF,QAAAA;AAAc,KAAA,CAAA;AAE5BO,IAAAA,gBAAAA,CAAMO,SAAS,CAAC,IAAA;QACd,IAAIhB,KAAAA,EAAOiB,MAAAA,CAAOC,YAAAA,KAAiB,OAAA,EAAS;AAC1CV,YAAAA,cAAAA,EAAAA;AACF,QAAA;QAEA,IAAIR,KAAAA,EAAOiB,MAAAA,CAAOC,YAAAA,KAAiB,SAAA,EAAW;AAC5C,YAAA,MAAMC,WAAWC,sBAAAA,CAAe,UAAA,CAAA;AAEhC,YAAA,IAAID,QAAAA,EAAU;AACZb,gBAAAA,QAAAA,CACEe,aAAAA,CAAM;oBACJC,KAAAA,EAAOH;AACT,iBAAA,CAAA,CAAA;gBAGFf,QAAAA,CAAS,aAAA,CAAA;YACX,CAAA,MAAO;AACLI,gBAAAA,cAAAA,EAAAA;AACF,YAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACF,QAAAA,QAAAA;AAAUN,QAAAA,KAAAA;AAAOQ,QAAAA,cAAAA;AAAgBJ,QAAAA;AAAS,KAAA,CAAA;IAE9C,qBAAOmB,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;;;;"}
@@ -9,8 +9,8 @@ var useRBAC = require('../../../../../../../../admin/src/hooks/useRBAC.js');
9
9
  var selectors = require('../../../../../../../../admin/src/selectors.js');
10
10
  var useLicenseLimits = require('../../../../../hooks/useLicenseLimits.js');
11
11
 
12
- const BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';
13
- const MANAGE_SEATS_URL = 'https://strapi.io/billing/manage-seats';
12
+ const BILLING_SELF_HOSTED_URL = 'mailto:sales@strapi.io';
13
+ const MANAGE_SUBSCRIPTION_URL = 'https://billing.strapi.io';
14
14
  const AdminSeatInfoEE = ()=>{
15
15
  const { formatMessage } = reactIntl.useIntl();
16
16
  const { settings } = reactRedux.useSelector(selectors.selectAdminPermissions);
@@ -80,17 +80,19 @@ const AdminSeatInfoEE = ()=>{
80
80
  type === 'gold' ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Link, {
81
81
  href: BILLING_SELF_HOSTED_URL,
82
82
  endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ExternalLink, {}),
83
+ target: "_blank",
83
84
  children: formatMessage({
84
85
  id: 'Settings.application.ee.admin-seats.support',
85
86
  defaultMessage: 'Contact sales'
86
87
  })
87
88
  }) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Link, {
88
- href: MANAGE_SEATS_URL,
89
+ href: MANAGE_SUBSCRIPTION_URL,
89
90
  isExternal: true,
90
91
  endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ExternalLink, {}),
92
+ target: "_blank",
91
93
  children: formatMessage({
92
94
  id: 'Settings.application.ee.admin-seats.add-seats',
93
- defaultMessage: 'Manage seats'
95
+ defaultMessage: 'Manage subscription'
94
96
  })
95
97
  })
96
98
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"AdminSeatInfo.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.tsx"],"sourcesContent":["import { Flex, Tooltip, Typography, Link, Grid } from '@strapi/design-system';\nimport { ExternalLink, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useRBAC } from '../../../../../../../../admin/src/hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\nconst MANAGE_SEATS_URL = 'https://strapi.io/billing/manage-seats';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const { settings } = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(settings?.users ?? {});\n const {\n license,\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !license) {\n return null;\n }\n\n const { licenseLimitStatus, enforcementUserCount, permittedSeats, type } = license;\n\n if (!permittedSeats) {\n return null;\n }\n\n return (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography tag=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n text: (chunks) =>\n (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : undefined}\n >\n {chunks}\n </Typography>\n ) as any,\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n label={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <WarningCircle width=\"1.4rem\" height=\"1.4rem\" fill=\"danger500\" />\n </Tooltip>\n )}\n </Flex>\n {type === 'gold' ? (\n <Link href={BILLING_SELF_HOSTED_URL} endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.support',\n defaultMessage: 'Contact sales',\n })}\n </Link>\n ) : (\n <Link href={MANAGE_SEATS_URL} isExternal endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage: 'Manage seats',\n })}\n </Link>\n )}\n </Grid.Item>\n );\n};\n"],"names":["BILLING_SELF_HOSTED_URL","MANAGE_SEATS_URL","AdminSeatInfoEE","formatMessage","useIntl","settings","useSelector","selectAdminPermissions","isLoading","isRBACLoading","allowedActions","canRead","canCreate","canUpdate","canDelete","useRBAC","users","license","isError","isLicenseLoading","useLicenseLimits","enabled","licenseLimitStatus","enforcementUserCount","permittedSeats","type","_jsxs","Grid","Item","col","xs","direction","alignItems","_jsx","Typography","variant","textColor","id","defaultMessage","Flex","gap","tag","text","chunks","fontWeight","undefined","Tooltip","label","WarningCircle","width","height","fill","Link","href","endIcon","ExternalLink","isExternal"],"mappings":"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"}
1
+ {"version":3,"file":"AdminSeatInfo.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.tsx"],"sourcesContent":["import { Flex, Tooltip, Typography, Link, Grid } from '@strapi/design-system';\nimport { ExternalLink, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useRBAC } from '../../../../../../../../admin/src/hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nconst BILLING_SELF_HOSTED_URL = 'mailto:sales@strapi.io';\nconst MANAGE_SUBSCRIPTION_URL = 'https://billing.strapi.io';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const { settings } = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(settings?.users ?? {});\n const {\n license,\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !license) {\n return null;\n }\n\n const { licenseLimitStatus, enforcementUserCount, permittedSeats, type } = license;\n\n if (!permittedSeats) {\n return null;\n }\n\n return (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography tag=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n text: (chunks) =>\n (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : undefined}\n >\n {chunks}\n </Typography>\n ) as any,\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n label={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <WarningCircle width=\"1.4rem\" height=\"1.4rem\" fill=\"danger500\" />\n </Tooltip>\n )}\n </Flex>\n {type === 'gold' ? (\n <Link href={BILLING_SELF_HOSTED_URL} endIcon={<ExternalLink />} target=\"_blank\">\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.support',\n defaultMessage: 'Contact sales',\n })}\n </Link>\n ) : (\n <Link href={MANAGE_SUBSCRIPTION_URL} isExternal endIcon={<ExternalLink />} target=\"_blank\">\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage: 'Manage subscription',\n })}\n </Link>\n )}\n </Grid.Item>\n );\n};\n"],"names":["BILLING_SELF_HOSTED_URL","MANAGE_SUBSCRIPTION_URL","AdminSeatInfoEE","formatMessage","useIntl","settings","useSelector","selectAdminPermissions","isLoading","isRBACLoading","allowedActions","canRead","canCreate","canUpdate","canDelete","useRBAC","users","license","isError","isLicenseLoading","useLicenseLimits","enabled","licenseLimitStatus","enforcementUserCount","permittedSeats","type","_jsxs","Grid","Item","col","xs","direction","alignItems","_jsx","Typography","variant","textColor","id","defaultMessage","Flex","gap","tag","text","chunks","fontWeight","undefined","Tooltip","label","WarningCircle","width","height","fill","Link","href","endIcon","ExternalLink","target","isExternal"],"mappings":"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"}
@@ -7,8 +7,8 @@ import { useRBAC } from '../../../../../../../../admin/src/hooks/useRBAC.mjs';
7
7
  import { selectAdminPermissions } from '../../../../../../../../admin/src/selectors.mjs';
8
8
  import { useLicenseLimits } from '../../../../../hooks/useLicenseLimits.mjs';
9
9
 
10
- const BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';
11
- const MANAGE_SEATS_URL = 'https://strapi.io/billing/manage-seats';
10
+ const BILLING_SELF_HOSTED_URL = 'mailto:sales@strapi.io';
11
+ const MANAGE_SUBSCRIPTION_URL = 'https://billing.strapi.io';
12
12
  const AdminSeatInfoEE = ()=>{
13
13
  const { formatMessage } = useIntl();
14
14
  const { settings } = useSelector(selectAdminPermissions);
@@ -78,17 +78,19 @@ const AdminSeatInfoEE = ()=>{
78
78
  type === 'gold' ? /*#__PURE__*/ jsx(Link, {
79
79
  href: BILLING_SELF_HOSTED_URL,
80
80
  endIcon: /*#__PURE__*/ jsx(ExternalLink, {}),
81
+ target: "_blank",
81
82
  children: formatMessage({
82
83
  id: 'Settings.application.ee.admin-seats.support',
83
84
  defaultMessage: 'Contact sales'
84
85
  })
85
86
  }) : /*#__PURE__*/ jsx(Link, {
86
- href: MANAGE_SEATS_URL,
87
+ href: MANAGE_SUBSCRIPTION_URL,
87
88
  isExternal: true,
88
89
  endIcon: /*#__PURE__*/ jsx(ExternalLink, {}),
90
+ target: "_blank",
89
91
  children: formatMessage({
90
92
  id: 'Settings.application.ee.admin-seats.add-seats',
91
- defaultMessage: 'Manage seats'
93
+ defaultMessage: 'Manage subscription'
92
94
  })
93
95
  })
94
96
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"AdminSeatInfo.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.tsx"],"sourcesContent":["import { Flex, Tooltip, Typography, Link, Grid } from '@strapi/design-system';\nimport { ExternalLink, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useRBAC } from '../../../../../../../../admin/src/hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nconst BILLING_SELF_HOSTED_URL = 'https://strapi.io/billing/request-seats';\nconst MANAGE_SEATS_URL = 'https://strapi.io/billing/manage-seats';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const { settings } = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(settings?.users ?? {});\n const {\n license,\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !license) {\n return null;\n }\n\n const { licenseLimitStatus, enforcementUserCount, permittedSeats, type } = license;\n\n if (!permittedSeats) {\n return null;\n }\n\n return (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography tag=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n text: (chunks) =>\n (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : undefined}\n >\n {chunks}\n </Typography>\n ) as any,\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n label={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <WarningCircle width=\"1.4rem\" height=\"1.4rem\" fill=\"danger500\" />\n </Tooltip>\n )}\n </Flex>\n {type === 'gold' ? (\n <Link href={BILLING_SELF_HOSTED_URL} endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.support',\n defaultMessage: 'Contact sales',\n })}\n </Link>\n ) : (\n <Link href={MANAGE_SEATS_URL} isExternal endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage: 'Manage seats',\n })}\n </Link>\n )}\n </Grid.Item>\n );\n};\n"],"names":["BILLING_SELF_HOSTED_URL","MANAGE_SEATS_URL","AdminSeatInfoEE","formatMessage","useIntl","settings","useSelector","selectAdminPermissions","isLoading","isRBACLoading","allowedActions","canRead","canCreate","canUpdate","canDelete","useRBAC","users","license","isError","isLicenseLoading","useLicenseLimits","enabled","licenseLimitStatus","enforcementUserCount","permittedSeats","type","_jsxs","Grid","Item","col","xs","direction","alignItems","_jsx","Typography","variant","textColor","id","defaultMessage","Flex","gap","tag","text","chunks","fontWeight","undefined","Tooltip","label","WarningCircle","width","height","fill","Link","href","endIcon","ExternalLink","isExternal"],"mappings":"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"}
1
+ {"version":3,"file":"AdminSeatInfo.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.tsx"],"sourcesContent":["import { Flex, Tooltip, Typography, Link, Grid } from '@strapi/design-system';\nimport { ExternalLink, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { useRBAC } from '../../../../../../../../admin/src/hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport { useLicenseLimits } from '../../../../../hooks/useLicenseLimits';\n\nconst BILLING_SELF_HOSTED_URL = 'mailto:sales@strapi.io';\nconst MANAGE_SUBSCRIPTION_URL = 'https://billing.strapi.io';\n\nexport const AdminSeatInfoEE = () => {\n const { formatMessage } = useIntl();\n const { settings } = useSelector(selectAdminPermissions);\n const {\n isLoading: isRBACLoading,\n allowedActions: { canRead, canCreate, canUpdate, canDelete },\n } = useRBAC(settings?.users ?? {});\n const {\n license,\n isError,\n isLoading: isLicenseLoading,\n } = useLicenseLimits({\n // TODO: this creates a waterfall which we should avoid to render earlier, but for that\n // we will have to move away from data-fetching hooks to query functions.\n // Short-term we could at least implement a loader, for the user to have visual feedback\n // in case the requests take a while\n enabled: !isRBACLoading && canRead && canCreate && canUpdate && canDelete,\n });\n\n const isLoading = isRBACLoading || isLicenseLoading;\n\n if (isError || isLoading || !license) {\n return null;\n }\n\n const { licenseLimitStatus, enforcementUserCount, permittedSeats, type } = license;\n\n if (!permittedSeats) {\n return null;\n }\n\n return (\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.admin-seats',\n defaultMessage: 'Admin seats',\n })}\n </Typography>\n <Flex gap={2}>\n <Flex>\n <Typography tag=\"p\">\n {formatMessage(\n {\n id: 'Settings.application.ee.admin-seats.count',\n defaultMessage: '<text>{enforcementUserCount}</text>/{permittedSeats}',\n },\n {\n permittedSeats,\n enforcementUserCount,\n text: (chunks) =>\n (\n <Typography\n fontWeight=\"semiBold\"\n textColor={enforcementUserCount > permittedSeats ? 'danger500' : undefined}\n >\n {chunks}\n </Typography>\n ) as any,\n }\n )}\n </Typography>\n </Flex>\n {licenseLimitStatus === 'OVER_LIMIT' && (\n <Tooltip\n label={formatMessage({\n id: 'Settings.application.ee.admin-seats.at-limit-tooltip',\n defaultMessage: 'At limit: add seats to invite more users',\n })}\n >\n <WarningCircle width=\"1.4rem\" height=\"1.4rem\" fill=\"danger500\" />\n </Tooltip>\n )}\n </Flex>\n {type === 'gold' ? (\n <Link href={BILLING_SELF_HOSTED_URL} endIcon={<ExternalLink />} target=\"_blank\">\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.support',\n defaultMessage: 'Contact sales',\n })}\n </Link>\n ) : (\n <Link href={MANAGE_SUBSCRIPTION_URL} isExternal endIcon={<ExternalLink />} target=\"_blank\">\n {formatMessage({\n id: 'Settings.application.ee.admin-seats.add-seats',\n defaultMessage: 'Manage subscription',\n })}\n </Link>\n )}\n </Grid.Item>\n );\n};\n"],"names":["BILLING_SELF_HOSTED_URL","MANAGE_SUBSCRIPTION_URL","AdminSeatInfoEE","formatMessage","useIntl","settings","useSelector","selectAdminPermissions","isLoading","isRBACLoading","allowedActions","canRead","canCreate","canUpdate","canDelete","useRBAC","users","license","isError","isLicenseLoading","useLicenseLimits","enabled","licenseLimitStatus","enforcementUserCount","permittedSeats","type","_jsxs","Grid","Item","col","xs","direction","alignItems","_jsx","Typography","variant","textColor","id","defaultMessage","Flex","gap","tag","text","chunks","fontWeight","undefined","Tooltip","label","WarningCircle","width","height","fill","Link","href","endIcon","ExternalLink","target","isExternal"],"mappings":";;;;;;;;;AASA,MAAMA,uBAAAA,GAA0B,wBAAA;AAChC,MAAMC,uBAAAA,GAA0B,2BAAA;MAEnBC,eAAAA,GAAkB,IAAA;IAC7B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGC,WAAAA,CAAYC,sBAAAA,CAAAA;AACjC,IAAA,MAAM,EACJC,SAAAA,EAAWC,aAAa,EACxBC,cAAAA,EAAgB,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,EAAEC,SAAS,EAAE,EAC7D,GAAGC,OAAAA,CAAQV,QAAAA,EAAUW,SAAS,EAAC,CAAA;IAChC,MAAM,EACJC,OAAO,EACPC,OAAO,EACPV,SAAAA,EAAWW,gBAAgB,EAC5B,GAAGC,gBAAAA,CAAiB;;;;;AAKnBC,QAAAA,OAAAA,EAAS,CAACZ,aAAAA,IAAiBE,OAAAA,IAAWC,SAAAA,IAAaC,SAAAA,IAAaC;AAClE,KAAA,CAAA;AAEA,IAAA,MAAMN,YAAYC,aAAAA,IAAiBU,gBAAAA;IAEnC,IAAID,OAAAA,IAAWV,SAAAA,IAAa,CAACS,OAAAA,EAAS;QACpC,OAAO,IAAA;AACT,IAAA;IAEA,MAAM,EAAEK,kBAAkB,EAAEC,oBAAoB,EAAEC,cAAc,EAAEC,IAAI,EAAE,GAAGR,OAAAA;AAE3E,IAAA,IAAI,CAACO,cAAAA,EAAgB;QACnB,OAAO,IAAA;AACT,IAAA;IAEA,qBACEE,IAAA,CAACC,KAAKC,IAAI,EAAA;QAACC,GAAAA,EAAK,CAAA;QAAGC,EAAAA,EAAI,EAAA;QAAIC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,SAAA;;0BACvDC,GAAA,CAACC,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;gBAAQC,SAAAA,EAAU,YAAA;0BACnCjC,aAAAA,CAAc;oBACbkC,EAAAA,EAAI,kCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;0BAEFZ,IAAA,CAACa,IAAAA,EAAAA;gBAAKC,GAAAA,EAAK,CAAA;;kCACTP,GAAA,CAACM,IAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAN,GAAA,CAACC,UAAAA,EAAAA;4BAAWO,GAAAA,EAAI,GAAA;sCACbtC,aAAAA,CACC;gCACEkC,EAAAA,EAAI,2CAAA;gCACJC,cAAAA,EAAgB;6BAClB,EACA;AACEd,gCAAAA,cAAAA;AACAD,gCAAAA,oBAAAA;gCACAmB,IAAAA,EAAM,CAACC,uBAEHV,GAAA,CAACC,UAAAA,EAAAA;wCACCU,UAAAA,EAAW,UAAA;wCACXR,SAAAA,EAAWb,oBAAAA,GAAuBC,iBAAiB,WAAA,GAAcqB,SAAAA;AAEhEF,wCAAAA,QAAAA,EAAAA;;AAGT,6BAAA;;;AAILrB,oBAAAA,kBAAAA,KAAuB,8BACtBW,GAAA,CAACa,OAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAO5C,aAAAA,CAAc;4BACnBkC,EAAAA,EAAI,sDAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAAA,CAACe,aAAAA,EAAAA;4BAAcC,KAAAA,EAAM,QAAA;4BAASC,MAAAA,EAAO,QAAA;4BAASC,IAAAA,EAAK;;;;;AAIxD1B,YAAAA,IAAAA,KAAS,uBACRQ,GAAA,CAACmB,IAAAA,EAAAA;gBAAKC,IAAAA,EAAMrD,uBAAAA;AAAyBsD,gBAAAA,OAAAA,gBAASrB,GAAA,CAACsB,YAAAA,EAAAA,EAAAA,CAAAA;gBAAiBC,MAAAA,EAAO,QAAA;0BACpErD,aAAAA,CAAc;oBACbkC,EAAAA,EAAI,6CAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;+BAGFL,GAAA,CAACmB,IAAAA,EAAAA;gBAAKC,IAAAA,EAAMpD,uBAAAA;gBAAyBwD,UAAU,EAAA,IAAA;AAACH,gBAAAA,OAAAA,gBAASrB,GAAA,CAACsB,YAAAA,EAAAA,EAAAA,CAAAA;gBAAiBC,MAAAA,EAAO,QAAA;0BAC/ErD,aAAAA,CAAc;oBACbkC,EAAAA,EAAI,+CAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;;;AAKV;;;;"}
@@ -11,7 +11,8 @@ var auditLogs = require('../../../../../services/auditLogs.js');
11
11
  var useFormatTimeStamp = require('../hooks/useFormatTimeStamp.js');
12
12
  var getActionTypesDefaultMessages = require('../utils/getActionTypesDefaultMessages.js');
13
13
 
14
- function _interopNamespaceDefault(e) {
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
15
16
  var n = Object.create(null);
16
17
  if (e) {
17
18
  Object.keys(e).forEach(function (k) {
@@ -28,7 +29,7 @@ function _interopNamespaceDefault(e) {
28
29
  return Object.freeze(n);
29
30
  }
30
31
 
31
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
32
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
33
 
33
34
  const Modal = ({ handleClose, logId })=>{
34
35
  const { toggleNotification } = Notifications.useNotification();
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n JSONInput,\n Loader,\n Modal as DSModal,\n Typography,\n Breadcrumbs,\n Crumb,\n Field,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { AuditLog } from '../../../../../../../../shared/contracts/audit-logs';\nimport { useGetAuditLogQuery } from '../../../../../services/auditLogs';\nimport { useFormatTimeStamp } from '../hooks/useFormatTimeStamp';\nimport { actionTypes, getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\ninterface ModalProps {\n handleClose: () => void;\n logId: string;\n}\n\nexport const Modal = ({ handleClose, logId }: ModalProps) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading } = useGetAuditLogQuery(logId);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n handleClose();\n }\n }, [error, formatAPIError, handleClose, toggleNotification]);\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data && 'date' in data ? formatTimeStamp(data.date) : '';\n\n return (\n <DSModal.Root defaultOpen onOpenChange={handleClose}>\n <DSModal.Content>\n <DSModal.Header>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </DSModal.Header>\n <DSModal.Body>\n <ActionBody isLoading={isLoading} data={data as AuditLog} formattedDate={formattedDate} />\n </DSModal.Body>\n </DSModal.Content>\n </DSModal.Root>\n );\n};\n\ninterface ActionBodyProps {\n isLoading?: boolean;\n data: AuditLog;\n formattedDate: string;\n}\n\nconst ActionBody = ({ isLoading, data, formattedDate }: ActionBodyProps) => {\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n {/**\n * TODO: this will need to be translated.\n */}\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid.Root\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action as keyof typeof actionTypes),\n },\n // @ts-expect-error - any\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid.Root>\n <Field.Root>\n <Field.Label>\n {formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n </Field.Label>\n <Payload value={JSON.stringify(payload, null, 2)} disabled />\n </Field.Root>\n </>\n );\n};\n\nconst Payload = styled(JSONInput)`\n max-width: 100%;\n overflow: scroll;\n`;\n\ninterface ActionItemProps {\n actionLabel: string;\n actionName: string;\n}\n\nconst ActionItem = ({ actionLabel, actionName }: ActionItemProps) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n"],"names":["Modal","handleClose","logId","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","data","error","isLoading","useGetAuditLogQuery","React","useEffect","type","message","formatTimeStamp","useFormatTimeStamp","formattedDate","date","_jsx","DSModal","Root","defaultOpen","onOpenChange","_jsxs","Content","Header","Breadcrumbs","label","id","Crumb","isCurrent","Body","ActionBody","formatMessage","useIntl","Flex","padding","justifyContent","alignItems","Loader","action","user","payload","_Fragment","Box","marginBottom","Typography","variant","defaultMessage","Grid","gap","gridCols","paddingTop","paddingBottom","paddingLeft","paddingRight","background","hasRadius","ActionItem","actionLabel","actionName","getDefaultMessage","model","displayName","toString","Field","Label","Payload","value","JSON","stringify","disabled","styled","JSONInput","direction","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n JSONInput,\n Loader,\n Modal as DSModal,\n Typography,\n Breadcrumbs,\n Crumb,\n Field,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { AuditLog } from '../../../../../../../../shared/contracts/audit-logs';\nimport { useGetAuditLogQuery } from '../../../../../services/auditLogs';\nimport { useFormatTimeStamp } from '../hooks/useFormatTimeStamp';\nimport { actionTypes, getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\ninterface ModalProps {\n handleClose: () => void;\n logId: string;\n}\n\nexport const Modal = ({ handleClose, logId }: ModalProps) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading } = useGetAuditLogQuery(logId);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n handleClose();\n }\n }, [error, formatAPIError, handleClose, toggleNotification]);\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data && 'date' in data ? formatTimeStamp(data.date) : '';\n\n return (\n <DSModal.Root defaultOpen onOpenChange={handleClose}>\n <DSModal.Content>\n <DSModal.Header>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </DSModal.Header>\n <DSModal.Body>\n <ActionBody isLoading={isLoading} data={data as AuditLog} formattedDate={formattedDate} />\n </DSModal.Body>\n </DSModal.Content>\n </DSModal.Root>\n );\n};\n\ninterface ActionBodyProps {\n isLoading?: boolean;\n data: AuditLog;\n formattedDate: string;\n}\n\nconst ActionBody = ({ isLoading, data, formattedDate }: ActionBodyProps) => {\n const { formatMessage } = useIntl();\n\n if (isLoading) {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n {/**\n * TODO: this will need to be translated.\n */}\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid.Root\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action as keyof typeof actionTypes),\n },\n // @ts-expect-error - any\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid.Root>\n <Field.Root>\n <Field.Label>\n {formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n </Field.Label>\n <Payload value={JSON.stringify(payload, null, 2)} disabled />\n </Field.Root>\n </>\n );\n};\n\nconst Payload = styled(JSONInput)`\n max-width: 100%;\n overflow: scroll;\n`;\n\ninterface ActionItemProps {\n actionLabel: string;\n actionName: string;\n}\n\nconst ActionItem = ({ actionLabel, actionName }: ActionItemProps) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n"],"names":["Modal","handleClose","logId","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","data","error","isLoading","useGetAuditLogQuery","React","useEffect","type","message","formatTimeStamp","useFormatTimeStamp","formattedDate","date","_jsx","DSModal","Root","defaultOpen","onOpenChange","_jsxs","Content","Header","Breadcrumbs","label","id","Crumb","isCurrent","Body","ActionBody","formatMessage","useIntl","Flex","padding","justifyContent","alignItems","Loader","action","user","payload","_Fragment","Box","marginBottom","Typography","variant","defaultMessage","Grid","gap","gridCols","paddingTop","paddingBottom","paddingLeft","paddingRight","background","hasRadius","ActionItem","actionLabel","actionName","getDefaultMessage","model","displayName","toString","Field","Label","Payload","value","JSON","stringify","disabled","styled","JSONInput","direction","textColor"],"mappings":"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"}
@@ -7,7 +7,8 @@ var useQueryParams = require('../../../../../../../../admin/src/hooks/useQueryPa
7
7
  var users = require('../../../../../../../../admin/src/services/users.js');
8
8
  var auditLogs = require('../../../../../services/auditLogs.js');
9
9
 
10
- function _interopNamespaceDefault(e) {
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
11
12
  var n = Object.create(null);
12
13
  if (e) {
13
14
  Object.keys(e).forEach(function (k) {
@@ -24,7 +25,7 @@ function _interopNamespaceDefault(e) {
24
25
  return Object.freeze(n);
25
26
  }
26
27
 
27
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
28
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
29
 
29
30
  const useAuditLogsData = ({ canReadAuditLogs, canReadUsers })=>{
30
31
  const { toggleNotification } = Notifications.useNotification();
@@ -1 +1 @@
1
- {"version":3,"file":"useAuditLogsData.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useQueryParams } from '../../../../../../../../admin/src/hooks/useQueryParams';\nimport { useAdminUsers } from '../../../../../../../../admin/src/services/users';\nimport { useGetAuditLogsQuery } from '../../../../../services/auditLogs';\n\nexport const useAuditLogsData = ({\n canReadAuditLogs,\n canReadUsers,\n}: {\n canReadAuditLogs: boolean;\n canReadUsers: boolean;\n}) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams();\n\n const {\n data,\n error,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n skip: !canReadUsers,\n refetchOnMountOrArgChange: true,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, toggleNotification, formatAPIError]);\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n error: auditLogsError,\n } = useGetAuditLogsQuery(query, {\n refetchOnMountOrArgChange: true,\n skip: !canReadAuditLogs,\n });\n\n React.useEffect(() => {\n if (auditLogsError) {\n toggleNotification({ type: 'danger', message: formatAPIError(auditLogsError) });\n }\n }, [auditLogsError, toggleNotification, formatAPIError]);\n\n return {\n auditLogs,\n users: data?.users ?? [],\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n"],"names":["useAuditLogsData","canReadAuditLogs","canReadUsers","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","query","useQueryParams","data","error","isError","isUsersError","isLoading","isLoadingUsers","useAdminUsers","skip","refetchOnMountOrArgChange","React","useEffect","type","message","auditLogs","isLoadingAuditLogs","isAuditLogsError","auditLogsError","useGetAuditLogsQuery","users","hasError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;MAQaA,gBAAAA,GAAmB,CAAC,EAC/BC,gBAAgB,EAChBC,YAAY,EAIb,GAAA;IACC,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,qCAAAA,EAAAA;AACpD,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,6BAAAA,EAAAA;AAEpB,IAAA,MAAM,EACJC,IAAI,EACJC,KAAK,EACLC,OAAAA,EAASC,YAAY,EACrBC,SAAAA,EAAWC,cAAc,EAC1B,GAAGC,mBAAAA,CACF,EAAC,EACD;AACEC,QAAAA,IAAAA,EAAM,CAACf,YAAAA;QACPgB,yBAAAA,EAA2B;AAC7B,KAAA,CAAA;AAGFC,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIT,KAAAA,EAAO;YACTR,kBAAAA,CAAmB;gBAAEkB,IAAAA,EAAM,QAAA;AAAUC,gBAAAA,OAAAA,EAAShB,cAAAA,CAAeK,KAAAA;AAAO,aAAA,CAAA;AACtE,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,KAAAA;AAAOR,QAAAA,kBAAAA;AAAoBG,QAAAA;AAAe,KAAA,CAAA;AAE9C,IAAA,MAAM,EACJI,IAAAA,EAAMa,WAAS,EACfT,WAAWU,kBAAkB,EAC7BZ,OAAAA,EAASa,gBAAgB,EACzBd,KAAAA,EAAOe,cAAc,EACtB,GAAGC,+BAAqBnB,KAAAA,EAAO;QAC9BU,yBAAAA,EAA2B,IAAA;AAC3BD,QAAAA,IAAAA,EAAM,CAAChB;AACT,KAAA,CAAA;AAEAkB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIM,cAAAA,EAAgB;YAClBvB,kBAAAA,CAAmB;gBAAEkB,IAAAA,EAAM,QAAA;AAAUC,gBAAAA,OAAAA,EAAShB,cAAAA,CAAeoB,cAAAA;AAAgB,aAAA,CAAA;AAC/E,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,cAAAA;AAAgBvB,QAAAA,kBAAAA;AAAoBG,QAAAA;AAAe,KAAA,CAAA;IAEvD,OAAO;AACLiB,mBAAAA,WAAAA;QACAK,KAAAA,EAAOlB,IAAAA,EAAMkB,SAAS,EAAE;AACxBd,QAAAA,SAAAA,EAAWC,cAAAA,IAAkBS,kBAAAA;AAC7BK,QAAAA,QAAAA,EAAUJ,gBAAAA,IAAoBZ;AAChC,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"useAuditLogsData.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useQueryParams } from '../../../../../../../../admin/src/hooks/useQueryParams';\nimport { useAdminUsers } from '../../../../../../../../admin/src/services/users';\nimport { useGetAuditLogsQuery } from '../../../../../services/auditLogs';\n\nexport const useAuditLogsData = ({\n canReadAuditLogs,\n canReadUsers,\n}: {\n canReadAuditLogs: boolean;\n canReadUsers: boolean;\n}) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [{ query }] = useQueryParams();\n\n const {\n data,\n error,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n skip: !canReadUsers,\n refetchOnMountOrArgChange: true,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, toggleNotification, formatAPIError]);\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n error: auditLogsError,\n } = useGetAuditLogsQuery(query, {\n refetchOnMountOrArgChange: true,\n skip: !canReadAuditLogs,\n });\n\n React.useEffect(() => {\n if (auditLogsError) {\n toggleNotification({ type: 'danger', message: formatAPIError(auditLogsError) });\n }\n }, [auditLogsError, toggleNotification, formatAPIError]);\n\n return {\n auditLogs,\n users: data?.users ?? [],\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n"],"names":["useAuditLogsData","canReadAuditLogs","canReadUsers","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","query","useQueryParams","data","error","isError","isUsersError","isLoading","isLoadingUsers","useAdminUsers","skip","refetchOnMountOrArgChange","React","useEffect","type","message","auditLogs","isLoadingAuditLogs","isAuditLogsError","auditLogsError","useGetAuditLogsQuery","users","hasError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAQaA,gBAAAA,GAAmB,CAAC,EAC/BC,gBAAgB,EAChBC,YAAY,EAIb,GAAA;IACC,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,qCAAAA,EAAAA;AACpD,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,6BAAAA,EAAAA;AAEpB,IAAA,MAAM,EACJC,IAAI,EACJC,KAAK,EACLC,OAAAA,EAASC,YAAY,EACrBC,SAAAA,EAAWC,cAAc,EAC1B,GAAGC,mBAAAA,CACF,EAAC,EACD;AACEC,QAAAA,IAAAA,EAAM,CAACf,YAAAA;QACPgB,yBAAAA,EAA2B;AAC7B,KAAA,CAAA;AAGFC,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIT,KAAAA,EAAO;YACTR,kBAAAA,CAAmB;gBAAEkB,IAAAA,EAAM,QAAA;AAAUC,gBAAAA,OAAAA,EAAShB,cAAAA,CAAeK,KAAAA;AAAO,aAAA,CAAA;AACtE,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,KAAAA;AAAOR,QAAAA,kBAAAA;AAAoBG,QAAAA;AAAe,KAAA,CAAA;AAE9C,IAAA,MAAM,EACJI,IAAAA,EAAMa,WAAS,EACfT,WAAWU,kBAAkB,EAC7BZ,OAAAA,EAASa,gBAAgB,EACzBd,KAAAA,EAAOe,cAAc,EACtB,GAAGC,+BAAqBnB,KAAAA,EAAO;QAC9BU,yBAAAA,EAA2B,IAAA;AAC3BD,QAAAA,IAAAA,EAAM,CAAChB;AACT,KAAA,CAAA;AAEAkB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIM,cAAAA,EAAgB;YAClBvB,kBAAAA,CAAmB;gBAAEkB,IAAAA,EAAM,QAAA;AAAUC,gBAAAA,OAAAA,EAAShB,cAAAA,CAAeoB,cAAAA;AAAgB,aAAA,CAAA;AAC/E,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,cAAAA;AAAgBvB,QAAAA,kBAAAA;AAAoBG,QAAAA;AAAe,KAAA,CAAA;IAEvD,OAAO;AACLiB,mBAAAA,WAAAA;QACAK,KAAAA,EAAOlB,IAAAA,EAAMkB,SAAS,EAAE;AACxBd,QAAAA,SAAAA,EAAWC,cAAAA,IAAkBS,kBAAAA;AAC7BK,QAAAA,QAAAA,EAAUJ,gBAAAA,IAAoBZ;AAChC,KAAA;AACF;;;;"}
@@ -3,10 +3,14 @@
3
3
  var parseISO = require('date-fns/parseISO');
4
4
  var reactIntl = require('react-intl');
5
5
 
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var parseISO__default = /*#__PURE__*/_interopDefault(parseISO);
9
+
6
10
  const useFormatTimeStamp = ()=>{
7
11
  const { formatDate } = reactIntl.useIntl();
8
12
  const formatTimeStamp = (value)=>{
9
- const date = parseISO(value);
13
+ const date = parseISO__default.default(value);
10
14
  const formattedDate = formatDate(date, {
11
15
  dateStyle: 'long'
12
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useFormatTimeStamp.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.ts"],"sourcesContent":["import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nexport const useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value: string) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n"],"names":["useFormatTimeStamp","formatDate","useIntl","formatTimeStamp","value","date","parseISO","formattedDate","dateStyle","formattedTime","timeStyle","hourCycle"],"mappings":";;;;;MAGaA,kBAAAA,GAAqB,IAAA;IAChC,MAAM,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;AAEvB,IAAA,MAAMC,kBAAkB,CAACC,KAAAA,GAAAA;AACvB,QAAA,MAAMC,OAAOC,QAAAA,CAASF,KAAAA,CAAAA;QAEtB,MAAMG,aAAAA,GAAgBN,WAAWI,IAAAA,EAAM;YACrCG,SAAAA,EAAW;AACb,SAAA,CAAA;QACA,MAAMC,aAAAA,GAAgBR,WAAWI,IAAAA,EAAM;YACrCK,SAAAA,EAAW,QAAA;YACXC,SAAAA,EAAW;AACb,SAAA,CAAA;AAEA,QAAA,OAAO,CAAA,EAAGJ,aAAAA,CAAc,EAAE,EAAEE,aAAAA,CAAAA,CAAe;AAC7C,IAAA,CAAA;IAEA,OAAON,eAAAA;AACT;;;;"}
1
+ {"version":3,"file":"useFormatTimeStamp.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.ts"],"sourcesContent":["import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nexport const useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value: string) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n"],"names":["useFormatTimeStamp","formatDate","useIntl","formatTimeStamp","value","date","parseISO","formattedDate","dateStyle","formattedTime","timeStyle","hourCycle"],"mappings":";;;;;;;;;MAGaA,kBAAAA,GAAqB,IAAA;IAChC,MAAM,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;AAEvB,IAAA,MAAMC,kBAAkB,CAACC,KAAAA,GAAAA;AACvB,QAAA,MAAMC,OAAOC,yBAAAA,CAASF,KAAAA,CAAAA;QAEtB,MAAMG,aAAAA,GAAgBN,WAAWI,IAAAA,EAAM;YACrCG,SAAAA,EAAW;AACb,SAAA,CAAA;QACA,MAAMC,aAAAA,GAAgBR,WAAWI,IAAAA,EAAM;YACrCK,SAAAA,EAAW,QAAA;YACXC,SAAAA,EAAW;AACb,SAAA,CAAA;AAEA,QAAA,OAAO,CAAA,EAAGJ,aAAAA,CAAc,EAAE,EAAEE,aAAAA,CAAAA,CAAe;AAC7C,IAAA,CAAA;IAEA,OAAON,eAAAA;AACT;;;;"}