@refinedev/core 4.47.2 → 4.48.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 (409) hide show
  1. package/CHANGELOG.md +2944 -2919
  2. package/dist/components/authenticated/index.d.ts.map +1 -1
  3. package/dist/components/autoSaveIndicator/index.d.ts.map +1 -1
  4. package/dist/components/canAccess/index.d.ts.map +1 -1
  5. package/dist/components/containers/refine/index.d.ts.map +1 -1
  6. package/dist/components/layoutWrapper/index.d.ts.map +1 -1
  7. package/dist/components/pages/auth/components/forgotPassword/index.d.ts.map +1 -1
  8. package/dist/components/pages/auth/components/login/index.d.ts.map +1 -1
  9. package/dist/components/pages/auth/components/register/index.d.ts.map +1 -1
  10. package/dist/components/pages/auth/components/updatePassword/index.d.ts.map +1 -1
  11. package/dist/components/pages/auth/index.d.ts.map +1 -1
  12. package/dist/components/pages/config-error/index.d.ts.map +1 -1
  13. package/dist/components/pages/config-success/index.d.ts.map +1 -1
  14. package/dist/components/pages/login/index.d.ts.map +1 -1
  15. package/dist/components/pages/ready/index.d.ts.map +1 -1
  16. package/dist/components/undoableQueue/index.d.ts.map +1 -1
  17. package/dist/contexts/accessControl/IAccessControlContext.d.ts.map +1 -1
  18. package/dist/contexts/accessControl/index.d.ts.map +1 -1
  19. package/dist/contexts/auditLog/IAuditLogContext.d.ts.map +1 -1
  20. package/dist/contexts/auditLog/index.d.ts.map +1 -1
  21. package/dist/contexts/auth/IAuthContext.d.ts +1 -1
  22. package/dist/contexts/auth/IAuthContext.d.ts.map +1 -1
  23. package/dist/contexts/auth/index.d.ts.map +1 -1
  24. package/dist/contexts/data/IDataContext.d.ts.map +1 -1
  25. package/dist/contexts/data/index.d.ts.map +1 -1
  26. package/dist/contexts/legacy-router/IRouterContext.d.ts.map +1 -1
  27. package/dist/contexts/legacy-router/index.d.ts.map +1 -1
  28. package/dist/contexts/live/ILiveContext.d.ts.map +1 -1
  29. package/dist/contexts/live/index.d.ts.map +1 -1
  30. package/dist/contexts/notification/INotificationContext.d.ts.map +1 -1
  31. package/dist/contexts/notification/index.d.ts.map +1 -1
  32. package/dist/contexts/refine/IRefineContext.d.ts.map +1 -1
  33. package/dist/contexts/refine/index.d.ts.map +1 -1
  34. package/dist/contexts/resource/IResourceContext.d.ts.map +1 -1
  35. package/dist/contexts/resource/index.d.ts.map +1 -1
  36. package/dist/contexts/router/index.d.ts.map +1 -1
  37. package/dist/contexts/translation/ITranslationContext.d.ts.map +1 -1
  38. package/dist/contexts/translation/index.d.ts.map +1 -1
  39. package/dist/contexts/undoableQueue/IUndoableQueueContext.d.ts.map +1 -1
  40. package/dist/contexts/undoableQueue/actionTypes.d.ts.map +1 -1
  41. package/dist/contexts/undoableQueue/index.d.ts.map +1 -1
  42. package/dist/contexts/undoableQueue/undoableQueueContext.d.ts.map +1 -1
  43. package/dist/contexts/unsavedWarn/IUnsavedWarnContext.d.ts.map +1 -1
  44. package/dist/definitions/helpers/check-router-prop-misuse/index.d.ts.map +1 -1
  45. package/dist/definitions/helpers/downloadInBrowser/index.d.ts.map +1 -1
  46. package/dist/definitions/helpers/flatten-object-keys/index.d.ts.map +1 -1
  47. package/dist/definitions/helpers/generateDocumentTitle/index.d.ts.map +1 -1
  48. package/dist/definitions/helpers/handlePaginationParams/index.d.ts.map +1 -1
  49. package/dist/definitions/helpers/handleRefineOptions/index.d.ts.map +1 -1
  50. package/dist/definitions/helpers/hasPermission/index.d.ts.map +1 -1
  51. package/dist/definitions/helpers/importCSVMapper/index.d.ts.map +1 -1
  52. package/dist/definitions/helpers/index.d.ts.map +1 -1
  53. package/dist/definitions/helpers/keys/index.d.ts +0 -11
  54. package/dist/definitions/helpers/keys/index.d.ts.map +1 -1
  55. package/dist/definitions/helpers/legacy-resource-transform/index.d.ts.map +1 -1
  56. package/dist/definitions/helpers/menu/create-resource-key.d.ts.map +1 -1
  57. package/dist/definitions/helpers/menu/create-tree.d.ts.map +1 -1
  58. package/dist/definitions/helpers/pick-resource/index.d.ts.map +1 -1
  59. package/dist/definitions/helpers/pickDataProvider/index.d.ts.map +1 -1
  60. package/dist/definitions/helpers/queryKeys/index.d.ts.map +1 -1
  61. package/dist/definitions/helpers/redirectPage/index.d.ts.map +1 -1
  62. package/dist/definitions/helpers/routeGenerator/index.d.ts.map +1 -1
  63. package/dist/definitions/helpers/router/compose-route.d.ts.map +1 -1
  64. package/dist/definitions/helpers/router/get-action-routes-from-resource.d.ts.map +1 -1
  65. package/dist/definitions/helpers/router/get-default-action-path.d.ts.map +1 -1
  66. package/dist/definitions/helpers/router/get-parent-prefix-for-resource.d.ts.map +1 -1
  67. package/dist/definitions/helpers/router/get-parent-resource.d.ts.map +1 -1
  68. package/dist/definitions/helpers/router/match-resource-from-route.d.ts.map +1 -1
  69. package/dist/definitions/helpers/router/pick-matched-route.d.ts.map +1 -1
  70. package/dist/definitions/helpers/router/prepare-route-params.d.ts.map +1 -1
  71. package/dist/definitions/helpers/safe-translate/index.d.ts.map +1 -1
  72. package/dist/definitions/helpers/sanitize-resource/index.d.ts.map +1 -1
  73. package/dist/definitions/helpers/sequentialPromises/index.d.ts.map +1 -1
  74. package/dist/definitions/helpers/treeView/createTreeView/index.d.ts.map +1 -1
  75. package/dist/definitions/helpers/useActiveAuthProvider/index.d.ts +2 -2
  76. package/dist/definitions/helpers/useUserFriendlyName/index.d.ts.map +1 -1
  77. package/dist/definitions/helpers/userFriendlyResourceName/index.d.ts.map +1 -1
  78. package/dist/definitions/table/index.d.ts.map +1 -1
  79. package/dist/esm/index.js +18 -18
  80. package/dist/esm/index.js.map +1 -1
  81. package/dist/hooks/accessControl/useCan/index.d.ts.map +1 -1
  82. package/dist/hooks/accessControl/useCanWithoutCache.d.ts.map +1 -1
  83. package/dist/hooks/auditLog/useLog/index.d.ts.map +1 -1
  84. package/dist/hooks/auditLog/useLogList/index.d.ts.map +1 -1
  85. package/dist/hooks/auth/useForgotPassword/index.d.ts.map +1 -1
  86. package/dist/hooks/auth/useGetIdentity/index.d.ts.map +1 -1
  87. package/dist/hooks/auth/useIsAuthenticated/index.d.ts.map +1 -1
  88. package/dist/hooks/auth/useLogin/index.d.ts.map +1 -1
  89. package/dist/hooks/auth/useLogout/index.d.ts.map +1 -1
  90. package/dist/hooks/auth/useOnError/index.d.ts.map +1 -1
  91. package/dist/hooks/auth/usePermissions/index.d.ts +9 -6
  92. package/dist/hooks/auth/usePermissions/index.d.ts.map +1 -1
  93. package/dist/hooks/auth/useRegister/index.d.ts.map +1 -1
  94. package/dist/hooks/auth/useUpdatePassword/index.d.ts.map +1 -1
  95. package/dist/hooks/breadcrumb/index.d.ts.map +1 -1
  96. package/dist/hooks/data/useApiUrl.d.ts.map +1 -1
  97. package/dist/hooks/data/useCreate.d.ts.map +1 -1
  98. package/dist/hooks/data/useCreateMany.d.ts.map +1 -1
  99. package/dist/hooks/data/useCustom.d.ts.map +1 -1
  100. package/dist/hooks/data/useCustomMutation.d.ts.map +1 -1
  101. package/dist/hooks/data/useDataProvider.d.ts.map +1 -1
  102. package/dist/hooks/data/useDelete.d.ts.map +1 -1
  103. package/dist/hooks/data/useDeleteMany.d.ts.map +1 -1
  104. package/dist/hooks/data/useInfiniteList.d.ts.map +1 -1
  105. package/dist/hooks/data/useList.d.ts.map +1 -1
  106. package/dist/hooks/data/useMany.d.ts.map +1 -1
  107. package/dist/hooks/data/useOne.d.ts.map +1 -1
  108. package/dist/hooks/data/useUpdate.d.ts.map +1 -1
  109. package/dist/hooks/data/useUpdateMany.d.ts.map +1 -1
  110. package/dist/hooks/export/csvDownload.interface.d.ts.map +1 -1
  111. package/dist/hooks/export/index.d.ts +1 -1
  112. package/dist/hooks/export/index.d.ts.map +1 -1
  113. package/dist/hooks/form/useForm.d.ts.map +1 -1
  114. package/dist/hooks/import/index.d.ts.map +1 -1
  115. package/dist/hooks/invalidate/index.d.ts.map +1 -1
  116. package/dist/hooks/live/useLiveMode/index.d.ts.map +1 -1
  117. package/dist/hooks/live/useResourceSubscription/index.d.ts.map +1 -1
  118. package/dist/hooks/live/useSubscription/index.d.ts.map +1 -1
  119. package/dist/hooks/menu/useMenu.d.ts.map +1 -1
  120. package/dist/hooks/modal/useModal/index.d.ts.map +1 -1
  121. package/dist/hooks/navigation/index.d.ts.map +1 -1
  122. package/dist/hooks/notification/useCancelNotification/index.d.ts.map +1 -1
  123. package/dist/hooks/notification/useHandleNotification/index.d.ts.map +1 -1
  124. package/dist/hooks/redirection/index.d.ts.map +1 -1
  125. package/dist/hooks/refine/useMutationMode.d.ts.map +1 -1
  126. package/dist/hooks/refine/useSyncWithLocation.d.ts.map +1 -1
  127. package/dist/hooks/refine/useWarnAboutChange/index.d.ts.map +1 -1
  128. package/dist/hooks/resource/useResource/index.d.ts.map +1 -1
  129. package/dist/hooks/router/use-get-to-path/index.d.ts.map +1 -1
  130. package/dist/hooks/router/use-go/index.d.ts.map +1 -1
  131. package/dist/hooks/router/use-link/index.d.ts.map +1 -1
  132. package/dist/hooks/router/use-parse/index.d.ts.map +1 -1
  133. package/dist/hooks/router/use-to-path/index.d.ts.map +1 -1
  134. package/dist/hooks/show/useShow.d.ts.map +1 -1
  135. package/dist/hooks/translate/useSetLocale.d.ts.map +1 -1
  136. package/dist/hooks/translate/useTranslate.d.ts.map +1 -1
  137. package/dist/hooks/useLoadingOvertime/index.d.ts.map +1 -1
  138. package/dist/hooks/useSelect/index.d.ts +18 -4
  139. package/dist/hooks/useSelect/index.d.ts.map +1 -1
  140. package/dist/hooks/useTable/index.d.ts.map +1 -1
  141. package/dist/iife/index.js +18 -18
  142. package/dist/iife/index.js.map +1 -1
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +18 -18
  145. package/dist/index.js.map +1 -1
  146. package/dist/interfaces/actions.d.ts.map +1 -1
  147. package/dist/interfaces/auditLog/logData.d.ts.map +1 -1
  148. package/dist/interfaces/auth.d.ts.map +1 -1
  149. package/dist/interfaces/autoSave.d.ts.map +1 -1
  150. package/dist/interfaces/bindings/access-control.d.ts.map +1 -1
  151. package/dist/interfaces/bindings/auth.d.ts +1 -1
  152. package/dist/interfaces/bindings/auth.d.ts.map +1 -1
  153. package/dist/interfaces/bindings/data.d.ts.map +1 -1
  154. package/dist/interfaces/bindings/i18n.d.ts.map +1 -1
  155. package/dist/interfaces/bindings/index.d.ts.map +1 -1
  156. package/dist/interfaces/bindings/live.d.ts.map +1 -1
  157. package/dist/interfaces/bindings/notifications.d.ts.map +1 -1
  158. package/dist/interfaces/bindings/resource.d.ts.map +1 -1
  159. package/dist/interfaces/bindings/router.d.ts.map +1 -1
  160. package/dist/interfaces/customComponents.d.ts.map +1 -1
  161. package/dist/interfaces/errors/HttpError.d.ts.map +1 -1
  162. package/dist/interfaces/form-url-params.d.ts.map +1 -1
  163. package/dist/interfaces/index.d.ts.map +1 -1
  164. package/dist/interfaces/live/LiveEvent.d.ts.map +1 -1
  165. package/dist/interfaces/live/LiveModeProps.d.ts.map +1 -1
  166. package/dist/interfaces/mapDataFn.d.ts.map +1 -1
  167. package/dist/interfaces/metaData/graphqlQueryOptions.d.ts.map +1 -1
  168. package/dist/interfaces/metaData/metaDataQuery.d.ts.map +1 -1
  169. package/dist/interfaces/metaData/metaQuery.d.ts.map +1 -1
  170. package/dist/interfaces/metaData/nestedField.d.ts.map +1 -1
  171. package/dist/interfaces/metaData/queryBuilderOptions.d.ts.map +1 -1
  172. package/dist/interfaces/metaData/variableOptions.d.ts.map +1 -1
  173. package/dist/interfaces/mutationMode.d.ts.map +1 -1
  174. package/dist/interfaces/notification.d.ts.map +1 -1
  175. package/dist/interfaces/optimistic-update-map.d.ts.map +1 -1
  176. package/dist/interfaces/prettify.d.ts.map +1 -1
  177. package/dist/interfaces/queryKey.d.ts.map +1 -1
  178. package/dist/interfaces/resourceErrorRouterParams.d.ts.map +1 -1
  179. package/dist/interfaces/resourceRouterParams.d.ts.map +1 -1
  180. package/dist/interfaces/successErrorNotification.d.ts +4 -4
  181. package/dist/interfaces/successErrorNotification.d.ts.map +1 -1
  182. package/dist/interfaces/telemetry.d.ts.map +1 -1
  183. package/dist/interfaces/textTransformers.d.ts.map +1 -1
  184. package/package.json +2 -2
  185. package/refine.config.js +99 -102
  186. package/src/components/authenticated/index.tsx +157 -159
  187. package/src/components/autoSaveIndicator/index.tsx +23 -27
  188. package/src/components/canAccess/index.tsx +93 -93
  189. package/src/components/containers/refine/index.tsx +312 -353
  190. package/src/components/gh-banner/index.tsx +235 -242
  191. package/src/components/gh-banner/styles.ts +5 -5
  192. package/src/components/layoutWrapper/defaultLayout/index.tsx +1 -1
  193. package/src/components/layoutWrapper/index.tsx +87 -87
  194. package/src/components/pages/auth/components/forgotPassword/index.tsx +87 -96
  195. package/src/components/pages/auth/components/login/index.tsx +166 -181
  196. package/src/components/pages/auth/components/register/index.tsx +141 -159
  197. package/src/components/pages/auth/components/updatePassword/index.tsx +81 -87
  198. package/src/components/pages/auth/index.tsx +28 -28
  199. package/src/components/pages/config-error/index.tsx +422 -422
  200. package/src/components/pages/config-success/index.tsx +249 -260
  201. package/src/components/pages/error/index.tsx +48 -48
  202. package/src/components/pages/login/index.tsx +59 -73
  203. package/src/components/pages/ready/index.tsx +21 -29
  204. package/src/components/pages/welcome/index.tsx +7 -7
  205. package/src/components/routeChangeHandler/index.tsx +7 -7
  206. package/src/components/telemetry/index.tsx +31 -31
  207. package/src/components/undoableQueue/index.tsx +49 -49
  208. package/src/contexts/accessControl/IAccessControlContext.ts +34 -34
  209. package/src/contexts/accessControl/index.tsx +35 -35
  210. package/src/contexts/auditLog/IAuditLogContext.ts +22 -22
  211. package/src/contexts/auditLog/index.tsx +8 -8
  212. package/src/contexts/auth/IAuthContext.ts +10 -10
  213. package/src/contexts/auth/index.tsx +169 -169
  214. package/src/contexts/data/IDataContext.ts +203 -203
  215. package/src/contexts/data/index.tsx +18 -18
  216. package/src/contexts/legacy-router/IRouterContext.ts +23 -27
  217. package/src/contexts/legacy-router/index.tsx +30 -30
  218. package/src/contexts/live/ILiveContext.ts +49 -49
  219. package/src/contexts/live/index.tsx +5 -7
  220. package/src/contexts/notification/INotificationContext.ts +8 -8
  221. package/src/contexts/notification/index.tsx +8 -8
  222. package/src/contexts/refine/IRefineContext.ts +119 -119
  223. package/src/contexts/refine/index.tsx +80 -80
  224. package/src/contexts/resource/IResourceContext.ts +35 -35
  225. package/src/contexts/resource/index.tsx +16 -16
  226. package/src/contexts/router/index.tsx +7 -7
  227. package/src/contexts/router-picker/index.tsx +2 -2
  228. package/src/contexts/translation/ITranslationContext.ts +7 -7
  229. package/src/contexts/translation/index.tsx +12 -12
  230. package/src/contexts/undoableQueue/IUndoableQueueContext.ts +2 -2
  231. package/src/contexts/undoableQueue/actionTypes.ts +3 -3
  232. package/src/contexts/undoableQueue/index.ts +2 -2
  233. package/src/contexts/undoableQueue/undoableQueueContext.tsx +59 -60
  234. package/src/contexts/unsavedWarn/IUnsavedWarnContext.ts +2 -2
  235. package/src/contexts/unsavedWarn/index.tsx +7 -7
  236. package/src/definitions/helpers/check-router-prop-misuse/index.ts +20 -20
  237. package/src/definitions/helpers/downloadInBrowser/index.ts +19 -20
  238. package/src/definitions/helpers/flatten-object-keys/index.ts +26 -29
  239. package/src/definitions/helpers/generateDocumentTitle/index.ts +39 -45
  240. package/src/definitions/helpers/handleMultiple/index.ts +4 -4
  241. package/src/definitions/helpers/handlePaginationParams/index.ts +17 -18
  242. package/src/definitions/helpers/handleRefineOptions/index.ts +88 -90
  243. package/src/definitions/helpers/handleUseParams/index.tsx +7 -7
  244. package/src/definitions/helpers/hasPermission/index.ts +6 -6
  245. package/src/definitions/helpers/humanizeString/index.ts +9 -9
  246. package/src/definitions/helpers/importCSVMapper/index.ts +8 -8
  247. package/src/definitions/helpers/index.ts +2 -2
  248. package/src/definitions/helpers/keys/index.ts +205 -258
  249. package/src/definitions/helpers/legacy-resource-transform/index.ts +14 -14
  250. package/src/definitions/helpers/menu/create-resource-key.ts +20 -23
  251. package/src/definitions/helpers/menu/create-tree.ts +61 -63
  252. package/src/definitions/helpers/pick-resource/index.ts +25 -25
  253. package/src/definitions/helpers/pickDataProvider/index.ts +15 -15
  254. package/src/definitions/helpers/pickNotDeprecated/index.ts +2 -2
  255. package/src/definitions/helpers/property-path-to-array/index.ts +3 -3
  256. package/src/definitions/helpers/queryKeys/index.ts +92 -92
  257. package/src/definitions/helpers/redirectPage/index.ts +19 -19
  258. package/src/definitions/helpers/routeGenerator/index.ts +15 -15
  259. package/src/definitions/helpers/router/__tests__/check-by-segments.ts +12 -15
  260. package/src/definitions/helpers/router/__tests__/compose-route.ts +48 -48
  261. package/src/definitions/helpers/router/__tests__/get-action-routes-from-resource.ts +152 -152
  262. package/src/definitions/helpers/router/__tests__/get-default-action-path.ts +39 -41
  263. package/src/definitions/helpers/router/__tests__/get-parent-prefix-for-resource.ts +69 -73
  264. package/src/definitions/helpers/router/__tests__/get-parent-resource.ts +40 -40
  265. package/src/definitions/helpers/router/__tests__/is-segment-counts-same.ts +11 -14
  266. package/src/definitions/helpers/router/__tests__/match-resource-from-route.ts +55 -55
  267. package/src/definitions/helpers/router/__tests__/pick-matched-route.ts +74 -74
  268. package/src/definitions/helpers/router/__tests__/pick-route-params.ts +12 -12
  269. package/src/definitions/helpers/router/__tests__/prepare-route-params.ts +18 -18
  270. package/src/definitions/helpers/router/__tests__/remove-leading-trailing-slashes.ts +9 -9
  271. package/src/definitions/helpers/router/__tests__/split-to-segments.ts +9 -9
  272. package/src/definitions/helpers/router/check-by-segments.ts +12 -12
  273. package/src/definitions/helpers/router/compose-route.ts +25 -27
  274. package/src/definitions/helpers/router/get-action-routes-from-resource.ts +41 -47
  275. package/src/definitions/helpers/router/get-default-action-path.ts +19 -19
  276. package/src/definitions/helpers/router/get-parent-prefix-for-resource.ts +22 -24
  277. package/src/definitions/helpers/router/get-parent-resource.ts +18 -18
  278. package/src/definitions/helpers/router/is-parameter.ts +1 -1
  279. package/src/definitions/helpers/router/is-segment-counts-same.ts +3 -3
  280. package/src/definitions/helpers/router/match-resource-from-route.ts +19 -19
  281. package/src/definitions/helpers/router/pick-matched-route.ts +44 -44
  282. package/src/definitions/helpers/router/pick-route-params.ts +7 -7
  283. package/src/definitions/helpers/router/prepare-route-params.ts +13 -10
  284. package/src/definitions/helpers/router/remove-leading-trailing-slashes.ts +1 -1
  285. package/src/definitions/helpers/router/split-to-segments.ts +2 -2
  286. package/src/definitions/helpers/safe-translate/index.ts +12 -12
  287. package/src/definitions/helpers/sanitize-resource/index.ts +26 -27
  288. package/src/definitions/helpers/sequentialPromises/index.ts +21 -21
  289. package/src/definitions/helpers/treeView/createTreeView/index.ts +33 -33
  290. package/src/definitions/helpers/useActiveAuthProvider/index.ts +18 -18
  291. package/src/definitions/helpers/useInfinitePagination/index.ts +16 -16
  292. package/src/definitions/helpers/useMediaQuery/index.ts +11 -11
  293. package/src/definitions/helpers/useUserFriendlyName/index.ts +11 -14
  294. package/src/definitions/helpers/userFriendlyResourceName/index.ts +7 -7
  295. package/src/definitions/helpers/userFriendlySeconds/index.ts +1 -1
  296. package/src/definitions/table/index.ts +127 -130
  297. package/src/definitions/upload/file2Base64/index.ts +15 -15
  298. package/src/hooks/accessControl/useCan/index.ts +52 -54
  299. package/src/hooks/accessControl/useCanWithoutCache.ts +25 -26
  300. package/src/hooks/auditLog/useLog/index.ts +114 -114
  301. package/src/hooks/auditLog/useLogList/index.ts +44 -44
  302. package/src/hooks/auth/useForgotPassword/index.ts +158 -163
  303. package/src/hooks/auth/useGetIdentity/index.ts +55 -57
  304. package/src/hooks/auth/useInvalidateAuthStore/index.ts +12 -12
  305. package/src/hooks/auth/useIsAuthenticated/index.ts +44 -48
  306. package/src/hooks/auth/useIsExistAuthentication/index.ts +3 -3
  307. package/src/hooks/auth/useLogin/index.ts +181 -194
  308. package/src/hooks/auth/useLogout/index.ts +175 -177
  309. package/src/hooks/auth/useOnError/index.ts +76 -76
  310. package/src/hooks/auth/usePermissions/index.ts +94 -61
  311. package/src/hooks/auth/useRegister/index.ts +166 -178
  312. package/src/hooks/auth/useUpdatePassword/index.ts +183 -194
  313. package/src/hooks/breadcrumb/index.ts +99 -106
  314. package/src/hooks/data/useApiUrl.ts +7 -8
  315. package/src/hooks/data/useCreate.ts +241 -241
  316. package/src/hooks/data/useCreateMany.ts +219 -226
  317. package/src/hooks/data/useCustom.ts +181 -182
  318. package/src/hooks/data/useCustomMutation.ts +174 -174
  319. package/src/hooks/data/useDataProvider.tsx +27 -29
  320. package/src/hooks/data/useDelete.ts +447 -454
  321. package/src/hooks/data/useDeleteMany.ts +475 -484
  322. package/src/hooks/data/useInfiniteList.ts +280 -280
  323. package/src/hooks/data/useList.ts +280 -283
  324. package/src/hooks/data/useMany.ts +215 -216
  325. package/src/hooks/data/useOne.ts +210 -211
  326. package/src/hooks/data/useUpdate.ts +529 -556
  327. package/src/hooks/data/useUpdateMany.ts +556 -584
  328. package/src/hooks/deepMemo/index.tsx +5 -5
  329. package/src/hooks/export/csvDownload.interface.ts +13 -13
  330. package/src/hooks/export/index.ts +223 -217
  331. package/src/hooks/form/useForm.ts +543 -560
  332. package/src/hooks/import/index.tsx +254 -260
  333. package/src/hooks/invalidate/index.tsx +75 -75
  334. package/src/hooks/legacy-router/useRouterContext.ts +11 -11
  335. package/src/hooks/live/useLiveMode/index.ts +4 -4
  336. package/src/hooks/live/usePublish/index.ts +2 -2
  337. package/src/hooks/live/useResourceSubscription/index.ts +103 -103
  338. package/src/hooks/live/useSubscription/index.ts +77 -77
  339. package/src/hooks/memoized/index.tsx +6 -6
  340. package/src/hooks/menu/useMenu.tsx +113 -120
  341. package/src/hooks/modal/useModal/index.tsx +16 -16
  342. package/src/hooks/navigation/index.ts +362 -392
  343. package/src/hooks/notification/useCancelNotification/index.tsx +5 -5
  344. package/src/hooks/notification/useHandleNotification/index.ts +17 -17
  345. package/src/hooks/notification/useNotification/index.ts +2 -2
  346. package/src/hooks/redirection/index.ts +45 -46
  347. package/src/hooks/refine/useMutationMode.ts +4 -4
  348. package/src/hooks/refine/useRefineContext.ts +36 -36
  349. package/src/hooks/refine/useSyncWithLocation.ts +3 -3
  350. package/src/hooks/refine/useTitle.tsx +2 -2
  351. package/src/hooks/refine/useWarnAboutChange/index.ts +12 -12
  352. package/src/hooks/resource/useResource/index.ts +141 -146
  353. package/src/hooks/resource/useResourceWithRoute/index.ts +12 -12
  354. package/src/hooks/router/use-back/index.tsx +7 -7
  355. package/src/hooks/router/use-get-to-path/index.ts +35 -35
  356. package/src/hooks/router/use-go/index.tsx +66 -66
  357. package/src/hooks/router/use-link/index.tsx +8 -9
  358. package/src/hooks/router/use-parse/index.tsx +13 -13
  359. package/src/hooks/router/use-parsed/index.tsx +4 -4
  360. package/src/hooks/router/use-router-misuse-warning/index.ts +10 -10
  361. package/src/hooks/router/use-to-path/index.ts +10 -10
  362. package/src/hooks/show/useShow.ts +135 -135
  363. package/src/hooks/translate/useGetLocale.ts +2 -2
  364. package/src/hooks/translate/useSetLocale.ts +2 -2
  365. package/src/hooks/translate/useTranslate.ts +24 -25
  366. package/src/hooks/useKeys/index.tsx +7 -7
  367. package/src/hooks/useLoadingOvertime/index.ts +74 -76
  368. package/src/hooks/useMeta/index.ts +20 -20
  369. package/src/hooks/useSelect/index.ts +317 -277
  370. package/src/hooks/useTable/index.ts +483 -507
  371. package/src/hooks/useTelemetryData/index.ts +48 -48
  372. package/src/index.tsx +125 -125
  373. package/src/interfaces/actions.ts +2 -2
  374. package/src/interfaces/auditLog/logData.ts +9 -9
  375. package/src/interfaces/auth.tsx +176 -176
  376. package/src/interfaces/autoSave.ts +37 -37
  377. package/src/interfaces/bindings/access-control.ts +21 -21
  378. package/src/interfaces/bindings/auth.ts +27 -25
  379. package/src/interfaces/bindings/data.ts +2 -2
  380. package/src/interfaces/bindings/i18n.ts +8 -8
  381. package/src/interfaces/bindings/index.ts +15 -15
  382. package/src/interfaces/bindings/live.ts +28 -28
  383. package/src/interfaces/bindings/notifications.ts +8 -8
  384. package/src/interfaces/bindings/resource.ts +127 -127
  385. package/src/interfaces/bindings/router.ts +26 -26
  386. package/src/interfaces/customComponents.ts +17 -17
  387. package/src/interfaces/errors/HttpError.ts +8 -8
  388. package/src/interfaces/form-url-params.ts +6 -6
  389. package/src/interfaces/index.ts +8 -10
  390. package/src/interfaces/live/LiveEvent.ts +10 -10
  391. package/src/interfaces/live/LiveModeProps.ts +21 -21
  392. package/src/interfaces/mapDataFn.ts +1 -1
  393. package/src/interfaces/metaData/graphqlQueryOptions.ts +49 -49
  394. package/src/interfaces/metaData/metaDataQuery.ts +2 -2
  395. package/src/interfaces/metaData/metaQuery.ts +3 -3
  396. package/src/interfaces/metaData/nestedField.ts +3 -3
  397. package/src/interfaces/metaData/queryBuilderOptions.ts +3 -3
  398. package/src/interfaces/metaData/variableOptions.ts +8 -8
  399. package/src/interfaces/mutationMode.ts +14 -14
  400. package/src/interfaces/notification.ts +7 -7
  401. package/src/interfaces/optimistic-update-map.ts +42 -42
  402. package/src/interfaces/prettify.ts +1 -1
  403. package/src/interfaces/queryKey.ts +16 -16
  404. package/src/interfaces/resourceErrorRouterParams.ts +2 -2
  405. package/src/interfaces/resourceRouterParams.ts +3 -3
  406. package/src/interfaces/successErrorNotification.ts +24 -24
  407. package/src/interfaces/telemetry.ts +13 -13
  408. package/src/interfaces/textTransformers.ts +18 -18
  409. package/tsconfig.json +26 -26
@@ -6,217 +6,217 @@ import isEqual from "lodash/isEqual";
6
6
  import warnOnce from "warn-once";
7
7
 
8
8
  import {
9
- useRouterContext,
10
- useSyncWithLocation,
11
- useNavigation,
12
- useList,
13
- useLiveMode,
14
- useRouterType,
15
- useResource,
16
- useParsed,
17
- useMeta,
9
+ useRouterContext,
10
+ useSyncWithLocation,
11
+ useNavigation,
12
+ useList,
13
+ useLiveMode,
14
+ useRouterType,
15
+ useResource,
16
+ useParsed,
17
+ useMeta,
18
18
  } from "@hooks";
19
19
  import {
20
- stringifyTableParams,
21
- parseTableParams,
22
- unionFilters,
23
- setInitialFilters,
24
- setInitialSorters,
25
- unionSorters,
20
+ stringifyTableParams,
21
+ parseTableParams,
22
+ unionFilters,
23
+ setInitialFilters,
24
+ setInitialSorters,
25
+ unionSorters,
26
26
  } from "@definitions/table";
27
27
  import { pickNotDeprecated } from "@definitions/helpers";
28
28
 
29
29
  import {
30
- BaseRecord,
31
- CrudFilters,
32
- CrudSorting,
33
- GetListResponse,
34
- SuccessErrorNotification,
35
- HttpError,
36
- MetaQuery,
37
- LiveModeProps,
38
- Pagination,
39
- Prettify,
30
+ BaseRecord,
31
+ CrudFilters,
32
+ CrudSorting,
33
+ GetListResponse,
34
+ SuccessErrorNotification,
35
+ HttpError,
36
+ MetaQuery,
37
+ LiveModeProps,
38
+ Pagination,
39
+ Prettify,
40
40
  } from "../../interfaces";
41
41
  import { useGo } from "@hooks/router/use-go";
42
42
  import { BaseListProps } from "../data/useList";
43
43
  import {
44
- useLoadingOvertime,
45
- UseLoadingOvertimeOptionsProps,
46
- UseLoadingOvertimeReturnType,
44
+ useLoadingOvertime,
45
+ UseLoadingOvertimeOptionsProps,
46
+ UseLoadingOvertimeReturnType,
47
47
  } from "../useLoadingOvertime";
48
48
 
49
49
  type SetFilterBehavior = "merge" | "replace";
50
50
 
51
51
  export type useTableProps<TQueryFnData, TError, TData> = {
52
- /**
53
- * Resource name for API data interactions
54
- * @default Resource name that it reads from route
55
- */
56
- resource?: string;
57
- /**
58
- * Configuration for pagination
59
- */
60
- pagination?: Pagination;
61
- /**
62
- * Initial page index
63
- * @default 1
64
- * @deprecated `initialCurrent` property is deprecated. Use `pagination.current` instead.
65
- */
66
- initialCurrent?: number;
67
- /**
68
- * Initial number of items per page
69
- * @default 10
70
- * @deprecated `initialPageSize` property is deprecated. Use `pagination.pageSize` instead.
71
- */
72
- initialPageSize?: number;
73
- /**
74
- * Sort configs
75
- */
76
- sorters?: {
77
- /**
78
- * Initial sorter state
79
- */
80
- initial?: CrudSorting;
81
- /**
82
- * Default and unchangeable sorter state
83
- * @default `[]`
84
- */
85
- permanent?: CrudSorting;
86
- /**
87
- * Whether to use server side sorting or not.
88
- * @default "server"
89
- */
90
- mode?: "server" | "off";
91
- };
52
+ /**
53
+ * Resource name for API data interactions
54
+ * @default Resource name that it reads from route
55
+ */
56
+ resource?: string;
57
+ /**
58
+ * Configuration for pagination
59
+ */
60
+ pagination?: Pagination;
61
+ /**
62
+ * Initial page index
63
+ * @default 1
64
+ * @deprecated `initialCurrent` property is deprecated. Use `pagination.current` instead.
65
+ */
66
+ initialCurrent?: number;
67
+ /**
68
+ * Initial number of items per page
69
+ * @default 10
70
+ * @deprecated `initialPageSize` property is deprecated. Use `pagination.pageSize` instead.
71
+ */
72
+ initialPageSize?: number;
73
+ /**
74
+ * Sort configs
75
+ */
76
+ sorters?: {
92
77
  /**
93
78
  * Initial sorter state
94
- * @deprecated `initialSorter` property is deprecated. Use `sorters.initial` instead.
95
79
  */
96
- initialSorter?: CrudSorting;
80
+ initial?: CrudSorting;
97
81
  /**
98
82
  * Default and unchangeable sorter state
99
83
  * @default `[]`
100
- * @deprecated `permanentSorter` property is deprecated. Use `sorters.permanent` instead.
101
84
  */
102
- permanentSorter?: CrudSorting;
85
+ permanent?: CrudSorting;
103
86
  /**
104
- * Filter configs
87
+ * Whether to use server side sorting or not.
88
+ * @default "server"
105
89
  */
106
- filters?: {
107
- /**
108
- * Initial filter state
109
- */
110
- initial?: CrudFilters;
111
- /**
112
- * Default and unchangeable filter state
113
- * @default `[]`
114
- */
115
- permanent?: CrudFilters;
116
- /**
117
- * Default behavior of the `setFilters` function
118
- * @default `"merge"`
119
- */
120
- defaultBehavior?: SetFilterBehavior;
121
- /**
122
- * Whether to use server side filter or not.
123
- * @default "server"
124
- */
125
- mode?: "server" | "off";
126
- };
90
+ mode?: "server" | "off";
91
+ };
92
+ /**
93
+ * Initial sorter state
94
+ * @deprecated `initialSorter` property is deprecated. Use `sorters.initial` instead.
95
+ */
96
+ initialSorter?: CrudSorting;
97
+ /**
98
+ * Default and unchangeable sorter state
99
+ * @default `[]`
100
+ * @deprecated `permanentSorter` property is deprecated. Use `sorters.permanent` instead.
101
+ */
102
+ permanentSorter?: CrudSorting;
103
+ /**
104
+ * Filter configs
105
+ */
106
+ filters?: {
127
107
  /**
128
108
  * Initial filter state
129
- * @deprecated `initialFilter` property is deprecated. Use `filters.initial` instead.
130
109
  */
131
- initialFilter?: CrudFilters;
110
+ initial?: CrudFilters;
132
111
  /**
133
112
  * Default and unchangeable filter state
134
- * @default `[]`
135
- * @deprecated `permanentFilter` property is deprecated. Use `filters.permanent` instead.
113
+ * @default `[]`
136
114
  */
137
- permanentFilter?: CrudFilters;
115
+ permanent?: CrudFilters;
138
116
  /**
139
117
  * Default behavior of the `setFilters` function
140
118
  * @default `"merge"`
141
- * @deprecated `defaultSetFilterBehavior` property is deprecated. Use `filters.defaultBehavior` instead.
142
- */
143
- defaultSetFilterBehavior?: SetFilterBehavior;
144
- /**
145
- * Whether to use server side pagination or not.
146
- * @default `true`
147
- * @deprecated `hasPagination` property is deprecated. Use `pagination.mode` instead.
148
- */
149
- hasPagination?: boolean;
150
- /**
151
- * Sortings, filters, page index and records shown per page are tracked by browser history
152
- * @default Value set in [Refine](/docs/api-reference/core/components/refine-config/#syncwithlocation). If a custom resource is given, it will be `false`
153
- */
154
- syncWithLocation?: boolean;
155
- /**
156
- * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options
157
- */
158
- queryOptions?: UseQueryOptions<
159
- GetListResponse<TQueryFnData>,
160
- TError,
161
- GetListResponse<TData>
162
- >;
163
- /**
164
- * Metadata query for dataProvider
165
119
  */
166
- meta?: MetaQuery;
120
+ defaultBehavior?: SetFilterBehavior;
167
121
  /**
168
- * Metadata query for dataProvider
169
- * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.
122
+ * Whether to use server side filter or not.
123
+ * @default "server"
170
124
  */
171
- metaData?: MetaQuery;
172
- /**
173
- * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.
174
- */
175
- dataProviderName?: string;
176
- } & SuccessErrorNotification<
177
- GetListResponse<TData>,
125
+ mode?: "server" | "off";
126
+ };
127
+ /**
128
+ * Initial filter state
129
+ * @deprecated `initialFilter` property is deprecated. Use `filters.initial` instead.
130
+ */
131
+ initialFilter?: CrudFilters;
132
+ /**
133
+ * Default and unchangeable filter state
134
+ * @default `[]`
135
+ * @deprecated `permanentFilter` property is deprecated. Use `filters.permanent` instead.
136
+ */
137
+ permanentFilter?: CrudFilters;
138
+ /**
139
+ * Default behavior of the `setFilters` function
140
+ * @default `"merge"`
141
+ * @deprecated `defaultSetFilterBehavior` property is deprecated. Use `filters.defaultBehavior` instead.
142
+ */
143
+ defaultSetFilterBehavior?: SetFilterBehavior;
144
+ /**
145
+ * Whether to use server side pagination or not.
146
+ * @default `true`
147
+ * @deprecated `hasPagination` property is deprecated. Use `pagination.mode` instead.
148
+ */
149
+ hasPagination?: boolean;
150
+ /**
151
+ * Sortings, filters, page index and records shown per page are tracked by browser history
152
+ * @default Value set in [Refine](/docs/api-reference/core/components/refine-config/#syncwithlocation). If a custom resource is given, it will be `false`
153
+ */
154
+ syncWithLocation?: boolean;
155
+ /**
156
+ * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options
157
+ */
158
+ queryOptions?: UseQueryOptions<
159
+ GetListResponse<TQueryFnData>,
178
160
  TError,
179
- Prettify<BaseListProps>
161
+ GetListResponse<TData>
162
+ >;
163
+ /**
164
+ * Metadata query for dataProvider
165
+ */
166
+ meta?: MetaQuery;
167
+ /**
168
+ * Metadata query for dataProvider
169
+ * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.
170
+ */
171
+ metaData?: MetaQuery;
172
+ /**
173
+ * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.
174
+ */
175
+ dataProviderName?: string;
176
+ } & SuccessErrorNotification<
177
+ GetListResponse<TData>,
178
+ TError,
179
+ Prettify<BaseListProps>
180
180
  > &
181
- LiveModeProps &
182
- UseLoadingOvertimeOptionsProps;
181
+ LiveModeProps &
182
+ UseLoadingOvertimeOptionsProps;
183
183
 
184
184
  type ReactSetState<T> = React.Dispatch<React.SetStateAction<T>>;
185
185
 
186
186
  type SyncWithLocationParams = {
187
- pagination: { current?: number; pageSize?: number };
188
- /**
189
- * @deprecated `sorter` is deprecated. Use `sorters` instead.
190
- */
191
- sorter?: CrudSorting;
192
- sorters: CrudSorting;
193
- filters: CrudFilters;
187
+ pagination: { current?: number; pageSize?: number };
188
+ /**
189
+ * @deprecated `sorter` is deprecated. Use `sorters` instead.
190
+ */
191
+ sorter?: CrudSorting;
192
+ sorters: CrudSorting;
193
+ filters: CrudFilters;
194
194
  };
195
195
 
196
196
  export type useTableReturnType<
197
- TData extends BaseRecord = BaseRecord,
198
- TError extends HttpError = HttpError,
197
+ TData extends BaseRecord = BaseRecord,
198
+ TError extends HttpError = HttpError,
199
199
  > = {
200
- tableQueryResult: QueryObserverResult<GetListResponse<TData>, TError>;
201
- /**
202
- * @deprecated `sorter` is deprecated. Use `sorters` instead.
203
- */
204
- sorter: CrudSorting;
205
- sorters: CrudSorting;
206
- /**
207
- * @deprecated `setSorter` is deprecated. Use `setSorters` instead.
208
- */
209
- setSorter: (sorter: CrudSorting) => void;
210
- setSorters: (sorter: CrudSorting) => void;
211
- filters: CrudFilters;
212
- setFilters: ((filters: CrudFilters, behavior?: SetFilterBehavior) => void) &
213
- ((setter: (prevFilters: CrudFilters) => CrudFilters) => void);
214
- createLinkForSyncWithLocation: (params: SyncWithLocationParams) => string;
215
- current: number;
216
- setCurrent: ReactSetState<useTableReturnType["current"]>;
217
- pageSize: number;
218
- setPageSize: ReactSetState<useTableReturnType["pageSize"]>;
219
- pageCount: number;
200
+ tableQueryResult: QueryObserverResult<GetListResponse<TData>, TError>;
201
+ /**
202
+ * @deprecated `sorter` is deprecated. Use `sorters` instead.
203
+ */
204
+ sorter: CrudSorting;
205
+ sorters: CrudSorting;
206
+ /**
207
+ * @deprecated `setSorter` is deprecated. Use `setSorters` instead.
208
+ */
209
+ setSorter: (sorter: CrudSorting) => void;
210
+ setSorters: (sorter: CrudSorting) => void;
211
+ filters: CrudFilters;
212
+ setFilters: ((filters: CrudFilters, behavior?: SetFilterBehavior) => void) &
213
+ ((setter: (prevFilters: CrudFilters) => CrudFilters) => void);
214
+ createLinkForSyncWithLocation: (params: SyncWithLocationParams) => string;
215
+ current: number;
216
+ setCurrent: ReactSetState<useTableReturnType["current"]>;
217
+ pageSize: number;
218
+ setPageSize: ReactSetState<useTableReturnType["pageSize"]>;
219
+ pageCount: number;
220
220
  } & UseLoadingOvertimeReturnType;
221
221
 
222
222
  /**
@@ -236,365 +236,341 @@ const defaultPermanentFilter: CrudFilters = [];
236
236
  const defaultPermanentSorter: CrudSorting = [];
237
237
 
238
238
  export function useTable<
239
- TQueryFnData extends BaseRecord = BaseRecord,
240
- TError extends HttpError = HttpError,
241
- TData extends BaseRecord = TQueryFnData,
239
+ TQueryFnData extends BaseRecord = BaseRecord,
240
+ TError extends HttpError = HttpError,
241
+ TData extends BaseRecord = TQueryFnData,
242
242
  >({
243
- initialCurrent,
244
- initialPageSize,
245
- hasPagination = true,
246
- pagination,
247
- initialSorter,
248
- permanentSorter = defaultPermanentSorter,
249
- defaultSetFilterBehavior,
250
- initialFilter,
251
- permanentFilter = defaultPermanentFilter,
252
- filters: filtersFromProp,
253
- sorters: sortersFromProp,
254
- syncWithLocation: syncWithLocationProp,
255
- resource: resourceFromProp,
256
- successNotification,
257
- errorNotification,
258
- queryOptions,
259
- liveMode: liveModeFromProp,
260
- onLiveEvent,
261
- liveParams,
262
- meta,
263
- metaData,
264
- dataProviderName,
265
- overtimeOptions,
243
+ initialCurrent,
244
+ initialPageSize,
245
+ hasPagination = true,
246
+ pagination,
247
+ initialSorter,
248
+ permanentSorter = defaultPermanentSorter,
249
+ defaultSetFilterBehavior,
250
+ initialFilter,
251
+ permanentFilter = defaultPermanentFilter,
252
+ filters: filtersFromProp,
253
+ sorters: sortersFromProp,
254
+ syncWithLocation: syncWithLocationProp,
255
+ resource: resourceFromProp,
256
+ successNotification,
257
+ errorNotification,
258
+ queryOptions,
259
+ liveMode: liveModeFromProp,
260
+ onLiveEvent,
261
+ liveParams,
262
+ meta,
263
+ metaData,
264
+ dataProviderName,
265
+ overtimeOptions,
266
266
  }: useTableProps<TQueryFnData, TError, TData> = {}): useTableReturnType<
267
- TData,
268
- TError
267
+ TData,
268
+ TError
269
269
  > {
270
- const { syncWithLocation: syncWithLocationContext } = useSyncWithLocation();
271
-
272
- const syncWithLocation = syncWithLocationProp ?? syncWithLocationContext;
273
-
274
- const liveMode = useLiveMode(liveModeFromProp);
275
-
276
- const routerType = useRouterType();
277
- const { useLocation } = useRouterContext();
278
- const { search, pathname } = useLocation();
279
- const getMeta = useMeta();
280
- const parsedParams = useParsed();
281
-
282
- const isServerSideFilteringEnabled =
283
- (filtersFromProp?.mode || "server") === "server";
284
- const isServerSideSortingEnabled =
285
- (sortersFromProp?.mode || "server") === "server";
286
- const hasPaginationString = hasPagination === false ? "off" : "server";
287
- const isPaginationEnabled =
288
- (pagination?.mode ?? hasPaginationString) !== "off";
289
- const prefferedCurrent = pickNotDeprecated(
290
- pagination?.current,
291
- initialCurrent,
292
- );
293
- const prefferedPageSize = pickNotDeprecated(
294
- pagination?.pageSize,
295
- initialPageSize,
296
- );
297
- const preferredMeta = pickNotDeprecated(meta, metaData);
270
+ const { syncWithLocation: syncWithLocationContext } = useSyncWithLocation();
271
+
272
+ const syncWithLocation = syncWithLocationProp ?? syncWithLocationContext;
273
+
274
+ const liveMode = useLiveMode(liveModeFromProp);
275
+
276
+ const routerType = useRouterType();
277
+ const { useLocation } = useRouterContext();
278
+ const { search, pathname } = useLocation();
279
+ const getMeta = useMeta();
280
+ const parsedParams = useParsed();
281
+
282
+ const isServerSideFilteringEnabled =
283
+ (filtersFromProp?.mode || "server") === "server";
284
+ const isServerSideSortingEnabled =
285
+ (sortersFromProp?.mode || "server") === "server";
286
+ const hasPaginationString = hasPagination === false ? "off" : "server";
287
+ const isPaginationEnabled =
288
+ (pagination?.mode ?? hasPaginationString) !== "off";
289
+ const prefferedCurrent = pickNotDeprecated(
290
+ pagination?.current,
291
+ initialCurrent,
292
+ );
293
+ const prefferedPageSize = pickNotDeprecated(
294
+ pagination?.pageSize,
295
+ initialPageSize,
296
+ );
297
+ const preferredMeta = pickNotDeprecated(meta, metaData);
298
298
 
299
- /** `parseTableParams` is redundant with the new routing */
300
- // We want to always parse the query string even when syncWithLocation is
301
- // deactivated, for hotlinking to work properly
302
- const { parsedCurrent, parsedPageSize, parsedSorter, parsedFilters } =
303
- parseTableParams(search ?? "?");
299
+ /** `parseTableParams` is redundant with the new routing */
300
+ // We want to always parse the query string even when syncWithLocation is
301
+ // deactivated, for hotlinking to work properly
302
+ const { parsedCurrent, parsedPageSize, parsedSorter, parsedFilters } =
303
+ parseTableParams(search ?? "?");
304
304
 
305
- const preferredInitialFilters = pickNotDeprecated(
306
- filtersFromProp?.initial,
307
- initialFilter,
308
- );
309
- const preferredPermanentFilters =
310
- pickNotDeprecated(filtersFromProp?.permanent, permanentFilter) ??
311
- defaultPermanentFilter;
305
+ const preferredInitialFilters = pickNotDeprecated(
306
+ filtersFromProp?.initial,
307
+ initialFilter,
308
+ );
309
+ const preferredPermanentFilters =
310
+ pickNotDeprecated(filtersFromProp?.permanent, permanentFilter) ??
311
+ defaultPermanentFilter;
312
312
 
313
- const preferredInitialSorters = pickNotDeprecated(
314
- sortersFromProp?.initial,
315
- initialSorter,
313
+ const preferredInitialSorters = pickNotDeprecated(
314
+ sortersFromProp?.initial,
315
+ initialSorter,
316
+ );
317
+ const preferredPermanentSorters =
318
+ pickNotDeprecated(sortersFromProp?.permanent, permanentSorter) ??
319
+ defaultPermanentSorter;
320
+
321
+ const prefferedFilterBehavior =
322
+ pickNotDeprecated(
323
+ filtersFromProp?.defaultBehavior,
324
+ defaultSetFilterBehavior,
325
+ ) ?? "merge";
326
+
327
+ let defaultCurrent: number;
328
+ let defaultPageSize: number;
329
+ let defaultSorter: CrudSorting | undefined;
330
+ let defaultFilter: CrudFilters | undefined;
331
+
332
+ if (syncWithLocation) {
333
+ defaultCurrent =
334
+ parsedParams?.params?.current || parsedCurrent || prefferedCurrent || 1;
335
+ defaultPageSize =
336
+ parsedParams?.params?.pageSize ||
337
+ parsedPageSize ||
338
+ prefferedPageSize ||
339
+ 10;
340
+ defaultSorter =
341
+ parsedParams?.params?.sorters ||
342
+ (parsedSorter.length ? parsedSorter : preferredInitialSorters);
343
+ defaultFilter =
344
+ parsedParams?.params?.filters ||
345
+ (parsedFilters.length ? parsedFilters : preferredInitialFilters);
346
+ } else {
347
+ defaultCurrent = prefferedCurrent || 1;
348
+ defaultPageSize = prefferedPageSize || 10;
349
+ defaultSorter = preferredInitialSorters;
350
+ defaultFilter = preferredInitialFilters;
351
+ }
352
+
353
+ const { replace } = useNavigation();
354
+ /** New way of `replace` calls to the router is using `useGo` */
355
+ const go = useGo();
356
+
357
+ const { resource, identifier } = useResource(resourceFromProp);
358
+
359
+ const combinedMeta = getMeta({
360
+ resource,
361
+ meta: preferredMeta,
362
+ });
363
+
364
+ React.useEffect(() => {
365
+ warnOnce(
366
+ typeof identifier === "undefined",
367
+ "useTable: `resource` is not defined.",
316
368
  );
317
- const preferredPermanentSorters =
318
- pickNotDeprecated(sortersFromProp?.permanent, permanentSorter) ??
319
- defaultPermanentSorter;
320
-
321
- const prefferedFilterBehavior =
322
- pickNotDeprecated(
323
- filtersFromProp?.defaultBehavior,
324
- defaultSetFilterBehavior,
325
- ) ?? "merge";
326
-
327
- let defaultCurrent: number;
328
- let defaultPageSize: number;
329
- let defaultSorter: CrudSorting | undefined;
330
- let defaultFilter: CrudFilters | undefined;
331
-
332
- if (syncWithLocation) {
333
- defaultCurrent =
334
- parsedParams?.params?.current ||
335
- parsedCurrent ||
336
- prefferedCurrent ||
337
- 1;
338
- defaultPageSize =
339
- parsedParams?.params?.pageSize ||
340
- parsedPageSize ||
341
- prefferedPageSize ||
342
- 10;
343
- defaultSorter =
344
- parsedParams?.params?.sorters ||
345
- (parsedSorter.length ? parsedSorter : preferredInitialSorters);
346
- defaultFilter =
347
- parsedParams?.params?.filters ||
348
- (parsedFilters.length ? parsedFilters : preferredInitialFilters);
349
- } else {
350
- defaultCurrent = prefferedCurrent || 1;
351
- defaultPageSize = prefferedPageSize || 10;
352
- defaultSorter = preferredInitialSorters;
353
- defaultFilter = preferredInitialFilters;
369
+ }, [identifier]);
370
+
371
+ const [sorters, setSorters] = useState<CrudSorting>(
372
+ setInitialSorters(preferredPermanentSorters, defaultSorter ?? []),
373
+ );
374
+ const [filters, setFilters] = useState<CrudFilters>(
375
+ setInitialFilters(preferredPermanentFilters, defaultFilter ?? []),
376
+ );
377
+ const [current, setCurrent] = useState<number>(defaultCurrent);
378
+ const [pageSize, setPageSize] = useState<number>(defaultPageSize);
379
+
380
+ const getCurrentQueryParams = (): object => {
381
+ if (routerType === "new") {
382
+ // We get QueryString parameters that are uncontrolled by refine.
383
+ const { sorters, filters, pageSize, current, ...rest } =
384
+ parsedParams?.params ?? {};
385
+
386
+ return rest;
354
387
  }
355
388
 
356
- const { replace } = useNavigation();
357
- /** New way of `replace` calls to the router is using `useGo` */
358
- const go = useGo();
389
+ // We get QueryString parameters that are uncontrolled by refine.
390
+ const { sorter, filters, pageSize, current, ...rest } = qs.parse(search, {
391
+ ignoreQueryPrefix: true,
392
+ });
359
393
 
360
- const { resource, identifier } = useResource(resourceFromProp);
394
+ return rest;
395
+ };
396
+
397
+ const createLinkForSyncWithLocation = ({
398
+ pagination: { current, pageSize },
399
+ sorter,
400
+ filters,
401
+ }: SyncWithLocationParams) => {
402
+ if (routerType === "new") {
403
+ return (
404
+ go({
405
+ type: "path",
406
+ options: {
407
+ keepHash: true,
408
+ keepQuery: true,
409
+ },
410
+ query: {
411
+ ...(isPaginationEnabled ? { current, pageSize } : {}),
412
+ sorters: sorter,
413
+ filters,
414
+ ...getCurrentQueryParams(),
415
+ },
416
+ }) ?? ""
417
+ );
418
+ }
419
+ const currentQueryParams = qs.parse(search?.substring(1)); // remove first ? character
361
420
 
362
- const combinedMeta = getMeta({
363
- resource,
364
- meta: preferredMeta,
421
+ const stringifyParams = stringifyTableParams({
422
+ pagination: {
423
+ pageSize,
424
+ current,
425
+ },
426
+ sorters: sorters ?? sorter,
427
+ filters,
428
+ ...currentQueryParams,
365
429
  });
366
430
 
367
- React.useEffect(() => {
368
- warnOnce(
369
- typeof identifier === "undefined",
370
- `useTable: \`resource\` is not defined.`,
371
- );
372
- }, [identifier]);
431
+ return `${pathname ?? ""}?${stringifyParams ?? ""}`;
432
+ };
373
433
 
374
- const [sorters, setSorters] = useState<CrudSorting>(
434
+ useEffect(() => {
435
+ if (search === "") {
436
+ setCurrent(defaultCurrent);
437
+ setPageSize(defaultPageSize);
438
+ setSorters(
375
439
  setInitialSorters(preferredPermanentSorters, defaultSorter ?? []),
376
- );
377
- const [filters, setFilters] = useState<CrudFilters>(
440
+ );
441
+ setFilters(
378
442
  setInitialFilters(preferredPermanentFilters, defaultFilter ?? []),
379
- );
380
- const [current, setCurrent] = useState<number>(defaultCurrent);
381
- const [pageSize, setPageSize] = useState<number>(defaultPageSize);
382
-
383
- const createLinkForSyncWithLocation = ({
384
- pagination: { current, pageSize },
385
- sorter,
386
- filters,
387
- }: SyncWithLocationParams) => {
388
- if (routerType === "new") {
389
- return (
390
- go({
391
- type: "path",
392
- options: {
393
- keepHash: true,
394
- keepQuery: true,
395
- },
396
- query: {
397
- ...(isPaginationEnabled ? { current, pageSize } : {}),
398
- sorters: sorter,
399
- filters,
400
- ...currentQueryParams(),
401
- },
402
- }) ?? ""
403
- );
404
- } else {
405
- const currentQueryParams = qs.parse(search?.substring(1)); // remove first ? character
406
-
407
- const stringifyParams = stringifyTableParams({
443
+ );
444
+ }
445
+ }, [search]);
446
+
447
+ useEffect(() => {
448
+ if (syncWithLocation) {
449
+ // Careful! This triggers render
450
+ const queryParams = getCurrentQueryParams();
451
+
452
+ if (routerType === "new") {
453
+ go({
454
+ type: "replace",
455
+ options: {
456
+ keepQuery: true,
457
+ },
458
+ query: {
459
+ ...(isPaginationEnabled ? { pageSize, current } : {}),
460
+ sorters: differenceWith(
461
+ sorters,
462
+ preferredPermanentSorters,
463
+ isEqual,
464
+ ),
465
+ filters: differenceWith(
466
+ filters,
467
+ preferredPermanentFilters,
468
+ isEqual,
469
+ ),
470
+ // ...queryParams,
471
+ },
472
+ });
473
+ } else {
474
+ const stringifyParams = stringifyTableParams({
475
+ ...(isPaginationEnabled
476
+ ? {
408
477
  pagination: {
409
- pageSize,
410
- current,
478
+ pageSize,
479
+ current,
411
480
  },
412
- sorters: sorters ?? sorter,
413
- filters,
414
- ...currentQueryParams,
415
- });
416
- return `${pathname ?? ""}?${stringifyParams ?? ""}`;
417
- }
418
- };
419
-
420
- useEffect(() => {
421
- if (search === "") {
422
- setCurrent(defaultCurrent);
423
- setPageSize(defaultPageSize);
424
- setSorters(
425
- setInitialSorters(
426
- preferredPermanentSorters,
427
- defaultSorter ?? [],
428
- ),
429
- );
430
- setFilters(
431
- setInitialFilters(
432
- preferredPermanentFilters,
433
- defaultFilter ?? [],
434
- ),
435
- );
436
- }
437
- }, [search]);
438
-
439
- const currentQueryParams = (): object => {
440
- if (routerType === "new") {
441
- // We get QueryString parameters that are uncontrolled by refine.
442
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
443
- const { sorters, filters, pageSize, current, ...rest } =
444
- parsedParams?.params ?? {};
445
-
446
- return rest;
447
- } else {
448
- // We get QueryString parameters that are uncontrolled by refine.
449
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
450
- const { sorter, filters, pageSize, current, ...rest } = qs.parse(
451
- search,
452
- {
453
- ignoreQueryPrefix: true,
454
- },
455
- );
456
-
457
- return rest;
458
- }
459
- };
460
-
461
- useEffect(() => {
462
- if (syncWithLocation) {
463
- // Careful! This triggers render
464
- const queryParams = currentQueryParams();
465
-
466
- if (routerType === "new") {
467
- go({
468
- type: "replace",
469
- options: {
470
- keepQuery: true,
471
- },
472
- query: {
473
- ...(isPaginationEnabled ? { pageSize, current } : {}),
474
- sorters: differenceWith(
475
- sorters,
476
- preferredPermanentSorters,
477
- isEqual,
478
- ),
479
- filters: differenceWith(
480
- filters,
481
- preferredPermanentFilters,
482
- isEqual,
483
- ),
484
- // ...queryParams,
485
- },
486
- });
487
- } else {
488
- const stringifyParams = stringifyTableParams({
489
- ...(isPaginationEnabled
490
- ? {
491
- pagination: {
492
- pageSize,
493
- current,
494
- },
495
- }
496
- : {}),
497
- sorters: differenceWith(
498
- sorters,
499
- preferredPermanentSorters,
500
- isEqual,
501
- ),
502
- filters: differenceWith(
503
- filters,
504
- preferredPermanentFilters,
505
- isEqual,
506
- ),
507
- ...queryParams,
508
- });
509
- return replace?.(`${pathname}?${stringifyParams}`, undefined, {
510
- shallow: true,
511
- });
512
- }
513
- }
514
- }, [syncWithLocation, current, pageSize, sorters, filters]);
515
-
516
- const queryResult = useList<TQueryFnData, TError, TData>({
517
- resource: identifier,
518
- hasPagination,
519
- pagination: { current, pageSize, mode: pagination?.mode },
520
- filters: isServerSideFilteringEnabled
521
- ? unionFilters(preferredPermanentFilters, filters)
522
- : undefined,
523
- sorters: isServerSideSortingEnabled
524
- ? unionSorters(preferredPermanentSorters, sorters)
525
- : undefined,
526
- queryOptions,
527
- successNotification,
528
- errorNotification,
529
- meta: combinedMeta,
530
- metaData: combinedMeta,
531
- liveMode,
532
- liveParams,
533
- onLiveEvent,
534
- dataProviderName,
535
- });
536
-
537
- const setFiltersAsMerge = (newFilters: CrudFilters) => {
538
- setFilters((prevFilters) =>
539
- unionFilters(preferredPermanentFilters, newFilters, prevFilters),
540
- );
541
- };
542
-
543
- const setFiltersAsReplace = (newFilters: CrudFilters) => {
544
- setFilters(unionFilters(preferredPermanentFilters, newFilters));
545
- };
546
-
547
- const setFiltersWithSetter = (
548
- setter: (prevFilters: CrudFilters) => CrudFilters,
549
- ) => {
550
- setFilters((prev) =>
551
- unionFilters(preferredPermanentFilters, setter(prev)),
552
- );
553
- };
554
-
555
- const setFiltersFn: useTableReturnType<TQueryFnData>["setFilters"] = (
556
- setterOrFilters,
557
- behavior: SetFilterBehavior = prefferedFilterBehavior,
558
- ) => {
559
- if (typeof setterOrFilters === "function") {
560
- setFiltersWithSetter(setterOrFilters);
561
- } else {
562
- if (behavior === "replace") {
563
- setFiltersAsReplace(setterOrFilters);
564
- } else {
565
- setFiltersAsMerge(setterOrFilters);
566
- }
567
- }
568
- };
569
-
570
- const setSortWithUnion = (newSorter: CrudSorting) => {
571
- setSorters(() => unionSorters(preferredPermanentSorters, newSorter));
572
- };
573
-
574
- const { elapsedTime } = useLoadingOvertime({
575
- isLoading: queryResult.isFetching,
576
- interval: overtimeOptions?.interval,
577
- onInterval: overtimeOptions?.onInterval,
578
- });
481
+ }
482
+ : {}),
483
+ sorters: differenceWith(sorters, preferredPermanentSorters, isEqual),
484
+ filters: differenceWith(filters, preferredPermanentFilters, isEqual),
485
+ ...queryParams,
486
+ });
487
+ return replace?.(`${pathname}?${stringifyParams}`, undefined, {
488
+ shallow: true,
489
+ });
490
+ }
491
+ }
492
+ }, [syncWithLocation, current, pageSize, sorters, filters]);
493
+
494
+ const queryResult = useList<TQueryFnData, TError, TData>({
495
+ resource: identifier,
496
+ hasPagination,
497
+ pagination: { current, pageSize, mode: pagination?.mode },
498
+ filters: isServerSideFilteringEnabled
499
+ ? unionFilters(preferredPermanentFilters, filters)
500
+ : undefined,
501
+ sorters: isServerSideSortingEnabled
502
+ ? unionSorters(preferredPermanentSorters, sorters)
503
+ : undefined,
504
+ queryOptions,
505
+ successNotification,
506
+ errorNotification,
507
+ meta: combinedMeta,
508
+ metaData: combinedMeta,
509
+ liveMode,
510
+ liveParams,
511
+ onLiveEvent,
512
+ dataProviderName,
513
+ });
579
514
 
580
- return {
581
- tableQueryResult: queryResult,
582
- sorters,
583
- setSorters: setSortWithUnion,
584
- sorter: sorters,
585
- setSorter: setSortWithUnion,
586
- filters,
587
- setFilters: setFiltersFn,
588
- current,
589
- setCurrent,
590
- pageSize,
591
- setPageSize,
592
- pageCount: pageSize
593
- ? Math.ceil((queryResult.data?.total ?? 0) / pageSize)
594
- : 1,
595
- createLinkForSyncWithLocation,
596
- overtime: {
597
- elapsedTime,
598
- },
599
- };
515
+ const setFiltersAsMerge = (newFilters: CrudFilters) => {
516
+ setFilters((prevFilters) =>
517
+ unionFilters(preferredPermanentFilters, newFilters, prevFilters),
518
+ );
519
+ };
520
+
521
+ const setFiltersAsReplace = (newFilters: CrudFilters) => {
522
+ setFilters(unionFilters(preferredPermanentFilters, newFilters));
523
+ };
524
+
525
+ const setFiltersWithSetter = (
526
+ setter: (prevFilters: CrudFilters) => CrudFilters,
527
+ ) => {
528
+ setFilters((prev) => unionFilters(preferredPermanentFilters, setter(prev)));
529
+ };
530
+
531
+ const setFiltersFn: useTableReturnType<TQueryFnData>["setFilters"] = (
532
+ setterOrFilters,
533
+ behavior: SetFilterBehavior = prefferedFilterBehavior,
534
+ ) => {
535
+ if (typeof setterOrFilters === "function") {
536
+ setFiltersWithSetter(setterOrFilters);
537
+ } else {
538
+ if (behavior === "replace") {
539
+ setFiltersAsReplace(setterOrFilters);
540
+ } else {
541
+ setFiltersAsMerge(setterOrFilters);
542
+ }
543
+ }
544
+ };
545
+
546
+ const setSortWithUnion = (newSorter: CrudSorting) => {
547
+ setSorters(() => unionSorters(preferredPermanentSorters, newSorter));
548
+ };
549
+
550
+ const { elapsedTime } = useLoadingOvertime({
551
+ isLoading: queryResult.isFetching,
552
+ interval: overtimeOptions?.interval,
553
+ onInterval: overtimeOptions?.onInterval,
554
+ });
555
+
556
+ return {
557
+ tableQueryResult: queryResult,
558
+ sorters,
559
+ setSorters: setSortWithUnion,
560
+ sorter: sorters,
561
+ setSorter: setSortWithUnion,
562
+ filters,
563
+ setFilters: setFiltersFn,
564
+ current,
565
+ setCurrent,
566
+ pageSize,
567
+ setPageSize,
568
+ pageCount: pageSize
569
+ ? Math.ceil((queryResult.data?.total ?? 0) / pageSize)
570
+ : 1,
571
+ createLinkForSyncWithLocation,
572
+ overtime: {
573
+ elapsedTime,
574
+ },
575
+ };
600
576
  }