@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,175 @@
1
+ import { isValidElement, useCallback, useEffect, useMemo } from 'react';
2
+ import { useAuthenticated, useRequireAccess } from '../../auth';
3
+ import { useTranslate } from '../../i18n';
4
+ import { useNotify } from '../../notification';
5
+ import { useDataProvider, useInfiniteGetList } from '../../dataProvider';
6
+ import { defaultExporter } from '../../export';
7
+ import { useResourceContext, useGetResourceLabel } from '../../core';
8
+ import { useRecordSelection } from './useRecordSelection';
9
+ import { useListParams } from './useListParams';
10
+ import { useSelectAll } from './useSelectAll';
11
+ import { useEvent } from '../../util';
12
+ /**
13
+ * Prepare data for the InfiniteList view
14
+ *
15
+ * @param {Object} props The props passed to the InfiniteList component.
16
+ *
17
+ * @return {Object} controllerProps Fetched and computed data for the List view
18
+ *
19
+ * @example
20
+ *
21
+ * import { useInfiniteListController } from 'react-admin';
22
+ * import ListView from './ListView';
23
+ *
24
+ * const MyList = props => {
25
+ * const controllerProps = useInfiniteListController(props);
26
+ * return <ListView {...controllerProps} {...props} />;
27
+ * }
28
+ */
29
+ export const useInfiniteListController = (props = {}) => {
30
+ const { debounce = 500, disableAuthentication = false, disableSyncWithLocation = false, exporter = defaultExporter, filter, filterDefaultValues, perPage = 10, queryOptions, sort, storeKey, } = props;
31
+ const resource = useResourceContext(props);
32
+ const { meta, ...otherQueryOptions } = queryOptions ?? {};
33
+ if (!resource) {
34
+ throw new Error(`<InfiniteList> was called outside of a ResourceContext and without a resource prop. You must set the resource prop.`);
35
+ }
36
+ if (filter && isValidElement(filter)) {
37
+ throw new Error('<InfiniteList> received a React element as `filter` props. If you intended to set the list filter elements, use the `filters` (with an s) prop instead. The `filter` prop is internal and should not be set by the developer.');
38
+ }
39
+ const { isPending: isPendingAuthenticated } = useAuthenticated({
40
+ enabled: !disableAuthentication,
41
+ });
42
+ const { isPending: isPendingCanAccess } = useRequireAccess({
43
+ action: 'list',
44
+ resource,
45
+ enabled: !disableAuthentication && !isPendingAuthenticated,
46
+ });
47
+ const translate = useTranslate();
48
+ const notify = useNotify();
49
+ const dataProvider = useDataProvider();
50
+ const [query, queryModifiers] = useListParams({
51
+ debounce,
52
+ disableSyncWithLocation,
53
+ filterDefaultValues,
54
+ perPage,
55
+ resource,
56
+ sort,
57
+ storeKey,
58
+ });
59
+ const [selectedIds, selectionModifiers] = useRecordSelection({ resource });
60
+ const onUnselectItems = useCallback((fromAllStoreKeys) => {
61
+ return selectionModifiers.unselect(selectedIds, fromAllStoreKeys);
62
+ }, [selectedIds, selectionModifiers]);
63
+ const { data, total, error, isLoading, isPaused, isPending, isPlaceholderData, isFetching, hasNextPage, hasPreviousPage, fetchNextPage, isFetchingNextPage, fetchPreviousPage, isFetchingPreviousPage, refetch, meta: responseMeta, } = useInfiniteGetList(resource, {
64
+ pagination: {
65
+ page: query.page,
66
+ perPage: query.perPage,
67
+ },
68
+ sort: { field: query.sort, order: query.order },
69
+ filter: { ...query.filter, ...filter },
70
+ meta,
71
+ }, {
72
+ enabled: (!isPendingAuthenticated && !isPendingCanAccess) ||
73
+ disableAuthentication,
74
+ placeholderData: previousData => previousData,
75
+ retry: false,
76
+ onError: error => notify(error?.message || "strato.notification.http_error', {
77
+ type: 'error',
78
+ messageArgs: {
79
+ _: error?.message,
80
+ },
81
+ }),
82
+ ...otherQueryOptions,
83
+ });
84
+ const onSelectAll = useSelectAll({
85
+ resource,
86
+ sort: { field: query.sort, order: query.order },
87
+ filter: { ...query.filter, ...filter },
88
+ });
89
+ // change page if there is no data
90
+ useEffect(() => {
91
+ if (query.page <= 0 ||
92
+ (!isFetching &&
93
+ query.page > 1 &&
94
+ (data == null || data?.pages.length === 0))) {
95
+ // Query for a page that doesn't exist, set page to 1
96
+ queryModifiers.setPage(1);
97
+ return;
98
+ }
99
+ if (total == null) {
100
+ return;
101
+ }
102
+ const totalPages = Math.ceil(total / query.perPage) || 1;
103
+ if (!isFetching && query.page > totalPages) {
104
+ // Query for a page out of bounds, set page to the last existing page
105
+ // It occurs when deleting the last element of the last page
106
+ queryModifiers.setPage(totalPages);
107
+ }
108
+ }, [isFetching, query.page, query.perPage, data, queryModifiers, total]);
109
+ const currentSort = useMemo(() => ({
110
+ field: query.sort,
111
+ order: query.order,
112
+ }), [query.sort, query.order]);
113
+ const getResourceLabel = useGetResourceLabel();
114
+ const defaultTitle = translate(`resources.${resource}.page.list`, {
115
+ _: translate("strato.page.list', {
116
+ name: getResourceLabel(resource, 2),
117
+ }),
118
+ });
119
+ const unwrappedData = useMemo(() => data?.pages?.reduce((acc, page) => [...acc, ...page.data], []), [data]);
120
+ const getData = useEvent(async ({ maxResults, meta: metaOverride } = {}) => {
121
+ if (total === 0) {
122
+ return [];
123
+ }
124
+ const limit = maxResults ?? (total != null ? total : DEFAULT_MAX_RESULTS);
125
+ const { data } = await dataProvider.getList(resource, {
126
+ sort: currentSort,
127
+ filter: filter
128
+ ? { ...query.filterValues, ...filter }
129
+ : query.filterValues,
130
+ pagination: { page: 1, perPage: limit },
131
+ meta: metaOverride ?? meta,
132
+ });
133
+ return data;
134
+ });
135
+ return {
136
+ sort: currentSort,
137
+ data: unwrappedData,
138
+ defaultTitle,
139
+ displayedFilters: query.displayedFilters,
140
+ error,
141
+ exporter,
142
+ filter,
143
+ filterValues: query.filterValues,
144
+ hideFilter: queryModifiers.hideFilter,
145
+ isFetching,
146
+ isLoading,
147
+ isPaused,
148
+ isPending,
149
+ isPlaceholderData,
150
+ onSelect: selectionModifiers.select,
151
+ onSelectAll,
152
+ onToggleItem: selectionModifiers.toggle,
153
+ onUnselectItems,
154
+ page: query.page,
155
+ perPage: query.perPage,
156
+ refetch,
157
+ resource,
158
+ selectedIds,
159
+ setFilters: queryModifiers.setFilters,
160
+ setPage: queryModifiers.setPage,
161
+ setPerPage: queryModifiers.setPerPage,
162
+ setSort: queryModifiers.setSort,
163
+ showFilter: queryModifiers.showFilter,
164
+ total: total,
165
+ hasNextPage,
166
+ hasPreviousPage,
167
+ fetchNextPage,
168
+ isFetchingNextPage,
169
+ fetchPreviousPage,
170
+ isFetchingPreviousPage,
171
+ meta: responseMeta,
172
+ getData,
173
+ };
174
+ };
175
+ const DEFAULT_MAX_RESULTS = 1000;
@@ -0,0 +1,16 @@
1
+ import { InfinitePaginationContextValue } from './InfinitePaginationContext';
2
+ /**
3
+ * Hook to read the infinite pagination callbacks from the InfinitePaginationContext.
4
+ *
5
+ * Must be used within a <InfinitePaginationContext.Provider> (e.g. as a descendent of <InfiniteList>
6
+ * or <InfiniteListBase>).
7
+ *
8
+ * @typedef {Object} InfinitePaginationContextValue
9
+ * @prop {Function} fetchNextPage a callback to fetch the next page
10
+ * @prop {Function} fetchPreviousPage a callback to fetch the previous page
11
+ *
12
+ * @returns {InfinitePaginationContextValue} infinite pagination callbacks
13
+ *
14
+ * @see useInfiniteListController for how the callbacks are built
15
+ */
16
+ export declare const useInfinitePaginationContext: () => InfinitePaginationContextValue;
@@ -0,0 +1,17 @@
1
+ import { useContext } from 'react';
2
+ import { InfinitePaginationContext, } from './InfinitePaginationContext';
3
+ /**
4
+ * Hook to read the infinite pagination callbacks from the InfinitePaginationContext.
5
+ *
6
+ * Must be used within a <InfinitePaginationContext.Provider> (e.g. as a descendent of <InfiniteList>
7
+ * or <InfiniteListBase>).
8
+ *
9
+ * @typedef {Object} InfinitePaginationContextValue
10
+ * @prop {Function} fetchNextPage a callback to fetch the next page
11
+ * @prop {Function} fetchPreviousPage a callback to fetch the previous page
12
+ *
13
+ * @returns {InfinitePaginationContextValue} infinite pagination callbacks
14
+ *
15
+ * @see useInfiniteListController for how the callbacks are built
16
+ */
17
+ export const useInfinitePaginationContext = () => useContext(InfinitePaginationContext);
@@ -0,0 +1,55 @@
1
+ import { Exporter, FilterPayload, RaRecord, SortPayload } from '../../types';
2
+ import { ListControllerResult } from './useListController';
3
+ /**
4
+ * Handle filtering, sorting and pagination on local data.
5
+ *
6
+ * Returns the data and callbacks expected by <ListContext>.
7
+ *
8
+ * @example
9
+ * const data = [
10
+ * { id: 1, name: 'Arnold' },
11
+ * { id: 2, name: 'Sylvester' },
12
+ * { id: 3, name: 'Jean-Claude' },
13
+ * ]
14
+ *
15
+ * const MyComponent = () => {
16
+ * const listContext = useList({ data });
17
+ * return (
18
+ * <ListContextProvider value={listContext}>
19
+ * <Datagrid>
20
+ * <TextField source="id" />
21
+ * <TextField source="name" />
22
+ * </Datagrid>
23
+ * </ListContextProvider>
24
+ * );
25
+ * };
26
+ *
27
+ * @param {UseListOptions} props
28
+ * @param {RaRecord[]} props.data An array of records
29
+ * @param {Boolean} props.isFetching: Optional. A boolean indicating whether the data is being loaded
30
+ * @param {Boolean} props.isLoading: Optional. A boolean indicating whether the data has been loaded at least once
31
+ * @param {Error | String} props.error: Optional. The error if any occurred while loading the data
32
+ * @param {Object} props.filter: Optional. An object containing the filters applied on the data
33
+ * @param {Number} props.page: Optional. The initial page index
34
+ * @param {Number} props.perPage: Optional. The initial page size
35
+ * @param {SortPayload} props.sort: Optional. The initial sort (field and order)
36
+ * @param {filterCallback} prop.filterCallback Optional. A function that allows you to make a custom filter
37
+ */
38
+ export declare const useList: <RecordType extends RaRecord = any, ErrorType = Error>(props: UseListOptions<RecordType, ErrorType>) => UseListValue<RecordType, ErrorType>;
39
+ export interface UseListOptions<RecordType extends RaRecord = any, ErrorType = Error> {
40
+ data?: RecordType[];
41
+ error?: ErrorType | null;
42
+ filter?: FilterPayload;
43
+ isFetching?: boolean;
44
+ isLoading?: boolean;
45
+ isPaused?: boolean;
46
+ isPending?: boolean;
47
+ isPlaceholderData?: boolean;
48
+ page?: number;
49
+ perPage?: number;
50
+ sort?: SortPayload;
51
+ resource?: string;
52
+ filterCallback?: (record: RecordType) => boolean;
53
+ exporter?: Exporter<RecordType> | false;
54
+ }
55
+ export type UseListValue<RecordType extends RaRecord = any, ErrorType = Error> = ListControllerResult<RecordType, ErrorType>;
@@ -0,0 +1,223 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import get from 'lodash/get.js';
3
+ import isEqual from 'lodash/isEqual.js';
4
+ import { removeEmpty } from '../../util';
5
+ import { useResourceContext } from '../../core';
6
+ import usePaginationState from '../usePaginationState';
7
+ import useSortState from '../useSortState';
8
+ import { useRecordSelection } from './useRecordSelection';
9
+ import { flattenObject } from '../../dataProvider/fetch';
10
+ import { defaultExporter } from '../../export';
11
+ const refetch = () => {
12
+ throw new Error('refetch is not available for a ListContext built from useList based on local data');
13
+ };
14
+ /**
15
+ * Handle filtering, sorting and pagination on local data.
16
+ *
17
+ * Returns the data and callbacks expected by <ListContext>.
18
+ *
19
+ * @example
20
+ * const data = [
21
+ * { id: 1, name: 'Arnold' },
22
+ * { id: 2, name: 'Sylvester' },
23
+ * { id: 3, name: 'Jean-Claude' },
24
+ * ]
25
+ *
26
+ * const MyComponent = () => {
27
+ * const listContext = useList({ data });
28
+ * return (
29
+ * <ListContextProvider value={listContext}>
30
+ * <Datagrid>
31
+ * <TextField source="id" />
32
+ * <TextField source="name" />
33
+ * </Datagrid>
34
+ * </ListContextProvider>
35
+ * );
36
+ * };
37
+ *
38
+ * @param {UseListOptions} props
39
+ * @param {RaRecord[]} props.data An array of records
40
+ * @param {Boolean} props.isFetching: Optional. A boolean indicating whether the data is being loaded
41
+ * @param {Boolean} props.isLoading: Optional. A boolean indicating whether the data has been loaded at least once
42
+ * @param {Error | String} props.error: Optional. The error if any occurred while loading the data
43
+ * @param {Object} props.filter: Optional. An object containing the filters applied on the data
44
+ * @param {Number} props.page: Optional. The initial page index
45
+ * @param {Number} props.perPage: Optional. The initial page size
46
+ * @param {SortPayload} props.sort: Optional. The initial sort (field and order)
47
+ * @param {filterCallback} prop.filterCallback Optional. A function that allows you to make a custom filter
48
+ */
49
+ export const useList = (props) => {
50
+ const { data, error, filter = defaultFilter, isFetching = false, isLoading = false, isPaused = false, isPending = false, isPlaceholderData = false, page: initialPage = 1, perPage: initialPerPage = 1000, sort: initialSort, filterCallback = defaultFilterCallback, exporter = defaultExporter, } = props;
51
+ const resource = useResourceContext(props);
52
+ const [finalItems, setFinalItems] = useState(() => ({
53
+ data,
54
+ total: data ? data.length : undefined,
55
+ }));
56
+ // pagination logic
57
+ const { page, setPage, perPage, setPerPage } = usePaginationState({
58
+ page: initialPage,
59
+ perPage: initialPerPage,
60
+ });
61
+ // sort logic
62
+ const { sort, setSort: setSortState } = useSortState(initialSort);
63
+ const setSort = useCallback((sort) => {
64
+ setSortState(sort);
65
+ setPage(1);
66
+ }, [setPage, setSortState]);
67
+ // selection logic
68
+ const [selectedIds, selectionModifiers] = useRecordSelection(resource
69
+ ? {
70
+ resource,
71
+ }
72
+ : { disableSyncWithStore: true });
73
+ const onUnselectItems = useCallback((fromAllStoreKeys) => {
74
+ return selectionModifiers.unselect(selectedIds, fromAllStoreKeys);
75
+ }, [selectedIds, selectionModifiers]);
76
+ // filter logic
77
+ const filterRef = useRef(filter);
78
+ const [displayedFilters, setDisplayedFilters] = useState({});
79
+ const [filterValues, setFilterValues] = useState(filter);
80
+ const hideFilter = useCallback((filterName) => {
81
+ setDisplayedFilters(previousState => {
82
+ const { [filterName]: _, ...newState } = previousState;
83
+ return newState;
84
+ });
85
+ setFilterValues(previousState => {
86
+ const { [filterName]: _, ...newState } = previousState;
87
+ return newState;
88
+ });
89
+ }, [setDisplayedFilters, setFilterValues]);
90
+ const showFilter = useCallback((filterName, defaultValue) => {
91
+ setDisplayedFilters(previousState => ({
92
+ ...previousState,
93
+ [filterName]: true,
94
+ }));
95
+ setFilterValues(previousState => removeEmpty({
96
+ ...previousState,
97
+ [filterName]: defaultValue,
98
+ }));
99
+ }, [setDisplayedFilters, setFilterValues]);
100
+ const setFilters = useCallback((filters, displayedFilters = undefined) => {
101
+ setFilterValues(removeEmpty(filters));
102
+ if (displayedFilters) {
103
+ setDisplayedFilters(displayedFilters);
104
+ }
105
+ setPage(1);
106
+ }, [setDisplayedFilters, setFilterValues, setPage]);
107
+ // handle filter prop change
108
+ useEffect(() => {
109
+ if (!isEqual(filter, filterRef.current)) {
110
+ filterRef.current = filter;
111
+ setFilterValues(filter);
112
+ }
113
+ }, [filter]);
114
+ const applyFilterAndSort = useCallback((records) => {
115
+ let tempData = records;
116
+ if (filterValues) {
117
+ const flattenFilterValues = flattenObject(filterValues);
118
+ tempData = records
119
+ .filter(record => Object.entries(flattenFilterValues).every(([filterName, filterValue]) => {
120
+ const recordValue = get(record, filterName);
121
+ const result = Array.isArray(recordValue)
122
+ ? Array.isArray(filterValue)
123
+ ? recordValue.some(item => filterValue.includes(item))
124
+ : recordValue.includes(filterValue)
125
+ : Array.isArray(filterValue)
126
+ ? filterValue.includes(recordValue)
127
+ : filterName === 'q' // special full-text filter
128
+ ? Object.keys(record).some(key => typeof record[key] ===
129
+ 'string' &&
130
+ record[key]
131
+ .toLowerCase()
132
+ .includes(filterValue.toLowerCase()))
133
+ : filterValue == recordValue; // eslint-disable-line eqeqeq
134
+ return result;
135
+ }))
136
+ .filter(filterCallback);
137
+ }
138
+ if (sort.field) {
139
+ tempData = tempData.sort((a, b) => {
140
+ if (get(a, sort.field) > get(b, sort.field)) {
141
+ return sort.order === 'ASC' ? 1 : -1;
142
+ }
143
+ if (get(a, sort.field) < get(b, sort.field)) {
144
+ return sort.order === 'ASC' ? -1 : 1;
145
+ }
146
+ return 0;
147
+ });
148
+ }
149
+ return tempData;
150
+ }, [filterValues, filterCallback, sort.field, sort.order]);
151
+ // We do all the data processing (filtering, sorting, paginating) client-side
152
+ useEffect(() => {
153
+ if (isPending || !data)
154
+ return;
155
+ const filteredAndSorted = applyFilterAndSort(data);
156
+ const filteredLength = filteredAndSorted.length;
157
+ const paginatedData = filteredAndSorted.slice((page - 1) * perPage, page * perPage);
158
+ setFinalItems({
159
+ data: paginatedData,
160
+ total: filteredLength,
161
+ });
162
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
163
+ [
164
+ // eslint-disable-next-line react-hooks/exhaustive-deps
165
+ JSON.stringify(data),
166
+ applyFilterAndSort,
167
+ isPending,
168
+ page,
169
+ perPage,
170
+ setFinalItems,
171
+ ]);
172
+ const onSelectAll = useCallback(() => {
173
+ const allIds = data?.map(({ id }) => id) || [];
174
+ selectionModifiers.select(allIds);
175
+ }, [data, selectionModifiers]);
176
+ const getData = useCallback(async ({ maxResults } = {}) => {
177
+ if (isPending || !data) {
178
+ return [];
179
+ }
180
+ const filteredAndSorted = applyFilterAndSort(data);
181
+ if (maxResults != null) {
182
+ return filteredAndSorted.slice(0, maxResults);
183
+ }
184
+ return filteredAndSorted;
185
+ }, [applyFilterAndSort, data, isPending]);
186
+ return {
187
+ sort,
188
+ data: isPending ? undefined : finalItems?.data ?? [],
189
+ defaultTitle: '',
190
+ error: error ?? null,
191
+ displayedFilters,
192
+ exporter,
193
+ filterValues,
194
+ hasNextPage: finalItems?.total == null
195
+ ? false
196
+ : page * perPage < finalItems.total,
197
+ hasPreviousPage: page > 1,
198
+ hideFilter,
199
+ isFetching,
200
+ isLoading,
201
+ isPaused,
202
+ isPending,
203
+ isPlaceholderData,
204
+ onSelect: selectionModifiers.select,
205
+ onSelectAll,
206
+ onToggleItem: selectionModifiers.toggle,
207
+ onUnselectItems,
208
+ page,
209
+ perPage,
210
+ resource: '',
211
+ refetch,
212
+ selectedIds,
213
+ setFilters,
214
+ setPage,
215
+ setPerPage,
216
+ setSort,
217
+ showFilter,
218
+ total: finalItems?.total,
219
+ getData,
220
+ };
221
+ };
222
+ const defaultFilter = {};
223
+ const defaultFilterCallback = (record) => Boolean(record);
@@ -0,0 +1,59 @@
1
+ import { ListControllerResult } from './useListController';
2
+ import { RaRecord } from '../../types';
3
+ /**
4
+ * Hook to read the list controller props from the ListContext.
5
+ *
6
+ * Used within a <ListContextProvider> (e.g. as a descendent of <List>).
7
+ *
8
+ * @returns {ListControllerResult} list controller props
9
+ *
10
+ * @see useListController for how it is filled
11
+ *
12
+ * @example // custom list view
13
+ *
14
+ * import { useListContext } from 'react-admin';
15
+ *
16
+ * const MyList = () => {
17
+ * const { data, isPending } = useListContext();
18
+ * if (isPending) {
19
+ * return <>Loading...</>;
20
+ * }
21
+ * return (
22
+ * <ul>
23
+ * {data.map(record => (
24
+ * <li key={record.id}>{record.name}</li>
25
+ * ))}
26
+ * </ul>
27
+ * );
28
+ * }
29
+ *
30
+ * @example // custom pagination
31
+ *
32
+ * import { useListContext } from 'react-admin';
33
+ * import { Button, Toolbar } from '@mui/material';
34
+ * import ChevronLeft from '@mui/icons-material/ChevronLeft';
35
+ * import ChevronRight from '@mui/icons-material/ChevronRight';
36
+ *
37
+ * const PrevNextPagination = () => {
38
+ * const { page, perPage, total, setPage } = useListContext();
39
+ * const nbPages = Math.ceil(total / perPage) || 1;
40
+ * return (
41
+ * nbPages > 1 &&
42
+ * <Toolbar>
43
+ * {page > 1 &&
44
+ * <Button color="primary" key="prev" onClick={() => setPage(page - 1)}>
45
+ * <ChevronLeft />
46
+ * Prev
47
+ * </Button>
48
+ * }
49
+ * {page !== nbPages &&
50
+ * <Button color="primary" key="next" onClick={() => setPage(page + 1)}>
51
+ * Next
52
+ * <ChevronRight />
53
+ * </Button>
54
+ * }
55
+ * </Toolbar>
56
+ * );
57
+ * }
58
+ */
59
+ export declare const useListContext: <RecordType extends RaRecord = any, ErrorType = Error>() => ListControllerResult<RecordType, ErrorType>;
@@ -0,0 +1,65 @@
1
+ import { useContext } from 'react';
2
+ import { ListContext } from './ListContext';
3
+ /**
4
+ * Hook to read the list controller props from the ListContext.
5
+ *
6
+ * Used within a <ListContextProvider> (e.g. as a descendent of <List>).
7
+ *
8
+ * @returns {ListControllerResult} list controller props
9
+ *
10
+ * @see useListController for how it is filled
11
+ *
12
+ * @example // custom list view
13
+ *
14
+ * import { useListContext } from 'react-admin';
15
+ *
16
+ * const MyList = () => {
17
+ * const { data, isPending } = useListContext();
18
+ * if (isPending) {
19
+ * return <>Loading...</>;
20
+ * }
21
+ * return (
22
+ * <ul>
23
+ * {data.map(record => (
24
+ * <li key={record.id}>{record.name}</li>
25
+ * ))}
26
+ * </ul>
27
+ * );
28
+ * }
29
+ *
30
+ * @example // custom pagination
31
+ *
32
+ * import { useListContext } from 'react-admin';
33
+ * import { Button, Toolbar } from '@mui/material';
34
+ * import ChevronLeft from '@mui/icons-material/ChevronLeft';
35
+ * import ChevronRight from '@mui/icons-material/ChevronRight';
36
+ *
37
+ * const PrevNextPagination = () => {
38
+ * const { page, perPage, total, setPage } = useListContext();
39
+ * const nbPages = Math.ceil(total / perPage) || 1;
40
+ * return (
41
+ * nbPages > 1 &&
42
+ * <Toolbar>
43
+ * {page > 1 &&
44
+ * <Button color="primary" key="prev" onClick={() => setPage(page - 1)}>
45
+ * <ChevronLeft />
46
+ * Prev
47
+ * </Button>
48
+ * }
49
+ * {page !== nbPages &&
50
+ * <Button color="primary" key="next" onClick={() => setPage(page + 1)}>
51
+ * Next
52
+ * <ChevronRight />
53
+ * </Button>
54
+ * }
55
+ * </Toolbar>
56
+ * );
57
+ * }
58
+ */
59
+ export const useListContext = () => {
60
+ const context = useContext(ListContext);
61
+ if (!context) {
62
+ throw new Error('useListContext must be used inside a ListContextProvider');
63
+ }
64
+ return context;
65
+ };
@@ -0,0 +1,44 @@
1
+ import { ListControllerResult } from './useListController';
2
+ import { RaRecord } from '../../types';
3
+ /**
4
+ * Hook to read the list controller props from the ListContext.
5
+ *
6
+ * Mostly used within a <ListContext.Provider> (e.g. as a descendent of <List>
7
+ * or <ListBase>).
8
+ *
9
+ * But you can also use it without a <ListContext.Provider>. In this case, it is up to you
10
+ * to pass all the necessary props (see the list below).
11
+ *
12
+ * The given props will take precedence over context values.
13
+ *
14
+ * @typedef {Object} ListControllerProps
15
+ * @prop {Object} data an array of the list records, e.g. [{ id: 123, title: 'hello world' }, { ... }]
16
+ * @prop {integer} total the total number of results for the current filters, excluding pagination. Useful to build the pagination controls. e.g. 23
17
+ * @prop {boolean} isFetching boolean that is true on mount, and false once the data was fetched
18
+ * @prop {boolean} isLoading boolean that is false until the data is available
19
+ * @prop {integer} page the current page. Starts at 1
20
+ * @prop {Function} setPage a callback to change the page, e.g. setPage(3)
21
+ * @prop {integer} perPage the number of results per page. Defaults to 25
22
+ * @prop {Function} setPerPage a callback to change the number of results per page, e.g. setPerPage(25)
23
+ * @prop {Object} sort a sort object { field, order }, e.g. { field: 'date', order: 'DESC' }
24
+ * @prop {Function} setSort a callback to change the sort, e.g. setSort({ field : 'name', order: 'ASC' })
25
+ * @prop {Object} filterValues a dictionary of filter values, e.g. { title: 'lorem', nationality: 'fr' }
26
+ * @prop {Function} setFilters a callback to update the filters, e.g. setFilters(filters, displayedFilters)
27
+ * @prop {Object} displayedFilters a dictionary of the displayed filters, e.g. { title: true, nationality: true }
28
+ * @prop {Function} showFilter a callback to show one of the filters, e.g. showFilter('title', defaultValue)
29
+ * @prop {Function} hideFilter a callback to hide one of the filters, e.g. hideFilter('title')
30
+ * @prop {Array} selectedIds an array listing the ids of the selected rows, e.g. [123, 456]
31
+ * @prop {Function} onSelect callback to change the list of selected rows, e.g. onSelect([456, 789])
32
+ * @prop {Function} onSelectAll callback to select all the records, e.g. onSelectAll({ limit: 50, queryOptions: { meta: { foo: 'bar' } } })
33
+ * @prop {Function} onToggleItem callback to toggle the selection of a given record based on its id, e.g. onToggleItem(456)
34
+ * @prop {Function} onUnselectItems callback to clear the selection, e.g. onUnselectItems();
35
+ * @prop {string} defaultTitle the translated title based on the resource, e.g. 'Posts'
36
+ * @prop {string} resource the resource name, deduced from the location. e.g. 'posts'
37
+ *
38
+ * @param {ListControllerProps} props Props passed to the useListContext hook
39
+ *
40
+ * @returns {ListControllerResult} list controller props
41
+ *
42
+ * @see useListController for how it is filled
43
+ */
44
+ export declare const useListContextWithProps: <RecordType extends RaRecord = any>(props?: any) => Partial<ListControllerResult<RecordType>>;