@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
@@ -1,122 +1,122 @@
1
1
  import { getXRay } from "@refinedev/devtools-internal";
2
2
  import {
3
- useMutation,
4
- UseMutationOptions,
5
- UseMutationResult,
6
- useQueryClient,
3
+ useMutation,
4
+ UseMutationOptions,
5
+ UseMutationResult,
6
+ useQueryClient,
7
7
  } from "@tanstack/react-query";
8
8
 
9
9
  import { ActionTypes } from "@contexts/undoableQueue";
10
10
  import {
11
- pickDataProvider,
12
- pickNotDeprecated,
13
- queryKeysReplacement,
14
- useActiveAuthProvider,
11
+ pickDataProvider,
12
+ pickNotDeprecated,
13
+ queryKeysReplacement,
14
+ useActiveAuthProvider,
15
15
  } from "@definitions/helpers";
16
16
  import {
17
- useCancelNotification,
18
- useDataProvider,
19
- useHandleNotification,
20
- useInvalidate,
21
- useLog,
22
- useMeta,
23
- useMutationMode,
24
- useOnError,
25
- usePublish,
26
- useRefineContext,
27
- useResource,
28
- useTranslate,
17
+ useCancelNotification,
18
+ useDataProvider,
19
+ useHandleNotification,
20
+ useInvalidate,
21
+ useLog,
22
+ useMeta,
23
+ useMutationMode,
24
+ useOnError,
25
+ usePublish,
26
+ useRefineContext,
27
+ useResource,
28
+ useTranslate,
29
29
  } from "@hooks";
30
30
  import { useKeys } from "@hooks/useKeys";
31
31
  import {
32
- BaseKey,
33
- BaseRecord,
34
- DeleteOneResponse,
35
- GetListResponse,
36
- HttpError,
37
- IQueryKeys,
38
- MetaQuery,
39
- MutationMode,
40
- PrevContext as DeleteContext,
41
- PreviousQuery,
42
- SuccessErrorNotification,
32
+ BaseKey,
33
+ BaseRecord,
34
+ DeleteOneResponse,
35
+ GetListResponse,
36
+ HttpError,
37
+ IQueryKeys,
38
+ MetaQuery,
39
+ MutationMode,
40
+ PrevContext as DeleteContext,
41
+ PreviousQuery,
42
+ SuccessErrorNotification,
43
43
  } from "../../interfaces";
44
44
  import {
45
- useLoadingOvertime,
46
- UseLoadingOvertimeOptionsProps,
47
- UseLoadingOvertimeReturnType,
45
+ useLoadingOvertime,
46
+ UseLoadingOvertimeOptionsProps,
47
+ UseLoadingOvertimeReturnType,
48
48
  } from "../useLoadingOvertime";
49
49
 
50
50
  export type DeleteParams<TData, TError, TVariables> = {
51
- /**
52
- * id for mutation function
53
- */
54
- id: BaseKey;
55
- /**
56
- * Resource name for API data interactions
57
- */
58
- resource: string;
59
- /**
60
- * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)
61
- */
62
- mutationMode?: MutationMode;
63
- /**
64
- * Duration in ms to wait before executing the mutation when `mutationMode = "undoable"`
65
- */
66
- undoableTimeout?: number;
67
- /**
68
- * Provides a function to cancel the mutation when `mutationMode = "undoable"`
69
- */
70
- onCancel?: (cancelMutation: () => void) => void;
71
- /**
72
- * Metadata query for dataProvider
73
- */
74
- meta?: MetaQuery;
75
- /**
76
- * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.
77
- */
78
- metaData?: MetaQuery;
79
- /**
80
- * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.
81
- * @default "default"
82
- */
83
- dataProviderName?: string;
84
- /**
85
- * You can use it to manage the invalidations that will occur at the end of the mutation.
86
- */
87
- invalidates?: Array<keyof IQueryKeys>;
88
- /**
89
- * Values for mutation function
90
- */
91
- values?: TVariables;
51
+ /**
52
+ * id for mutation function
53
+ */
54
+ id: BaseKey;
55
+ /**
56
+ * Resource name for API data interactions
57
+ */
58
+ resource: string;
59
+ /**
60
+ * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)
61
+ */
62
+ mutationMode?: MutationMode;
63
+ /**
64
+ * Duration in ms to wait before executing the mutation when `mutationMode = "undoable"`
65
+ */
66
+ undoableTimeout?: number;
67
+ /**
68
+ * Provides a function to cancel the mutation when `mutationMode = "undoable"`
69
+ */
70
+ onCancel?: (cancelMutation: () => void) => void;
71
+ /**
72
+ * Metadata query for dataProvider
73
+ */
74
+ meta?: MetaQuery;
75
+ /**
76
+ * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.
77
+ */
78
+ metaData?: MetaQuery;
79
+ /**
80
+ * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.
81
+ * @default "default"
82
+ */
83
+ dataProviderName?: string;
84
+ /**
85
+ * You can use it to manage the invalidations that will occur at the end of the mutation.
86
+ */
87
+ invalidates?: Array<keyof IQueryKeys>;
88
+ /**
89
+ * Values for mutation function
90
+ */
91
+ values?: TVariables;
92
92
  } & SuccessErrorNotification<DeleteOneResponse<TData>, TError, BaseKey>;
93
93
 
94
94
  export type UseDeleteReturnType<
95
- TData extends BaseRecord = BaseRecord,
96
- TError = HttpError,
97
- TVariables = {},
95
+ TData extends BaseRecord = BaseRecord,
96
+ TError = HttpError,
97
+ TVariables = {},
98
98
  > = UseMutationResult<
99
- DeleteOneResponse<TData>,
100
- TError,
101
- DeleteParams<TData, TError, TVariables>,
102
- DeleteContext<TData>
99
+ DeleteOneResponse<TData>,
100
+ TError,
101
+ DeleteParams<TData, TError, TVariables>,
102
+ DeleteContext<TData>
103
103
  > &
104
- UseLoadingOvertimeReturnType;
104
+ UseLoadingOvertimeReturnType;
105
105
 
106
106
  export type UseDeleteProps<
107
- TData extends BaseRecord = BaseRecord,
108
- TError extends HttpError = HttpError,
109
- TVariables = {},
107
+ TData extends BaseRecord = BaseRecord,
108
+ TError extends HttpError = HttpError,
109
+ TVariables = {},
110
110
  > = {
111
- mutationOptions?: Omit<
112
- UseMutationOptions<
113
- DeleteOneResponse<TData>,
114
- TError,
115
- DeleteParams<TData, TError, TVariables>,
116
- DeleteContext<TData>
117
- >,
118
- "mutationFn" | "onError" | "onSuccess" | "onSettled" | "onMutate"
119
- >;
111
+ mutationOptions?: Omit<
112
+ UseMutationOptions<
113
+ DeleteOneResponse<TData>,
114
+ TError,
115
+ DeleteParams<TData, TError, TVariables>,
116
+ DeleteContext<TData>
117
+ >,
118
+ "mutationFn" | "onError" | "onSuccess" | "onSettled" | "onMutate"
119
+ >;
120
120
  } & UseLoadingOvertimeOptionsProps;
121
121
 
122
122
  /**
@@ -132,377 +132,370 @@ export type UseDeleteProps<
132
132
  *
133
133
  */
134
134
  export const useDelete = <
135
- TData extends BaseRecord = BaseRecord,
136
- TError extends HttpError = HttpError,
137
- TVariables = {},
135
+ TData extends BaseRecord = BaseRecord,
136
+ TError extends HttpError = HttpError,
137
+ TVariables = {},
138
138
  >({
139
- mutationOptions,
140
- overtimeOptions,
139
+ mutationOptions,
140
+ overtimeOptions,
141
141
  }: UseDeleteProps<TData, TError, TVariables> = {}): UseDeleteReturnType<
142
- TData,
143
- TError,
144
- TVariables
142
+ TData,
143
+ TError,
144
+ TVariables
145
145
  > => {
146
- const authProvider = useActiveAuthProvider();
147
- const { mutate: checkError } = useOnError({
148
- v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),
149
- });
150
- const dataProvider = useDataProvider();
151
-
152
- const { resources, select } = useResource();
153
- const queryClient = useQueryClient();
154
-
155
- const {
156
- mutationMode: mutationModeContext,
157
- undoableTimeout: undoableTimeoutContext,
158
- } = useMutationMode();
159
-
160
- const { notificationDispatch } = useCancelNotification();
161
- const translate = useTranslate();
162
- const publish = usePublish();
163
- const { log } = useLog();
164
- const handleNotification = useHandleNotification();
165
- const invalidateStore = useInvalidate();
166
- const getMeta = useMeta();
167
- const {
168
- options: { textTransformers },
169
- } = useRefineContext();
170
- const { keys, preferLegacyKeys } = useKeys();
171
-
172
- const mutation = useMutation<
173
- DeleteOneResponse<TData>,
174
- TError,
175
- DeleteParams<TData, TError, TVariables>,
176
- DeleteContext<TData>
177
- >({
178
- mutationFn: ({
179
- id,
180
- mutationMode,
181
- undoableTimeout,
182
- resource: resourceName,
183
- onCancel,
184
- meta,
185
- metaData,
186
- dataProviderName,
187
- values,
188
- }) => {
189
- const { resource, identifier } = select(resourceName);
190
-
191
- const combinedMeta = getMeta({
192
- resource,
193
- meta: pickNotDeprecated(meta, metaData),
194
- });
195
-
196
- const mutationModePropOrContext =
197
- mutationMode ?? mutationModeContext;
198
-
199
- const undoableTimeoutPropOrContext =
200
- undoableTimeout ?? undoableTimeoutContext;
201
-
202
- if (!(mutationModePropOrContext === "undoable")) {
203
- return dataProvider(
204
- pickDataProvider(identifier, dataProviderName, resources),
205
- ).deleteOne<TData, TVariables>({
206
- resource: resource.name,
207
- id,
208
- meta: combinedMeta,
209
- metaData: combinedMeta,
210
- variables: values,
211
- });
212
- }
213
-
214
- const deletePromise = new Promise<DeleteOneResponse<TData>>(
215
- (resolve, reject) => {
216
- const doMutation = () => {
217
- dataProvider(
218
- pickDataProvider(
219
- identifier,
220
- dataProviderName,
221
- resources,
222
- ),
223
- )
224
- .deleteOne<TData, TVariables>({
225
- resource: resource.name,
226
- id,
227
- meta: combinedMeta,
228
- metaData: combinedMeta,
229
- variables: values,
230
- })
231
- .then((result) => resolve(result))
232
- .catch((err) => reject(err));
233
- };
234
-
235
- const cancelMutation = () => {
236
- reject({ message: "mutationCancelled" });
237
- };
238
-
239
- if (onCancel) {
240
- onCancel(cancelMutation);
241
- }
242
-
243
- notificationDispatch({
244
- type: ActionTypes.ADD,
245
- payload: {
246
- id,
247
- resource: identifier,
248
- cancelMutation: cancelMutation,
249
- doMutation: doMutation,
250
- seconds: undoableTimeoutPropOrContext,
251
- isSilent: !!onCancel,
252
- },
253
- });
254
- },
255
- );
256
- return deletePromise;
257
- },
258
- onMutate: async ({
259
- id,
260
- resource: resourceName,
261
- mutationMode,
262
- dataProviderName,
263
- meta,
264
- metaData,
265
- }) => {
266
- const { identifier } = select(resourceName);
267
-
268
- const {
269
- gqlMutation: _,
270
- gqlQuery: __,
271
- ...preferredMeta
272
- } = pickNotDeprecated(meta, metaData) ?? {};
273
-
274
- const queryKey = queryKeysReplacement(preferLegacyKeys)(
275
- identifier,
276
- pickDataProvider(identifier, dataProviderName, resources),
277
- preferredMeta,
278
- );
279
-
280
- const resourceKeys = keys()
281
- .data(pickDataProvider(identifier, dataProviderName, resources))
282
- .resource(identifier);
283
-
284
- const mutationModePropOrContext =
285
- mutationMode ?? mutationModeContext;
286
-
287
- await queryClient.cancelQueries(
288
- resourceKeys.get(preferLegacyKeys),
289
- undefined,
290
- {
291
- silent: true,
292
- },
293
- );
294
-
295
- const previousQueries: PreviousQuery<TData>[] =
296
- queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));
297
-
298
- if (mutationModePropOrContext !== "pessimistic") {
299
- // Set the previous queries to the new ones:
300
- queryClient.setQueriesData(
301
- resourceKeys
302
- .action("list")
303
- .params(preferredMeta ?? {})
304
- .get(preferLegacyKeys),
305
- (previous?: GetListResponse<TData> | null) => {
306
- if (!previous) {
307
- return null;
308
- }
309
- const data = previous.data.filter(
310
- (record: TData) =>
311
- record.id?.toString() !== id.toString(),
312
- );
313
-
314
- return {
315
- data,
316
- total: previous.total - 1,
317
- };
318
- },
319
- );
320
-
321
- queryClient.setQueriesData(
322
- resourceKeys.action("many").get(preferLegacyKeys),
323
- (previous?: GetListResponse<TData> | null) => {
324
- if (!previous) {
325
- return null;
326
- }
327
- const data = previous.data.filter((record: TData) => {
328
- return record.id?.toString() !== id?.toString();
329
- });
330
-
331
- return {
332
- ...previous,
333
- data,
334
- };
335
- },
336
- );
337
- }
338
-
339
- return {
340
- previousQueries,
341
- queryKey,
342
- };
343
- },
344
- onSettled: (
345
- _data,
346
- _error,
347
- {
146
+ const authProvider = useActiveAuthProvider();
147
+ const { mutate: checkError } = useOnError({
148
+ v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),
149
+ });
150
+ const dataProvider = useDataProvider();
151
+
152
+ const { resources, select } = useResource();
153
+ const queryClient = useQueryClient();
154
+
155
+ const {
156
+ mutationMode: mutationModeContext,
157
+ undoableTimeout: undoableTimeoutContext,
158
+ } = useMutationMode();
159
+
160
+ const { notificationDispatch } = useCancelNotification();
161
+ const translate = useTranslate();
162
+ const publish = usePublish();
163
+ const { log } = useLog();
164
+ const handleNotification = useHandleNotification();
165
+ const invalidateStore = useInvalidate();
166
+ const getMeta = useMeta();
167
+ const {
168
+ options: { textTransformers },
169
+ } = useRefineContext();
170
+ const { keys, preferLegacyKeys } = useKeys();
171
+
172
+ const mutation = useMutation<
173
+ DeleteOneResponse<TData>,
174
+ TError,
175
+ DeleteParams<TData, TError, TVariables>,
176
+ DeleteContext<TData>
177
+ >({
178
+ mutationFn: ({
179
+ id,
180
+ mutationMode,
181
+ undoableTimeout,
182
+ resource: resourceName,
183
+ onCancel,
184
+ meta,
185
+ metaData,
186
+ dataProviderName,
187
+ values,
188
+ }) => {
189
+ const { resource, identifier } = select(resourceName);
190
+
191
+ const combinedMeta = getMeta({
192
+ resource,
193
+ meta: pickNotDeprecated(meta, metaData),
194
+ });
195
+
196
+ const mutationModePropOrContext = mutationMode ?? mutationModeContext;
197
+
198
+ const undoableTimeoutPropOrContext =
199
+ undoableTimeout ?? undoableTimeoutContext;
200
+
201
+ if (!(mutationModePropOrContext === "undoable")) {
202
+ return dataProvider(
203
+ pickDataProvider(identifier, dataProviderName, resources),
204
+ ).deleteOne<TData, TVariables>({
205
+ resource: resource.name,
206
+ id,
207
+ meta: combinedMeta,
208
+ metaData: combinedMeta,
209
+ variables: values,
210
+ });
211
+ }
212
+
213
+ const deletePromise = new Promise<DeleteOneResponse<TData>>(
214
+ (resolve, reject) => {
215
+ const doMutation = () => {
216
+ dataProvider(
217
+ pickDataProvider(identifier, dataProviderName, resources),
218
+ )
219
+ .deleteOne<TData, TVariables>({
220
+ resource: resource.name,
348
221
  id,
349
- resource: resourceName,
350
- dataProviderName,
351
- invalidates = ["list", "many"],
222
+ meta: combinedMeta,
223
+ metaData: combinedMeta,
224
+ variables: values,
225
+ })
226
+ .then((result) => resolve(result))
227
+ .catch((err) => reject(err));
228
+ };
229
+
230
+ const cancelMutation = () => {
231
+ reject({ message: "mutationCancelled" });
232
+ };
233
+
234
+ if (onCancel) {
235
+ onCancel(cancelMutation);
236
+ }
237
+
238
+ notificationDispatch({
239
+ type: ActionTypes.ADD,
240
+ payload: {
241
+ id,
242
+ resource: identifier,
243
+ cancelMutation: cancelMutation,
244
+ doMutation: doMutation,
245
+ seconds: undoableTimeoutPropOrContext,
246
+ isSilent: !!onCancel,
352
247
  },
353
- ) => {
354
- const { identifier } = select(resourceName);
355
-
356
- // invalidate the cache for the list and many queries:
357
- invalidateStore({
358
- resource: identifier,
359
- dataProviderName: pickDataProvider(
360
- identifier,
361
- dataProviderName,
362
- resources,
363
- ),
364
- invalidates,
365
- });
366
-
367
- notificationDispatch({
368
- type: ActionTypes.REMOVE,
369
- payload: { id, resource: identifier },
370
- });
248
+ });
371
249
  },
372
- onSuccess: (
373
- _data,
374
- {
375
- id,
376
- resource: resourceName,
377
- successNotification,
378
- dataProviderName: dataProviderNameFromProp,
379
- meta,
380
- metaData,
381
- },
382
- context,
383
- ) => {
384
- const { resource, identifier } = select(resourceName);
385
- const resourceSingular = textTransformers.singular(identifier);
386
-
387
- const dataProviderName = pickDataProvider(
388
- identifier,
389
- dataProviderNameFromProp,
390
- resources,
250
+ );
251
+ return deletePromise;
252
+ },
253
+ onMutate: async ({
254
+ id,
255
+ resource: resourceName,
256
+ mutationMode,
257
+ dataProviderName,
258
+ meta,
259
+ metaData,
260
+ }) => {
261
+ const { identifier } = select(resourceName);
262
+
263
+ const {
264
+ gqlMutation: _,
265
+ gqlQuery: __,
266
+ ...preferredMeta
267
+ } = pickNotDeprecated(meta, metaData) ?? {};
268
+
269
+ const queryKey = queryKeysReplacement(preferLegacyKeys)(
270
+ identifier,
271
+ pickDataProvider(identifier, dataProviderName, resources),
272
+ preferredMeta,
273
+ );
274
+
275
+ const resourceKeys = keys()
276
+ .data(pickDataProvider(identifier, dataProviderName, resources))
277
+ .resource(identifier);
278
+
279
+ const mutationModePropOrContext = mutationMode ?? mutationModeContext;
280
+
281
+ await queryClient.cancelQueries(
282
+ resourceKeys.get(preferLegacyKeys),
283
+ undefined,
284
+ {
285
+ silent: true,
286
+ },
287
+ );
288
+
289
+ const previousQueries: PreviousQuery<TData>[] =
290
+ queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));
291
+
292
+ if (mutationModePropOrContext !== "pessimistic") {
293
+ // Set the previous queries to the new ones:
294
+ queryClient.setQueriesData(
295
+ resourceKeys
296
+ .action("list")
297
+ .params(preferredMeta ?? {})
298
+ .get(preferLegacyKeys),
299
+ (previous?: GetListResponse<TData> | null) => {
300
+ if (!previous) {
301
+ return null;
302
+ }
303
+ const data = previous.data.filter(
304
+ (record: TData) => record.id?.toString() !== id.toString(),
391
305
  );
392
306
 
393
- const combinedMeta = getMeta({
394
- resource,
395
- meta: pickNotDeprecated(meta, metaData),
396
- });
397
-
398
- // Remove the queries from the cache:
399
- queryClient.removeQueries(context?.queryKey.detail(id));
400
-
401
- const notificationConfig =
402
- typeof successNotification === "function"
403
- ? successNotification(_data, id, identifier)
404
- : successNotification;
405
-
406
- handleNotification(notificationConfig, {
407
- key: `${id}-${identifier}-notification`,
408
- description: translate("notifications.success", "Success"),
409
- message: translate(
410
- "notifications.deleteSuccess",
411
- {
412
- resource: translate(
413
- `${identifier}.${identifier}`,
414
- resourceSingular,
415
- ),
416
- },
417
- `Successfully deleted a ${resourceSingular}`,
418
- ),
419
- type: "success",
420
- });
421
-
422
- publish?.({
423
- channel: `resources/${resource.name}`,
424
- type: "deleted",
425
- payload: {
426
- ids: [id],
427
- },
428
- date: new Date(),
429
- meta: {
430
- ...combinedMeta,
431
- dataProviderName,
432
- },
433
- });
434
-
435
- const {
436
- fields: _fields,
437
- operation: _operation,
438
- variables: _variables,
439
- ...rest
440
- } = combinedMeta || {};
441
- log?.mutate({
442
- action: "delete",
443
- resource: resource.name,
444
- meta: {
445
- id,
446
- dataProviderName,
447
- ...rest,
448
- },
307
+ return {
308
+ data,
309
+ total: previous.total - 1,
310
+ };
311
+ },
312
+ );
313
+
314
+ queryClient.setQueriesData(
315
+ resourceKeys.action("many").get(preferLegacyKeys),
316
+ (previous?: GetListResponse<TData> | null) => {
317
+ if (!previous) {
318
+ return null;
319
+ }
320
+ const data = previous.data.filter((record: TData) => {
321
+ return record.id?.toString() !== id?.toString();
449
322
  });
450
323
 
451
- // Remove the queries from the cache:
452
- queryClient.removeQueries(context?.queryKey.detail(id));
324
+ return {
325
+ ...previous,
326
+ data,
327
+ };
328
+ },
329
+ );
330
+ }
331
+
332
+ return {
333
+ previousQueries,
334
+ queryKey,
335
+ };
336
+ },
337
+ onSettled: (
338
+ _data,
339
+ _error,
340
+ {
341
+ id,
342
+ resource: resourceName,
343
+ dataProviderName,
344
+ invalidates = ["list", "many"],
345
+ },
346
+ ) => {
347
+ const { identifier } = select(resourceName);
348
+
349
+ // invalidate the cache for the list and many queries:
350
+ invalidateStore({
351
+ resource: identifier,
352
+ dataProviderName: pickDataProvider(
353
+ identifier,
354
+ dataProviderName,
355
+ resources,
356
+ ),
357
+ invalidates,
358
+ });
359
+
360
+ notificationDispatch({
361
+ type: ActionTypes.REMOVE,
362
+ payload: { id, resource: identifier },
363
+ });
364
+ },
365
+ onSuccess: (
366
+ _data,
367
+ {
368
+ id,
369
+ resource: resourceName,
370
+ successNotification,
371
+ dataProviderName: dataProviderNameFromProp,
372
+ meta,
373
+ metaData,
374
+ },
375
+ context,
376
+ ) => {
377
+ const { resource, identifier } = select(resourceName);
378
+ const resourceSingular = textTransformers.singular(identifier);
379
+
380
+ const dataProviderName = pickDataProvider(
381
+ identifier,
382
+ dataProviderNameFromProp,
383
+ resources,
384
+ );
385
+
386
+ const combinedMeta = getMeta({
387
+ resource,
388
+ meta: pickNotDeprecated(meta, metaData),
389
+ });
390
+
391
+ // Remove the queries from the cache:
392
+ queryClient.removeQueries(context?.queryKey.detail(id));
393
+
394
+ const notificationConfig =
395
+ typeof successNotification === "function"
396
+ ? successNotification(_data, id, identifier)
397
+ : successNotification;
398
+
399
+ handleNotification(notificationConfig, {
400
+ key: `${id}-${identifier}-notification`,
401
+ description: translate("notifications.success", "Success"),
402
+ message: translate(
403
+ "notifications.deleteSuccess",
404
+ {
405
+ resource: translate(
406
+ `${identifier}.${identifier}`,
407
+ resourceSingular,
408
+ ),
409
+ },
410
+ `Successfully deleted a ${resourceSingular}`,
411
+ ),
412
+ type: "success",
413
+ });
414
+
415
+ publish?.({
416
+ channel: `resources/${resource.name}`,
417
+ type: "deleted",
418
+ payload: {
419
+ ids: [id],
453
420
  },
454
- onError: (
455
- err: TError,
456
- { id, resource: resourceName, errorNotification },
457
- context,
458
- ) => {
459
- const { identifier } = select(resourceName);
460
-
461
- // set back the queries to the context:
462
- if (context) {
463
- for (const query of context.previousQueries) {
464
- queryClient.setQueryData(query[0], query[1]);
465
- }
466
- }
467
-
468
- if (err.message !== "mutationCancelled") {
469
- checkError(err);
470
-
471
- const resourceSingular = textTransformers.singular(identifier);
472
-
473
- const notificationConfig =
474
- typeof errorNotification === "function"
475
- ? errorNotification(err, id, identifier)
476
- : errorNotification;
477
-
478
- handleNotification(notificationConfig, {
479
- key: `${id}-${identifier}-notification`,
480
- message: translate(
481
- "notifications.deleteError",
482
- {
483
- resource: resourceSingular,
484
- statusCode: err.statusCode,
485
- },
486
- `Error (status code: ${err.statusCode})`,
487
- ),
488
- description: err.message,
489
- type: "error",
490
- });
491
- }
421
+ date: new Date(),
422
+ meta: {
423
+ ...combinedMeta,
424
+ dataProviderName,
492
425
  },
493
- mutationKey: keys().data().mutation("delete").get(preferLegacyKeys),
494
- ...mutationOptions,
426
+ });
427
+
428
+ const {
429
+ fields: _fields,
430
+ operation: _operation,
431
+ variables: _variables,
432
+ ...rest
433
+ } = combinedMeta || {};
434
+ log?.mutate({
435
+ action: "delete",
436
+ resource: resource.name,
495
437
  meta: {
496
- ...mutationOptions?.meta,
497
- ...getXRay("useDelete", preferLegacyKeys),
438
+ id,
439
+ dataProviderName,
440
+ ...rest,
498
441
  },
499
- });
500
-
501
- const { elapsedTime } = useLoadingOvertime({
502
- isLoading: mutation.isLoading,
503
- interval: overtimeOptions?.interval,
504
- onInterval: overtimeOptions?.onInterval,
505
- });
506
-
507
- return { ...mutation, overtime: { elapsedTime } };
442
+ });
443
+
444
+ // Remove the queries from the cache:
445
+ queryClient.removeQueries(context?.queryKey.detail(id));
446
+ },
447
+ onError: (
448
+ err: TError,
449
+ { id, resource: resourceName, errorNotification },
450
+ context,
451
+ ) => {
452
+ const { identifier } = select(resourceName);
453
+
454
+ // set back the queries to the context:
455
+ if (context) {
456
+ for (const query of context.previousQueries) {
457
+ queryClient.setQueryData(query[0], query[1]);
458
+ }
459
+ }
460
+
461
+ if (err.message !== "mutationCancelled") {
462
+ checkError(err);
463
+
464
+ const resourceSingular = textTransformers.singular(identifier);
465
+
466
+ const notificationConfig =
467
+ typeof errorNotification === "function"
468
+ ? errorNotification(err, id, identifier)
469
+ : errorNotification;
470
+
471
+ handleNotification(notificationConfig, {
472
+ key: `${id}-${identifier}-notification`,
473
+ message: translate(
474
+ "notifications.deleteError",
475
+ {
476
+ resource: resourceSingular,
477
+ statusCode: err.statusCode,
478
+ },
479
+ `Error (status code: ${err.statusCode})`,
480
+ ),
481
+ description: err.message,
482
+ type: "error",
483
+ });
484
+ }
485
+ },
486
+ mutationKey: keys().data().mutation("delete").get(preferLegacyKeys),
487
+ ...mutationOptions,
488
+ meta: {
489
+ ...mutationOptions?.meta,
490
+ ...getXRay("useDelete", preferLegacyKeys),
491
+ },
492
+ });
493
+
494
+ const { elapsedTime } = useLoadingOvertime({
495
+ isLoading: mutation.isLoading,
496
+ interval: overtimeOptions?.interval,
497
+ onInterval: overtimeOptions?.onInterval,
498
+ });
499
+
500
+ return { ...mutation, overtime: { elapsedTime } };
508
501
  };