@strato-admin/faker-ecommerce 0.1.0 → 0.3.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 (519) hide show
  1. package/dist/dataProvider.js +1 -2
  2. package/dist/generate.d.ts +2 -1
  3. package/dist/generate.js +15 -8
  4. package/dist/ra-core/src/auth/LogoutOnMount.d.ts +8 -0
  5. package/dist/ra-core/src/auth/LogoutOnMount.js +16 -0
  6. package/dist/ra-core/src/auth/addRefreshAuthToAuthProvider.d.ts +22 -0
  7. package/dist/ra-core/src/auth/addRefreshAuthToAuthProvider.js +41 -0
  8. package/dist/ra-core/src/auth/addRefreshAuthToDataProvider.d.ts +21 -0
  9. package/dist/ra-core/src/auth/addRefreshAuthToDataProvider.js +30 -0
  10. package/dist/ra-core/src/auth/convertLegacyAuthProvider.d.ts +12 -0
  11. package/dist/ra-core/src/auth/convertLegacyAuthProvider.js +19 -0
  12. package/dist/ra-core/src/auth/index.d.ts +27 -0
  13. package/dist/ra-core/src/auth/index.js +34 -0
  14. package/dist/ra-core/src/auth/types.d.ts +7 -0
  15. package/dist/ra-core/src/auth/types.js +5 -0
  16. package/dist/ra-core/src/auth/useAuthProvider.d.ts +10 -0
  17. package/dist/ra-core/src/auth/useAuthProvider.js +11 -0
  18. package/dist/ra-core/src/auth/useAuthState.d.ts +48 -0
  19. package/dist/ra-core/src/auth/useAuthState.js +171 -0
  20. package/dist/ra-core/src/auth/useAuthenticated.d.ts +36 -0
  21. package/dist/ra-core/src/auth/useAuthenticated.js +34 -0
  22. package/dist/ra-core/src/auth/useCanAccess.d.ts +56 -0
  23. package/dist/ra-core/src/auth/useCanAccess.js +108 -0
  24. package/dist/ra-core/src/auth/useCanAccessCallback.d.ts +39 -0
  25. package/dist/ra-core/src/auth/useCanAccessCallback.js +45 -0
  26. package/dist/ra-core/src/auth/useCanAccessResources.d.ts +67 -0
  27. package/dist/ra-core/src/auth/useCanAccessResources.js +92 -0
  28. package/dist/ra-core/src/auth/useCheckAuth.d.ts +48 -0
  29. package/dist/ra-core/src/auth/useCheckAuth.js +76 -0
  30. package/dist/ra-core/src/auth/useGetIdentity.d.ts +41 -0
  31. package/dist/ra-core/src/auth/useGetIdentity.js +86 -0
  32. package/dist/ra-core/src/auth/useGetPermissions.d.ts +41 -0
  33. package/dist/ra-core/src/auth/useGetPermissions.js +47 -0
  34. package/dist/ra-core/src/auth/useHandleAuthCallback.d.ts +20 -0
  35. package/dist/ra-core/src/auth/useHandleAuthCallback.js +83 -0
  36. package/dist/ra-core/src/auth/useIsAuthPending.d.ts +13 -0
  37. package/dist/ra-core/src/auth/useIsAuthPending.js +30 -0
  38. package/dist/ra-core/src/auth/useLogin.d.ts +34 -0
  39. package/dist/ra-core/src/auth/useLogin.js +78 -0
  40. package/dist/ra-core/src/auth/useLogout.d.ts +31 -0
  41. package/dist/ra-core/src/auth/useLogout.js +117 -0
  42. package/dist/ra-core/src/auth/useLogoutIfAccessDenied.d.ts +42 -0
  43. package/dist/ra-core/src/auth/useLogoutIfAccessDenied.js +111 -0
  44. package/dist/ra-core/src/auth/usePermissions.d.ts +41 -0
  45. package/dist/ra-core/src/auth/usePermissions.js +123 -0
  46. package/dist/ra-core/src/controller/button/index.d.ts +7 -0
  47. package/dist/ra-core/src/controller/button/index.js +7 -0
  48. package/dist/ra-core/src/controller/button/useBulkDeleteController.d.ts +14 -0
  49. package/dist/ra-core/src/controller/button/useBulkDeleteController.js +66 -0
  50. package/dist/ra-core/src/controller/create/index.d.ts +6 -0
  51. package/dist/ra-core/src/controller/create/index.js +6 -0
  52. package/dist/ra-core/src/controller/create/useCreateController.d.ts +50 -0
  53. package/dist/ra-core/src/controller/create/useCreateController.js +149 -0
  54. package/dist/ra-core/src/controller/edit/index.d.ts +6 -0
  55. package/dist/ra-core/src/controller/edit/index.js +6 -0
  56. package/dist/ra-core/src/controller/edit/useEditController.d.ts +72 -0
  57. package/dist/ra-core/src/controller/edit/useEditController.js +206 -0
  58. package/dist/ra-core/src/controller/field/index.d.ts +12 -0
  59. package/dist/ra-core/src/controller/field/index.js +12 -0
  60. package/dist/ra-core/src/controller/field/sanitizeFieldRestProps.d.ts +1 -0
  61. package/dist/ra-core/src/controller/field/sanitizeFieldRestProps.js +1 -0
  62. package/dist/ra-core/src/controller/field/types.d.ts +28 -0
  63. package/dist/ra-core/src/controller/field/types.js +1 -0
  64. package/dist/ra-core/src/controller/field/useReferenceArrayFieldController.d.ts +39 -0
  65. package/dist/ra-core/src/controller/field/useReferenceArrayFieldController.js +82 -0
  66. package/dist/ra-core/src/controller/field/useReferenceFieldController.d.ts +14 -0
  67. package/dist/ra-core/src/controller/field/useReferenceFieldController.js +31 -0
  68. package/dist/ra-core/src/controller/field/useReferenceManyFieldController.d.ts +49 -0
  69. package/dist/ra-core/src/controller/field/useReferenceManyFieldController.js +264 -0
  70. package/dist/ra-core/src/controller/index.d.ts +17 -0
  71. package/dist/ra-core/src/controller/index.js +16 -0
  72. package/dist/ra-core/src/controller/input/ArrayInputContext.d.ts +9 -0
  73. package/dist/ra-core/src/controller/input/ArrayInputContext.js +8 -0
  74. package/dist/ra-core/src/controller/input/SimpleFormIteratorContext.d.ts +15 -0
  75. package/dist/ra-core/src/controller/input/SimpleFormIteratorContext.js +8 -0
  76. package/dist/ra-core/src/controller/input/SimpleFormIteratorItemContext.d.ts +13 -0
  77. package/dist/ra-core/src/controller/input/SimpleFormIteratorItemContext.js +8 -0
  78. package/dist/ra-core/src/controller/input/index.d.ts +17 -0
  79. package/dist/ra-core/src/controller/input/index.js +17 -0
  80. package/dist/ra-core/src/controller/input/referenceDataStatus.d.ts +32 -0
  81. package/dist/ra-core/src/controller/input/referenceDataStatus.js +74 -0
  82. package/dist/ra-core/src/controller/input/sanitizeInputRestProps.d.ts +1 -0
  83. package/dist/ra-core/src/controller/input/sanitizeInputRestProps.js +1 -0
  84. package/dist/ra-core/src/controller/input/types.d.ts +3 -0
  85. package/dist/ra-core/src/controller/input/types.js +1 -0
  86. package/dist/ra-core/src/controller/input/useArrayInput.d.ts +8 -0
  87. package/dist/ra-core/src/controller/input/useArrayInput.js +29 -0
  88. package/dist/ra-core/src/controller/input/useGetArrayInputNewItemDefaults.d.ts +3 -0
  89. package/dist/ra-core/src/controller/input/useGetArrayInputNewItemDefaults.js +37 -0
  90. package/dist/ra-core/src/controller/input/useReferenceArrayInputController.d.ts +48 -0
  91. package/dist/ra-core/src/controller/input/useReferenceArrayInputController.js +137 -0
  92. package/dist/ra-core/src/controller/input/useReferenceInputController.d.ts +54 -0
  93. package/dist/ra-core/src/controller/input/useReferenceInputController.js +208 -0
  94. package/dist/ra-core/src/controller/input/useReferenceParams.d.ts +106 -0
  95. package/dist/ra-core/src/controller/input/useReferenceParams.js +226 -0
  96. package/dist/ra-core/src/controller/input/useSimpleFormIterator.d.ts +7 -0
  97. package/dist/ra-core/src/controller/input/useSimpleFormIterator.js +15 -0
  98. package/dist/ra-core/src/controller/input/useSimpleFormIteratorItem.d.ts +7 -0
  99. package/dist/ra-core/src/controller/input/useSimpleFormIteratorItem.js +15 -0
  100. package/dist/ra-core/src/controller/list/InfinitePaginationContext.d.ts +25 -0
  101. package/dist/ra-core/src/controller/list/InfinitePaginationContext.js +32 -0
  102. package/dist/ra-core/src/controller/list/index.d.ts +30 -0
  103. package/dist/ra-core/src/controller/list/index.js +30 -0
  104. package/dist/ra-core/src/controller/list/queryReducer.d.ts +45 -0
  105. package/dist/ra-core/src/controller/list/queryReducer.js +85 -0
  106. package/dist/ra-core/src/controller/list/useFilterContext.d.ts +2 -0
  107. package/dist/ra-core/src/controller/list/useFilterContext.js +5 -0
  108. package/dist/ra-core/src/controller/list/useInfiniteListController.d.ts +44 -0
  109. package/dist/ra-core/src/controller/list/useInfiniteListController.js +175 -0
  110. package/dist/ra-core/src/controller/list/useInfinitePaginationContext.d.ts +16 -0
  111. package/dist/ra-core/src/controller/list/useInfinitePaginationContext.js +17 -0
  112. package/dist/ra-core/src/controller/list/useList.d.ts +55 -0
  113. package/dist/ra-core/src/controller/list/useList.js +223 -0
  114. package/dist/ra-core/src/controller/list/useListContext.d.ts +59 -0
  115. package/dist/ra-core/src/controller/list/useListContext.js +65 -0
  116. package/dist/ra-core/src/controller/list/useListContextWithProps.d.ts +44 -0
  117. package/dist/ra-core/src/controller/list/useListContextWithProps.js +84 -0
  118. package/dist/ra-core/src/controller/list/useListController.d.ts +296 -0
  119. package/dist/ra-core/src/controller/list/useListController.js +234 -0
  120. package/dist/ra-core/src/controller/list/useListFilterContext.d.ts +11 -0
  121. package/dist/ra-core/src/controller/list/useListFilterContext.js +18 -0
  122. package/dist/ra-core/src/controller/list/useListPaginationContext.d.ts +12 -0
  123. package/dist/ra-core/src/controller/list/useListPaginationContext.js +19 -0
  124. package/dist/ra-core/src/controller/list/useListParams.d.ts +116 -0
  125. package/dist/ra-core/src/controller/list/useListParams.js +281 -0
  126. package/dist/ra-core/src/controller/list/useListSortContext.d.ts +12 -0
  127. package/dist/ra-core/src/controller/list/useListSortContext.js +19 -0
  128. package/dist/ra-core/src/controller/list/useRecordSelection.d.ts +32 -0
  129. package/dist/ra-core/src/controller/list/useRecordSelection.js +93 -0
  130. package/dist/ra-core/src/controller/list/useSavedQueries.d.ts +14 -0
  131. package/dist/ra-core/src/controller/list/useSavedQueries.js +29 -0
  132. package/dist/ra-core/src/controller/list/useUnselect.d.ts +10 -0
  133. package/dist/ra-core/src/controller/list/useUnselect.js +18 -0
  134. package/dist/ra-core/src/controller/list/useUnselectAll.d.ts +9 -0
  135. package/dist/ra-core/src/controller/list/useUnselectAll.js +18 -0
  136. package/dist/ra-core/src/controller/record/index.d.ts +5 -0
  137. package/dist/ra-core/src/controller/record/index.js +5 -0
  138. package/dist/ra-core/src/controller/record/useRecordContext.d.ts +34 -0
  139. package/dist/ra-core/src/controller/record/useRecordContext.js +36 -0
  140. package/dist/ra-core/src/controller/saveContext/SaveContext.d.ts +20 -0
  141. package/dist/ra-core/src/controller/saveContext/SaveContext.js +2 -0
  142. package/dist/ra-core/src/controller/saveContext/index.d.ts +6 -0
  143. package/dist/ra-core/src/controller/saveContext/index.js +6 -0
  144. package/dist/ra-core/src/controller/saveContext/useMutationMiddlewares.d.ts +39 -0
  145. package/dist/ra-core/src/controller/saveContext/useMutationMiddlewares.js +79 -0
  146. package/dist/ra-core/src/controller/saveContext/usePickSaveContext.d.ts +5 -0
  147. package/dist/ra-core/src/controller/saveContext/usePickSaveContext.js +25 -0
  148. package/dist/ra-core/src/controller/saveContext/useRegisterMutationMiddleware.d.ts +6 -0
  149. package/dist/ra-core/src/controller/saveContext/useRegisterMutationMiddleware.js +18 -0
  150. package/dist/ra-core/src/controller/saveContext/useSaveContext.d.ts +14 -0
  151. package/dist/ra-core/src/controller/saveContext/useSaveContext.js +17 -0
  152. package/dist/ra-core/src/controller/show/index.d.ts +6 -0
  153. package/dist/ra-core/src/controller/show/index.js +6 -0
  154. package/dist/ra-core/src/controller/show/useShowController.d.ts +75 -0
  155. package/dist/ra-core/src/controller/show/useShowController.js +110 -0
  156. package/dist/ra-core/src/controller/useFilterState.d.ts +46 -0
  157. package/dist/ra-core/src/controller/useFilterState.js +70 -0
  158. package/dist/ra-core/src/controller/usePaginationState.d.ts +33 -0
  159. package/dist/ra-core/src/controller/usePaginationState.js +45 -0
  160. package/dist/ra-core/src/controller/usePrevNextController.d.ts +127 -0
  161. package/dist/ra-core/src/controller/usePrevNextController.js +215 -0
  162. package/dist/ra-core/src/controller/useReference.d.ts +49 -0
  163. package/dist/ra-core/src/controller/useReference.js +42 -0
  164. package/dist/ra-core/src/controller/useSortState.d.ts +61 -0
  165. package/dist/ra-core/src/controller/useSortState.js +96 -0
  166. package/dist/ra-core/src/core/DefaultTitleContext.d.ts +15 -0
  167. package/dist/ra-core/src/core/DefaultTitleContext.js +15 -0
  168. package/dist/ra-core/src/core/HasDashboardContext.d.ts +21 -0
  169. package/dist/ra-core/src/core/HasDashboardContext.js +22 -0
  170. package/dist/ra-core/src/core/ResourceContext.d.ts +19 -0
  171. package/dist/ra-core/src/core/ResourceContext.js +19 -0
  172. package/dist/ra-core/src/core/UserMenuContext.d.ts +34 -0
  173. package/dist/ra-core/src/core/UserMenuContext.js +28 -0
  174. package/dist/ra-core/src/core/index.d.ts +27 -0
  175. package/dist/ra-core/src/core/index.js +27 -0
  176. package/dist/ra-core/src/core/useGetRecordRepresentation.d.ts +13 -0
  177. package/dist/ra-core/src/core/useGetRecordRepresentation.js +44 -0
  178. package/dist/ra-core/src/core/useGetResourceLabel.d.ts +22 -0
  179. package/dist/ra-core/src/core/useGetResourceLabel.js +42 -0
  180. package/dist/ra-core/src/core/useIsOffline.d.ts +7 -0
  181. package/dist/ra-core/src/core/useIsOffline.js +18 -0
  182. package/dist/ra-core/src/core/useResourceContext.d.ts +36 -0
  183. package/dist/ra-core/src/core/useResourceContext.js +38 -0
  184. package/dist/ra-core/src/core/useResourceDefinition.d.ts +31 -0
  185. package/dist/ra-core/src/core/useResourceDefinition.js +48 -0
  186. package/dist/ra-core/src/core/useResourceDefinitionContext.d.ts +1 -0
  187. package/dist/ra-core/src/core/useResourceDefinitionContext.js +3 -0
  188. package/dist/ra-core/src/core/useResourceDefinitions.d.ts +21 -0
  189. package/dist/ra-core/src/core/useResourceDefinitions.js +20 -0
  190. package/dist/ra-core/src/core/useUserMenu.d.ts +28 -0
  191. package/dist/ra-core/src/core/useUserMenu.js +30 -0
  192. package/dist/ra-core/src/core/useWrappedSource.d.ts +11 -0
  193. package/dist/ra-core/src/core/useWrappedSource.js +15 -0
  194. package/dist/ra-core/src/dataProvider/DataProviderContext.d.ts +3 -0
  195. package/dist/ra-core/src/dataProvider/DataProviderContext.js +4 -0
  196. package/dist/ra-core/src/dataProvider/HttpError.d.ts +6 -0
  197. package/dist/ra-core/src/dataProvider/HttpError.js +19 -0
  198. package/dist/ra-core/src/dataProvider/combineDataProviders.d.ts +21 -0
  199. package/dist/ra-core/src/dataProvider/combineDataProviders.js +32 -0
  200. package/dist/ra-core/src/dataProvider/convertLegacyDataProvider.d.ts +12 -0
  201. package/dist/ra-core/src/dataProvider/convertLegacyDataProvider.js +40 -0
  202. package/dist/ra-core/src/dataProvider/dataFetchActions.d.ts +15 -0
  203. package/dist/ra-core/src/dataProvider/dataFetchActions.js +49 -0
  204. package/dist/ra-core/src/dataProvider/defaultDataProvider.d.ts +2 -0
  205. package/dist/ra-core/src/dataProvider/defaultDataProvider.js +12 -0
  206. package/dist/ra-core/src/dataProvider/fetch.d.ts +32 -0
  207. package/dist/ra-core/src/dataProvider/fetch.js +78 -0
  208. package/dist/ra-core/src/dataProvider/index.d.ts +34 -0
  209. package/dist/ra-core/src/dataProvider/index.js +33 -0
  210. package/dist/ra-core/src/dataProvider/populateQueryCache.d.ts +22 -0
  211. package/dist/ra-core/src/dataProvider/populateQueryCache.js +30 -0
  212. package/dist/ra-core/src/dataProvider/testDataProvider.d.ts +2 -0
  213. package/dist/ra-core/src/dataProvider/testDataProvider.js +41 -0
  214. package/dist/ra-core/src/dataProvider/undo/index.d.ts +6 -0
  215. package/dist/ra-core/src/dataProvider/undo/index.js +6 -0
  216. package/dist/ra-core/src/dataProvider/undo/types.d.ts +3 -0
  217. package/dist/ra-core/src/dataProvider/undo/types.js +1 -0
  218. package/dist/ra-core/src/dataProvider/undoableEventEmitter.d.ts +3 -0
  219. package/dist/ra-core/src/dataProvider/undoableEventEmitter.js +2 -0
  220. package/dist/ra-core/src/dataProvider/useCreate.d.ts +89 -0
  221. package/dist/ra-core/src/dataProvider/useCreate.js +155 -0
  222. package/dist/ra-core/src/dataProvider/useDataProvider.d.ts +2 -0
  223. package/dist/ra-core/src/dataProvider/useDataProvider.js +140 -0
  224. package/dist/ra-core/src/dataProvider/useDelete.d.ts +83 -0
  225. package/dist/ra-core/src/dataProvider/useDelete.js +171 -0
  226. package/dist/ra-core/src/dataProvider/useDeleteMany.d.ts +81 -0
  227. package/dist/ra-core/src/dataProvider/useDeleteMany.js +193 -0
  228. package/dist/ra-core/src/dataProvider/useGetList.d.ts +58 -0
  229. package/dist/ra-core/src/dataProvider/useGetList.js +131 -0
  230. package/dist/ra-core/src/dataProvider/useGetMany.d.ts +49 -0
  231. package/dist/ra-core/src/dataProvider/useGetMany.js +143 -0
  232. package/dist/ra-core/src/dataProvider/useGetManyAggregate.d.ts +62 -0
  233. package/dist/ra-core/src/dataProvider/useGetManyAggregate.js +295 -0
  234. package/dist/ra-core/src/dataProvider/useGetManyReference.d.ts +62 -0
  235. package/dist/ra-core/src/dataProvider/useGetManyReference.js +117 -0
  236. package/dist/ra-core/src/dataProvider/useGetOne.d.ts +48 -0
  237. package/dist/ra-core/src/dataProvider/useGetOne.js +94 -0
  238. package/dist/ra-core/src/dataProvider/useGetRecordId.d.ts +14 -0
  239. package/dist/ra-core/src/dataProvider/useGetRecordId.js +22 -0
  240. package/dist/ra-core/src/dataProvider/useInfiniteGetList.d.ts +64 -0
  241. package/dist/ra-core/src/dataProvider/useInfiniteGetList.js +177 -0
  242. package/dist/ra-core/src/dataProvider/useIsDataLoaded.d.ts +13 -0
  243. package/dist/ra-core/src/dataProvider/useIsDataLoaded.js +35 -0
  244. package/dist/ra-core/src/dataProvider/useLoading.d.ts +12 -0
  245. package/dist/ra-core/src/dataProvider/useLoading.js +41 -0
  246. package/dist/ra-core/src/dataProvider/useMutationWithMutationMode.d.ts +51 -0
  247. package/dist/ra-core/src/dataProvider/useMutationWithMutationMode.js +238 -0
  248. package/dist/ra-core/src/dataProvider/useRefresh.d.ts +14 -0
  249. package/dist/ra-core/src/dataProvider/useRefresh.js +21 -0
  250. package/dist/ra-core/src/dataProvider/useUpdate.d.ts +89 -0
  251. package/dist/ra-core/src/dataProvider/useUpdate.js +183 -0
  252. package/dist/ra-core/src/dataProvider/useUpdateMany.d.ts +81 -0
  253. package/dist/ra-core/src/dataProvider/useUpdateMany.js +171 -0
  254. package/dist/ra-core/src/dataProvider/validateResponseFormat.d.ts +5 -0
  255. package/dist/ra-core/src/dataProvider/validateResponseFormat.js +35 -0
  256. package/dist/ra-core/src/dataProvider/withLifecycleCallbacks.d.ts +162 -0
  257. package/dist/ra-core/src/dataProvider/withLifecycleCallbacks.js +377 -0
  258. package/dist/ra-core/src/dataTable/DataTableCallbacksContext.d.ts +18 -0
  259. package/dist/ra-core/src/dataTable/DataTableCallbacksContext.js +3 -0
  260. package/dist/ra-core/src/dataTable/DataTableColumnFilterContext.d.ts +2 -0
  261. package/dist/ra-core/src/dataTable/DataTableColumnFilterContext.js +3 -0
  262. package/dist/ra-core/src/dataTable/DataTableColumnRankContext.d.ts +2 -0
  263. package/dist/ra-core/src/dataTable/DataTableColumnRankContext.js +3 -0
  264. package/dist/ra-core/src/dataTable/DataTableConfigContext.d.ts +22 -0
  265. package/dist/ra-core/src/dataTable/DataTableConfigContext.js +7 -0
  266. package/dist/ra-core/src/dataTable/DataTableDataContext.d.ts +4 -0
  267. package/dist/ra-core/src/dataTable/DataTableDataContext.js +3 -0
  268. package/dist/ra-core/src/dataTable/DataTableRenderContext.d.ts +3 -0
  269. package/dist/ra-core/src/dataTable/DataTableRenderContext.js +3 -0
  270. package/dist/ra-core/src/dataTable/DataTableSelectedIdsContext.d.ts +3 -0
  271. package/dist/ra-core/src/dataTable/DataTableSelectedIdsContext.js +3 -0
  272. package/dist/ra-core/src/dataTable/DataTableSortContext.d.ts +3 -0
  273. package/dist/ra-core/src/dataTable/DataTableSortContext.js +3 -0
  274. package/dist/ra-core/src/dataTable/DataTableStoreContext.d.ts +8 -0
  275. package/dist/ra-core/src/dataTable/DataTableStoreContext.js +6 -0
  276. package/dist/ra-core/src/dataTable/index.d.ts +11 -0
  277. package/dist/ra-core/src/dataTable/index.js +11 -0
  278. package/dist/ra-core/src/dataTable/types.d.ts +2 -0
  279. package/dist/ra-core/src/dataTable/types.js +1 -0
  280. package/dist/ra-core/src/export/ExporterContext.d.ts +2 -0
  281. package/dist/ra-core/src/export/ExporterContext.js +4 -0
  282. package/dist/ra-core/src/export/defaultExporter.d.ts +2 -0
  283. package/dist/ra-core/src/export/defaultExporter.js +3 -0
  284. package/dist/ra-core/src/export/downloadCSV.d.ts +1 -0
  285. package/dist/ra-core/src/export/downloadCSV.js +17 -0
  286. package/dist/ra-core/src/export/fetchRelatedRecords.d.ts +14 -0
  287. package/dist/ra-core/src/export/fetchRelatedRecords.js +19 -0
  288. package/dist/ra-core/src/export/getRelatedIds.d.ts +24 -0
  289. package/dist/ra-core/src/export/getRelatedIds.js +26 -0
  290. package/dist/ra-core/src/export/index.d.ts +5 -0
  291. package/dist/ra-core/src/export/index.js +5 -0
  292. package/dist/ra-core/src/export/useBulkExport.d.ts +11 -0
  293. package/dist/ra-core/src/export/useBulkExport.js +30 -0
  294. package/dist/ra-core/src/form/WarnWhenUnsavedChanges.d.ts +5 -0
  295. package/dist/ra-core/src/form/WarnWhenUnsavedChanges.js +5 -0
  296. package/dist/ra-core/src/form/choices/ChoicesContext.d.ts +65 -0
  297. package/dist/ra-core/src/form/choices/ChoicesContext.js +7 -0
  298. package/dist/ra-core/src/form/choices/index.d.ts +4 -0
  299. package/dist/ra-core/src/form/choices/index.js +4 -0
  300. package/dist/ra-core/src/form/choices/useChoicesContext.d.ts +5 -0
  301. package/dist/ra-core/src/form/choices/useChoicesContext.js +62 -0
  302. package/dist/ra-core/src/form/getFormInitialValues.d.ts +8 -0
  303. package/dist/ra-core/src/form/getFormInitialValues.js +14 -0
  304. package/dist/ra-core/src/form/groups/FormGroupContext.d.ts +9 -0
  305. package/dist/ra-core/src/form/groups/FormGroupContext.js +9 -0
  306. package/dist/ra-core/src/form/groups/index.d.ts +6 -0
  307. package/dist/ra-core/src/form/groups/index.js +6 -0
  308. package/dist/ra-core/src/form/groups/useFormGroup.d.ts +67 -0
  309. package/dist/ra-core/src/form/groups/useFormGroup.js +146 -0
  310. package/dist/ra-core/src/form/groups/useFormGroupContext.d.ts +4 -0
  311. package/dist/ra-core/src/form/groups/useFormGroupContext.js +9 -0
  312. package/dist/ra-core/src/form/groups/useFormGroups.d.ts +4 -0
  313. package/dist/ra-core/src/form/groups/useFormGroups.js +9 -0
  314. package/dist/ra-core/src/form/index.d.ts +14 -0
  315. package/dist/ra-core/src/form/index.js +14 -0
  316. package/dist/ra-core/src/form/sanitizeEmptyValues.d.ts +7 -0
  317. package/dist/ra-core/src/form/sanitizeEmptyValues.js +26 -0
  318. package/dist/ra-core/src/form/useApplyInputDefaultValues.d.ts +19 -0
  319. package/dist/ra-core/src/form/useApplyInputDefaultValues.js +71 -0
  320. package/dist/ra-core/src/form/useAugmentedForm.d.ts +32 -0
  321. package/dist/ra-core/src/form/useAugmentedForm.js +101 -0
  322. package/dist/ra-core/src/form/useFormIsDirty.d.ts +4 -0
  323. package/dist/ra-core/src/form/useFormIsDirty.js +39 -0
  324. package/dist/ra-core/src/form/useInput.d.ts +33 -0
  325. package/dist/ra-core/src/form/useInput.js +100 -0
  326. package/dist/ra-core/src/form/useRecordFromLocation.d.ts +22 -0
  327. package/dist/ra-core/src/form/useRecordFromLocation.js +59 -0
  328. package/dist/ra-core/src/form/useSuggestions.d.ts +43 -0
  329. package/dist/ra-core/src/form/useSuggestions.js +186 -0
  330. package/dist/ra-core/src/form/validation/getSimpleValidationResolver.d.ts +31 -0
  331. package/dist/ra-core/src/form/validation/getSimpleValidationResolver.js +87 -0
  332. package/dist/ra-core/src/form/validation/index.d.ts +7 -0
  333. package/dist/ra-core/src/form/validation/index.js +7 -0
  334. package/dist/ra-core/src/form/validation/setSubmissionErrors.d.ts +21 -0
  335. package/dist/ra-core/src/form/validation/setSubmissionErrors.js +34 -0
  336. package/dist/ra-core/src/form/validation/useGetValidationErrorMessage.d.ts +26 -0
  337. package/dist/ra-core/src/form/validation/useGetValidationErrorMessage.js +35 -0
  338. package/dist/ra-core/src/form/validation/useNotifyIsFormInvalid.d.ts +9 -0
  339. package/dist/ra-core/src/form/validation/useNotifyIsFormInvalid.js +30 -0
  340. package/dist/ra-core/src/form/validation/useUnique.d.ts +57 -0
  341. package/dist/ra-core/src/form/validation/useUnique.js +107 -0
  342. package/dist/ra-core/src/form/validation/validate.d.ts +168 -0
  343. package/dist/ra-core/src/form/validation/validate.js +218 -0
  344. package/dist/ra-core/src/i18n/I18nContext.d.ts +3 -0
  345. package/dist/ra-core/src/i18n/I18nContext.js +11 -0
  346. package/dist/ra-core/src/i18n/TranslatableContext.d.ts +16 -0
  347. package/dist/ra-core/src/i18n/TranslatableContext.js +2 -0
  348. package/dist/ra-core/src/i18n/TranslationMessages.d.ts +221 -0
  349. package/dist/ra-core/src/i18n/TranslationMessages.js +1 -0
  350. package/dist/ra-core/src/i18n/TranslationUtils.d.ts +60 -0
  351. package/dist/ra-core/src/i18n/TranslationUtils.js +70 -0
  352. package/dist/ra-core/src/i18n/index.d.ts +20 -0
  353. package/dist/ra-core/src/i18n/index.js +20 -0
  354. package/dist/ra-core/src/i18n/substituteTokens.d.ts +8 -0
  355. package/dist/ra-core/src/i18n/substituteTokens.js +18 -0
  356. package/dist/ra-core/src/i18n/useI18nProvider.d.ts +12 -0
  357. package/dist/ra-core/src/i18n/useI18nProvider.js +14 -0
  358. package/dist/ra-core/src/i18n/useLocales.d.ts +31 -0
  359. package/dist/ra-core/src/i18n/useLocales.js +28 -0
  360. package/dist/ra-core/src/i18n/useResourceTranslation.d.ts +8 -0
  361. package/dist/ra-core/src/i18n/useResourceTranslation.js +18 -0
  362. package/dist/ra-core/src/i18n/useTranslatable.d.ts +29 -0
  363. package/dist/ra-core/src/i18n/useTranslatable.js +98 -0
  364. package/dist/ra-core/src/i18n/useTranslatableContext.d.ts +31 -0
  365. package/dist/ra-core/src/i18n/useTranslatableContext.js +38 -0
  366. package/dist/ra-core/src/i18n/useTranslate.d.ts +21 -0
  367. package/dist/ra-core/src/i18n/useTranslate.js +29 -0
  368. package/dist/ra-core/src/i18n/useTranslateLabel.d.ts +6 -0
  369. package/dist/ra-core/src/i18n/useTranslateLabel.js +26 -0
  370. package/dist/ra-core/src/index.d.ts +16 -0
  371. package/dist/ra-core/src/index.js +16 -0
  372. package/dist/ra-core/src/inference/InferredElement.d.ts +12 -0
  373. package/dist/ra-core/src/inference/InferredElement.js +40 -0
  374. package/dist/ra-core/src/inference/assertions.d.ts +26 -0
  375. package/dist/ra-core/src/inference/assertions.js +38 -0
  376. package/dist/ra-core/src/inference/getElementsFromRecords.d.ts +35 -0
  377. package/dist/ra-core/src/inference/getElementsFromRecords.js +39 -0
  378. package/dist/ra-core/src/inference/getValuesFromRecords.d.ts +28 -0
  379. package/dist/ra-core/src/inference/getValuesFromRecords.js +40 -0
  380. package/dist/ra-core/src/inference/index.d.ts +6 -0
  381. package/dist/ra-core/src/inference/index.js +6 -0
  382. package/dist/ra-core/src/inference/inferTypeFromValues.d.ts +21 -0
  383. package/dist/ra-core/src/inference/inferTypeFromValues.js +141 -0
  384. package/dist/ra-core/src/inference/types.d.ts +9 -0
  385. package/dist/ra-core/src/inference/types.js +1 -0
  386. package/dist/ra-core/src/notification/CloseNotificationContext.d.ts +2 -0
  387. package/dist/ra-core/src/notification/CloseNotificationContext.js +2 -0
  388. package/dist/ra-core/src/notification/NotificationContext.d.ts +37 -0
  389. package/dist/ra-core/src/notification/NotificationContext.js +35 -0
  390. package/dist/ra-core/src/notification/index.d.ts +9 -0
  391. package/dist/ra-core/src/notification/index.js +9 -0
  392. package/dist/ra-core/src/notification/types.d.ts +14 -0
  393. package/dist/ra-core/src/notification/types.js +1 -0
  394. package/dist/ra-core/src/notification/useCloseNotification.d.ts +1 -0
  395. package/dist/ra-core/src/notification/useCloseNotification.js +9 -0
  396. package/dist/ra-core/src/notification/useNotificationContext.d.ts +1 -0
  397. package/dist/ra-core/src/notification/useNotificationContext.js +3 -0
  398. package/dist/ra-core/src/notification/useNotify.d.ts +20 -0
  399. package/dist/ra-core/src/notification/useNotify.js +28 -0
  400. package/dist/ra-core/src/preferences/index.d.ts +7 -0
  401. package/dist/ra-core/src/preferences/index.js +7 -0
  402. package/dist/ra-core/src/preferences/usePreference.d.ts +18 -0
  403. package/dist/ra-core/src/preferences/usePreference.js +10 -0
  404. package/dist/ra-core/src/preferences/usePreferenceInput.d.ts +22 -0
  405. package/dist/ra-core/src/preferences/usePreferenceInput.js +43 -0
  406. package/dist/ra-core/src/preferences/usePreferencesEditor.d.ts +2 -0
  407. package/dist/ra-core/src/preferences/usePreferencesEditor.js +9 -0
  408. package/dist/ra-core/src/preferences/useSetInspectorTitle.d.ts +7 -0
  409. package/dist/ra-core/src/preferences/useSetInspectorTitle.js +19 -0
  410. package/dist/ra-core/src/routing/BasenameContext.d.ts +1 -0
  411. package/dist/ra-core/src/routing/BasenameContext.js +2 -0
  412. package/dist/ra-core/src/routing/RouterProvider.d.ts +163 -0
  413. package/dist/ra-core/src/routing/RouterProvider.js +1 -0
  414. package/dist/ra-core/src/routing/index.d.ts +28 -0
  415. package/dist/ra-core/src/routing/index.js +28 -0
  416. package/dist/ra-core/src/routing/types.d.ts +3 -0
  417. package/dist/ra-core/src/routing/types.js +1 -0
  418. package/dist/ra-core/src/routing/useBasename.d.ts +21 -0
  419. package/dist/ra-core/src/routing/useBasename.js +23 -0
  420. package/dist/ra-core/src/routing/useBlocker.d.ts +14 -0
  421. package/dist/ra-core/src/routing/useBlocker.js +17 -0
  422. package/dist/ra-core/src/routing/useCanBlock.d.ts +7 -0
  423. package/dist/ra-core/src/routing/useCanBlock.js +11 -0
  424. package/dist/ra-core/src/routing/useCreatePath.d.ts +42 -0
  425. package/dist/ra-core/src/routing/useCreatePath.js +69 -0
  426. package/dist/ra-core/src/routing/useGetPathForRecord.d.ts +42 -0
  427. package/dist/ra-core/src/routing/useGetPathForRecord.js +135 -0
  428. package/dist/ra-core/src/routing/useGetPathForRecordCallback.d.ts +6 -0
  429. package/dist/ra-core/src/routing/useGetPathForRecordCallback.js +82 -0
  430. package/dist/ra-core/src/routing/useInRouterContext.d.ts +11 -0
  431. package/dist/ra-core/src/routing/useInRouterContext.js +15 -0
  432. package/dist/ra-core/src/routing/useLocation.d.ts +10 -0
  433. package/dist/ra-core/src/routing/useLocation.js +13 -0
  434. package/dist/ra-core/src/routing/useMatch.d.ts +15 -0
  435. package/dist/ra-core/src/routing/useMatch.js +15 -0
  436. package/dist/ra-core/src/routing/useMatchPath.d.ts +17 -0
  437. package/dist/ra-core/src/routing/useMatchPath.js +17 -0
  438. package/dist/ra-core/src/routing/useNavigate.d.ts +12 -0
  439. package/dist/ra-core/src/routing/useNavigate.js +15 -0
  440. package/dist/ra-core/src/routing/useParams.d.ts +9 -0
  441. package/dist/ra-core/src/routing/useParams.js +13 -0
  442. package/dist/ra-core/src/routing/useRedirect.d.ts +30 -0
  443. package/dist/ra-core/src/routing/useRedirect.js +66 -0
  444. package/dist/ra-core/src/routing/useResetErrorBoundaryOnLocationChange.d.ts +7 -0
  445. package/dist/ra-core/src/routing/useResetErrorBoundaryOnLocationChange.js +17 -0
  446. package/dist/ra-core/src/routing/useRestoreScrollPosition.d.ts +40 -0
  447. package/dist/ra-core/src/routing/useRestoreScrollPosition.js +70 -0
  448. package/dist/ra-core/src/routing/useSplatPathBase.d.ts +13 -0
  449. package/dist/ra-core/src/routing/useSplatPathBase.js +21 -0
  450. package/dist/ra-core/src/store/index.d.ts +11 -0
  451. package/dist/ra-core/src/store/index.js +11 -0
  452. package/dist/ra-core/src/store/localStorageStore.d.ts +27 -0
  453. package/dist/ra-core/src/store/localStorageStore.js +198 -0
  454. package/dist/ra-core/src/store/types.d.ts +11 -0
  455. package/dist/ra-core/src/store/types.js +1 -0
  456. package/dist/ra-core/src/store/useRemoveFromStore.d.ts +17 -0
  457. package/dist/ra-core/src/store/useRemoveFromStore.js +29 -0
  458. package/dist/ra-core/src/store/useRemoveItemsFromStore.d.ts +17 -0
  459. package/dist/ra-core/src/store/useRemoveItemsFromStore.js +29 -0
  460. package/dist/ra-core/src/store/useResetStore.d.ts +17 -0
  461. package/dist/ra-core/src/store/useResetStore.js +21 -0
  462. package/dist/ra-core/src/store/useStore.d.ts +48 -0
  463. package/dist/ra-core/src/store/useStore.js +32 -0
  464. package/dist/ra-core/src/store/useStoreContext.d.ts +4 -0
  465. package/dist/ra-core/src/store/useStoreContext.js +6 -0
  466. package/dist/ra-core/src/test-ui/defaultI18nProvider.d.ts +2 -0
  467. package/dist/ra-core/src/test-ui/defaultI18nProvider.js +10 -0
  468. package/dist/ra-core/src/test-ui/index.d.ts +21 -0
  469. package/dist/ra-core/src/test-ui/index.js +21 -0
  470. package/dist/ra-core/src/types.d.ts +284 -0
  471. package/dist/ra-core/src/types.js +5 -0
  472. package/dist/ra-core/src/util/asyncDebounce.d.ts +7 -0
  473. package/dist/ra-core/src/util/asyncDebounce.js +29 -0
  474. package/dist/ra-core/src/util/escapePath.d.ts +11 -0
  475. package/dist/ra-core/src/util/escapePath.js +10 -0
  476. package/dist/ra-core/src/util/genericMemo.d.ts +5 -0
  477. package/dist/ra-core/src/util/genericMemo.js +14 -0
  478. package/dist/ra-core/src/util/getFieldLabelTranslationArgs.d.ts +22 -0
  479. package/dist/ra-core/src/util/getFieldLabelTranslationArgs.js +73 -0
  480. package/dist/ra-core/src/util/getMutationMode.d.ts +1 -0
  481. package/dist/ra-core/src/util/getMutationMode.js +13 -0
  482. package/dist/ra-core/src/util/hooks.d.ts +15 -0
  483. package/dist/ra-core/src/util/hooks.js +73 -0
  484. package/dist/ra-core/src/util/index.d.ts +20 -0
  485. package/dist/ra-core/src/util/index.js +19 -0
  486. package/dist/ra-core/src/util/mergeRefs.d.ts +2 -0
  487. package/dist/ra-core/src/util/mergeRefs.js +13 -0
  488. package/dist/ra-core/src/util/removeEmpty.d.ts +2 -0
  489. package/dist/ra-core/src/util/removeEmpty.js +16 -0
  490. package/dist/ra-core/src/util/removeKey.d.ts +2 -0
  491. package/dist/ra-core/src/util/removeKey.js +22 -0
  492. package/dist/ra-core/src/util/shallowEqual.d.ts +1 -0
  493. package/dist/ra-core/src/util/shallowEqual.js +29 -0
  494. package/dist/ra-core/src/util/useCheckForApplicationUpdate.d.ts +21 -0
  495. package/dist/ra-core/src/util/useCheckForApplicationUpdate.js +84 -0
  496. package/dist/ra-core/src/util/useDebouncedEvent.d.ts +8 -0
  497. package/dist/ra-core/src/util/useDebouncedEvent.js +28 -0
  498. package/dist/ra-core/src/util/useEvent.d.ts +7 -0
  499. package/dist/ra-core/src/util/useEvent.js +19 -0
  500. package/dist/ra-core/src/util/useFieldValue.d.ts +21 -0
  501. package/dist/ra-core/src/util/useFieldValue.js +27 -0
  502. package/dist/ra-core/src/util/useWhyDidYouUpdate.d.ts +12 -0
  503. package/dist/ra-core/src/util/useWhyDidYouUpdate.js +42 -0
  504. package/dist/ra-core/src/util/warning.d.ts +2 -0
  505. package/dist/ra-core/src/util/warning.js +5 -0
  506. package/dist/strato-faker-ecommerce/src/dataProvider.d.ts +2 -0
  507. package/dist/strato-faker-ecommerce/src/dataProvider.js +6 -0
  508. package/dist/strato-faker-ecommerce/src/generate.d.ts +8 -0
  509. package/dist/strato-faker-ecommerce/src/generate.js +148 -0
  510. package/dist/strato-faker-ecommerce/src/index.d.ts +3 -0
  511. package/dist/strato-faker-ecommerce/src/index.js +3 -0
  512. package/dist/strato-faker-ecommerce/src/types.d.ts +69 -0
  513. package/dist/strato-faker-ecommerce/src/types.js +1 -0
  514. package/dist/types.d.ts +1 -1
  515. package/package.json +6 -5
  516. package/src/dataProvider.ts +3 -3
  517. package/src/generate.test.ts +12 -12
  518. package/src/generate.ts +21 -14
  519. package/src/types.ts +1 -1
@@ -0,0 +1,66 @@
1
+ import { useCallback } from 'react';
2
+ import { useBasename } from './useBasename';
3
+ import { useCreatePath } from './useCreatePath';
4
+ import { useNavigate } from './useNavigate';
5
+ /**
6
+ * Hook for Redirection Side Effect
7
+ *
8
+ * @example
9
+ *
10
+ * const redirect = useRedirect();
11
+ * // redirect to list view
12
+ * redirect('list', 'posts');
13
+ * // redirect to edit view
14
+ * redirect('edit', 'posts', 123);
15
+ * // redirect to edit view with state data
16
+ * redirect('edit', 'comments', 123, {}, { record: { post_id: record.id } });
17
+ * // do not redirect
18
+ * redirect(false);
19
+ * // redirect to the result of a function
20
+ * redirect((resource, id, data) => ...)
21
+ * // redirect to an absolute URL
22
+ * redirect('https://marmelab.com/react-admin');
23
+ */
24
+ export const useRedirect = () => {
25
+ const navigate = useNavigate();
26
+ const basename = useBasename();
27
+ const createPath = useCreatePath();
28
+ return useCallback((redirectTo, resource = '', id, data, state = {}) => {
29
+ if (!redirectTo) {
30
+ return;
31
+ }
32
+ else if (typeof redirectTo === 'function') {
33
+ const target = redirectTo(resource, id, data);
34
+ const absoluteTarget = typeof target === 'string'
35
+ ? `${basename}${target.startsWith('/') ? '' : '/'}${target}`
36
+ : {
37
+ pathname: `${basename}${target.pathname?.startsWith('/') ? '' : '/'}${target.pathname}`,
38
+ ...target,
39
+ };
40
+ navigate(absoluteTarget, {
41
+ state: { _scrollToTop: true, ...state },
42
+ });
43
+ return;
44
+ }
45
+ else if (typeof redirectTo === 'string' &&
46
+ redirectTo.startsWith('http') &&
47
+ window) {
48
+ // redirection to an absolute url
49
+ // history doesn't handle that case, so we handle it by hand
50
+ window.location.href = redirectTo;
51
+ return;
52
+ }
53
+ else {
54
+ // redirection to an internal link
55
+ navigate(createPath({ resource, id, type: redirectTo }), {
56
+ state:
57
+ // We force the scrollToTop except when navigating to a list
58
+ // where this is already done by <RestoreScrollPosition> in <Resource>
59
+ redirectTo === 'list'
60
+ ? state
61
+ : { _scrollToTop: true, ...state },
62
+ });
63
+ return;
64
+ }
65
+ }, [navigate, basename, createPath]);
66
+ };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A hook to use inside the component passed to FallbackComponent
3
+ * of react-error-boundary. It resets the error boundary state whenever
4
+ * the location changes
5
+ * @param {Function} resetErrorBoundary
6
+ */
7
+ export declare const useResetErrorBoundaryOnLocationChange: (resetErrorBoundary: () => void) => void;
@@ -0,0 +1,17 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { useLocation } from './useLocation';
3
+ /**
4
+ * A hook to use inside the component passed to FallbackComponent
5
+ * of react-error-boundary. It resets the error boundary state whenever
6
+ * the location changes
7
+ * @param {Function} resetErrorBoundary
8
+ */
9
+ export const useResetErrorBoundaryOnLocationChange = (resetErrorBoundary) => {
10
+ const { pathname } = useLocation();
11
+ const originalPathname = useRef(pathname);
12
+ useEffect(() => {
13
+ if (pathname !== originalPathname.current) {
14
+ resetErrorBoundary();
15
+ }
16
+ }, [pathname, resetErrorBoundary]);
17
+ };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * A hook that tracks the scroll position and restores it when the component mounts.
3
+ * @param storeKey The key under which to store the scroll position in the store
4
+ * @param debounceMs The debounce time in milliseconds
5
+ *
6
+ * @example
7
+ * import { useRestoreScrollPosition } from '@strato-admin/ra-core';
8
+ *
9
+ * const MyCustomPage = () => {
10
+ * useRestoreScrollPosition('my-list');
11
+ *
12
+ * return (
13
+ * <div>
14
+ * <h1>My Custom Page</h1>
15
+ * <VeryLongContent />
16
+ * </div>
17
+ * );
18
+ * };
19
+ */
20
+ export declare const useRestoreScrollPosition: (storeKey: string, debounceMs?: number) => void;
21
+ /**
22
+ * A hook that tracks the scroll position and stores it.
23
+ * @param storeKey The key under which to store the scroll position in the store
24
+ * @param debounceMs The debounce time in milliseconds
25
+ *
26
+ * @example
27
+ * import { useTrackScrollPosition } from '@strato-admin/ra-core';
28
+ *
29
+ * const MyCustomPage = () => {
30
+ * useTrackScrollPosition('my-list');
31
+ *
32
+ * return (
33
+ * <div>
34
+ * <h1>My Custom Page</h1>
35
+ * <VeryLongContent />
36
+ * </div>
37
+ * );
38
+ * };
39
+ */
40
+ export declare const useTrackScrollPosition: (storeKey: string, debounceMs?: number) => [number | undefined, (value: number | undefined) => void];
@@ -0,0 +1,70 @@
1
+ import { useEffect } from 'react';
2
+ import debounce from 'lodash/debounce.js';
3
+ import { useStore } from '../store';
4
+ import { useLocation } from './useLocation';
5
+ /**
6
+ * A hook that tracks the scroll position and restores it when the component mounts.
7
+ * @param storeKey The key under which to store the scroll position in the store
8
+ * @param debounceMs The debounce time in milliseconds
9
+ *
10
+ * @example
11
+ * import { useRestoreScrollPosition } from '@strato-admin/ra-core';
12
+ *
13
+ * const MyCustomPage = () => {
14
+ * useRestoreScrollPosition('my-list');
15
+ *
16
+ * return (
17
+ * <div>
18
+ * <h1>My Custom Page</h1>
19
+ * <VeryLongContent />
20
+ * </div>
21
+ * );
22
+ * };
23
+ */
24
+ export const useRestoreScrollPosition = (storeKey, debounceMs = 250) => {
25
+ const [position, setPosition] = useTrackScrollPosition(storeKey, debounceMs);
26
+ const location = useLocation();
27
+ useEffect(() => {
28
+ if (position != null && location.state?._scrollToTop !== true) {
29
+ setPosition(undefined);
30
+ window.scrollTo(0, position);
31
+ }
32
+ // We only want to run this effect on mount
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ }, []);
35
+ };
36
+ /**
37
+ * A hook that tracks the scroll position and stores it.
38
+ * @param storeKey The key under which to store the scroll position in the store
39
+ * @param debounceMs The debounce time in milliseconds
40
+ *
41
+ * @example
42
+ * import { useTrackScrollPosition } from '@strato-admin/ra-core';
43
+ *
44
+ * const MyCustomPage = () => {
45
+ * useTrackScrollPosition('my-list');
46
+ *
47
+ * return (
48
+ * <div>
49
+ * <h1>My Custom Page</h1>
50
+ * <VeryLongContent />
51
+ * </div>
52
+ * );
53
+ * };
54
+ */
55
+ export const useTrackScrollPosition = (storeKey, debounceMs = 250) => {
56
+ const [position, setPosition] = useStore(storeKey);
57
+ useEffect(() => {
58
+ if (typeof window === 'undefined') {
59
+ return;
60
+ }
61
+ const handleScroll = debounce(() => {
62
+ setPosition(window.scrollY);
63
+ }, debounceMs);
64
+ window.addEventListener('scroll', handleScroll);
65
+ return () => {
66
+ window.removeEventListener('scroll', handleScroll);
67
+ };
68
+ }, [debounceMs, setPosition]);
69
+ return [position, setPosition];
70
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Utility hook to get the base path of a splat path.
3
+ * Compatible both with react-router v6 and v7.
4
+ *
5
+ * Example:
6
+ * If a splat path is defined as `/posts/:id/show/*`,
7
+ * and the current location is `/posts/12/show/3`,
8
+ * this hook will return `/posts/12/show`.
9
+ *
10
+ * Solution inspired by
11
+ * https://github.com/remix-run/react-router/issues/11052#issuecomment-1828470203
12
+ */
13
+ export declare const useSplatPathBase: () => string;
@@ -0,0 +1,21 @@
1
+ import { useLocation } from './useLocation';
2
+ import { useParams } from './useParams';
3
+ /**
4
+ * Utility hook to get the base path of a splat path.
5
+ * Compatible both with react-router v6 and v7.
6
+ *
7
+ * Example:
8
+ * If a splat path is defined as `/posts/:id/show/*`,
9
+ * and the current location is `/posts/12/show/3`,
10
+ * this hook will return `/posts/12/show`.
11
+ *
12
+ * Solution inspired by
13
+ * https://github.com/remix-run/react-router/issues/11052#issuecomment-1828470203
14
+ */
15
+ export const useSplatPathBase = () => {
16
+ const location = useLocation();
17
+ const params = useParams();
18
+ const splatPathRelativePart = params['*'];
19
+ const splatPathBase = location.pathname.replace(new RegExp(`/${splatPathRelativePart}$`), '');
20
+ return splatPathBase;
21
+ };
@@ -0,0 +1,11 @@
1
+ export * from './localStorageStore';
2
+ export * from './memoryStore';
3
+ export * from './StoreContext';
4
+ export * from './StoreContextProvider';
5
+ export * from './StoreSetter';
6
+ export * from './types';
7
+ export * from './useStore';
8
+ export * from './useStoreContext';
9
+ export * from './useRemoveFromStore';
10
+ export * from './useRemoveItemsFromStore';
11
+ export * from './useResetStore';
@@ -0,0 +1,11 @@
1
+ export * from './localStorageStore';
2
+ export * from './memoryStore';
3
+ export * from './StoreContext';
4
+ export * from './StoreContextProvider';
5
+ export * from './StoreSetter';
6
+ export * from './types';
7
+ export * from './useStore';
8
+ export * from './useStoreContext';
9
+ export * from './useRemoveFromStore';
10
+ export * from './useRemoveItemsFromStore';
11
+ export * from './useResetStore';
@@ -0,0 +1,27 @@
1
+ import { Store } from './types';
2
+ /**
3
+ * Store using localStorage, or memory storage in incognito mode
4
+ *
5
+ * @example
6
+ *
7
+ * import { localStorageStore } from 'react-admin';
8
+ *
9
+ * const App = () => (
10
+ * <Admin store={localStorageStore()}>
11
+ * ...
12
+ * </Admin>
13
+ * );
14
+ */
15
+ export declare const localStorageStore: (version?: string, appKey?: string) => Store;
16
+ declare class LocalStorageShim {
17
+ valuesMap: any;
18
+ getItem(key: string): string | null;
19
+ setItem(key: string, value: string): void;
20
+ removeItem(key: string): void;
21
+ removeItems(keyPrefix: string): void;
22
+ clear(): void;
23
+ key(i: any): string;
24
+ get length(): any;
25
+ }
26
+ export declare const getStorage: () => LocalStorageShim | Storage;
27
+ export {};
@@ -0,0 +1,198 @@
1
+ const RA_STORE = 'RaStore';
2
+ // localStorage isn't available in incognito mode. We need to detect it
3
+ const testLocalStorage = () => {
4
+ // eslint-disable-next-line eqeqeq
5
+ if (typeof window === 'undefined' || window.localStorage == undefined) {
6
+ return false;
7
+ }
8
+ try {
9
+ window.localStorage.setItem('test', 'test');
10
+ window.localStorage.removeItem('test');
11
+ return true;
12
+ }
13
+ catch (e) {
14
+ return false;
15
+ }
16
+ };
17
+ const localStorageAvailable = testLocalStorage();
18
+ /**
19
+ * Store using localStorage, or memory storage in incognito mode
20
+ *
21
+ * @example
22
+ *
23
+ * import { localStorageStore } from 'react-admin';
24
+ *
25
+ * const App = () => (
26
+ * <Admin store={localStorageStore()}>
27
+ * ...
28
+ * </Admin>
29
+ * );
30
+ */
31
+ export const localStorageStore = (version = '1', appKey = '') => {
32
+ const prefix = `${RA_STORE}${appKey}`;
33
+ const prefixLength = prefix.length;
34
+ const subscriptions = {};
35
+ const publish = (key, value) => {
36
+ Object.keys(subscriptions).forEach(id => {
37
+ if (!subscriptions[id])
38
+ return; // may happen if a component unmounts after a first subscriber was notified
39
+ if (subscriptions[id].key === key) {
40
+ subscriptions[id].callback(value);
41
+ }
42
+ });
43
+ };
44
+ // Whenever the local storage changes in another document, look for matching subscribers.
45
+ // This allows to synchronize state across tabs
46
+ const onLocalStorageChange = (event) => {
47
+ if (event.key?.substring(0, prefixLength) !== prefix) {
48
+ return;
49
+ }
50
+ const key = event.key.substring(prefixLength + 1);
51
+ const value = event.newValue ? tryParse(event.newValue) : undefined;
52
+ Object.keys(subscriptions).forEach(id => {
53
+ if (!subscriptions[id])
54
+ return; // may happen if a component unmounts after a first subscriber was notified
55
+ if (subscriptions[id].key === key) {
56
+ if (value === null) {
57
+ // an event with a null value is sent when the key is deleted.
58
+ // to enable default value, we need to call setValue(undefined) instead of setValue(null)
59
+ subscriptions[id].callback(undefined);
60
+ }
61
+ else {
62
+ subscriptions[id].callback(value == null ? undefined : value);
63
+ }
64
+ }
65
+ });
66
+ };
67
+ return {
68
+ setup: () => {
69
+ if (localStorageAvailable) {
70
+ const storedVersion = getStorage().getItem(`${prefix}.version`);
71
+ if (storedVersion && storedVersion !== version) {
72
+ const storage = getStorage();
73
+ Object.keys(storage).forEach(key => {
74
+ if (key.startsWith(prefix)) {
75
+ storage.removeItem(key);
76
+ }
77
+ });
78
+ }
79
+ getStorage().setItem(`${prefix}.version`, version);
80
+ window.addEventListener('storage', onLocalStorageChange);
81
+ }
82
+ },
83
+ teardown: () => {
84
+ if (localStorageAvailable) {
85
+ window.removeEventListener('storage', onLocalStorageChange);
86
+ }
87
+ },
88
+ getItem(key, defaultValue) {
89
+ const valueFromStorage = getStorage().getItem(`${prefix}.${key}`);
90
+ return valueFromStorage == null
91
+ ? defaultValue
92
+ : tryParse(valueFromStorage);
93
+ },
94
+ setItem(key, value) {
95
+ if (value === undefined) {
96
+ getStorage().removeItem(`${prefix}.${key}`);
97
+ }
98
+ else {
99
+ getStorage().setItem(`${prefix}.${key}`, JSON.stringify(value));
100
+ }
101
+ publish(key, value);
102
+ },
103
+ removeItem(key) {
104
+ getStorage().removeItem(`${prefix}.${key}`);
105
+ publish(key, undefined);
106
+ },
107
+ removeItems(keyPrefix) {
108
+ const storage = getStorage();
109
+ Object.keys(storage).forEach(key => {
110
+ if (key.startsWith(`${prefix}.${keyPrefix}`)) {
111
+ storage.removeItem(key);
112
+ const publishKey = key.substring(prefixLength + 1);
113
+ publish(publishKey, undefined);
114
+ }
115
+ });
116
+ },
117
+ reset() {
118
+ const storage = getStorage();
119
+ Object.keys(storage).forEach(key => {
120
+ if (key.startsWith(prefix)) {
121
+ storage.removeItem(key);
122
+ const publishKey = key.substring(prefixLength + 1);
123
+ publish(publishKey, undefined);
124
+ }
125
+ });
126
+ },
127
+ subscribe: (key, callback) => {
128
+ const id = Math.random().toString();
129
+ subscriptions[id] = {
130
+ key,
131
+ callback,
132
+ };
133
+ return () => {
134
+ delete subscriptions[id];
135
+ };
136
+ },
137
+ listItems: (keyPrefix) => {
138
+ const storage = getStorage();
139
+ const fullPrefix = `${prefix}.${keyPrefix != null ? keyPrefix : ''}`;
140
+ return Object.entries(storage).reduce((acc, [key, value]) => {
141
+ if (
142
+ // version is considered internal
143
+ key !== `${prefix}.version` &&
144
+ key.startsWith(fullPrefix)) {
145
+ acc[key.substring(prefix.length + 1)] = tryParse(value);
146
+ }
147
+ return acc;
148
+ }, {});
149
+ },
150
+ };
151
+ };
152
+ const tryParse = (value) => {
153
+ try {
154
+ return JSON.parse(value);
155
+ }
156
+ catch (e) {
157
+ return value;
158
+ }
159
+ };
160
+ class LocalStorageShim {
161
+ valuesMap = new Map();
162
+ getItem(key) {
163
+ if (this.valuesMap.has(key)) {
164
+ return String(this.valuesMap.get(key));
165
+ }
166
+ return null;
167
+ }
168
+ setItem(key, value) {
169
+ this.valuesMap.set(key, value);
170
+ }
171
+ removeItem(key) {
172
+ this.valuesMap.delete(key);
173
+ }
174
+ removeItems(keyPrefix) {
175
+ this.valuesMap.forEach((value, key) => {
176
+ if (key.startsWith(keyPrefix)) {
177
+ this.valuesMap.delete(key);
178
+ }
179
+ });
180
+ }
181
+ clear() {
182
+ this.valuesMap.clear();
183
+ }
184
+ key(i) {
185
+ if (arguments.length === 0) {
186
+ throw new TypeError("Failed to execute 'key' on 'Storage': 1 argument required, but only 0 present."); // this is a TypeError implemented on Chrome, Firefox throws Not enough arguments to Storage.key.
187
+ }
188
+ const arr = Array.from(this.valuesMap.keys());
189
+ return arr[i];
190
+ }
191
+ get length() {
192
+ return this.valuesMap.size;
193
+ }
194
+ }
195
+ const memoryStorage = new LocalStorageShim();
196
+ export const getStorage = () => {
197
+ return localStorageAvailable ? window.localStorage : memoryStorage;
198
+ };
@@ -0,0 +1,11 @@
1
+ export interface Store {
2
+ setup: () => void;
3
+ teardown: () => void;
4
+ getItem: <T = any>(key: string, defaultValue?: T) => T | undefined;
5
+ setItem: <T = any>(key: string, value: T) => void;
6
+ removeItem: (key: string) => void;
7
+ removeItems: (keyPrefix: string) => void;
8
+ reset: () => void;
9
+ subscribe: (key: string, callback: (value: any) => void) => () => void;
10
+ listItems?: (keyPrefix?: string) => Record<string, unknown>;
11
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Get a callback to remove an item from the store
3
+ *
4
+ * @example
5
+ * import { useRemoveFromStore } from 'react-admin';
6
+ *
7
+ * const ResetDatagridPrefs = () {
8
+ * const removeItem = useRemoveFromStore();
9
+ *
10
+ * const handleClick = () => {
11
+ * removeItem('datagrid.prefs');
12
+ * };
13
+ *
14
+ * return <Button onClick={hancleClick}>Reset datagrid preferences</Button>;
15
+ * }
16
+ */
17
+ export declare const useRemoveFromStore: (hookTimeKey?: string) => (key?: string) => any;
@@ -0,0 +1,29 @@
1
+ import { useCallback } from 'react';
2
+ import { useStoreContext } from './useStoreContext';
3
+ /**
4
+ * Get a callback to remove an item from the store
5
+ *
6
+ * @example
7
+ * import { useRemoveFromStore } from 'react-admin';
8
+ *
9
+ * const ResetDatagridPrefs = () {
10
+ * const removeItem = useRemoveFromStore();
11
+ *
12
+ * const handleClick = () => {
13
+ * removeItem('datagrid.prefs');
14
+ * };
15
+ *
16
+ * return <Button onClick={hancleClick}>Reset datagrid preferences</Button>;
17
+ * }
18
+ */
19
+ export const useRemoveFromStore = (hookTimeKey) => {
20
+ const { removeItem } = useStoreContext();
21
+ return useCallback((key) => {
22
+ if (typeof key === 'undefined' &&
23
+ typeof hookTimeKey === 'undefined') {
24
+ throw new Error('You must provide a key to remove an item from the store');
25
+ }
26
+ // @ts-ignore
27
+ return removeItem(key ?? hookTimeKey);
28
+ }, [removeItem, hookTimeKey]);
29
+ };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Get a callback to remove all item with a certain key prefix from the store
3
+ *
4
+ * @example
5
+ * import { useRemoveItemsFromStore } from 'react-admin';
6
+ *
7
+ * const ResetDatagridPrefs = () {
8
+ * const removeItems = useRemoveItemsFromStore();
9
+ *
10
+ * const handleClick = () => {
11
+ * removeItems('datagrid.prefs');
12
+ * };
13
+ *
14
+ * return <Button onClick={hancleClick}>Reset datagrid preferences</Button>;
15
+ * }
16
+ */
17
+ export declare const useRemoveItemsFromStore: (hookTimeKeyPrefix?: string | null) => (keyPrefix?: string) => any;
@@ -0,0 +1,29 @@
1
+ import { useCallback } from 'react';
2
+ import { useStoreContext } from './useStoreContext';
3
+ /**
4
+ * Get a callback to remove all item with a certain key prefix from the store
5
+ *
6
+ * @example
7
+ * import { useRemoveItemsFromStore } from 'react-admin';
8
+ *
9
+ * const ResetDatagridPrefs = () {
10
+ * const removeItems = useRemoveItemsFromStore();
11
+ *
12
+ * const handleClick = () => {
13
+ * removeItems('datagrid.prefs');
14
+ * };
15
+ *
16
+ * return <Button onClick={hancleClick}>Reset datagrid preferences</Button>;
17
+ * }
18
+ */
19
+ export const useRemoveItemsFromStore = (hookTimeKeyPrefix) => {
20
+ const { removeItems } = useStoreContext();
21
+ return useCallback((keyPrefix) => {
22
+ if (typeof keyPrefix === 'undefined' &&
23
+ typeof hookTimeKeyPrefix === 'undefined') {
24
+ throw new Error('You must provide a key to remove an item from the store');
25
+ }
26
+ // @ts-ignore
27
+ return removeItems(keyPrefix ?? hookTimeKeyPrefix);
28
+ }, [removeItems, hookTimeKeyPrefix]);
29
+ };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Get a callback to remove all items from the store
3
+ *
4
+ * @example
5
+ * import { useResetStore } from 'react-admin';
6
+ *
7
+ * const ResetPrefs = () {
8
+ * const reset = useResetStore();
9
+ *
10
+ * const handleClick = () => {
11
+ * reset();
12
+ * };
13
+ *
14
+ * return <Button onClick={handleClick}>Reset preferences</Button>;
15
+ * }
16
+ */
17
+ export declare const useResetStore: () => any;
@@ -0,0 +1,21 @@
1
+ import { useStoreContext } from './useStoreContext';
2
+ /**
3
+ * Get a callback to remove all items from the store
4
+ *
5
+ * @example
6
+ * import { useResetStore } from 'react-admin';
7
+ *
8
+ * const ResetPrefs = () {
9
+ * const reset = useResetStore();
10
+ *
11
+ * const handleClick = () => {
12
+ * reset();
13
+ * };
14
+ *
15
+ * return <Button onClick={handleClick}>Reset preferences</Button>;
16
+ * }
17
+ */
18
+ export const useResetStore = () => {
19
+ const { reset } = useStoreContext();
20
+ return reset;
21
+ };