@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,60 +1,60 @@
1
1
  import React from "react";
2
2
 
3
3
  import {
4
- useGo,
5
- useNavigation,
6
- useParsed,
7
- useRouterContext,
8
- useRouterType,
9
- useIsAuthenticated,
4
+ useGo,
5
+ useNavigation,
6
+ useParsed,
7
+ useRouterContext,
8
+ useRouterType,
9
+ useIsAuthenticated,
10
10
  } from "@hooks";
11
11
  import { useActiveAuthProvider } from "@definitions/index";
12
12
  import { GoConfig } from "src/interfaces";
13
13
 
14
14
  export type AuthenticatedCommonProps = {
15
- /**
16
- * Unique key to identify the component.
17
- * This is required if you have multiple `Authenticated` components at the same level.
18
- * @required
19
- */
20
- key: React.Key;
21
- /**
22
- * Whether to redirect user if not logged in or not.
23
- * If not set, user will be redirected to `redirectTo` property of the `check` function's response.
24
- * This behavior is only available for new auth providers.
25
- * Legacy auth providers will redirect to `/login` by default if this property is not set.
26
- * If set to a string, user will be redirected to that string.
27
- *
28
- * This property only works if `fallback` is **not set**.
29
- */
30
- redirectOnFail?: string | true;
31
- /**
32
- * Whether to append current path to search params of the redirect url at `to` property.
33
- *
34
- * By default, `to` parameter is used by successful invocations of the `useLogin` hook.
35
- * If `to` present, it will be used as the redirect url after successful login.
36
- */
37
- appendCurrentPathToQuery?: boolean;
38
- /**
39
- * Content to show if user is not logged in.
40
- */
41
- fallback?: React.ReactNode;
42
- /**
43
- * Content to show while checking whether user is logged in or not.
44
- */
45
- loading?: React.ReactNode;
46
- /**
47
- * Content to show if user is logged in
48
- */
49
- children?: React.ReactNode;
15
+ /**
16
+ * Unique key to identify the component.
17
+ * This is required if you have multiple `Authenticated` components at the same level.
18
+ * @required
19
+ */
20
+ key: React.Key;
21
+ /**
22
+ * Whether to redirect user if not logged in or not.
23
+ * If not set, user will be redirected to `redirectTo` property of the `check` function's response.
24
+ * This behavior is only available for new auth providers.
25
+ * Legacy auth providers will redirect to `/login` by default if this property is not set.
26
+ * If set to a string, user will be redirected to that string.
27
+ *
28
+ * This property only works if `fallback` is **not set**.
29
+ */
30
+ redirectOnFail?: string | true;
31
+ /**
32
+ * Whether to append current path to search params of the redirect url at `to` property.
33
+ *
34
+ * By default, `to` parameter is used by successful invocations of the `useLogin` hook.
35
+ * If `to` present, it will be used as the redirect url after successful login.
36
+ */
37
+ appendCurrentPathToQuery?: boolean;
38
+ /**
39
+ * Content to show if user is not logged in.
40
+ */
41
+ fallback?: React.ReactNode;
42
+ /**
43
+ * Content to show while checking whether user is logged in or not.
44
+ */
45
+ loading?: React.ReactNode;
46
+ /**
47
+ * Content to show if user is logged in
48
+ */
49
+ children?: React.ReactNode;
50
50
  };
51
51
 
52
52
  export type LegacyAuthenticatedProps = {
53
- v3LegacyAuthProviderCompatible: true;
53
+ v3LegacyAuthProviderCompatible: true;
54
54
  } & AuthenticatedCommonProps;
55
55
 
56
56
  export type AuthenticatedProps = {
57
- v3LegacyAuthProviderCompatible?: false;
57
+ v3LegacyAuthProviderCompatible?: false;
58
58
  } & AuthenticatedCommonProps;
59
59
 
60
60
  /**
@@ -72,7 +72,7 @@ export type AuthenticatedProps = {
72
72
  * @see {@link https://refine.dev/docs/core/components/auth/authenticated `<Authenticated>`} component for more details.
73
73
  */
74
74
  export function Authenticated(
75
- props: LegacyAuthenticatedProps,
75
+ props: LegacyAuthenticatedProps,
76
76
  ): JSX.Element | null;
77
77
 
78
78
  /**
@@ -92,131 +92,129 @@ export function Authenticated(
92
92
  export function Authenticated(props: AuthenticatedProps): JSX.Element | null;
93
93
 
94
94
  export function Authenticated({
95
- redirectOnFail = true,
96
- appendCurrentPathToQuery = true,
97
- children,
98
- fallback: fallbackContent,
99
- loading: loadingContent,
95
+ redirectOnFail = true,
96
+ appendCurrentPathToQuery = true,
97
+ children,
98
+ fallback: fallbackContent,
99
+ loading: loadingContent,
100
100
  }: AuthenticatedProps | LegacyAuthenticatedProps): JSX.Element | null {
101
- const activeAuthProvider = useActiveAuthProvider();
102
- const routerType = useRouterType();
103
-
104
- const hasAuthProvider = Boolean(activeAuthProvider?.isProvided);
105
- const isLegacyAuth = Boolean(activeAuthProvider?.isLegacy);
106
- const isLegacyRouter = routerType === "legacy";
107
-
108
- const parsed = useParsed();
109
- const go = useGo();
110
- const { useLocation } = useRouterContext();
111
- const legacyLocation = useLocation();
112
-
113
- const {
114
- isFetching,
115
- isSuccess,
116
- data: {
117
- authenticated: isAuthenticatedStatus,
118
- redirectTo: authenticatedRedirect,
119
- } = {},
120
- } = useIsAuthenticated({
121
- v3LegacyAuthProviderCompatible: isLegacyAuth,
122
- });
123
-
124
- // Authentication status
125
- const isAuthenticated = hasAuthProvider
126
- ? isLegacyAuth
127
- ? isSuccess
128
- : isAuthenticatedStatus
129
- : true;
130
-
131
- // when there is no auth provider
132
- if (!hasAuthProvider) {
133
- return <>{children ?? null}</>;
134
- }
135
-
136
- // when checking authentication status
137
- if (isFetching) {
138
- return <>{loadingContent ?? null}</>;
139
- }
140
-
141
- // when user is authenticated return children
142
- if (isAuthenticated) {
143
- return <>{children ?? null}</>;
144
- }
145
- // when user is not authenticated redirect or render fallbackContent
146
- else {
147
- // render fallbackContent if it is exist
148
- if (typeof fallbackContent !== "undefined") {
149
- return <>{fallbackContent ?? null}</>;
150
- }
151
- // if there is no fallbackContent, redirect page
152
-
153
- // Redirect url to use. use redirectOnFail if it is set.
154
- // Otherwise use redirectTo property of the check function's response.
155
- // If both are not set, use `/login` as the default redirect url. (only for legacy auth providers)
156
- const appliedRedirect = isLegacyAuth
157
- ? typeof redirectOnFail === "string"
158
- ? redirectOnFail
159
- : "/login"
160
- : typeof redirectOnFail === "string"
161
- ? redirectOnFail
162
- : (authenticatedRedirect as string | undefined);
163
-
164
- // Current pathname to append to the redirect url.
165
- // User will be redirected to this url after successful mutation. (like login)
166
- const pathname = `${
167
- isLegacyRouter ? legacyLocation?.pathname : parsed.pathname
168
- }`.replace(/(\?.*|#.*)$/, "");
169
- // Redirect if appliedRedirect is set, otherwise return null.
170
- // Uses `replace` for legacy router and `go` for new router.
171
- if (appliedRedirect) {
172
- if (isLegacyRouter) {
173
- const toQuery = appendCurrentPathToQuery
174
- ? `?to=${encodeURIComponent(pathname)}`
175
- : "";
176
- return <RedirectLegacy to={`${appliedRedirect}${toQuery}`} />;
177
- } else {
178
- return (
179
- <Redirect
180
- config={{
181
- to: appliedRedirect,
182
- query: appendCurrentPathToQuery
183
- ? {
184
- to: parsed.params?.to
185
- ? parsed.params.to
186
- : go({
187
- to: pathname,
188
- options: { keepQuery: true },
189
- type: "path",
190
- }),
191
- }
192
- : undefined,
193
- type: "replace",
194
- }}
195
- />
196
- );
197
- }
198
- }
199
-
200
- return null;
101
+ const activeAuthProvider = useActiveAuthProvider();
102
+ const routerType = useRouterType();
103
+
104
+ const hasAuthProvider = Boolean(activeAuthProvider?.isProvided);
105
+ const isLegacyAuth = Boolean(activeAuthProvider?.isLegacy);
106
+ const isLegacyRouter = routerType === "legacy";
107
+
108
+ const parsed = useParsed();
109
+ const go = useGo();
110
+ const { useLocation } = useRouterContext();
111
+ const legacyLocation = useLocation();
112
+
113
+ const {
114
+ isFetching,
115
+ isSuccess,
116
+ data: {
117
+ authenticated: isAuthenticatedStatus,
118
+ redirectTo: authenticatedRedirect,
119
+ } = {},
120
+ } = useIsAuthenticated({
121
+ v3LegacyAuthProviderCompatible: isLegacyAuth,
122
+ });
123
+
124
+ // Authentication status
125
+ const isAuthenticated = hasAuthProvider
126
+ ? isLegacyAuth
127
+ ? isSuccess
128
+ : isAuthenticatedStatus
129
+ : true;
130
+
131
+ // when there is no auth provider
132
+ if (!hasAuthProvider) {
133
+ return <>{children ?? null}</>;
134
+ }
135
+
136
+ // when checking authentication status
137
+ if (isFetching) {
138
+ return <>{loadingContent ?? null}</>;
139
+ }
140
+
141
+ // when user is authenticated return children
142
+ if (isAuthenticated) {
143
+ return <>{children ?? null}</>;
144
+ }
145
+ // when user is not authenticated redirect or render fallbackContent
146
+
147
+ // render fallbackContent if it is exist
148
+ if (typeof fallbackContent !== "undefined") {
149
+ return <>{fallbackContent ?? null}</>;
150
+ }
151
+ // if there is no fallbackContent, redirect page
152
+
153
+ // Redirect url to use. use redirectOnFail if it is set.
154
+ // Otherwise use redirectTo property of the check function's response.
155
+ // If both are not set, use `/login` as the default redirect url. (only for legacy auth providers)
156
+ const appliedRedirect = isLegacyAuth
157
+ ? typeof redirectOnFail === "string"
158
+ ? redirectOnFail
159
+ : "/login"
160
+ : typeof redirectOnFail === "string"
161
+ ? redirectOnFail
162
+ : (authenticatedRedirect as string | undefined);
163
+
164
+ // Current pathname to append to the redirect url.
165
+ // User will be redirected to this url after successful mutation. (like login)
166
+ const pathname = `${
167
+ isLegacyRouter ? legacyLocation?.pathname : parsed.pathname
168
+ }`.replace(/(\?.*|#.*)$/, "");
169
+ // Redirect if appliedRedirect is set, otherwise return null.
170
+ // Uses `replace` for legacy router and `go` for new router.
171
+ if (appliedRedirect) {
172
+ if (isLegacyRouter) {
173
+ const toQuery = appendCurrentPathToQuery
174
+ ? `?to=${encodeURIComponent(pathname)}`
175
+ : "";
176
+ return <RedirectLegacy to={`${appliedRedirect}${toQuery}`} />;
201
177
  }
178
+ return (
179
+ <Redirect
180
+ config={{
181
+ to: appliedRedirect,
182
+ query: appendCurrentPathToQuery
183
+ ? {
184
+ to: parsed.params?.to
185
+ ? parsed.params.to
186
+ : go({
187
+ to: pathname,
188
+ options: { keepQuery: true },
189
+ type: "path",
190
+ }),
191
+ }
192
+ : undefined,
193
+ type: "replace",
194
+ }}
195
+ />
196
+ );
197
+ }
198
+
199
+ return null;
202
200
  }
203
201
 
204
202
  const Redirect = ({ config }: { config: GoConfig }) => {
205
- const go = useGo();
203
+ const go = useGo();
206
204
 
207
- React.useEffect(() => {
208
- go(config);
209
- }, [go, config]);
205
+ React.useEffect(() => {
206
+ go(config);
207
+ }, [go, config]);
210
208
 
211
- return null;
209
+ return null;
212
210
  };
213
211
 
214
212
  const RedirectLegacy = ({ to }: { to: string }) => {
215
- const { replace } = useNavigation();
213
+ const { replace } = useNavigation();
216
214
 
217
- React.useEffect(() => {
218
- replace(to);
219
- }, [replace, to]);
215
+ React.useEffect(() => {
216
+ replace(to);
217
+ }, [replace, to]);
220
218
 
221
- return null;
219
+ return null;
222
220
  };
@@ -3,38 +3,34 @@ import { AutoSaveIndicatorProps } from "../../interfaces";
3
3
  import { useTranslate } from "@hooks/translate";
4
4
 
5
5
  export const AutoSaveIndicator: React.FC<AutoSaveIndicatorProps> = ({
6
- status,
7
- elements: {
8
- success = <Message key="autoSave.success" defaultMessage="saved" />,
9
- error = (
10
- <Message key="autoSave.error" defaultMessage="auto save failure" />
11
- ),
12
- loading = <Message key="autoSave.loading" defaultMessage="saving..." />,
13
- idle = (
14
- <Message key="autoSave.idle" defaultMessage="waiting for changes" />
15
- ),
16
- } = {},
6
+ status,
7
+ elements: {
8
+ success = <Message key="autoSave.success" defaultMessage="saved" />,
9
+ error = <Message key="autoSave.error" defaultMessage="auto save failure" />,
10
+ loading = <Message key="autoSave.loading" defaultMessage="saving..." />,
11
+ idle = <Message key="autoSave.idle" defaultMessage="waiting for changes" />,
12
+ } = {},
17
13
  }) => {
18
- switch (status) {
19
- case "success":
20
- return <>{success}</>;
21
- case "error":
22
- return <>{error}</>;
23
- case "loading":
24
- return <>{loading}</>;
25
- default:
26
- return <>{idle}</>;
27
- }
14
+ switch (status) {
15
+ case "success":
16
+ return <>{success}</>;
17
+ case "error":
18
+ return <>{error}</>;
19
+ case "loading":
20
+ return <>{loading}</>;
21
+ default:
22
+ return <>{idle}</>;
23
+ }
28
24
  };
29
25
 
30
26
  const Message = ({
31
- key,
32
- defaultMessage,
27
+ key,
28
+ defaultMessage,
33
29
  }: {
34
- key: string;
35
- defaultMessage: string;
30
+ key: string;
31
+ defaultMessage: string;
36
32
  }) => {
37
- const translate = useTranslate();
33
+ const translate = useTranslate();
38
34
 
39
- return <span>{translate(key, defaultMessage)}</span>;
35
+ return <span>{translate(key, defaultMessage)}</span>;
40
36
  };
@@ -7,120 +7,120 @@ import { UseQueryOptions } from "@tanstack/react-query";
7
7
  import { CanReturnType } from "../../interfaces";
8
8
 
9
9
  type CanParams = {
10
- resource?: IResourceItem & { children?: ITreeMenu[] };
11
- id?: BaseKey;
12
- [key: string]: any;
10
+ resource?: IResourceItem & { children?: ITreeMenu[] };
11
+ id?: BaseKey;
12
+ [key: string]: any;
13
13
  };
14
14
 
15
15
  type OnUnauthorizedProps = {
16
- resource?: string;
17
- reason?: string;
18
- action: string;
19
- params: CanParams;
16
+ resource?: string;
17
+ reason?: string;
18
+ action: string;
19
+ params: CanParams;
20
20
  };
21
21
 
22
22
  type CanAccessBaseProps = {
23
- /**
24
- * Resource name for API data interactions
25
- */
26
- resource?: string;
27
- /**
28
- * Intended action on resource
29
- */
30
- action: string;
31
- /**
32
- * Parameters associated with the resource
33
- * @type { resource?: [IResourceItem](https://refine.dev/docs/api-reference/core/interfaceReferences/#canparams), id?: [BaseKey](https://refine.dev/docs/api-reference/core/interfaceReferences/#basekey), [key: string]: any }
34
- */
35
- params?: CanParams;
36
- /**
37
- * Content to show if access control returns `false`
38
- */
39
- fallback?: React.ReactNode;
40
- /**
41
- * Callback function to be called if access control returns `can: false`
42
- */
43
- onUnauthorized?: (props: OnUnauthorizedProps) => void;
44
- children: React.ReactNode;
45
- queryOptions?: UseQueryOptions<CanReturnType>;
23
+ /**
24
+ * Resource name for API data interactions
25
+ */
26
+ resource?: string;
27
+ /**
28
+ * Intended action on resource
29
+ */
30
+ action: string;
31
+ /**
32
+ * Parameters associated with the resource
33
+ * @type { resource?: [IResourceItem](https://refine.dev/docs/api-reference/core/interfaceReferences/#canparams), id?: [BaseKey](https://refine.dev/docs/api-reference/core/interfaceReferences/#basekey), [key: string]: any }
34
+ */
35
+ params?: CanParams;
36
+ /**
37
+ * Content to show if access control returns `false`
38
+ */
39
+ fallback?: React.ReactNode;
40
+ /**
41
+ * Callback function to be called if access control returns `can: false`
42
+ */
43
+ onUnauthorized?: (props: OnUnauthorizedProps) => void;
44
+ children: React.ReactNode;
45
+ queryOptions?: UseQueryOptions<CanReturnType>;
46
46
  };
47
47
 
48
48
  type CanAccessWithoutParamsProps = {
49
- [key in Exclude<
50
- keyof CanAccessBaseProps,
51
- "fallback" | "children"
52
- >]?: undefined;
49
+ [key in Exclude<
50
+ keyof CanAccessBaseProps,
51
+ "fallback" | "children"
52
+ >]?: undefined;
53
53
  } & {
54
- [key in "fallback" | "children"]?: CanAccessBaseProps[key];
54
+ [key in "fallback" | "children"]?: CanAccessBaseProps[key];
55
55
  };
56
56
 
57
57
  export type CanAccessProps = CanAccessBaseProps | CanAccessWithoutParamsProps;
58
58
 
59
59
  export const CanAccess: React.FC<CanAccessProps> = ({
60
- resource: resourceFromProp,
61
- action: actionFromProp,
62
- params: paramsFromProp,
63
- fallback,
64
- onUnauthorized,
65
- children,
66
- queryOptions: componentQueryOptions,
67
- ...rest
60
+ resource: resourceFromProp,
61
+ action: actionFromProp,
62
+ params: paramsFromProp,
63
+ fallback,
64
+ onUnauthorized,
65
+ children,
66
+ queryOptions: componentQueryOptions,
67
+ ...rest
68
68
  }) => {
69
- const {
70
- resource,
71
- id: idFromRoute,
72
- action: actionFromRoute,
73
- } = useResource(resourceFromProp);
74
- const { identifier } = useResource();
75
-
76
- const getDefaultId = () => {
77
- const idFromPropsOrRoute = paramsFromProp?.id ?? idFromRoute;
78
-
79
- if (resourceFromProp && resourceFromProp !== identifier) {
80
- return paramsFromProp?.id;
81
- }
82
-
83
- return idFromPropsOrRoute;
84
- };
85
- const defaultId = getDefaultId();
86
-
87
- const resourceName = resourceFromProp ?? resource?.name;
88
- const action = actionFromProp ?? actionFromRoute ?? "";
89
- const params = paramsFromProp ?? {
90
- id: defaultId,
91
- resource: resource,
92
- };
93
-
94
- const { data } = useCan({
69
+ const {
70
+ resource,
71
+ id: idFromRoute,
72
+ action: actionFromRoute,
73
+ } = useResource(resourceFromProp);
74
+ const { identifier } = useResource();
75
+
76
+ const getDefaultId = () => {
77
+ const idFromPropsOrRoute = paramsFromProp?.id ?? idFromRoute;
78
+
79
+ if (resourceFromProp && resourceFromProp !== identifier) {
80
+ return paramsFromProp?.id;
81
+ }
82
+
83
+ return idFromPropsOrRoute;
84
+ };
85
+ const defaultId = getDefaultId();
86
+
87
+ const resourceName = resourceFromProp ?? resource?.name;
88
+ const action = actionFromProp ?? actionFromRoute ?? "";
89
+ const params = paramsFromProp ?? {
90
+ id: defaultId,
91
+ resource: resource,
92
+ };
93
+
94
+ const { data } = useCan({
95
+ resource: resourceName,
96
+ action,
97
+ params,
98
+ queryOptions: componentQueryOptions,
99
+ });
100
+
101
+ useEffect(() => {
102
+ if (onUnauthorized && data?.can === false) {
103
+ onUnauthorized({
95
104
  resource: resourceName,
96
105
  action,
106
+ reason: data?.reason,
97
107
  params,
98
- queryOptions: componentQueryOptions,
99
- });
100
-
101
- useEffect(() => {
102
- if (onUnauthorized && data?.can === false) {
103
- onUnauthorized({
104
- resource: resourceName,
105
- action,
106
- reason: data?.reason,
107
- params,
108
- });
109
- }
110
- }, [data?.can]);
111
-
112
- if (data?.can) {
113
- if (React.isValidElement(children)) {
114
- const Children = React.cloneElement(children, rest);
115
- return Children;
116
- }
117
-
118
- return <>{children}</>;
108
+ });
119
109
  }
110
+ }, [data?.can]);
120
111
 
121
- if (data?.can === false) {
122
- return <>{fallback ?? null}</>;
112
+ if (data?.can) {
113
+ if (React.isValidElement(children)) {
114
+ const Children = React.cloneElement(children, rest);
115
+ return Children;
123
116
  }
124
117
 
125
- return null;
118
+ return <>{children}</>;
119
+ }
120
+
121
+ if (data?.can === false) {
122
+ return <>{fallback ?? null}</>;
123
+ }
124
+
125
+ return null;
126
126
  };