@strapi/admin 4.15.0-alpha.0 → 4.15.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 (472) hide show
  1. package/.eslintrc.js +4 -1
  2. package/admin/.eslintrc.js +28 -0
  3. package/admin/custom.d.ts +28 -0
  4. package/admin/src/StrapiApp.js +27 -28
  5. package/admin/src/components/AuthenticatedApp.tsx +187 -0
  6. package/admin/src/components/ConfigurationProvider.tsx +68 -0
  7. package/admin/src/components/{DragLayer/DragLayer.js → DragLayer.tsx} +18 -10
  8. package/admin/src/components/GuidedTour/Homepage.tsx +111 -0
  9. package/admin/src/components/GuidedTour/Modal.tsx +303 -0
  10. package/admin/src/components/GuidedTour/Ornaments.tsx +74 -0
  11. package/admin/src/components/GuidedTour/Provider.tsx +253 -0
  12. package/admin/src/components/GuidedTour/{layout.js → constants.ts} +13 -3
  13. package/admin/src/components/LanguageProvider.tsx +130 -0
  14. package/admin/src/components/{LeftMenu/index.js → LeftMenu.tsx} +23 -18
  15. package/admin/src/components/{NpsSurvey/index.js → NpsSurvey.tsx} +68 -21
  16. package/admin/src/components/PluginsInitializer.tsx +124 -0
  17. package/admin/src/components/PrivateRoute.tsx +42 -0
  18. package/admin/src/components/Providers.tsx +125 -0
  19. package/admin/src/components/RBACProvider.tsx +124 -0
  20. package/admin/src/components/Theme.tsx +41 -0
  21. package/admin/src/components/ThemeToggleProvider.tsx +64 -0
  22. package/admin/src/components/{UnauthenticatedLogo/index.js → UnauthenticatedLogo.tsx} +3 -5
  23. package/admin/src/components/{LocalesProvider/__mocks__/useLocalesProvider.js → __mocks__/LanguageProvider.ts} +3 -1
  24. package/admin/src/{constants.js → constants.ts} +48 -0
  25. package/admin/src/content-manager/components/BlocksEditor/BlocksInput/index.js +68 -9
  26. package/admin/src/content-manager/components/BlocksEditor/Toolbar/index.js +433 -202
  27. package/admin/src/content-manager/components/BlocksEditor/hooks/useBlocksStore.js +463 -135
  28. package/admin/src/content-manager/components/BlocksEditor/hooks/useModifiersStore.js +23 -6
  29. package/admin/src/content-manager/components/BlocksEditor/index.js +97 -20
  30. package/admin/src/content-manager/components/BlocksEditor/plugins/index.js +4 -0
  31. package/admin/src/content-manager/components/BlocksEditor/plugins/withLinks.js +61 -0
  32. package/admin/src/content-manager/components/BlocksEditor/plugins/withStrapiSchema.js +33 -0
  33. package/admin/src/content-manager/components/BlocksEditor/utils/links.js +90 -0
  34. package/admin/src/content-manager/components/InputUID/index.js +1 -1
  35. package/admin/src/content-manager/hooks/useAllowedAttributes.js +9 -1
  36. package/admin/src/content-manager/pages/App/selectors.js +1 -1
  37. package/admin/src/content-manager/pages/App/useContentManagerInitData.js +3 -1
  38. package/admin/src/content-manager/pages/EditSettingsView/index.js +1 -0
  39. package/admin/src/content-manager/pages/EditSettingsView/utils/createPossibleMainFieldsForModelsAndComponents.js +1 -0
  40. package/admin/src/content-manager/pages/EditView/selectors.js +1 -1
  41. package/admin/src/content-manager/pages/EditViewLayoutManager/index.js +3 -1
  42. package/admin/src/content-manager/pages/ListSettingsView/constants.js +1 -0
  43. package/admin/src/content-manager/pages/ListView/components/Body/index.js +53 -56
  44. package/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/index.js +5 -3
  45. package/admin/src/content-manager/pages/ListView/components/TableRows/index.js +1 -1
  46. package/admin/src/content-manager/pages/ListView/index.js +35 -51
  47. package/admin/src/content-manager/pages/ListView/selectors.js +1 -1
  48. package/admin/src/content-manager/utils/checkIfAttributeIsDisplayable.js +1 -1
  49. package/admin/src/content-manager/utils/schema.js +2 -2
  50. package/admin/src/contexts/admin.ts +19 -0
  51. package/admin/src/contexts/apiTokenPermissions.tsx +64 -0
  52. package/admin/src/contexts/configuration.ts +25 -0
  53. package/admin/src/contexts/themeToggle.ts +18 -0
  54. package/admin/src/core/store/configure.ts +91 -0
  55. package/admin/src/core/store/hooks.ts +15 -0
  56. package/admin/src/hooks/{useConfigurations/__mocks__/index.js → __mocks__/useConfigurations.ts} +4 -2
  57. package/admin/src/hooks/index.js +0 -8
  58. package/admin/src/hooks/{useAdminRoles/index.js → useAdminRoles.ts} +26 -10
  59. package/admin/src/hooks/useAdminUsers.ts +64 -0
  60. package/admin/src/hooks/useConfiguration.ts +5 -0
  61. package/admin/src/hooks/{useContentTypes/useContentTypes.js → useContentTypes.ts} +39 -16
  62. package/admin/src/hooks/useDebounce.ts +17 -0
  63. package/admin/src/hooks/{useEnterprise/useEnterprise.js → useEnterprise.ts} +15 -5
  64. package/admin/src/hooks/useLicenseLimitNotification.ts +3 -0
  65. package/admin/src/hooks/useMenu.ts +153 -0
  66. package/admin/src/hooks/useSettingsForm/index.js +14 -2
  67. package/admin/src/hooks/useSettingsMenu/constants.js +39 -0
  68. package/admin/src/hooks/useThemeToggle.ts +9 -0
  69. package/admin/src/index.js +7 -6
  70. package/admin/src/layouts/{AppLayout/index.js → AppLayout.tsx} +7 -10
  71. package/admin/src/layouts/UnauthenticatedLayout.tsx +77 -0
  72. package/admin/src/pages/Admin/index.js +15 -8
  73. package/admin/src/pages/App/index.js +13 -8
  74. package/admin/src/pages/App/selectors.js +1 -1
  75. package/admin/src/pages/AuthPage/components/ForgotPassword/index.js +3 -2
  76. package/admin/src/pages/AuthPage/components/ForgotPasswordSuccess/index.js +3 -2
  77. package/admin/src/pages/AuthPage/components/Login/BaseLogin.js +1 -1
  78. package/admin/src/pages/AuthPage/components/Login/index.js +1 -1
  79. package/admin/src/pages/AuthPage/components/Oops/index.js +3 -2
  80. package/admin/src/pages/AuthPage/components/Register/index.js +30 -35
  81. package/admin/src/pages/AuthPage/components/ResetPassword/index.js +3 -2
  82. package/admin/src/pages/AuthPage/index.js +4 -5
  83. package/admin/src/pages/HomePage/index.js +6 -3
  84. package/admin/src/pages/{InternalErrorPage/index.js → InternalErrorPage.tsx} +10 -6
  85. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/index.js +0 -2
  86. package/admin/src/pages/MarketplacePage/hooks/__mocks__/useNavigatorOnline.ts +1 -0
  87. package/admin/src/{hooks/useNavigatorOnLine/index.js → pages/MarketplacePage/hooks/useNavigatorOnline.ts} +4 -6
  88. package/admin/src/pages/MarketplacePage/index.js +3 -3
  89. package/admin/src/pages/{NotFoundPage/index.js → NotFoundPage.tsx} +9 -7
  90. package/admin/src/pages/ProfilePage/components/Preferences/index.js +23 -9
  91. package/admin/src/pages/ProfilePage/index.js +4 -4
  92. package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +20 -0
  93. package/admin/src/pages/SettingsPage/components/Tokens/Regenerate/index.js +1 -1
  94. package/admin/src/pages/SettingsPage/components/Tokens/Table/index.js +119 -87
  95. package/admin/src/pages/SettingsPage/constants.js +33 -0
  96. package/admin/src/{hooks/useRegenerate/index.js → pages/SettingsPage/hooks/useRegenerate.ts} +13 -7
  97. package/admin/src/pages/SettingsPage/index.js +2 -2
  98. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ActionBoundRoutes/index.js +1 -1
  99. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js +1 -1
  100. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Permissions/index.js +1 -1
  101. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Regenerate/index.js +1 -1
  102. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +2 -2
  103. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/CustomizationInfos/index.js +2 -2
  104. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +2 -2
  105. package/admin/src/pages/SettingsPage/pages/AuditLogs/SalesPage.js +50 -0
  106. package/admin/src/pages/SettingsPage/pages/ReviewWorkflows/SalesPage.js +53 -0
  107. package/admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js +1 -1
  108. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/index.js +1 -1
  109. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/index.js +1 -1
  110. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/index.js +1 -1
  111. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/index.js +1 -1
  112. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/index.js +1 -1
  113. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PermissionsDataManagerProvider/index.js +1 -1
  114. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/index.js +1 -1
  115. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/hooks/usePermissionsDataManager.ts +28 -0
  116. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +1 -1
  117. package/admin/src/{hooks/useAdminRolePermissions/index.js → pages/SettingsPage/pages/Roles/hooks/useAdminRolePermissions.ts} +13 -6
  118. package/admin/src/pages/SettingsPage/pages/SingleSignOn/SalesPage.js +53 -0
  119. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js +1 -1
  120. package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js +3 -5
  121. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +2 -1
  122. package/admin/src/pages/SettingsPage/pages/Users/ListPage/DynamicTable/TableRows/index.js +1 -1
  123. package/admin/src/pages/{UseCasePage/index.js → UseCasePage.tsx} +10 -12
  124. package/admin/src/shared/hooks/index.js +0 -1
  125. package/admin/src/shared/hooks/useInjectionZone/index.js +2 -2
  126. package/admin/src/translations/en.json +13 -0
  127. package/admin/src/types/adminAPI.ts +29 -0
  128. package/admin/src/utils/createRoute.tsx +54 -0
  129. package/admin/src/utils/formatAPIErrors.ts +18 -0
  130. package/admin/src/utils/getFullName.ts +3 -0
  131. package/admin/src/utils/{uniqueAdminHash.js → hashAdminUserEmail.ts} +6 -3
  132. package/admin/src/utils/makeUniqueRoutes.ts +11 -0
  133. package/admin/tsconfig.build.json +4 -0
  134. package/admin/tsconfig.json +11 -0
  135. package/build/0cd5f8915b265d5b1856.png +0 -0
  136. package/build/1049.ecc10c97.chunk.js +1 -0
  137. package/build/1217.96155682.chunk.js +35 -0
  138. package/build/1227.947ceaf9.chunk.js +1 -0
  139. package/build/1306.2699df52.chunk.js +79 -0
  140. package/build/135.ad267b59.chunk.js +1 -0
  141. package/build/1386.eabd8a1e.chunk.js +7 -0
  142. package/build/1727.b49f0713.chunk.js +1 -0
  143. package/build/1835.eaa696ba.chunk.js +1 -0
  144. package/build/19eb2dfcf2603eb55733.png +0 -0
  145. package/build/2325.d705b39a.chunk.js +1 -0
  146. package/build/2379.7ce8e110.chunk.js +1 -0
  147. package/build/2395.acb961a8.chunk.js +26 -0
  148. package/build/2421.79e5b3d0.chunk.js +1 -0
  149. package/build/267.073a3bcb.chunk.js +1 -0
  150. package/build/27d16aefee06412db90a.png +0 -0
  151. package/build/2801.4711ea5a.chunk.js +1 -0
  152. package/build/2878.145ebf7c.chunk.js +1 -0
  153. package/build/2950.216f2e89.chunk.js +1 -0
  154. package/build/2953.284a63c0.chunk.js +1 -0
  155. package/build/3019.fde2e1be.chunk.js +181 -0
  156. package/build/3100.2ba4df95.chunk.js +1 -0
  157. package/build/311.cb0884bb.chunk.js +1 -0
  158. package/build/3460.8644e608.chunk.js +146 -0
  159. package/build/3483.db8c1520.chunk.js +1 -0
  160. package/build/3911.488fbde3.chunk.js +95 -0
  161. package/build/4174.49cedb6a.chunk.js +1 -0
  162. package/build/4429.7f044dc7.chunk.js +1 -0
  163. package/build/4555.c883d697.chunk.js +1 -0
  164. package/build/4663.b906cc10.chunk.js +1 -0
  165. package/build/4732.149f5f8f.chunk.js +1 -0
  166. package/build/4916.480053a6.chunk.js +1 -0
  167. package/build/4996.d285c30b.chunk.js +1 -0
  168. package/build/502.f536f78b.chunk.js +1 -0
  169. package/build/570.2f3b4c56.chunk.js +1 -0
  170. package/build/5858.493b31ec.chunk.js +1 -0
  171. package/build/6158.c3c13c20.chunk.js +1 -0
  172. package/build/6345.334e7678.chunk.js +1 -0
  173. package/build/6453.4160b5b7.chunk.js +1 -0
  174. package/build/7030.b98dcedf.chunk.js +1 -0
  175. package/build/70674f63fc3904c20de0.svg +7 -0
  176. package/build/7448.6fd14dd3.chunk.js +1 -0
  177. package/build/7464.579564ac.chunk.js +1 -0
  178. package/build/7735.9e7c9fdd.chunk.js +10 -0
  179. package/build/78.dcc6df5c.chunk.js +1 -0
  180. package/build/7811.fdbe09af.chunk.js +103 -0
  181. package/build/782.7243b183.chunk.js +1 -0
  182. package/build/7849.2a500ed8.chunk.js +1 -0
  183. package/build/7897.63ba0a00.chunk.js +6 -0
  184. package/build/7e9af4fb7e723fcebf1f.svg +48 -0
  185. package/build/8162.7d1100a0.chunk.js +1 -0
  186. package/build/8276.9abe4679.chunk.js +26 -0
  187. package/build/8773.ee67141c.chunk.js +48 -0
  188. package/build/8980.f0045cc1.chunk.js +1 -0
  189. package/build/9077.2cc01ac8.chunk.js +105 -0
  190. package/build/9153.42c1428a.chunk.js +1 -0
  191. package/build/918.54414509.chunk.js +1 -0
  192. package/build/9218.b2d367f8.chunk.js +1 -0
  193. package/build/9285.5f174057.chunk.js +1 -0
  194. package/build/9547.62987774.chunk.js +1 -0
  195. package/build/9754.b4e73779.chunk.js +1 -0
  196. package/build/9d5d788027e86620c234.svg +5 -0
  197. package/build/Admin-authenticatedApp.059dc48f.chunk.js +79 -0
  198. package/build/Admin_InternalErrorPage.06eeef20.chunk.js +1 -0
  199. package/build/Admin_homePage.56b9eb3f.chunk.js +81 -0
  200. package/build/Admin_marketplace.d693a435.chunk.js +44 -0
  201. package/build/Admin_pluginsPage.ae2c872a.chunk.js +6 -0
  202. package/build/Admin_profilePage.89099d5b.chunk.js +13 -0
  203. package/build/Admin_settingsPage.88c45586.chunk.js +12 -0
  204. package/build/Upload_ConfigureTheView.44f28145.chunk.js +1 -0
  205. package/build/admin-app.990e112f.chunk.js +69 -0
  206. package/build/admin-edit-roles-page.4e1eb4a9.chunk.js +267 -0
  207. package/build/admin-edit-users.5b91404e.chunk.js +10 -0
  208. package/build/admin-roles-list.89dd94fe.chunk.js +22 -0
  209. package/build/admin-users.7be4fc5f.chunk.js +11 -0
  210. package/build/api-tokens-create-page.571920e5.chunk.js +1 -0
  211. package/build/api-tokens-edit-page.cbdc81b1.chunk.js +1 -0
  212. package/build/api-tokens-list-page.de0c49e8.chunk.js +16 -0
  213. package/build/ar-json.74e40bc7.chunk.js +1 -0
  214. package/build/audit-logs-sales-page.2955db88.chunk.js +1 -0
  215. package/build/audit-logs-settings-page.b0cb5164.chunk.js +1 -0
  216. package/build/bb3108f7fd1e6179bde1.svg +1 -0
  217. package/build/bb4d0d527bdfb161bc5a.svg +1 -0
  218. package/build/ca-json.fc6001d3.chunk.js +1 -0
  219. package/build/content-manager.de7ae330.chunk.js +1241 -0
  220. package/build/content-type-builder-list-view.6c8d3213.chunk.js +211 -0
  221. package/build/content-type-builder-translation-ar-json.3e808e2f.chunk.js +1 -0
  222. package/build/content-type-builder-translation-cs-json.1ef9e106.chunk.js +1 -0
  223. package/build/content-type-builder-translation-de-json.63fcff7b.chunk.js +1 -0
  224. package/build/content-type-builder-translation-dk-json.fd626b67.chunk.js +1 -0
  225. package/build/content-type-builder-translation-en-json.74d80f18.chunk.js +1 -0
  226. package/build/content-type-builder-translation-es-json.a4a361a9.chunk.js +1 -0
  227. package/build/content-type-builder-translation-fr-json.499c3a46.chunk.js +1 -0
  228. package/build/content-type-builder-translation-id-json.65255f93.chunk.js +1 -0
  229. package/build/content-type-builder-translation-it-json.e268ab74.chunk.js +1 -0
  230. package/build/content-type-builder-translation-ja-json.9be0d5b2.chunk.js +1 -0
  231. package/build/content-type-builder-translation-ko-json.04cb309d.chunk.js +1 -0
  232. package/build/content-type-builder-translation-ms-json.f6b743b9.chunk.js +1 -0
  233. package/build/content-type-builder-translation-nl-json.997fe8cc.chunk.js +1 -0
  234. package/build/content-type-builder-translation-pl-json.634f638b.chunk.js +1 -0
  235. package/build/content-type-builder-translation-pt-BR-json.6a95dc71.chunk.js +1 -0
  236. package/build/content-type-builder-translation-pt-json.ddb44f8c.chunk.js +1 -0
  237. package/build/content-type-builder-translation-ru-json.3af65503.chunk.js +1 -0
  238. package/build/content-type-builder-translation-sk-json.c6078082.chunk.js +1 -0
  239. package/build/content-type-builder-translation-sv-json.a6df2462.chunk.js +1 -0
  240. package/build/content-type-builder-translation-th-json.122277cc.chunk.js +1 -0
  241. package/build/content-type-builder-translation-tr-json.41f44f77.chunk.js +1 -0
  242. package/build/content-type-builder-translation-uk-json.e1315acd.chunk.js +1 -0
  243. package/build/content-type-builder-translation-zh-Hans-json.6ff57db6.chunk.js +1 -0
  244. package/build/content-type-builder-translation-zh-json.3532b962.chunk.js +1 -0
  245. package/build/content-type-builder.0bc97051.chunk.js +136 -0
  246. package/build/cs-json.4b44411c.chunk.js +1 -0
  247. package/build/de-json.e72545cf.chunk.js +1 -0
  248. package/build/dk-json.e77140ef.chunk.js +1 -0
  249. package/build/email-settings-page.07712efc.chunk.js +11 -0
  250. package/build/en-json.5b907f67.chunk.js +1 -0
  251. package/build/es-json.b1f2284b.chunk.js +1 -0
  252. package/build/eu-json.63d0a898.chunk.js +1 -0
  253. package/build/fr-json.33c6428b.chunk.js +1 -0
  254. package/build/gu-json.7efe8cc2.chunk.js +1 -0
  255. package/build/he-json.3cf0b48a.chunk.js +1 -0
  256. package/build/hi-json.0d633692.chunk.js +1 -0
  257. package/build/highlight.js.28a1547e.chunk.js +85 -0
  258. package/build/hu-json.c74b6a1e.chunk.js +1 -0
  259. package/build/i18n-settings-page.5c34f012.chunk.js +9 -0
  260. package/build/i18n-translation-de-json.362384a6.chunk.js +1 -0
  261. package/build/i18n-translation-dk-json.89401417.chunk.js +1 -0
  262. package/build/i18n-translation-en-json.1ec7becf.chunk.js +1 -0
  263. package/build/i18n-translation-es-json.87b494d1.chunk.js +1 -0
  264. package/build/i18n-translation-fr-json.57ddc77e.chunk.js +1 -0
  265. package/build/i18n-translation-ko-json.ef4f9471.chunk.js +1 -0
  266. package/build/i18n-translation-pl-json.dfac513d.chunk.js +1 -0
  267. package/build/i18n-translation-ru-json.a3dbc125.chunk.js +1 -0
  268. package/build/i18n-translation-tr-json.3bfc812f.chunk.js +1 -0
  269. package/build/i18n-translation-zh-Hans-json.757ce62d.chunk.js +1 -0
  270. package/build/i18n-translation-zh-json.bef2dc07.chunk.js +1 -0
  271. package/build/id-json.41e07c46.chunk.js +1 -0
  272. package/build/index.html +1 -0
  273. package/build/it-json.bfe27ed8.chunk.js +1 -0
  274. package/build/ja-json.e1959a1c.chunk.js +1 -0
  275. package/build/ko-json.ce5d6d94.chunk.js +1 -0
  276. package/build/main.f84563f1.js +2665 -0
  277. package/build/ml-json.940d7ace.chunk.js +1 -0
  278. package/build/ms-json.0eddffd9.chunk.js +1 -0
  279. package/build/nl-json.fe38f0fb.chunk.js +1 -0
  280. package/build/no-json.19a2dbfa.chunk.js +1 -0
  281. package/build/pl-json.d55e8e78.chunk.js +1 -0
  282. package/build/pt-BR-json.ae0a0d2e.chunk.js +1 -0
  283. package/build/pt-json.ee554a41.chunk.js +1 -0
  284. package/build/review-workflows-sales-page.f46a8f00.chunk.js +1 -0
  285. package/build/review-workflows-settings-create-view.d0544fb0.chunk.js +1 -0
  286. package/build/review-workflows-settings-edit-view.aabf49ef.chunk.js +1 -0
  287. package/build/review-workflows-settings-list-view.8b0525ab.chunk.js +56 -0
  288. package/build/ru-json.1c976644.chunk.js +1 -0
  289. package/build/runtime~main.270fd45f.js +2 -0
  290. package/build/sa-json.2c03ef4e.chunk.js +1 -0
  291. package/build/sk-json.b41847e8.chunk.js +1 -0
  292. package/build/sso-sales-page.ef22e469.chunk.js +1 -0
  293. package/build/sso-settings-page.21e16ae4.chunk.js +1 -0
  294. package/build/sv-json.568cb7ae.chunk.js +1 -0
  295. package/build/th-json.5f659396.chunk.js +1 -0
  296. package/build/tr-json.c9f22432.chunk.js +1 -0
  297. package/build/transfer-tokens-create-page.3366204d.chunk.js +1 -0
  298. package/build/transfer-tokens-edit-page.15cf0f73.chunk.js +1 -0
  299. package/build/transfer-tokens-list-page.0bc0e682.chunk.js +16 -0
  300. package/build/uk-json.b7e38370.chunk.js +1 -0
  301. package/build/upload-settings.1319dca0.chunk.js +14 -0
  302. package/build/upload-translation-ca-json.57954414.chunk.js +1 -0
  303. package/build/upload-translation-de-json.420c943b.chunk.js +1 -0
  304. package/build/upload-translation-dk-json.bbb2fa05.chunk.js +1 -0
  305. package/build/upload-translation-en-json.8b7573ce.chunk.js +1 -0
  306. package/build/upload-translation-es-json.ba2eb03a.chunk.js +1 -0
  307. package/build/upload-translation-fr-json.baab9911.chunk.js +1 -0
  308. package/build/upload-translation-he-json.0a830937.chunk.js +1 -0
  309. package/build/upload-translation-it-json.e87d7966.chunk.js +1 -0
  310. package/build/upload-translation-ja-json.44b88e7a.chunk.js +1 -0
  311. package/build/upload-translation-ko-json.a52eab64.chunk.js +1 -0
  312. package/build/upload-translation-ms-json.74f6d746.chunk.js +1 -0
  313. package/build/upload-translation-pl-json.426f31c9.chunk.js +1 -0
  314. package/build/upload-translation-pt-BR-json.d1704f0b.chunk.js +1 -0
  315. package/build/upload-translation-pt-json.6b937fdf.chunk.js +1 -0
  316. package/build/upload-translation-ru-json.675f6b93.chunk.js +1 -0
  317. package/build/upload-translation-sk-json.483a18f6.chunk.js +1 -0
  318. package/build/upload-translation-th-json.98d35574.chunk.js +1 -0
  319. package/build/upload-translation-tr-json.74117e5c.chunk.js +1 -0
  320. package/build/upload-translation-uk-json.9950466a.chunk.js +1 -0
  321. package/build/upload-translation-zh-Hans-json.db163b6b.chunk.js +1 -0
  322. package/build/upload-translation-zh-json.e1dd6eb2.chunk.js +1 -0
  323. package/build/upload.1ced11be.chunk.js +58 -0
  324. package/build/users-advanced-settings-page.8e657084.chunk.js +9 -0
  325. package/build/users-email-settings-page.e57745e5.chunk.js +9 -0
  326. package/build/users-permissions-translation-ar-json.7d87d54d.chunk.js +1 -0
  327. package/build/users-permissions-translation-cs-json.7e23424a.chunk.js +1 -0
  328. package/build/users-permissions-translation-de-json.a6fb670f.chunk.js +1 -0
  329. package/build/users-permissions-translation-dk-json.60e50f48.chunk.js +1 -0
  330. package/build/users-permissions-translation-en-json.4b302272.chunk.js +1 -0
  331. package/build/users-permissions-translation-es-json.35007573.chunk.js +1 -0
  332. package/build/users-permissions-translation-fr-json.7e55bbbb.chunk.js +1 -0
  333. package/build/users-permissions-translation-id-json.a5a0fb59.chunk.js +1 -0
  334. package/build/users-permissions-translation-it-json.0705465d.chunk.js +1 -0
  335. package/build/users-permissions-translation-ja-json.891fe76e.chunk.js +1 -0
  336. package/build/users-permissions-translation-ko-json.357d7a33.chunk.js +1 -0
  337. package/build/users-permissions-translation-ms-json.c83f87c4.chunk.js +1 -0
  338. package/build/users-permissions-translation-nl-json.c9f92a3c.chunk.js +1 -0
  339. package/build/users-permissions-translation-pl-json.0a7287d1.chunk.js +1 -0
  340. package/build/users-permissions-translation-pt-BR-json.1b6d2920.chunk.js +1 -0
  341. package/build/users-permissions-translation-pt-json.a7eda429.chunk.js +1 -0
  342. package/build/users-permissions-translation-ru-json.8e883c67.chunk.js +1 -0
  343. package/build/users-permissions-translation-sk-json.7f37180f.chunk.js +1 -0
  344. package/build/users-permissions-translation-sv-json.17187818.chunk.js +1 -0
  345. package/build/users-permissions-translation-th-json.1e9c0247.chunk.js +1 -0
  346. package/build/users-permissions-translation-tr-json.2bd7ff98.chunk.js +1 -0
  347. package/build/users-permissions-translation-uk-json.6a0a1572.chunk.js +1 -0
  348. package/build/users-permissions-translation-vi-json.6722a8a2.chunk.js +1 -0
  349. package/build/users-permissions-translation-zh-Hans-json.8d82c809.chunk.js +1 -0
  350. package/build/users-permissions-translation-zh-json.7978eaa6.chunk.js +1 -0
  351. package/build/users-providers-settings-page.55796d13.chunk.js +14 -0
  352. package/build/users-roles-settings-page.57079245.chunk.js +55 -0
  353. package/build/vi-json.ee4c5537.chunk.js +1 -0
  354. package/build/webhook-edit-page.3a28b2e7.chunk.js +33 -0
  355. package/build/webhook-list-page.ee80767b.chunk.js +63 -0
  356. package/build/zh-Hans-json.97efd015.chunk.js +1 -0
  357. package/build/zh-json.bfc2e036.chunk.js +1 -0
  358. package/ee/admin/hooks/{useLicenseLimitNotification.js → useLicenseLimitNotification.ts} +4 -4
  359. package/ee/admin/pages/AuthPage/components/Login/index.js +1 -1
  360. package/ee/admin/pages/AuthPage/components/Providers/index.js +3 -2
  361. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/selectors.js +1 -1
  362. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/index.js +1 -3
  363. package/ee/server/bootstrap.js +1 -1
  364. package/ee/server/controllers/admin.js +1 -1
  365. package/ee/server/controllers/user.js +1 -1
  366. package/ee/server/destroy.js +1 -1
  367. package/ee/server/register.js +1 -1
  368. package/ee/server/routes/utils.js +1 -1
  369. package/ee/server/services/audit-logs.js +1 -1
  370. package/ee/server/services/passport/sso.js +1 -1
  371. package/ee/server/services/passport.js +1 -1
  372. package/ee/server/services/seat-enforcement.js +1 -1
  373. package/ee/server/utils/sso-lock.js +1 -1
  374. package/ee/server/validation/role.js +1 -1
  375. package/ee/server/validation/user.js +1 -1
  376. package/jest.config.front.js +4 -0
  377. package/package.json +28 -22
  378. package/scripts/build.js +6 -2
  379. package/server/controllers/admin.js +4 -3
  380. package/shared/entities.ts +33 -0
  381. package/shared/permissions.ts +52 -0
  382. package/shared/schema.ts +9 -0
  383. package/webpack.config.js +1 -0
  384. package/admin/src/components/AuthenticatedApp/index.js +0 -120
  385. package/admin/src/components/AuthenticatedApp/utils/api.js +0 -85
  386. package/admin/src/components/AuthenticatedApp/utils/checkLatestStrapiVersion.js +0 -11
  387. package/admin/src/components/ConfigurationsProvider/index.js +0 -66
  388. package/admin/src/components/ConfigurationsProvider/reducer.js +0 -29
  389. package/admin/src/components/DragLayer/index.js +0 -1
  390. package/admin/src/components/GlobalStyle/index.js +0 -9
  391. package/admin/src/components/GuidedTour/Homepage/components/Step.js +0 -61
  392. package/admin/src/components/GuidedTour/Homepage/components/Stepper.js +0 -61
  393. package/admin/src/components/GuidedTour/Homepage/index.js +0 -71
  394. package/admin/src/components/GuidedTour/Modal/components/Content.js +0 -66
  395. package/admin/src/components/GuidedTour/Modal/components/Modal.js +0 -72
  396. package/admin/src/components/GuidedTour/Modal/components/StepNumberWithPadding.js +0 -26
  397. package/admin/src/components/GuidedTour/Modal/components/Stepper.js +0 -118
  398. package/admin/src/components/GuidedTour/Modal/index.js +0 -94
  399. package/admin/src/components/GuidedTour/Modal/reducer.js +0 -29
  400. package/admin/src/components/GuidedTour/Stepper/StepLine.js +0 -29
  401. package/admin/src/components/GuidedTour/Stepper/StepNumber.js +0 -71
  402. package/admin/src/components/GuidedTour/constants.js +0 -3
  403. package/admin/src/components/GuidedTour/index.js +0 -102
  404. package/admin/src/components/GuidedTour/init.js +0 -37
  405. package/admin/src/components/GuidedTour/reducer.js +0 -50
  406. package/admin/src/components/GuidedTour/utils/arePreviousSectionsDone.js +0 -13
  407. package/admin/src/components/GuidedTour/utils/arePreviousStepsDone.js +0 -12
  408. package/admin/src/components/GuidedTour/utils/isGuidedTourCompleted.js +0 -6
  409. package/admin/src/components/GuidedTour/utils/persistStateToLocaleStorage.js +0 -34
  410. package/admin/src/components/LanguageProvider/index.js +0 -54
  411. package/admin/src/components/LanguageProvider/init.js +0 -13
  412. package/admin/src/components/LanguageProvider/reducer.js +0 -30
  413. package/admin/src/components/LanguageProvider/utils/localStorageKey.js +0 -3
  414. package/admin/src/components/LocalesProvider/context.js +0 -5
  415. package/admin/src/components/LocalesProvider/index.js +0 -21
  416. package/admin/src/components/LocalesProvider/useLocalesProvider.js +0 -11
  417. package/admin/src/components/NpsSurvey/hooks/useNpsSurveySettings.js +0 -17
  418. package/admin/src/components/PluginsInitializer/index.js +0 -68
  419. package/admin/src/components/PluginsInitializer/init.js +0 -11
  420. package/admin/src/components/PluginsInitializer/reducer.js +0 -22
  421. package/admin/src/components/PrivateRoute/index.js +0 -46
  422. package/admin/src/components/Providers/index.js +0 -156
  423. package/admin/src/components/RBACProvider/actions.js +0 -10
  424. package/admin/src/components/RBACProvider/constants.js +0 -2
  425. package/admin/src/components/RBACProvider/index.js +0 -39
  426. package/admin/src/components/RBACProvider/reducer.js +0 -51
  427. package/admin/src/components/Theme/index.js +0 -26
  428. package/admin/src/components/ThemeToggleProvider/index.js +0 -79
  429. package/admin/src/contexts/Admin/index.js +0 -5
  430. package/admin/src/contexts/ApiTokenPermissions/index.js +0 -25
  431. package/admin/src/contexts/Configurations/index.js +0 -5
  432. package/admin/src/contexts/MarketPlace/index.js +0 -18
  433. package/admin/src/contexts/PermisssionsDataManagerContext/index.js +0 -5
  434. package/admin/src/contexts/ThemeToggle/index.js +0 -5
  435. package/admin/src/contexts/index.js +0 -4
  436. package/admin/src/core/store/configureStore.js +0 -47
  437. package/admin/src/exposedHooks.js +0 -27
  438. package/admin/src/hooks/useAdminRoles/__mocks__/index.js +0 -5
  439. package/admin/src/hooks/useAdminUsers/index.js +0 -1
  440. package/admin/src/hooks/useAdminUsers/useAdminUsers.js +0 -47
  441. package/admin/src/hooks/useConfigurations/index.js +0 -11
  442. package/admin/src/hooks/useContentTypes/index.js +0 -1
  443. package/admin/src/hooks/useDebounce/index.js +0 -19
  444. package/admin/src/hooks/useEnterprise/index.js +0 -1
  445. package/admin/src/hooks/useLicenseLimitNotification/index.js +0 -5
  446. package/admin/src/hooks/useMenu/index.js +0 -86
  447. package/admin/src/hooks/useMenu/utils/checkPermissions.js +0 -13
  448. package/admin/src/hooks/useMenu/utils/getGeneralLinks.js +0 -31
  449. package/admin/src/hooks/useMenu/utils/getPluginSectionLinks.js +0 -17
  450. package/admin/src/hooks/usePermissionsDataManager/index.js +0 -7
  451. package/admin/src/hooks/useReleaseNotification/index.js +0 -31
  452. package/admin/src/hooks/useReleaseNotification/utils/api.js +0 -20
  453. package/admin/src/hooks/useReleaseNotification/utils/checkLatestStrapiVersion.js +0 -11
  454. package/admin/src/hooks/useThemeToggle/index.js +0 -11
  455. package/admin/src/injectionZones.js +0 -25
  456. package/admin/src/layouts/UnauthenticatedLayout/LocaleToggle/index.js +0 -29
  457. package/admin/src/layouts/UnauthenticatedLayout/index.js +0 -55
  458. package/admin/src/reducers.js +0 -23
  459. package/admin/src/shared/hooks/useAdminProvider/index.js +0 -11
  460. package/admin/src/tsconfig.json +0 -10
  461. package/admin/src/utils/checkFormValidity.js +0 -15
  462. package/admin/src/utils/createRoute.js +0 -47
  463. package/admin/src/utils/formatAPIErrors.js +0 -17
  464. package/admin/src/utils/getAttributesToDisplay.js +0 -19
  465. package/admin/src/utils/getExistingActions.js +0 -32
  466. package/admin/src/utils/getFullName.js +0 -9
  467. package/admin/src/utils/index.js +0 -9
  468. package/admin/src/utils/makeUniqueRoutes.js +0 -6
  469. package/admin/src/utils/sortLinks.js +0 -5
  470. /package/admin/src/hooks/{useAdminUsers/__mocks__/index.js → __mocks__/useAdminUsers.ts} +0 -0
  471. /package/admin/src/hooks/{useContentTypes/__mocks__/index.js → __mocks__/useContentTypes.ts} +0 -0
  472. /package/admin/src/{hooks/useAdminRolePermissions/__mocks__/index.js → pages/SettingsPage/pages/Roles/hooks/__mocks__/useAdminRolePermissions.ts} +0 -0
@@ -1,71 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Flex, Icon, Typography } from '@strapi/design-system';
4
- import { pxToRem } from '@strapi/helper-plugin';
5
- import { Check } from '@strapi/icons';
6
- import PropTypes from 'prop-types';
7
-
8
- import { IS_ACTIVE, IS_DONE, IS_NOT_DONE } from '../constants';
9
-
10
- const StepNumber = ({ type, number }) => {
11
- if (type === IS_DONE) {
12
- return (
13
- <Flex
14
- background="primary600"
15
- padding={2}
16
- borderRadius="50%"
17
- width={pxToRem(30)}
18
- height={pxToRem(30)}
19
- justifyContent="center"
20
- >
21
- <Icon as={Check} aria-hidden width={pxToRem(16)} color="neutral0" />
22
- </Flex>
23
- );
24
- }
25
-
26
- if (type === IS_ACTIVE) {
27
- return (
28
- <Flex
29
- background="primary600"
30
- padding={2}
31
- borderRadius="50%"
32
- width={pxToRem(30)}
33
- height={pxToRem(30)}
34
- justifyContent="center"
35
- >
36
- <Typography fontWeight="semiBold" textColor="neutral0">
37
- {number}
38
- </Typography>
39
- </Flex>
40
- );
41
- }
42
-
43
- return (
44
- <Flex
45
- borderColor="neutral500"
46
- borderWidth="1px"
47
- borderStyle="solid"
48
- padding={2}
49
- borderRadius="50%"
50
- width={pxToRem(30)}
51
- height={pxToRem(30)}
52
- justifyContent="center"
53
- >
54
- <Typography fontWeight="semiBold" textColor="neutral600">
55
- {number}
56
- </Typography>
57
- </Flex>
58
- );
59
- };
60
-
61
- StepNumber.defaultProps = {
62
- number: undefined,
63
- type: IS_NOT_DONE,
64
- };
65
-
66
- StepNumber.propTypes = {
67
- number: PropTypes.number,
68
- type: PropTypes.oneOf([IS_ACTIVE, IS_DONE, IS_NOT_DONE]),
69
- };
70
-
71
- export default StepNumber;
@@ -1,3 +0,0 @@
1
- export const IS_ACTIVE = 'isActive';
2
- export const IS_DONE = 'isDone';
3
- export const IS_NOT_DONE = 'isNotDone';
@@ -1,102 +0,0 @@
1
- import React, { useReducer } from 'react';
2
-
3
- import { GuidedTourProvider } from '@strapi/helper-plugin';
4
- import get from 'lodash/get';
5
- import PropTypes from 'prop-types';
6
-
7
- import init from './init';
8
- import reducer, { initialState } from './reducer';
9
- import arePreviousSectionsDone from './utils/arePreviousSectionsDone';
10
- import arePreviousStepsDone from './utils/arePreviousStepsDone';
11
- import persistStateToLocaleStorage from './utils/persistStateToLocaleStorage';
12
-
13
- const GuidedTour = ({ children }) => {
14
- const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] = useReducer(
15
- reducer,
16
- initialState,
17
- init
18
- );
19
-
20
- const setCurrentStep = (step) => {
21
- // if step is null it is intentional, we need to dispatch it
22
- if (step !== null) {
23
- const isStepAlreadyDone = get(guidedTourState, step);
24
- const isStepToShow = arePreviousStepsDone(step, guidedTourState);
25
-
26
- if (isStepAlreadyDone || isSkipped || !isStepToShow) {
27
- return null;
28
- }
29
- }
30
-
31
- persistStateToLocaleStorage.addCurrentStep(step);
32
-
33
- return dispatch({
34
- type: 'SET_CURRENT_STEP',
35
- step,
36
- });
37
- };
38
-
39
- const setGuidedTourVisibility = (value) => {
40
- dispatch({
41
- type: 'SET_GUIDED_TOUR_VISIBILITY',
42
- value,
43
- });
44
- };
45
-
46
- const setStepState = (currentStep, value) => {
47
- persistStateToLocaleStorage.addCompletedStep(currentStep);
48
-
49
- dispatch({
50
- type: 'SET_STEP_STATE',
51
- currentStep,
52
- value,
53
- });
54
- };
55
-
56
- const startSection = (sectionName) => {
57
- const sectionSteps = guidedTourState[sectionName];
58
-
59
- if (sectionSteps) {
60
- const isSectionToShow = arePreviousSectionsDone(sectionName, guidedTourState);
61
- const firstStep = Object.keys(sectionSteps)[0];
62
- const isFirstStepDone = sectionSteps[firstStep];
63
-
64
- if (isSectionToShow && !currentStep && !isFirstStepDone) {
65
- return setCurrentStep(`${sectionName}.${firstStep}`);
66
- }
67
- }
68
-
69
- return null;
70
- };
71
-
72
- const setSkipped = (value) => {
73
- persistStateToLocaleStorage.setSkipped(value);
74
-
75
- dispatch({
76
- type: 'SET_SKIPPED',
77
- value,
78
- });
79
- };
80
-
81
- return (
82
- <GuidedTourProvider
83
- guidedTourState={guidedTourState}
84
- currentStep={currentStep}
85
- setCurrentStep={setCurrentStep}
86
- setGuidedTourVisibility={setGuidedTourVisibility}
87
- setSkipped={setSkipped}
88
- setStepState={setStepState}
89
- startSection={startSection}
90
- isGuidedTourVisible={isGuidedTourVisible}
91
- isSkipped={isSkipped}
92
- >
93
- {children}
94
- </GuidedTourProvider>
95
- );
96
- };
97
-
98
- GuidedTour.propTypes = {
99
- children: PropTypes.element.isRequired,
100
- };
101
-
102
- export default GuidedTour;
@@ -1,37 +0,0 @@
1
- import set from 'lodash/set';
2
-
3
- import persistStateToLocaleStorage, {
4
- COMPLETED_STEPS,
5
- CURRENT_STEP,
6
- SKIPPED,
7
- } from './utils/persistStateToLocaleStorage';
8
-
9
- const init = (initialState) => {
10
- const copyInitialState = { ...initialState };
11
- const guidedTourLocaleStorage = persistStateToLocaleStorage.get(COMPLETED_STEPS);
12
- const currentStepLocaleStorage = persistStateToLocaleStorage.get(CURRENT_STEP);
13
- const skippedLocaleStorage = persistStateToLocaleStorage.get(SKIPPED);
14
-
15
- if (guidedTourLocaleStorage) {
16
- guidedTourLocaleStorage.forEach((step) => {
17
- const [sectionName, stepName] = step.split('.');
18
- set(copyInitialState, ['guidedTourState', sectionName, stepName], true);
19
- });
20
- }
21
-
22
- // if current step when initializing mark it as done
23
- if (currentStepLocaleStorage) {
24
- const [sectionName, stepName] = currentStepLocaleStorage.split('.');
25
- set(copyInitialState, ['guidedTourState', sectionName, stepName], true);
26
- persistStateToLocaleStorage.addCompletedStep(currentStepLocaleStorage);
27
- persistStateToLocaleStorage.addCurrentStep(null);
28
- }
29
-
30
- if (skippedLocaleStorage !== null) {
31
- set(copyInitialState, 'isSkipped', skippedLocaleStorage);
32
- }
33
-
34
- return copyInitialState;
35
- };
36
-
37
- export default init;
@@ -1,50 +0,0 @@
1
- /* eslint-disable consistent-return */
2
- import produce from 'immer';
3
-
4
- export const initialState = {
5
- currentStep: null,
6
- guidedTourState: {
7
- contentTypeBuilder: {
8
- create: false,
9
- success: false,
10
- },
11
- contentManager: {
12
- create: false,
13
- success: false,
14
- },
15
- apiTokens: {
16
- create: false,
17
- success: false,
18
- },
19
- },
20
- isGuidedTourVisible: false,
21
- isSkipped: true,
22
- };
23
-
24
- const reducer = (state = initialState, action) =>
25
- produce(state, (draftState) => {
26
- switch (action.type) {
27
- case 'SET_CURRENT_STEP': {
28
- draftState.currentStep = action.step;
29
- break;
30
- }
31
- case 'SET_STEP_STATE': {
32
- const [section, step] = action.currentStep.split('.');
33
- draftState.guidedTourState[section][step] = action.value;
34
- break;
35
- }
36
- case 'SET_SKIPPED': {
37
- draftState.isSkipped = action.value;
38
- break;
39
- }
40
- case 'SET_GUIDED_TOUR_VISIBILITY': {
41
- draftState.isGuidedTourVisible = action.value;
42
- break;
43
- }
44
- default: {
45
- return draftState;
46
- }
47
- }
48
- });
49
-
50
- export default reducer;
@@ -1,13 +0,0 @@
1
- const arePreviousSectionsDone = (sectionName, guidedTourState) => {
2
- const guidedTourArray = Object.entries(guidedTourState);
3
-
4
- // Find current section position in the guidedTourArray
5
- // Get only previous sections based on current section position
6
- const currentSectionIndex = guidedTourArray.findIndex(([key]) => key === sectionName);
7
- const previousSections = guidedTourArray.slice(0, currentSectionIndex);
8
-
9
- // Check if every steps from previous section are done
10
- return previousSections.every(([, sectionValue]) => Object.values(sectionValue).every(Boolean));
11
- };
12
-
13
- export default arePreviousSectionsDone;
@@ -1,12 +0,0 @@
1
- const arePreviousStepsDone = (step, guidedTourState) => {
2
- const stepSplit = step.split('.');
3
- const stepName = stepSplit[1];
4
- const sectionArray = Object.entries(guidedTourState[stepSplit[0]]);
5
-
6
- const currentStepIndex = sectionArray.findIndex(([key]) => key === stepName);
7
- const previousSteps = sectionArray.slice(0, currentStepIndex);
8
-
9
- return previousSteps.every(([, sectionValue]) => sectionValue);
10
- };
11
-
12
- export default arePreviousStepsDone;
@@ -1,6 +0,0 @@
1
- const isGuidedTourCompleted = (guidedTourState) =>
2
- Object.entries(guidedTourState).every(([, section]) =>
3
- Object.entries(section).every(([, step]) => step)
4
- );
5
-
6
- export default isGuidedTourCompleted;
@@ -1,34 +0,0 @@
1
- export const CURRENT_STEP = 'GUIDED_TOUR_CURRENT_STEP';
2
- export const COMPLETED_STEPS = 'GUIDED_TOUR_COMPLETED_STEPS';
3
- export const SKIPPED = 'GUIDED_TOUR_SKIPPED';
4
- const parse = JSON.parse;
5
- const stringify = JSON.stringify;
6
-
7
- const persistStateToLocaleStorage = {
8
- clear() {
9
- localStorage.removeItem(CURRENT_STEP);
10
- localStorage.removeItem(COMPLETED_STEPS);
11
- },
12
- addCompletedStep(completedStep) {
13
- const currentSteps = parse(localStorage.getItem(COMPLETED_STEPS))?.slice() || [];
14
- const isAlreadyStored = currentSteps.includes(completedStep);
15
-
16
- if (isAlreadyStored) {
17
- return;
18
- }
19
-
20
- currentSteps.push(completedStep);
21
- localStorage.setItem(COMPLETED_STEPS, stringify(currentSteps));
22
- },
23
- addCurrentStep(currentStep) {
24
- localStorage.setItem(CURRENT_STEP, stringify(currentStep));
25
- },
26
- setSkipped(value) {
27
- localStorage.setItem(SKIPPED, stringify(value));
28
- },
29
- get(item) {
30
- return parse(localStorage.getItem(item));
31
- },
32
- };
33
-
34
- export default persistStateToLocaleStorage;
@@ -1,54 +0,0 @@
1
- /*
2
- *
3
- * LanguageProvider
4
- *
5
- * this component connects the redux state language locale to the
6
- * IntlProvider component and i18n messages (loaded from `app/translations`)
7
- */
8
-
9
- import React, { useEffect, useReducer } from 'react';
10
-
11
- import defaultsDeep from 'lodash/defaultsDeep';
12
- import PropTypes from 'prop-types';
13
- import { IntlProvider } from 'react-intl';
14
-
15
- import LocalesProvider from '../LocalesProvider';
16
-
17
- import init from './init';
18
- import reducer, { initialState } from './reducer';
19
- import localStorageKey from './utils/localStorageKey';
20
-
21
- const LanguageProvider = ({ children, localeNames, messages }) => {
22
- const [{ locale }, dispatch] = useReducer(reducer, initialState, () => init(localeNames));
23
-
24
- useEffect(() => {
25
- // Set user language in local storage.
26
- window.localStorage.setItem(localStorageKey, locale);
27
- document.documentElement.setAttribute('lang', locale);
28
- }, [locale]);
29
-
30
- const changeLocale = (locale) => {
31
- dispatch({
32
- type: 'CHANGE_LOCALE',
33
- locale,
34
- });
35
- };
36
-
37
- const appMessages = defaultsDeep(messages[locale], messages.en);
38
-
39
- return (
40
- <IntlProvider locale={locale} defaultLocale="en" messages={appMessages} textComponent="span">
41
- <LocalesProvider changeLocale={changeLocale} localeNames={localeNames}>
42
- {children}
43
- </LocalesProvider>
44
- </IntlProvider>
45
- );
46
- };
47
-
48
- LanguageProvider.propTypes = {
49
- children: PropTypes.element.isRequired,
50
- localeNames: PropTypes.objectOf(PropTypes.string).isRequired,
51
- messages: PropTypes.object.isRequired,
52
- };
53
-
54
- export default LanguageProvider;
@@ -1,13 +0,0 @@
1
- import localStorageKey from './utils/localStorageKey';
2
-
3
- const init = (localeNames) => {
4
- const languageFromLocaleStorage = window.localStorage.getItem(localStorageKey);
5
- const appLanguage = localeNames[languageFromLocaleStorage] ? languageFromLocaleStorage : 'en';
6
-
7
- return {
8
- locale: appLanguage,
9
- localeNames,
10
- };
11
- };
12
-
13
- export default init;
@@ -1,30 +0,0 @@
1
- /*
2
- *
3
- * LanguageProvider reducer
4
- *
5
- */
6
-
7
- const initialState = {
8
- localeNames: { en: 'English' },
9
- locale: 'en',
10
- };
11
-
12
- const languageProviderReducer = (state = initialState, action) => {
13
- switch (action.type) {
14
- case 'CHANGE_LOCALE': {
15
- const { locale } = action;
16
-
17
- if (!state.localeNames[locale]) {
18
- return state;
19
- }
20
-
21
- return { ...state, locale };
22
- }
23
- default: {
24
- return state;
25
- }
26
- }
27
- };
28
-
29
- export default languageProviderReducer;
30
- export { initialState };
@@ -1,3 +0,0 @@
1
- const localStorageKey = 'strapi-admin-language';
2
-
3
- export default localStorageKey;
@@ -1,5 +0,0 @@
1
- import { createContext } from 'react';
2
-
3
- const LocalesProviderContext = createContext();
4
-
5
- export default LocalesProviderContext;
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
-
3
- import PropTypes from 'prop-types';
4
-
5
- import LocalesProviderContext from './context';
6
-
7
- const LocalesProvider = ({ changeLocale, children, localeNames }) => {
8
- return (
9
- <LocalesProviderContext.Provider value={{ changeLocale, localeNames }}>
10
- {children}
11
- </LocalesProviderContext.Provider>
12
- );
13
- };
14
-
15
- LocalesProvider.propTypes = {
16
- changeLocale: PropTypes.func.isRequired,
17
- children: PropTypes.element.isRequired,
18
- localeNames: PropTypes.object.isRequired,
19
- };
20
-
21
- export default LocalesProvider;
@@ -1,11 +0,0 @@
1
- import { useContext } from 'react';
2
-
3
- import LocalesProviderContext from './context';
4
-
5
- const useLocalesProvider = () => {
6
- const { changeLocale, localeNames, messages } = useContext(LocalesProviderContext);
7
-
8
- return { changeLocale, localeNames, messages };
9
- };
10
-
11
- export default useLocalesProvider;
@@ -1,17 +0,0 @@
1
- import { usePersistentState } from '@strapi/helper-plugin';
2
-
3
- // Exported to make it available during admin user registration.
4
- // Because we only enable the NPS for users who subscribe to the newsletter when signing up
5
- export function useNpsSurveySettings() {
6
- const [npsSurveySettings, setNpsSurveySettings] = usePersistentState(
7
- 'STRAPI_NPS_SURVEY_SETTINGS',
8
- {
9
- enabled: true,
10
- lastResponseDate: null,
11
- firstDismissalDate: null,
12
- lastDismissalDate: null,
13
- }
14
- );
15
-
16
- return { npsSurveySettings, setNpsSurveySettings };
17
- }
@@ -1,68 +0,0 @@
1
- import React, { useReducer, useRef } from 'react';
2
-
3
- import { LoadingIndicatorPage, useStrapiApp } from '@strapi/helper-plugin';
4
-
5
- import Admin from '../../pages/Admin';
6
-
7
- import init from './init';
8
- import reducer, { initialState } from './reducer';
9
-
10
- const PluginsInitializer = () => {
11
- const { plugins: appPlugins } = useStrapiApp();
12
- const [{ plugins }, dispatch] = useReducer(reducer, initialState, () => init(appPlugins));
13
- const setPlugin = useRef((pluginId) => {
14
- dispatch({ type: 'SET_PLUGIN_READY', pluginId });
15
- });
16
-
17
- const hasApluginNotReady = Object.keys(plugins).some(
18
- (plugin) => plugins[plugin].isReady === false
19
- );
20
-
21
- /**
22
- *
23
- * I have spent some time trying to understand what is happening here, and wanted to
24
- * leave that knowledge for my future me:
25
- *
26
- * `initializer` is an undocumented property of the `registerPlugin` API. At the time
27
- * of writing it seems only to be used by the i18n plugin.
28
- *
29
- * How does it work?
30
- *
31
- * Every plugin that has an `initializer` component defined, receives the
32
- * `setPlugin` function as a component prop. In the case of i18n the plugin fetches locales
33
- * first and calls `setPlugin` with `pluginId` once they are loaded, which then triggers the
34
- * reducer of the admin app defined above.
35
- *
36
- * Once all plugins are set to `isReady: true` the app renders.
37
- *
38
- * This API is used to block rendering of the admin app. We should remove that in v5 completely
39
- * and make sure plugins can inject data into the global store before they are initialized, to avoid
40
- * having a new prop-callback based communication channel between plugins and the core admin app.
41
- *
42
- */
43
-
44
- if (hasApluginNotReady) {
45
- const initializers = Object.keys(plugins).reduce((acc, current) => {
46
- const InitializerComponent = plugins[current].initializer;
47
-
48
- if (InitializerComponent) {
49
- const key = plugins[current].pluginId;
50
-
51
- acc.push(<InitializerComponent key={key} setPlugin={setPlugin.current} />);
52
- }
53
-
54
- return acc;
55
- }, []);
56
-
57
- return (
58
- <>
59
- {initializers}
60
- <LoadingIndicatorPage />
61
- </>
62
- );
63
- }
64
-
65
- return <Admin />;
66
- };
67
-
68
- export default PluginsInitializer;
@@ -1,11 +0,0 @@
1
- const init = (plugins) => {
2
- return {
3
- plugins: Object.keys(plugins).reduce((acc, current) => {
4
- acc[current] = { ...plugins[current] };
5
-
6
- return acc;
7
- }, {}),
8
- };
9
- };
10
-
11
- export default init;
@@ -1,22 +0,0 @@
1
- import produce from 'immer';
2
- import set from 'lodash/set';
3
-
4
- const initialState = {
5
- plugins: null,
6
- };
7
-
8
- const reducer = (state = initialState, action) =>
9
- /* eslint-disable-next-line consistent-return */
10
- produce(state, (draftState) => {
11
- switch (action.type) {
12
- case 'SET_PLUGIN_READY': {
13
- set(draftState, ['plugins', action.pluginId, 'isReady'], true);
14
- break;
15
- }
16
- default:
17
- return draftState;
18
- }
19
- });
20
-
21
- export { initialState };
22
- export default reducer;
@@ -1,46 +0,0 @@
1
- /**
2
- *
3
- * PrivateRoute
4
- * Higher Order Component that blocks navigation when the user is not logged in
5
- * and redirect the user to login page
6
- *
7
- * Wrap your protected routes to secure your container
8
- */
9
-
10
- import React, { memo } from 'react';
11
-
12
- import { auth } from '@strapi/helper-plugin';
13
- import PropTypes from 'prop-types';
14
- import { Redirect, Route, useLocation } from 'react-router-dom';
15
-
16
- /* eslint-disable react/jsx-curly-newline */
17
-
18
- const PrivateRoute = ({ component: Component, path, ...rest }) => {
19
- const { pathname, search } = useLocation();
20
-
21
- return (
22
- <Route
23
- path={path}
24
- render={(props) =>
25
- auth.getToken() !== null ? (
26
- <Component {...rest} {...props} />
27
- ) : (
28
- <Redirect
29
- to={{
30
- pathname: '/auth/login',
31
- search:
32
- pathname !== '/' && `?redirectTo=${encodeURIComponent(`${pathname}${search}`)}`,
33
- }}
34
- />
35
- )
36
- }
37
- />
38
- );
39
- };
40
-
41
- PrivateRoute.propTypes = {
42
- component: PropTypes.any.isRequired,
43
- path: PropTypes.string.isRequired,
44
- };
45
-
46
- export default memo(PrivateRoute);