@strato-admin/faker-ecommerce 0.1.1 → 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 +5 -4
  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,137 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useFormContext, useWatch } from 'react-hook-form';
3
+ import { useGetList, useGetManyAggregate } from '../../dataProvider';
4
+ import { useReferenceParams } from './useReferenceParams';
5
+ import { useWrappedSource } from '../../core';
6
+ /**
7
+ * Prepare data for the ReferenceArrayInput components
8
+ *
9
+ * @example
10
+ *
11
+ * const { allChoices, availableChoices, selectedChoices, error, isFetching, isLoading, isPending } = useReferenceArrayInputController({
12
+ * record: { referenceIds: ['id1', 'id2']};
13
+ * reference: 'reference';
14
+ * resource: 'resource';
15
+ * source: 'referenceIds';
16
+ * });
17
+ *
18
+ * @param {Object} props
19
+ * @param {Object} props.record The current resource record
20
+ * @param {string} props.reference The linked resource name
21
+ * @param {string} props.resource The current resource name
22
+ * @param {string} props.source The key of the linked resource identifier
23
+ *
24
+ * @param {Props} props
25
+ *
26
+ * @return {Object} controllerProps Fetched data and callbacks for the ReferenceArrayInput components
27
+ */
28
+ export const useReferenceArrayInputController = (props) => {
29
+ const { debounce, enableGetChoices, filter, page: initialPage = 1, perPage: initialPerPage = 25, sort: initialSort = { field: 'id', order: 'DESC' }, queryOptions = {}, reference, source, } = props;
30
+ const { getValues } = useFormContext();
31
+ const finalSource = useWrappedSource(source);
32
+ // When we change the defaultValue of the child input using react-hook-form resetField function,
33
+ // useWatch does not seem to get the new value. We fallback to getValues to get it.
34
+ const value = useWatch({ name: finalSource }) ?? getValues(finalSource);
35
+ const { meta, ...otherQueryOptions } = queryOptions;
36
+ /**
37
+ * Get the records related to the current value (with getMany)
38
+ */
39
+ const { data: referenceRecords, error: errorGetMany, isLoading: isLoadingGetMany, isFetching: isFetchingGetMany, isPaused: isPausedGetMany, isPending: isPendingGetMany, isPlaceholderData: isPlaceholderDataGetMany, refetch: refetchGetMany, } = useGetManyAggregate(reference, {
40
+ ids: value || EmptyArray,
41
+ meta,
42
+ }, {
43
+ enabled: value != null && value.length > 0,
44
+ });
45
+ const [params, paramsModifiers] = useReferenceParams({
46
+ resource: reference,
47
+ page: initialPage,
48
+ perPage: initialPerPage,
49
+ sort: initialSort,
50
+ debounce,
51
+ filter,
52
+ });
53
+ // filter out not found references - happens when the dataProvider doesn't guarantee referential integrity
54
+ const finalReferenceRecords = referenceRecords
55
+ ? referenceRecords.filter(Boolean)
56
+ : [];
57
+ const isGetMatchingEnabled = enableGetChoices
58
+ ? enableGetChoices(params.filterValues)
59
+ : true;
60
+ const { data: matchingReferences, total, pageInfo, error: errorGetList, isLoading: isLoadingGetList, isFetching: isFetchingGetList, isPaused: isPausedGetList, isPending: isPendingGetList, isPlaceholderData: isPlaceholderDataGetList, refetch: refetchGetMatching, } = useGetList(reference, {
61
+ pagination: {
62
+ page: params.page,
63
+ perPage: params.perPage,
64
+ },
65
+ sort: { field: params.sort, order: params.order },
66
+ filter: { ...params.filter, ...filter },
67
+ meta,
68
+ }, {
69
+ retry: false,
70
+ enabled: isGetMatchingEnabled,
71
+ placeholderData: previousData => previousData,
72
+ ...otherQueryOptions,
73
+ });
74
+ // We merge the currently selected records with the matching ones, otherwise
75
+ // the component displaying the currently selected records may fail
76
+ const finalMatchingReferences = matchingReferences && matchingReferences.length > 0
77
+ ? mergeReferences(matchingReferences, finalReferenceRecords)
78
+ : finalReferenceRecords.length > 0
79
+ ? finalReferenceRecords
80
+ : matchingReferences;
81
+ const refetch = useCallback(() => {
82
+ refetchGetMany();
83
+ refetchGetMatching();
84
+ }, [refetchGetMany, refetchGetMatching]);
85
+ const currentSort = useMemo(() => ({
86
+ field: params.sort,
87
+ order: params.order,
88
+ }), [params.sort, params.order]);
89
+ return {
90
+ sort: currentSort,
91
+ allChoices: finalMatchingReferences,
92
+ availableChoices: matchingReferences,
93
+ selectedChoices: finalReferenceRecords,
94
+ displayedFilters: params.displayedFilters,
95
+ error: errorGetMany || errorGetList,
96
+ filter,
97
+ filterValues: params.filterValues,
98
+ hideFilter: paramsModifiers.hideFilter,
99
+ isFetching: isFetchingGetMany || isFetchingGetList,
100
+ isLoading: isLoadingGetMany || isLoadingGetList,
101
+ isPaused: isPausedGetMany || isPausedGetList,
102
+ isPending: isPendingGetMany || isPendingGetList,
103
+ isPlaceholderData: isPlaceholderDataGetMany || isPlaceholderDataGetList,
104
+ page: params.page,
105
+ perPage: params.perPage,
106
+ refetch,
107
+ resource: reference,
108
+ setFilters: paramsModifiers.setFilters,
109
+ setPage: paramsModifiers.setPage,
110
+ setPerPage: paramsModifiers.setPerPage,
111
+ setSort: paramsModifiers.setSort,
112
+ showFilter: paramsModifiers.showFilter,
113
+ // we return source and not finalSource because child inputs (e.g. AutocompleteArrayInput) already call useInput and compute the final source
114
+ source,
115
+ total: total,
116
+ hasNextPage: pageInfo
117
+ ? pageInfo.hasNextPage
118
+ : total != null
119
+ ? params.page * params.perPage < total
120
+ : undefined,
121
+ hasPreviousPage: pageInfo ? pageInfo.hasPreviousPage : params.page > 1,
122
+ isFromReference: true,
123
+ };
124
+ };
125
+ const EmptyArray = [];
126
+ // concatenate and deduplicate two lists of records
127
+ const mergeReferences = (ref1, ref2) => {
128
+ const res = [...ref1];
129
+ const ids = ref1.map(ref => ref.id);
130
+ ref2.forEach(ref => {
131
+ if (!ids.includes(ref.id)) {
132
+ ids.push(ref.id);
133
+ res.push(ref);
134
+ }
135
+ });
136
+ return res;
137
+ };
@@ -0,0 +1,54 @@
1
+ import { type UseQueryOptions } from '@tanstack/react-query';
2
+ import type { FilterPayload, GetListResult, RaRecord, SortPayload } from '../../types';
3
+ import type { ChoicesContextValue } from '../../form';
4
+ /**
5
+ * A hook for choosing a reference record. Useful for foreign keys.
6
+ *
7
+ * This hook fetches the possible values in the reference resource
8
+ * (using `dataProvider.getList()`), it returns the possible choices
9
+ * as the `choices` attribute.
10
+ *
11
+ * @example
12
+ * const {
13
+ * choices, // the available reference resource
14
+ * } = useReferenceInputController({
15
+ * input, // the input props
16
+ * resource: 'comments',
17
+ * reference: 'posts',
18
+ * source: 'post_id',
19
+ * });
20
+ *
21
+ * The hook also allow to filter results. It returns a `setFilters`
22
+ * function. It uses the value to create a filter for the query.
23
+ * You can also add a permanentFilter to further filter the result:
24
+ *
25
+ * @example
26
+ * const {
27
+ * choices, // the available reference resource
28
+ * setFilter,
29
+ * } = useReferenceInputController({
30
+ * input, // the input props
31
+ * resource: 'comments',
32
+ * reference: 'posts',
33
+ * source: 'post_id',
34
+ * permanentFilter: {
35
+ * author: 'john'
36
+ * },
37
+ * });
38
+ */
39
+ export declare const useReferenceInputController: <RecordType extends RaRecord = any>(props: UseReferenceInputControllerParams<RecordType>) => ChoicesContextValue<RecordType>;
40
+ export interface UseReferenceInputControllerParams<RecordType extends RaRecord = any> {
41
+ debounce?: number;
42
+ filter?: FilterPayload;
43
+ queryOptions?: Omit<UseQueryOptions<GetListResult<RecordType> | RecordType[]>, 'queryFn' | 'queryKey'> & {
44
+ meta?: any;
45
+ };
46
+ page?: number;
47
+ perPage?: number;
48
+ record?: RaRecord;
49
+ reference: string;
50
+ resource?: string;
51
+ sort?: SortPayload;
52
+ source: string;
53
+ enableGetChoices?: (filters: any) => boolean;
54
+ }
@@ -0,0 +1,208 @@
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { useWatch } from 'react-hook-form';
3
+ import { keepPreviousData } from '@tanstack/react-query';
4
+ import { useGetList } from '../../dataProvider';
5
+ import { useReference } from '../useReference';
6
+ import { useReferenceParams } from './useReferenceParams';
7
+ import { useWrappedSource } from '../../core';
8
+ /**
9
+ * A hook for choosing a reference record. Useful for foreign keys.
10
+ *
11
+ * This hook fetches the possible values in the reference resource
12
+ * (using `dataProvider.getList()`), it returns the possible choices
13
+ * as the `choices` attribute.
14
+ *
15
+ * @example
16
+ * const {
17
+ * choices, // the available reference resource
18
+ * } = useReferenceInputController({
19
+ * input, // the input props
20
+ * resource: 'comments',
21
+ * reference: 'posts',
22
+ * source: 'post_id',
23
+ * });
24
+ *
25
+ * The hook also allow to filter results. It returns a `setFilters`
26
+ * function. It uses the value to create a filter for the query.
27
+ * You can also add a permanentFilter to further filter the result:
28
+ *
29
+ * @example
30
+ * const {
31
+ * choices, // the available reference resource
32
+ * setFilter,
33
+ * } = useReferenceInputController({
34
+ * input, // the input props
35
+ * resource: 'comments',
36
+ * reference: 'posts',
37
+ * source: 'post_id',
38
+ * permanentFilter: {
39
+ * author: 'john'
40
+ * },
41
+ * });
42
+ */
43
+ export const useReferenceInputController = (props) => {
44
+ const { debounce, enableGetChoices, filter, page: initialPage = 1, perPage: initialPerPage = 25, sort: initialSort, queryOptions = {}, reference, source, } = props;
45
+ const { meta, ...otherQueryOptions } = queryOptions;
46
+ const [params, paramsModifiers] = useReferenceParams({
47
+ resource: reference,
48
+ page: initialPage,
49
+ perPage: initialPerPage,
50
+ sort: initialSort,
51
+ debounce,
52
+ filter,
53
+ });
54
+ // selection logic
55
+ const finalSource = useWrappedSource(source);
56
+ const currentValue = useWatch({ name: finalSource });
57
+ const isGetMatchingEnabled = enableGetChoices
58
+ ? enableGetChoices(params.filterValues)
59
+ : true;
60
+ // fetch possible values
61
+ const { data: possibleValuesData, total, pageInfo, isFetching: isFetchingPossibleValues, isLoading: isLoadingPossibleValues, isPaused: isPausedPossibleValues, isPending: isPendingPossibleValues, isPlaceholderData: isPlaceholderDataPossibleValues, error: errorPossibleValues, refetch: refetchGetList, } = useGetList(reference, {
62
+ pagination: {
63
+ page: params.page,
64
+ perPage: params.perPage,
65
+ },
66
+ sort: { field: params.sort, order: params.order },
67
+ filter: { ...params.filter, ...filter },
68
+ meta,
69
+ }, {
70
+ enabled: isGetMatchingEnabled,
71
+ placeholderData: keepPreviousData,
72
+ ...otherQueryOptions,
73
+ });
74
+ // fetch current value
75
+ const { referenceRecord: currentReferenceRecord, refetch: refetchReference, error: errorReference, isLoading: isLoadingReference, isFetching: isFetchingReference, isPaused: isPausedReference, isPending: isPendingReference, isPlaceholderData: isPlaceholderDataReference, } = useReference({
76
+ id: currentValue,
77
+ reference,
78
+ // @ts-ignore the types of the queryOptions for the getMAny and getList are not compatible
79
+ options: {
80
+ enabled: currentValue != null && currentValue !== '',
81
+ meta,
82
+ ...otherQueryOptions,
83
+ },
84
+ });
85
+ const isPending =
86
+ // The reference query isn't enabled when there is no value yet but as it has no data, react-query will flag it as pending
87
+ (currentValue != null && currentValue !== '' && isPendingReference) ||
88
+ isPendingPossibleValues;
89
+ const isPaused = isPausedReference || isPausedPossibleValues;
90
+ // We need to delay the update of the referenceRecord and the finalData
91
+ // to the next React state update, because otherwise it can raise a warning
92
+ // with AutocompleteInput saying the current value is not in the list of choices
93
+ const [referenceRecord, setReferenceRecord] = useState(undefined);
94
+ useEffect(() => {
95
+ setReferenceRecord(currentReferenceRecord);
96
+ }, [currentReferenceRecord]);
97
+ // add current value to possible sources
98
+ const { finalData, finalTotal } = useMemo(() => {
99
+ if (isPaused && possibleValuesData == null && referenceRecord == null) {
100
+ return {
101
+ finalData: null,
102
+ finalTotal: null,
103
+ };
104
+ }
105
+ if (referenceRecord == null ||
106
+ possibleValuesData == null ||
107
+ (possibleValuesData ?? []).find(record => record.id === referenceRecord.id)) {
108
+ // Here we might have the referenceRecord but no data (because of enableGetChoices for instance)
109
+ const finalData = possibleValuesData ?? [];
110
+ if (referenceRecord &&
111
+ finalData.find(r => r.id === referenceRecord.id) == null) {
112
+ finalData.push(referenceRecord);
113
+ }
114
+ return {
115
+ finalData,
116
+ finalTotal: total ?? finalData.length,
117
+ };
118
+ }
119
+ else {
120
+ return {
121
+ finalData: [referenceRecord, ...(possibleValuesData ?? [])],
122
+ finalTotal: total == null ? undefined : total + 1,
123
+ };
124
+ }
125
+ }, [isPaused, referenceRecord, possibleValuesData, total]);
126
+ const refetch = useCallback(() => {
127
+ refetchGetList();
128
+ refetchReference();
129
+ }, [refetchGetList, refetchReference]);
130
+ const currentSort = useMemo(() => ({
131
+ field: params.sort,
132
+ order: params.order,
133
+ }), [params.sort, params.order]);
134
+ return useMemo(() => ({
135
+ sort: currentSort,
136
+ // TODO v6: we shouldn't return a default empty array. This is actually enforced at the type level in other hooks such as useListController
137
+ allChoices: finalData ?? [],
138
+ // TODO v6: same as above
139
+ availableChoices: possibleValuesData ?? [],
140
+ // TODO v6: same as above
141
+ selectedChoices: referenceRecord ? [referenceRecord] : [],
142
+ displayedFilters: params.displayedFilters,
143
+ error: errorReference || errorPossibleValues,
144
+ filter: params.filter,
145
+ filterValues: params.filterValues,
146
+ hideFilter: paramsModifiers.hideFilter,
147
+ isFetching: isFetchingReference || isFetchingPossibleValues,
148
+ isLoading: isLoadingReference || isLoadingPossibleValues,
149
+ isPaused: isPausedReference || isPausedPossibleValues,
150
+ isPending,
151
+ isPlaceholderData: isPlaceholderDataReference ||
152
+ isPlaceholderDataPossibleValues,
153
+ page: params.page,
154
+ perPage: params.perPage,
155
+ refetch,
156
+ resource: reference,
157
+ setFilters: paramsModifiers.setFilters,
158
+ setPage: paramsModifiers.setPage,
159
+ setPerPage: paramsModifiers.setPerPage,
160
+ setSort: paramsModifiers.setSort,
161
+ showFilter: paramsModifiers.showFilter,
162
+ // we return source and not finalSource because child inputs (e.g. AutocompleteInput) already call useInput and compute the final source
163
+ source,
164
+ total: finalTotal,
165
+ hasNextPage: pageInfo
166
+ ? pageInfo.hasNextPage
167
+ : total != null
168
+ ? params.page * params.perPage < total
169
+ : undefined,
170
+ hasPreviousPage: pageInfo
171
+ ? pageInfo.hasPreviousPage
172
+ : params.page > 1,
173
+ isFromReference: true,
174
+ }), [
175
+ currentSort,
176
+ errorPossibleValues,
177
+ errorReference,
178
+ finalData,
179
+ finalTotal,
180
+ isFetchingPossibleValues,
181
+ isFetchingReference,
182
+ isLoadingPossibleValues,
183
+ isLoadingReference,
184
+ isPausedPossibleValues,
185
+ isPausedReference,
186
+ isPending,
187
+ isPlaceholderDataReference,
188
+ isPlaceholderDataPossibleValues,
189
+ pageInfo,
190
+ params.displayedFilters,
191
+ params.filter,
192
+ params.filterValues,
193
+ params.page,
194
+ params.perPage,
195
+ paramsModifiers.hideFilter,
196
+ paramsModifiers.setFilters,
197
+ paramsModifiers.setPage,
198
+ paramsModifiers.setPerPage,
199
+ paramsModifiers.setSort,
200
+ paramsModifiers.showFilter,
201
+ possibleValuesData,
202
+ reference,
203
+ referenceRecord,
204
+ refetch,
205
+ source,
206
+ total,
207
+ ]);
208
+ };
@@ -0,0 +1,106 @@
1
+ import { SortPayload, FilterPayload } from '../../types';
2
+ /**
3
+ * Get the reference inputs parameters (page, sort, filters) and modifiers.
4
+ *
5
+ * @returns {Array} A tuple [parameters, modifiers].
6
+ * Destructure as [
7
+ * { page, perPage, sort, order, filter, filterValues, displayedFilters, requestSignature },
8
+ * { setFilters, hideFilter, showFilter, setPage, setPerPage, setSort }
9
+ * ]
10
+ *
11
+ * @example
12
+ *
13
+ * const [referenceParams, referenceParamsActions] = useReferenceParams({
14
+ * resource: 'posts',
15
+ * filterDefaultValues: {
16
+ * published: true
17
+ * },
18
+ * sort: {
19
+ * field: 'published_at',
20
+ * order: 'DESC'
21
+ * },
22
+ * perPage: 25
23
+ * });
24
+ *
25
+ * const {
26
+ * page,
27
+ * perPage,
28
+ * sort,
29
+ * order,
30
+ * filter,
31
+ * filterValues,
32
+ * displayedFilters,
33
+ * requestSignature
34
+ * } = referenceParams;
35
+ *
36
+ * const {
37
+ * setFilters,
38
+ * hideFilter,
39
+ * showFilter,
40
+ * setPage,
41
+ * setPerPage,
42
+ * setSort,
43
+ * } = referenceParamsActions;
44
+ */
45
+ export declare const useReferenceParams: ({ resource, filter, sort, page, perPage, debounce, }: ReferenceParamsOptions) => [Parameters, Modifiers];
46
+ export declare const validQueryParams: string[];
47
+ /**
48
+ * Merge list params from 2 different sources:
49
+ * - the params stored in the local state
50
+ * - the props passed to the List component (including the filter defaultValues)
51
+ */
52
+ export declare const getQuery: ({ params, filterDefaultValues, sort, page, perPage, }: {
53
+ params: any;
54
+ filterDefaultValues: any;
55
+ sort: any;
56
+ page: any;
57
+ perPage: any;
58
+ }) => ReferenceParams;
59
+ /**
60
+ * Check if user has already set custom sort, page, or filters for this list
61
+ *
62
+ * User params come from the Redux store as the params props. By default,
63
+ * this object is:
64
+ *
65
+ * { filter: {}, order: null, page: 1, perPage: null, sort: null }
66
+ *
67
+ * To check if the user has custom params, we must compare the params
68
+ * to these initial values.
69
+ *
70
+ * @param {Object} params
71
+ */
72
+ export declare const hasCustomParams: (params: ReferenceParams) => any;
73
+ export declare const getNumberOrDefault: (possibleNumber: string | number | undefined, defaultValue: number) => number;
74
+ export interface ReferenceParamsOptions {
75
+ resource: string;
76
+ page?: number;
77
+ perPage?: number;
78
+ sort?: SortPayload;
79
+ filter?: FilterPayload;
80
+ debounce?: number;
81
+ }
82
+ export interface ReferenceParams {
83
+ sort: string;
84
+ order: 'ASC' | 'DESC';
85
+ page: number;
86
+ perPage: number;
87
+ filter: any;
88
+ displayedFilters: any;
89
+ }
90
+ interface Parameters extends ReferenceParams {
91
+ filterValues: object;
92
+ displayedFilters: {
93
+ [key: string]: boolean;
94
+ };
95
+ requestSignature: any[];
96
+ }
97
+ interface Modifiers {
98
+ changeParams: (action: any) => void;
99
+ setPage: (page: number) => void;
100
+ setPerPage: (pageSize: number) => void;
101
+ setSort: (sort: SortPayload) => void;
102
+ setFilters: (filters: any, displayedFilters?: any, debounce?: boolean) => void;
103
+ hideFilter: (filterName: string) => void;
104
+ showFilter: (filterName: string, defaultValue: any) => void;
105
+ }
106
+ export {};