@strato-admin/core 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -3
- package/dist/ra-core/src/auth/AuthContext.d.ts +2 -0
- package/dist/ra-core/src/auth/AuthContext.js +3 -0
- package/dist/ra-core/src/auth/Authenticated.d.ts +40 -0
- package/dist/ra-core/src/auth/Authenticated.js +39 -0
- package/dist/ra-core/src/auth/CanAccess.d.ts +20 -0
- package/dist/ra-core/src/auth/CanAccess.js +31 -0
- package/dist/ra-core/src/auth/LogoutOnMount.d.ts +8 -0
- package/dist/ra-core/src/auth/LogoutOnMount.js +16 -0
- package/dist/ra-core/src/auth/WithPermissions.d.ts +19 -0
- package/dist/ra-core/src/auth/WithPermissions.js +66 -0
- package/dist/ra-core/src/auth/addRefreshAuthToAuthProvider.d.ts +22 -0
- package/dist/ra-core/src/auth/addRefreshAuthToAuthProvider.js +41 -0
- package/dist/ra-core/src/auth/addRefreshAuthToDataProvider.d.ts +21 -0
- package/dist/ra-core/src/auth/addRefreshAuthToDataProvider.js +30 -0
- package/dist/ra-core/src/auth/convertLegacyAuthProvider.d.ts +12 -0
- package/dist/ra-core/src/auth/convertLegacyAuthProvider.js +19 -0
- package/dist/ra-core/src/auth/index.d.ts +27 -0
- package/dist/ra-core/src/auth/index.js +34 -0
- package/dist/ra-core/src/auth/types.d.ts +7 -0
- package/dist/ra-core/src/auth/types.js +5 -0
- package/dist/ra-core/src/auth/useAuthProvider.d.ts +10 -0
- package/dist/ra-core/src/auth/useAuthProvider.js +11 -0
- package/dist/ra-core/src/auth/useAuthState.d.ts +48 -0
- package/dist/ra-core/src/auth/useAuthState.js +171 -0
- package/dist/ra-core/src/auth/useAuthenticated.d.ts +36 -0
- package/dist/ra-core/src/auth/useAuthenticated.js +34 -0
- package/dist/ra-core/src/auth/useCanAccess.d.ts +56 -0
- package/dist/ra-core/src/auth/useCanAccess.js +108 -0
- package/dist/ra-core/src/auth/useCanAccessCallback.d.ts +39 -0
- package/dist/ra-core/src/auth/useCanAccessCallback.js +45 -0
- package/dist/ra-core/src/auth/useCanAccessResources.d.ts +67 -0
- package/dist/ra-core/src/auth/useCanAccessResources.js +92 -0
- package/dist/ra-core/src/auth/useCheckAuth.d.ts +48 -0
- package/dist/ra-core/src/auth/useCheckAuth.js +76 -0
- package/dist/ra-core/src/auth/useGetIdentity.d.ts +41 -0
- package/dist/ra-core/src/auth/useGetIdentity.js +86 -0
- package/dist/ra-core/src/auth/useGetPermissions.d.ts +41 -0
- package/dist/ra-core/src/auth/useGetPermissions.js +47 -0
- package/dist/ra-core/src/auth/useHandleAuthCallback.d.ts +20 -0
- package/dist/ra-core/src/auth/useHandleAuthCallback.js +83 -0
- package/dist/ra-core/src/auth/useIsAuthPending.d.ts +13 -0
- package/dist/ra-core/src/auth/useIsAuthPending.js +30 -0
- package/dist/ra-core/src/auth/useLogin.d.ts +34 -0
- package/dist/ra-core/src/auth/useLogin.js +78 -0
- package/dist/ra-core/src/auth/useLogout.d.ts +31 -0
- package/dist/ra-core/src/auth/useLogout.js +117 -0
- package/dist/ra-core/src/auth/useLogoutIfAccessDenied.d.ts +42 -0
- package/dist/ra-core/src/auth/useLogoutIfAccessDenied.js +111 -0
- package/dist/ra-core/src/auth/usePermissions.d.ts +41 -0
- package/dist/ra-core/src/auth/usePermissions.js +123 -0
- package/dist/ra-core/src/auth/useRequireAccess.d.ts +140 -0
- package/dist/ra-core/src/auth/useRequireAccess.js +56 -0
- package/dist/ra-core/src/controller/button/index.d.ts +7 -0
- package/dist/ra-core/src/controller/button/index.js +7 -0
- package/dist/ra-core/src/controller/button/useBulkDeleteController.d.ts +14 -0
- package/dist/ra-core/src/controller/button/useBulkDeleteController.js +66 -0
- package/dist/ra-core/src/controller/button/useBulkUpdateController.d.ts +16 -0
- package/dist/ra-core/src/controller/button/useBulkUpdateController.js +70 -0
- package/dist/ra-core/src/controller/button/useDeleteController.d.ts +64 -0
- package/dist/ra-core/src/controller/button/useDeleteController.js +119 -0
- package/dist/ra-core/src/controller/button/useDeleteWithConfirmController.d.ts +69 -0
- package/dist/ra-core/src/controller/button/useDeleteWithConfirmController.js +139 -0
- package/dist/ra-core/src/controller/button/useDeleteWithUndoController.d.ts +46 -0
- package/dist/ra-core/src/controller/button/useDeleteWithUndoController.js +52 -0
- package/dist/ra-core/src/controller/button/useUpdateController.d.ts +68 -0
- package/dist/ra-core/src/controller/button/useUpdateController.js +113 -0
- package/dist/ra-core/src/controller/checkMinimumRequiredProps.d.ts +4 -0
- package/dist/ra-core/src/controller/checkMinimumRequiredProps.js +21 -0
- package/dist/ra-core/src/controller/create/CreateBase.d.ts +46 -0
- package/dist/ra-core/src/controller/create/CreateBase.js +55 -0
- package/dist/ra-core/src/controller/create/CreateContext.d.ts +20 -0
- package/dist/ra-core/src/controller/create/CreateContext.js +21 -0
- package/dist/ra-core/src/controller/create/CreateContextProvider.d.ts +29 -0
- package/dist/ra-core/src/controller/create/CreateContextProvider.js +31 -0
- package/dist/ra-core/src/controller/create/CreateController.d.ts +19 -0
- package/dist/ra-core/src/controller/create/CreateController.js +18 -0
- package/dist/ra-core/src/controller/create/index.d.ts +6 -0
- package/dist/ra-core/src/controller/create/index.js +6 -0
- package/dist/ra-core/src/controller/create/useCreateContext.d.ts +12 -0
- package/dist/ra-core/src/controller/create/useCreateContext.js +18 -0
- package/dist/ra-core/src/controller/create/useCreateController.d.ts +50 -0
- package/dist/ra-core/src/controller/create/useCreateController.js +149 -0
- package/dist/ra-core/src/controller/edit/EditBase.d.ts +41 -0
- package/dist/ra-core/src/controller/edit/EditBase.js +72 -0
- package/dist/ra-core/src/controller/edit/EditContext.d.ts +20 -0
- package/dist/ra-core/src/controller/edit/EditContext.js +21 -0
- package/dist/ra-core/src/controller/edit/EditContextProvider.d.ts +29 -0
- package/dist/ra-core/src/controller/edit/EditContextProvider.js +28 -0
- package/dist/ra-core/src/controller/edit/EditController.d.ts +19 -0
- package/dist/ra-core/src/controller/edit/EditController.js +18 -0
- package/dist/ra-core/src/controller/edit/index.d.ts +6 -0
- package/dist/ra-core/src/controller/edit/index.js +6 -0
- package/dist/ra-core/src/controller/edit/useEditContext.d.ts +12 -0
- package/dist/ra-core/src/controller/edit/useEditContext.js +18 -0
- package/dist/ra-core/src/controller/edit/useEditController.d.ts +72 -0
- package/dist/ra-core/src/controller/edit/useEditController.js +206 -0
- package/dist/ra-core/src/controller/field/ReferenceArrayFieldBase.d.ts +77 -0
- package/dist/ra-core/src/controller/field/ReferenceArrayFieldBase.js +119 -0
- package/dist/ra-core/src/controller/field/ReferenceFieldBase.d.ts +51 -0
- package/dist/ra-core/src/controller/field/ReferenceFieldBase.js +71 -0
- package/dist/ra-core/src/controller/field/ReferenceFieldContext.d.ts +4 -0
- package/dist/ra-core/src/controller/field/ReferenceFieldContext.js +10 -0
- package/dist/ra-core/src/controller/field/ReferenceManyCountBase.d.ts +20 -0
- package/dist/ra-core/src/controller/field/ReferenceManyCountBase.js +35 -0
- package/dist/ra-core/src/controller/field/ReferenceManyFieldBase.d.ts +59 -0
- package/dist/ra-core/src/controller/field/ReferenceManyFieldBase.js +108 -0
- package/dist/ra-core/src/controller/field/ReferenceOneFieldBase.d.ts +26 -0
- package/dist/ra-core/src/controller/field/ReferenceOneFieldBase.js +64 -0
- package/dist/ra-core/src/controller/field/index.d.ts +12 -0
- package/dist/ra-core/src/controller/field/index.js +12 -0
- package/dist/ra-core/src/controller/field/sanitizeFieldRestProps.d.ts +1 -0
- package/dist/ra-core/src/controller/field/sanitizeFieldRestProps.js +1 -0
- package/dist/ra-core/src/controller/field/types.d.ts +28 -0
- package/dist/ra-core/src/controller/field/types.js +1 -0
- package/dist/ra-core/src/controller/field/useReferenceArrayFieldController.d.ts +39 -0
- package/dist/ra-core/src/controller/field/useReferenceArrayFieldController.js +82 -0
- package/dist/ra-core/src/controller/field/useReferenceFieldController.d.ts +14 -0
- package/dist/ra-core/src/controller/field/useReferenceFieldController.js +31 -0
- package/dist/ra-core/src/controller/field/useReferenceManyFieldController.d.ts +49 -0
- package/dist/ra-core/src/controller/field/useReferenceManyFieldController.js +264 -0
- package/dist/ra-core/src/controller/field/useReferenceOneFieldController.d.ts +41 -0
- package/dist/ra-core/src/controller/field/useReferenceOneFieldController.js +67 -0
- package/dist/ra-core/src/controller/index.d.ts +17 -0
- package/dist/ra-core/src/controller/index.js +16 -0
- package/dist/ra-core/src/controller/input/ArrayInputBase.d.ts +46 -0
- package/dist/ra-core/src/controller/input/ArrayInputBase.js +130 -0
- package/dist/ra-core/src/controller/input/ArrayInputContext.d.ts +9 -0
- package/dist/ra-core/src/controller/input/ArrayInputContext.js +8 -0
- package/dist/ra-core/src/controller/input/ReferenceArrayInputBase.d.ts +78 -0
- package/dist/ra-core/src/controller/input/ReferenceArrayInputBase.js +97 -0
- package/dist/ra-core/src/controller/input/ReferenceInputBase.d.ts +65 -0
- package/dist/ra-core/src/controller/input/ReferenceInputBase.js +75 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorBase.d.ts +17 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorBase.js +55 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorContext.d.ts +15 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorContext.js +8 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorItemBase.d.ts +12 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorItemBase.js +53 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorItemContext.d.ts +13 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorItemContext.js +8 -0
- package/dist/ra-core/src/controller/input/index.d.ts +17 -0
- package/dist/ra-core/src/controller/input/index.js +17 -0
- package/dist/ra-core/src/controller/input/referenceDataStatus.d.ts +32 -0
- package/dist/ra-core/src/controller/input/referenceDataStatus.js +74 -0
- package/dist/ra-core/src/controller/input/sanitizeInputRestProps.d.ts +1 -0
- package/dist/ra-core/src/controller/input/sanitizeInputRestProps.js +1 -0
- package/dist/ra-core/src/controller/input/types.d.ts +3 -0
- package/dist/ra-core/src/controller/input/types.js +1 -0
- package/dist/ra-core/src/controller/input/useArrayInput.d.ts +8 -0
- package/dist/ra-core/src/controller/input/useArrayInput.js +29 -0
- package/dist/ra-core/src/controller/input/useGetArrayInputNewItemDefaults.d.ts +3 -0
- package/dist/ra-core/src/controller/input/useGetArrayInputNewItemDefaults.js +37 -0
- package/dist/ra-core/src/controller/input/useReferenceArrayInputController.d.ts +48 -0
- package/dist/ra-core/src/controller/input/useReferenceArrayInputController.js +137 -0
- package/dist/ra-core/src/controller/input/useReferenceInputController.d.ts +54 -0
- package/dist/ra-core/src/controller/input/useReferenceInputController.js +208 -0
- package/dist/ra-core/src/controller/input/useReferenceParams.d.ts +106 -0
- package/dist/ra-core/src/controller/input/useReferenceParams.js +226 -0
- package/dist/ra-core/src/controller/input/useSimpleFormIterator.d.ts +7 -0
- package/dist/ra-core/src/controller/input/useSimpleFormIterator.js +15 -0
- package/dist/ra-core/src/controller/input/useSimpleFormIteratorItem.d.ts +7 -0
- package/dist/ra-core/src/controller/input/useSimpleFormIteratorItem.js +15 -0
- package/dist/ra-core/src/controller/input/useSupportCreateSuggestion.d.ts +54 -0
- package/dist/ra-core/src/controller/input/useSupportCreateSuggestion.js +90 -0
- package/dist/ra-core/src/controller/list/FilterContext.d.ts +6 -0
- package/dist/ra-core/src/controller/list/FilterContext.js +5 -0
- package/dist/ra-core/src/controller/list/InfiniteListBase.d.ts +47 -0
- package/dist/ra-core/src/controller/list/InfiniteListBase.js +103 -0
- package/dist/ra-core/src/controller/list/InfinitePaginationContext.d.ts +25 -0
- package/dist/ra-core/src/controller/list/InfinitePaginationContext.js +32 -0
- package/dist/ra-core/src/controller/list/ListBase.d.ts +48 -0
- package/dist/ra-core/src/controller/list/ListBase.js +98 -0
- package/dist/ra-core/src/controller/list/ListContext.d.ts +54 -0
- package/dist/ra-core/src/controller/list/ListContext.js +55 -0
- package/dist/ra-core/src/controller/list/ListContextProvider.d.ts +33 -0
- package/dist/ra-core/src/controller/list/ListContextProvider.js +33 -0
- package/dist/ra-core/src/controller/list/ListController.d.ts +19 -0
- package/dist/ra-core/src/controller/list/ListController.js +18 -0
- package/dist/ra-core/src/controller/list/ListFilterContext.d.ts +39 -0
- package/dist/ra-core/src/controller/list/ListFilterContext.js +55 -0
- package/dist/ra-core/src/controller/list/ListPaginationContext.d.ts +43 -0
- package/dist/ra-core/src/controller/list/ListPaginationContext.js +67 -0
- package/dist/ra-core/src/controller/list/ListSortContext.d.ts +36 -0
- package/dist/ra-core/src/controller/list/ListSortContext.js +39 -0
- package/dist/ra-core/src/controller/list/RecordsIterator.d.ts +16 -0
- package/dist/ra-core/src/controller/list/RecordsIterator.js +22 -0
- package/dist/ra-core/src/controller/list/WithListContext.d.ts +32 -0
- package/dist/ra-core/src/controller/list/WithListContext.js +42 -0
- package/dist/ra-core/src/controller/list/index.d.ts +30 -0
- package/dist/ra-core/src/controller/list/index.js +30 -0
- package/dist/ra-core/src/controller/list/queryReducer.d.ts +45 -0
- package/dist/ra-core/src/controller/list/queryReducer.js +85 -0
- package/dist/ra-core/src/controller/list/useExpanded.d.ts +31 -0
- package/dist/ra-core/src/controller/list/useExpanded.js +70 -0
- package/dist/ra-core/src/controller/list/useFilterContext.d.ts +2 -0
- package/dist/ra-core/src/controller/list/useFilterContext.js +5 -0
- package/dist/ra-core/src/controller/list/useInfiniteListController.d.ts +44 -0
- package/dist/ra-core/src/controller/list/useInfiniteListController.js +175 -0
- package/dist/ra-core/src/controller/list/useInfinitePaginationContext.d.ts +16 -0
- package/dist/ra-core/src/controller/list/useInfinitePaginationContext.js +17 -0
- package/dist/ra-core/src/controller/list/useList.d.ts +55 -0
- package/dist/ra-core/src/controller/list/useList.js +223 -0
- package/dist/ra-core/src/controller/list/useListContext.d.ts +59 -0
- package/dist/ra-core/src/controller/list/useListContext.js +65 -0
- package/dist/ra-core/src/controller/list/useListContextWithProps.d.ts +44 -0
- package/dist/ra-core/src/controller/list/useListContextWithProps.js +84 -0
- package/dist/ra-core/src/controller/list/useListController.d.ts +296 -0
- package/dist/ra-core/src/controller/list/useListController.js +234 -0
- package/dist/ra-core/src/controller/list/useListFilterContext.d.ts +11 -0
- package/dist/ra-core/src/controller/list/useListFilterContext.js +18 -0
- package/dist/ra-core/src/controller/list/useListPaginationContext.d.ts +12 -0
- package/dist/ra-core/src/controller/list/useListPaginationContext.js +19 -0
- package/dist/ra-core/src/controller/list/useListParams.d.ts +116 -0
- package/dist/ra-core/src/controller/list/useListParams.js +281 -0
- package/dist/ra-core/src/controller/list/useListSortContext.d.ts +12 -0
- package/dist/ra-core/src/controller/list/useListSortContext.js +19 -0
- package/dist/ra-core/src/controller/list/useRecordSelection.d.ts +32 -0
- package/dist/ra-core/src/controller/list/useRecordSelection.js +93 -0
- package/dist/ra-core/src/controller/list/useSavedQueries.d.ts +14 -0
- package/dist/ra-core/src/controller/list/useSavedQueries.js +29 -0
- package/dist/ra-core/src/controller/list/useSelectAll.d.ts +48 -0
- package/dist/ra-core/src/controller/list/useSelectAll.js +102 -0
- package/dist/ra-core/src/controller/list/useUnselect.d.ts +10 -0
- package/dist/ra-core/src/controller/list/useUnselect.js +18 -0
- package/dist/ra-core/src/controller/list/useUnselectAll.d.ts +9 -0
- package/dist/ra-core/src/controller/list/useUnselectAll.js +18 -0
- package/dist/ra-core/src/controller/record/OptionalRecordContextProvider.d.ts +21 -0
- package/dist/ra-core/src/controller/record/OptionalRecordContextProvider.js +18 -0
- package/dist/ra-core/src/controller/record/RecordContext.d.ts +37 -0
- package/dist/ra-core/src/controller/record/RecordContext.js +33 -0
- package/dist/ra-core/src/controller/record/RecordRepresentation.d.ts +11 -0
- package/dist/ra-core/src/controller/record/RecordRepresentation.js +15 -0
- package/dist/ra-core/src/controller/record/WithRecord.d.ts +20 -0
- package/dist/ra-core/src/controller/record/WithRecord.js +18 -0
- package/dist/ra-core/src/controller/record/index.d.ts +5 -0
- package/dist/ra-core/src/controller/record/index.js +5 -0
- package/dist/ra-core/src/controller/record/useRecordContext.d.ts +34 -0
- package/dist/ra-core/src/controller/record/useRecordContext.js +36 -0
- package/dist/ra-core/src/controller/saveContext/SaveContext.d.ts +20 -0
- package/dist/ra-core/src/controller/saveContext/SaveContext.js +2 -0
- package/dist/ra-core/src/controller/saveContext/SaveContextProvider.d.ts +4 -0
- package/dist/ra-core/src/controller/saveContext/SaveContextProvider.js +3 -0
- package/dist/ra-core/src/controller/saveContext/index.d.ts +6 -0
- package/dist/ra-core/src/controller/saveContext/index.js +6 -0
- package/dist/ra-core/src/controller/saveContext/useMutationMiddlewares.d.ts +39 -0
- package/dist/ra-core/src/controller/saveContext/useMutationMiddlewares.js +79 -0
- package/dist/ra-core/src/controller/saveContext/usePickSaveContext.d.ts +5 -0
- package/dist/ra-core/src/controller/saveContext/usePickSaveContext.js +25 -0
- package/dist/ra-core/src/controller/saveContext/useRegisterMutationMiddleware.d.ts +6 -0
- package/dist/ra-core/src/controller/saveContext/useRegisterMutationMiddleware.js +18 -0
- package/dist/ra-core/src/controller/saveContext/useSaveContext.d.ts +14 -0
- package/dist/ra-core/src/controller/saveContext/useSaveContext.js +17 -0
- package/dist/ra-core/src/controller/show/ShowBase.d.ts +42 -0
- package/dist/ra-core/src/controller/show/ShowBase.js +72 -0
- package/dist/ra-core/src/controller/show/ShowContext.d.ts +20 -0
- package/dist/ra-core/src/controller/show/ShowContext.js +21 -0
- package/dist/ra-core/src/controller/show/ShowContextProvider.d.ts +27 -0
- package/dist/ra-core/src/controller/show/ShowContextProvider.js +25 -0
- package/dist/ra-core/src/controller/show/ShowController.d.ts +19 -0
- package/dist/ra-core/src/controller/show/ShowController.js +18 -0
- package/dist/ra-core/src/controller/show/index.d.ts +6 -0
- package/dist/ra-core/src/controller/show/index.js +6 -0
- package/dist/ra-core/src/controller/show/useShowContext.d.ts +12 -0
- package/dist/ra-core/src/controller/show/useShowContext.js +19 -0
- package/dist/ra-core/src/controller/show/useShowController.d.ts +75 -0
- package/dist/ra-core/src/controller/show/useShowController.js +110 -0
- package/dist/ra-core/src/controller/useFilterState.d.ts +46 -0
- package/dist/ra-core/src/controller/useFilterState.js +70 -0
- package/dist/ra-core/src/controller/usePaginationState.d.ts +33 -0
- package/dist/ra-core/src/controller/usePaginationState.js +45 -0
- package/dist/ra-core/src/controller/usePrevNextController.d.ts +127 -0
- package/dist/ra-core/src/controller/usePrevNextController.js +215 -0
- package/dist/ra-core/src/controller/useReference.d.ts +49 -0
- package/dist/ra-core/src/controller/useReference.js +42 -0
- package/dist/ra-core/src/controller/useSortState.d.ts +61 -0
- package/dist/ra-core/src/controller/useSortState.js +96 -0
- package/dist/ra-core/src/core/CoreAdmin.d.ts +83 -0
- package/dist/ra-core/src/core/CoreAdmin.js +86 -0
- package/dist/ra-core/src/core/CoreAdminContext.d.ts +154 -0
- package/dist/ra-core/src/core/CoreAdminContext.js +27 -0
- package/dist/ra-core/src/core/CoreAdminRoutes.d.ts +15 -0
- package/dist/ra-core/src/core/CoreAdminRoutes.js +33 -0
- package/dist/ra-core/src/core/CoreAdminUI.d.ts +260 -0
- package/dist/ra-core/src/core/CoreAdminUI.js +33 -0
- package/dist/ra-core/src/core/CustomRoutes.d.ts +16 -0
- package/dist/ra-core/src/core/CustomRoutes.js +11 -0
- package/dist/ra-core/src/core/DefaultTitleContext.d.ts +15 -0
- package/dist/ra-core/src/core/DefaultTitleContext.js +15 -0
- package/dist/ra-core/src/core/HasDashboardContext.d.ts +21 -0
- package/dist/ra-core/src/core/HasDashboardContext.js +22 -0
- package/dist/ra-core/src/core/IsOffline.d.ts +4 -0
- package/dist/ra-core/src/core/IsOffline.js +5 -0
- package/dist/ra-core/src/core/NavigateToFirstResource.d.ts +10 -0
- package/dist/ra-core/src/core/NavigateToFirstResource.js +21 -0
- package/dist/ra-core/src/core/OptionalResourceContextProvider.d.ts +22 -0
- package/dist/ra-core/src/core/OptionalResourceContextProvider.js +18 -0
- package/dist/ra-core/src/core/Resource.d.ts +16 -0
- package/dist/ra-core/src/core/Resource.js +31 -0
- package/dist/ra-core/src/core/ResourceContext.d.ts +19 -0
- package/dist/ra-core/src/core/ResourceContext.js +19 -0
- package/dist/ra-core/src/core/ResourceContextProvider.d.ts +26 -0
- package/dist/ra-core/src/core/ResourceContextProvider.js +22 -0
- package/dist/ra-core/src/core/ResourceDefinitionContext.d.ts +35 -0
- package/dist/ra-core/src/core/ResourceDefinitionContext.js +48 -0
- package/dist/ra-core/src/core/SourceContext.d.ts +27 -0
- package/dist/ra-core/src/core/SourceContext.js +35 -0
- package/dist/ra-core/src/core/UserMenuContext.d.ts +34 -0
- package/dist/ra-core/src/core/UserMenuContext.js +28 -0
- package/dist/ra-core/src/core/UserMenuContextProvider.d.ts +16 -0
- package/dist/ra-core/src/core/UserMenuContextProvider.js +9 -0
- package/dist/ra-core/src/core/index.d.ts +27 -0
- package/dist/ra-core/src/core/index.js +27 -0
- package/dist/ra-core/src/core/useConfigureAdminRouterFromChildren.d.ts +34 -0
- package/dist/ra-core/src/core/useConfigureAdminRouterFromChildren.js +227 -0
- package/dist/ra-core/src/core/useFirstResourceWithListAccess.d.ts +8 -0
- package/dist/ra-core/src/core/useFirstResourceWithListAccess.js +19 -0
- package/dist/ra-core/src/core/useGetRecordRepresentation.d.ts +13 -0
- package/dist/ra-core/src/core/useGetRecordRepresentation.js +44 -0
- package/dist/ra-core/src/core/useGetResourceLabel.d.ts +22 -0
- package/dist/ra-core/src/core/useGetResourceLabel.js +42 -0
- package/dist/ra-core/src/core/useIsOffline.d.ts +7 -0
- package/dist/ra-core/src/core/useIsOffline.js +18 -0
- package/dist/ra-core/src/core/useResourceContext.d.ts +36 -0
- package/dist/ra-core/src/core/useResourceContext.js +38 -0
- package/dist/ra-core/src/core/useResourceDefinition.d.ts +31 -0
- package/dist/ra-core/src/core/useResourceDefinition.js +48 -0
- package/dist/ra-core/src/core/useResourceDefinitionContext.d.ts +1 -0
- package/dist/ra-core/src/core/useResourceDefinitionContext.js +3 -0
- package/dist/ra-core/src/core/useResourceDefinitions.d.ts +21 -0
- package/dist/ra-core/src/core/useResourceDefinitions.js +20 -0
- package/dist/ra-core/src/core/useUserMenu.d.ts +28 -0
- package/dist/ra-core/src/core/useUserMenu.js +30 -0
- package/dist/ra-core/src/core/useWrappedSource.d.ts +11 -0
- package/dist/ra-core/src/core/useWrappedSource.js +15 -0
- package/dist/ra-core/src/dataProvider/DataProviderContext.d.ts +3 -0
- package/dist/ra-core/src/dataProvider/DataProviderContext.js +4 -0
- package/dist/ra-core/src/dataProvider/HttpError.d.ts +6 -0
- package/dist/ra-core/src/dataProvider/HttpError.js +19 -0
- package/dist/ra-core/src/dataProvider/combineDataProviders.d.ts +21 -0
- package/dist/ra-core/src/dataProvider/combineDataProviders.js +32 -0
- package/dist/ra-core/src/dataProvider/convertLegacyDataProvider.d.ts +12 -0
- package/dist/ra-core/src/dataProvider/convertLegacyDataProvider.js +40 -0
- package/dist/ra-core/src/dataProvider/dataFetchActions.d.ts +15 -0
- package/dist/ra-core/src/dataProvider/dataFetchActions.js +49 -0
- package/dist/ra-core/src/dataProvider/defaultDataProvider.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/defaultDataProvider.js +12 -0
- package/dist/ra-core/src/dataProvider/fetch.d.ts +32 -0
- package/dist/ra-core/src/dataProvider/fetch.js +78 -0
- package/dist/ra-core/src/dataProvider/index.d.ts +34 -0
- package/dist/ra-core/src/dataProvider/index.js +33 -0
- package/dist/ra-core/src/dataProvider/populateQueryCache.d.ts +22 -0
- package/dist/ra-core/src/dataProvider/populateQueryCache.js +30 -0
- package/dist/ra-core/src/dataProvider/testDataProvider.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/testDataProvider.js +41 -0
- package/dist/ra-core/src/dataProvider/undo/AddUndoableMutationContext.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/undo/AddUndoableMutationContext.js +2 -0
- package/dist/ra-core/src/dataProvider/undo/TakeUndoableMutationContext.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/undo/TakeUndoableMutationContext.js +2 -0
- package/dist/ra-core/src/dataProvider/undo/UndoableMutationsContextProvider.d.ts +13 -0
- package/dist/ra-core/src/dataProvider/undo/UndoableMutationsContextProvider.js +38 -0
- package/dist/ra-core/src/dataProvider/undo/index.d.ts +6 -0
- package/dist/ra-core/src/dataProvider/undo/index.js +6 -0
- package/dist/ra-core/src/dataProvider/undo/types.d.ts +3 -0
- package/dist/ra-core/src/dataProvider/undo/types.js +1 -0
- package/dist/ra-core/src/dataProvider/undo/useAddUndoableMutation.d.ts +1 -0
- package/dist/ra-core/src/dataProvider/undo/useAddUndoableMutation.js +3 -0
- package/dist/ra-core/src/dataProvider/undo/useTakeUndoableMutation.d.ts +1 -0
- package/dist/ra-core/src/dataProvider/undo/useTakeUndoableMutation.js +3 -0
- package/dist/ra-core/src/dataProvider/undoableEventEmitter.d.ts +3 -0
- package/dist/ra-core/src/dataProvider/undoableEventEmitter.js +2 -0
- package/dist/ra-core/src/dataProvider/useCreate.d.ts +89 -0
- package/dist/ra-core/src/dataProvider/useCreate.js +155 -0
- package/dist/ra-core/src/dataProvider/useDataProvider.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/useDataProvider.js +140 -0
- package/dist/ra-core/src/dataProvider/useDelete.d.ts +83 -0
- package/dist/ra-core/src/dataProvider/useDelete.js +171 -0
- package/dist/ra-core/src/dataProvider/useDeleteMany.d.ts +81 -0
- package/dist/ra-core/src/dataProvider/useDeleteMany.js +193 -0
- package/dist/ra-core/src/dataProvider/useGetList.d.ts +58 -0
- package/dist/ra-core/src/dataProvider/useGetList.js +131 -0
- package/dist/ra-core/src/dataProvider/useGetMany.d.ts +49 -0
- package/dist/ra-core/src/dataProvider/useGetMany.js +143 -0
- package/dist/ra-core/src/dataProvider/useGetManyAggregate.d.ts +62 -0
- package/dist/ra-core/src/dataProvider/useGetManyAggregate.js +295 -0
- package/dist/ra-core/src/dataProvider/useGetManyReference.d.ts +62 -0
- package/dist/ra-core/src/dataProvider/useGetManyReference.js +117 -0
- package/dist/ra-core/src/dataProvider/useGetOne.d.ts +48 -0
- package/dist/ra-core/src/dataProvider/useGetOne.js +94 -0
- package/dist/ra-core/src/dataProvider/useGetRecordId.d.ts +14 -0
- package/dist/ra-core/src/dataProvider/useGetRecordId.js +22 -0
- package/dist/ra-core/src/dataProvider/useInfiniteGetList.d.ts +64 -0
- package/dist/ra-core/src/dataProvider/useInfiniteGetList.js +177 -0
- package/dist/ra-core/src/dataProvider/useIsDataLoaded.d.ts +13 -0
- package/dist/ra-core/src/dataProvider/useIsDataLoaded.js +35 -0
- package/dist/ra-core/src/dataProvider/useLoading.d.ts +12 -0
- package/dist/ra-core/src/dataProvider/useLoading.js +41 -0
- package/dist/ra-core/src/dataProvider/useMutationWithMutationMode.d.ts +51 -0
- package/dist/ra-core/src/dataProvider/useMutationWithMutationMode.js +238 -0
- package/dist/ra-core/src/dataProvider/useRefresh.d.ts +14 -0
- package/dist/ra-core/src/dataProvider/useRefresh.js +21 -0
- package/dist/ra-core/src/dataProvider/useUpdate.d.ts +89 -0
- package/dist/ra-core/src/dataProvider/useUpdate.js +183 -0
- package/dist/ra-core/src/dataProvider/useUpdateMany.d.ts +81 -0
- package/dist/ra-core/src/dataProvider/useUpdateMany.js +171 -0
- package/dist/ra-core/src/dataProvider/validateResponseFormat.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/validateResponseFormat.js +35 -0
- package/dist/ra-core/src/dataProvider/withLifecycleCallbacks.d.ts +162 -0
- package/dist/ra-core/src/dataProvider/withLifecycleCallbacks.js +377 -0
- package/dist/ra-core/src/dataTable/DataTableBase.d.ts +36 -0
- package/dist/ra-core/src/dataTable/DataTableBase.js +104 -0
- package/dist/ra-core/src/dataTable/DataTableCallbacksContext.d.ts +18 -0
- package/dist/ra-core/src/dataTable/DataTableCallbacksContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableColumnFilterContext.d.ts +2 -0
- package/dist/ra-core/src/dataTable/DataTableColumnFilterContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableColumnRankContext.d.ts +2 -0
- package/dist/ra-core/src/dataTable/DataTableColumnRankContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableConfigContext.d.ts +22 -0
- package/dist/ra-core/src/dataTable/DataTableConfigContext.js +7 -0
- package/dist/ra-core/src/dataTable/DataTableDataContext.d.ts +4 -0
- package/dist/ra-core/src/dataTable/DataTableDataContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableRenderContext.d.ts +3 -0
- package/dist/ra-core/src/dataTable/DataTableRenderContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableSelectedIdsContext.d.ts +3 -0
- package/dist/ra-core/src/dataTable/DataTableSelectedIdsContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableSortContext.d.ts +3 -0
- package/dist/ra-core/src/dataTable/DataTableSortContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableStoreContext.d.ts +8 -0
- package/dist/ra-core/src/dataTable/DataTableStoreContext.js +6 -0
- package/dist/ra-core/src/dataTable/index.d.ts +11 -0
- package/dist/ra-core/src/dataTable/index.js +11 -0
- package/dist/ra-core/src/dataTable/types.d.ts +2 -0
- package/dist/ra-core/src/dataTable/types.js +1 -0
- package/dist/ra-core/src/export/ExporterContext.d.ts +2 -0
- package/dist/ra-core/src/export/ExporterContext.js +4 -0
- package/dist/ra-core/src/export/defaultExporter.d.ts +2 -0
- package/dist/ra-core/src/export/defaultExporter.js +3 -0
- package/dist/ra-core/src/export/downloadCSV.d.ts +1 -0
- package/dist/ra-core/src/export/downloadCSV.js +17 -0
- package/dist/ra-core/src/export/fetchRelatedRecords.d.ts +14 -0
- package/dist/ra-core/src/export/fetchRelatedRecords.js +19 -0
- package/dist/ra-core/src/export/getRelatedIds.d.ts +24 -0
- package/dist/ra-core/src/export/getRelatedIds.js +26 -0
- package/dist/ra-core/src/export/index.d.ts +5 -0
- package/dist/ra-core/src/export/index.js +5 -0
- package/dist/ra-core/src/export/useBulkExport.d.ts +11 -0
- package/dist/ra-core/src/export/useBulkExport.js +30 -0
- package/dist/ra-core/src/form/FilterLiveForm.d.ts +56 -0
- package/dist/ra-core/src/form/FilterLiveForm.js +161 -0
- package/dist/ra-core/src/form/Form.d.ts +56 -0
- package/dist/ra-core/src/form/Form.js +55 -0
- package/dist/ra-core/src/form/FormDataConsumer.d.ts +74 -0
- package/dist/ra-core/src/form/FormDataConsumer.js +68 -0
- package/dist/ra-core/src/form/WarnWhenUnsavedChanges.d.ts +5 -0
- package/dist/ra-core/src/form/WarnWhenUnsavedChanges.js +5 -0
- package/dist/ra-core/src/form/choices/ChoicesContext.d.ts +65 -0
- package/dist/ra-core/src/form/choices/ChoicesContext.js +7 -0
- package/dist/ra-core/src/form/choices/ChoicesContextProvider.d.ts +6 -0
- package/dist/ra-core/src/form/choices/ChoicesContextProvider.js +3 -0
- package/dist/ra-core/src/form/choices/index.d.ts +4 -0
- package/dist/ra-core/src/form/choices/index.js +4 -0
- package/dist/ra-core/src/form/choices/useChoices.d.ts +31 -0
- package/dist/ra-core/src/form/choices/useChoices.js +42 -0
- package/dist/ra-core/src/form/choices/useChoicesContext.d.ts +5 -0
- package/dist/ra-core/src/form/choices/useChoicesContext.js +62 -0
- package/dist/ra-core/src/form/getFormInitialValues.d.ts +8 -0
- package/dist/ra-core/src/form/getFormInitialValues.js +14 -0
- package/dist/ra-core/src/form/groups/FormGroupContext.d.ts +9 -0
- package/dist/ra-core/src/form/groups/FormGroupContext.js +9 -0
- package/dist/ra-core/src/form/groups/FormGroupContextProvider.d.ts +49 -0
- package/dist/ra-core/src/form/groups/FormGroupContextProvider.js +64 -0
- package/dist/ra-core/src/form/groups/FormGroupsContext.d.ts +15 -0
- package/dist/ra-core/src/form/groups/FormGroupsContext.js +3 -0
- package/dist/ra-core/src/form/groups/FormGroupsProvider.d.ts +11 -0
- package/dist/ra-core/src/form/groups/FormGroupsProvider.js +67 -0
- package/dist/ra-core/src/form/groups/index.d.ts +6 -0
- package/dist/ra-core/src/form/groups/index.js +6 -0
- package/dist/ra-core/src/form/groups/useFormGroup.d.ts +67 -0
- package/dist/ra-core/src/form/groups/useFormGroup.js +146 -0
- package/dist/ra-core/src/form/groups/useFormGroupContext.d.ts +4 -0
- package/dist/ra-core/src/form/groups/useFormGroupContext.js +9 -0
- package/dist/ra-core/src/form/groups/useFormGroups.d.ts +4 -0
- package/dist/ra-core/src/form/groups/useFormGroups.js +9 -0
- package/dist/ra-core/src/form/index.d.ts +14 -0
- package/dist/ra-core/src/form/index.js +14 -0
- package/dist/ra-core/src/form/sanitizeEmptyValues.d.ts +7 -0
- package/dist/ra-core/src/form/sanitizeEmptyValues.js +26 -0
- package/dist/ra-core/src/form/useApplyInputDefaultValues.d.ts +19 -0
- package/dist/ra-core/src/form/useApplyInputDefaultValues.js +71 -0
- package/dist/ra-core/src/form/useAugmentedForm.d.ts +32 -0
- package/dist/ra-core/src/form/useAugmentedForm.js +101 -0
- package/dist/ra-core/src/form/useFormIsDirty.d.ts +4 -0
- package/dist/ra-core/src/form/useFormIsDirty.js +39 -0
- package/dist/ra-core/src/form/useFormValues.d.ts +4 -0
- package/dist/ra-core/src/form/useFormValues.js +9 -0
- package/dist/ra-core/src/form/useInput.d.ts +33 -0
- package/dist/ra-core/src/form/useInput.js +100 -0
- package/dist/ra-core/src/form/useRecordFromLocation.d.ts +22 -0
- package/dist/ra-core/src/form/useRecordFromLocation.js +59 -0
- package/dist/ra-core/src/form/useSuggestions.d.ts +43 -0
- package/dist/ra-core/src/form/useSuggestions.js +186 -0
- package/dist/ra-core/src/form/useWarnWhenUnsavedChanges.d.ts +7 -0
- package/dist/ra-core/src/form/useWarnWhenUnsavedChanges.js +74 -0
- package/dist/ra-core/src/form/validation/ValidationError.d.ts +5 -0
- package/dist/ra-core/src/form/validation/ValidationError.js +22 -0
- package/dist/ra-core/src/form/validation/getSimpleValidationResolver.d.ts +31 -0
- package/dist/ra-core/src/form/validation/getSimpleValidationResolver.js +87 -0
- package/dist/ra-core/src/form/validation/index.d.ts +7 -0
- package/dist/ra-core/src/form/validation/index.js +7 -0
- package/dist/ra-core/src/form/validation/setSubmissionErrors.d.ts +21 -0
- package/dist/ra-core/src/form/validation/setSubmissionErrors.js +34 -0
- package/dist/ra-core/src/form/validation/useGetValidationErrorMessage.d.ts +26 -0
- package/dist/ra-core/src/form/validation/useGetValidationErrorMessage.js +35 -0
- package/dist/ra-core/src/form/validation/useNotifyIsFormInvalid.d.ts +9 -0
- package/dist/ra-core/src/form/validation/useNotifyIsFormInvalid.js +30 -0
- package/dist/ra-core/src/form/validation/useUnique.d.ts +57 -0
- package/dist/ra-core/src/form/validation/useUnique.js +107 -0
- package/dist/ra-core/src/form/validation/validate.d.ts +168 -0
- package/dist/ra-core/src/form/validation/validate.js +218 -0
- package/dist/ra-core/src/i18n/I18nContext.d.ts +3 -0
- package/dist/ra-core/src/i18n/I18nContext.js +11 -0
- package/dist/ra-core/src/i18n/I18nContextProvider.d.ts +10 -0
- package/dist/ra-core/src/i18n/I18nContextProvider.js +47 -0
- package/dist/ra-core/src/i18n/TestTranslationProvider.d.ts +8 -0
- package/dist/ra-core/src/i18n/TestTranslationProvider.js +20 -0
- package/dist/ra-core/src/i18n/TranslatableContext.d.ts +16 -0
- package/dist/ra-core/src/i18n/TranslatableContext.js +2 -0
- package/dist/ra-core/src/i18n/TranslatableContextProvider.d.ts +6 -0
- package/dist/ra-core/src/i18n/TranslatableContextProvider.js +5 -0
- package/dist/ra-core/src/i18n/Translate.d.ts +7 -0
- package/dist/ra-core/src/i18n/Translate.js +10 -0
- package/dist/ra-core/src/i18n/TranslationMessages.d.ts +221 -0
- package/dist/ra-core/src/i18n/TranslationMessages.js +1 -0
- package/dist/ra-core/src/i18n/TranslationUtils.d.ts +60 -0
- package/dist/ra-core/src/i18n/TranslationUtils.js +70 -0
- package/dist/ra-core/src/i18n/index.d.ts +20 -0
- package/dist/ra-core/src/i18n/index.js +20 -0
- package/dist/ra-core/src/i18n/substituteTokens.d.ts +8 -0
- package/dist/ra-core/src/i18n/substituteTokens.js +18 -0
- package/dist/ra-core/src/i18n/useI18nProvider.d.ts +12 -0
- package/dist/ra-core/src/i18n/useI18nProvider.js +14 -0
- package/dist/ra-core/src/i18n/useLocale.d.ts +17 -0
- package/dist/ra-core/src/i18n/useLocale.js +21 -0
- package/dist/ra-core/src/i18n/useLocaleState.d.ts +27 -0
- package/dist/ra-core/src/i18n/useLocaleState.js +34 -0
- package/dist/ra-core/src/i18n/useLocales.d.ts +31 -0
- package/dist/ra-core/src/i18n/useLocales.js +28 -0
- package/dist/ra-core/src/i18n/useResourceTranslation.d.ts +8 -0
- package/dist/ra-core/src/i18n/useResourceTranslation.js +18 -0
- package/dist/ra-core/src/i18n/useSetLocale.d.ts +25 -0
- package/dist/ra-core/src/i18n/useSetLocale.js +29 -0
- package/dist/ra-core/src/i18n/useTranslatable.d.ts +29 -0
- package/dist/ra-core/src/i18n/useTranslatable.js +98 -0
- package/dist/ra-core/src/i18n/useTranslatableContext.d.ts +31 -0
- package/dist/ra-core/src/i18n/useTranslatableContext.js +38 -0
- package/dist/ra-core/src/i18n/useTranslate.d.ts +21 -0
- package/dist/ra-core/src/i18n/useTranslate.js +29 -0
- package/dist/ra-core/src/i18n/useTranslateLabel.d.ts +6 -0
- package/dist/ra-core/src/i18n/useTranslateLabel.js +26 -0
- package/dist/ra-core/src/index.d.ts +16 -0
- package/dist/ra-core/src/index.js +16 -0
- package/dist/ra-core/src/inference/InferredElement.d.ts +12 -0
- package/dist/ra-core/src/inference/InferredElement.js +40 -0
- package/dist/ra-core/src/inference/assertions.d.ts +26 -0
- package/dist/ra-core/src/inference/assertions.js +38 -0
- package/dist/ra-core/src/inference/getElementsFromRecords.d.ts +35 -0
- package/dist/ra-core/src/inference/getElementsFromRecords.js +39 -0
- package/dist/ra-core/src/inference/getValuesFromRecords.d.ts +28 -0
- package/dist/ra-core/src/inference/getValuesFromRecords.js +40 -0
- package/dist/ra-core/src/inference/index.d.ts +6 -0
- package/dist/ra-core/src/inference/index.js +6 -0
- package/dist/ra-core/src/inference/inferElementFromValues.d.ts +41 -0
- package/dist/ra-core/src/inference/inferElementFromValues.js +161 -0
- package/dist/ra-core/src/inference/inferTypeFromValues.d.ts +21 -0
- package/dist/ra-core/src/inference/inferTypeFromValues.js +141 -0
- package/dist/ra-core/src/inference/types.d.ts +9 -0
- package/dist/ra-core/src/inference/types.js +1 -0
- package/dist/ra-core/src/notification/AddNotificationContext.d.ts +2 -0
- package/dist/ra-core/src/notification/AddNotificationContext.js +2 -0
- package/dist/ra-core/src/notification/CloseNotificationContext.d.ts +2 -0
- package/dist/ra-core/src/notification/CloseNotificationContext.js +2 -0
- package/dist/ra-core/src/notification/NotificationContext.d.ts +37 -0
- package/dist/ra-core/src/notification/NotificationContext.js +35 -0
- package/dist/ra-core/src/notification/NotificationContextProvider.d.ts +3 -0
- package/dist/ra-core/src/notification/NotificationContextProvider.js +31 -0
- package/dist/ra-core/src/notification/index.d.ts +9 -0
- package/dist/ra-core/src/notification/index.js +9 -0
- package/dist/ra-core/src/notification/types.d.ts +14 -0
- package/dist/ra-core/src/notification/types.js +1 -0
- package/dist/ra-core/src/notification/useAddNotificationContext.d.ts +1 -0
- package/dist/ra-core/src/notification/useAddNotificationContext.js +3 -0
- package/dist/ra-core/src/notification/useCloseNotification.d.ts +1 -0
- package/dist/ra-core/src/notification/useCloseNotification.js +9 -0
- package/dist/ra-core/src/notification/useNotificationContext.d.ts +1 -0
- package/dist/ra-core/src/notification/useNotificationContext.js +3 -0
- package/dist/ra-core/src/notification/useNotify.d.ts +20 -0
- package/dist/ra-core/src/notification/useNotify.js +28 -0
- package/dist/ra-core/src/preferences/PreferenceKeyContext.d.ts +7 -0
- package/dist/ra-core/src/preferences/PreferenceKeyContext.js +7 -0
- package/dist/ra-core/src/preferences/PreferencesEditorContext.d.ts +16 -0
- package/dist/ra-core/src/preferences/PreferencesEditorContext.js +2 -0
- package/dist/ra-core/src/preferences/PreferencesEditorContextProvider.d.ts +3 -0
- package/dist/ra-core/src/preferences/PreferencesEditorContextProvider.js +48 -0
- package/dist/ra-core/src/preferences/index.d.ts +7 -0
- package/dist/ra-core/src/preferences/index.js +7 -0
- package/dist/ra-core/src/preferences/usePreference.d.ts +18 -0
- package/dist/ra-core/src/preferences/usePreference.js +10 -0
- package/dist/ra-core/src/preferences/usePreferenceInput.d.ts +22 -0
- package/dist/ra-core/src/preferences/usePreferenceInput.js +43 -0
- package/dist/ra-core/src/preferences/usePreferencesEditor.d.ts +2 -0
- package/dist/ra-core/src/preferences/usePreferencesEditor.js +9 -0
- package/dist/ra-core/src/preferences/useSetInspectorTitle.d.ts +7 -0
- package/dist/ra-core/src/preferences/useSetInspectorTitle.js +19 -0
- package/dist/ra-core/src/routing/AdminRouter.d.ts +13 -0
- package/dist/ra-core/src/routing/AdminRouter.js +15 -0
- package/dist/ra-core/src/routing/BasenameContext.d.ts +1 -0
- package/dist/ra-core/src/routing/BasenameContext.js +2 -0
- package/dist/ra-core/src/routing/BasenameContextProvider.d.ts +12 -0
- package/dist/ra-core/src/routing/BasenameContextProvider.js +11 -0
- package/dist/ra-core/src/routing/LinkBase.d.ts +17 -0
- package/dist/ra-core/src/routing/LinkBase.js +22 -0
- package/dist/ra-core/src/routing/Navigate.d.ts +14 -0
- package/dist/ra-core/src/routing/Navigate.js +17 -0
- package/dist/ra-core/src/routing/Outlet.d.ts +19 -0
- package/dist/ra-core/src/routing/Outlet.js +22 -0
- package/dist/ra-core/src/routing/RestoreScrollPosition.d.ts +24 -0
- package/dist/ra-core/src/routing/RestoreScrollPosition.js +23 -0
- package/dist/ra-core/src/routing/RouterProvider.d.ts +163 -0
- package/dist/ra-core/src/routing/RouterProvider.js +1 -0
- package/dist/ra-core/src/routing/RouterProviderContext.d.ts +15 -0
- package/dist/ra-core/src/routing/RouterProviderContext.js +19 -0
- package/dist/ra-core/src/routing/TestMemoryRouter.d.ts +21 -0
- package/dist/ra-core/src/routing/TestMemoryRouter.js +42 -0
- package/dist/ra-core/src/routing/adapters/reactRouterProvider.d.ts +6 -0
- package/dist/ra-core/src/routing/adapters/reactRouterProvider.js +86 -0
- package/dist/ra-core/src/routing/index.d.ts +28 -0
- package/dist/ra-core/src/routing/index.js +28 -0
- package/dist/ra-core/src/routing/types.d.ts +3 -0
- package/dist/ra-core/src/routing/types.js +1 -0
- package/dist/ra-core/src/routing/useBasename.d.ts +21 -0
- package/dist/ra-core/src/routing/useBasename.js +23 -0
- package/dist/ra-core/src/routing/useBlocker.d.ts +14 -0
- package/dist/ra-core/src/routing/useBlocker.js +17 -0
- package/dist/ra-core/src/routing/useCanBlock.d.ts +7 -0
- package/dist/ra-core/src/routing/useCanBlock.js +11 -0
- package/dist/ra-core/src/routing/useCreatePath.d.ts +42 -0
- package/dist/ra-core/src/routing/useCreatePath.js +69 -0
- package/dist/ra-core/src/routing/useGetPathForRecord.d.ts +42 -0
- package/dist/ra-core/src/routing/useGetPathForRecord.js +135 -0
- package/dist/ra-core/src/routing/useGetPathForRecordCallback.d.ts +6 -0
- package/dist/ra-core/src/routing/useGetPathForRecordCallback.js +82 -0
- package/dist/ra-core/src/routing/useInRouterContext.d.ts +11 -0
- package/dist/ra-core/src/routing/useInRouterContext.js +15 -0
- package/dist/ra-core/src/routing/useLocation.d.ts +10 -0
- package/dist/ra-core/src/routing/useLocation.js +13 -0
- package/dist/ra-core/src/routing/useMatch.d.ts +15 -0
- package/dist/ra-core/src/routing/useMatch.js +15 -0
- package/dist/ra-core/src/routing/useMatchPath.d.ts +17 -0
- package/dist/ra-core/src/routing/useMatchPath.js +17 -0
- package/dist/ra-core/src/routing/useNavigate.d.ts +12 -0
- package/dist/ra-core/src/routing/useNavigate.js +15 -0
- package/dist/ra-core/src/routing/useParams.d.ts +9 -0
- package/dist/ra-core/src/routing/useParams.js +13 -0
- package/dist/ra-core/src/routing/useRedirect.d.ts +30 -0
- package/dist/ra-core/src/routing/useRedirect.js +66 -0
- package/dist/ra-core/src/routing/useResetErrorBoundaryOnLocationChange.d.ts +7 -0
- package/dist/ra-core/src/routing/useResetErrorBoundaryOnLocationChange.js +17 -0
- package/dist/ra-core/src/routing/useRestoreScrollPosition.d.ts +40 -0
- package/dist/ra-core/src/routing/useRestoreScrollPosition.js +70 -0
- package/dist/ra-core/src/routing/useScrollToTop.d.ts +22 -0
- package/dist/ra-core/src/routing/useScrollToTop.js +33 -0
- package/dist/ra-core/src/routing/useSplatPathBase.d.ts +13 -0
- package/dist/ra-core/src/routing/useSplatPathBase.js +21 -0
- package/dist/ra-core/src/store/StoreContext.d.ts +2 -0
- package/dist/ra-core/src/store/StoreContext.js +4 -0
- package/dist/ra-core/src/store/StoreContextProvider.d.ts +7 -0
- package/dist/ra-core/src/store/StoreContextProvider.js +12 -0
- package/dist/ra-core/src/store/StoreSetter.d.ts +37 -0
- package/dist/ra-core/src/store/StoreSetter.js +40 -0
- package/dist/ra-core/src/store/index.d.ts +11 -0
- package/dist/ra-core/src/store/index.js +11 -0
- package/dist/ra-core/src/store/localStorageStore.d.ts +27 -0
- package/dist/ra-core/src/store/localStorageStore.js +198 -0
- package/dist/ra-core/src/store/memoryStore.d.ts +15 -0
- package/dist/ra-core/src/store/memoryStore.js +108 -0
- package/dist/ra-core/src/store/types.d.ts +11 -0
- package/dist/ra-core/src/store/types.js +1 -0
- package/dist/ra-core/src/store/useRemoveFromStore.d.ts +17 -0
- package/dist/ra-core/src/store/useRemoveFromStore.js +29 -0
- package/dist/ra-core/src/store/useRemoveItemsFromStore.d.ts +17 -0
- package/dist/ra-core/src/store/useRemoveItemsFromStore.js +29 -0
- package/dist/ra-core/src/store/useResetStore.d.ts +17 -0
- package/dist/ra-core/src/store/useResetStore.js +21 -0
- package/dist/ra-core/src/store/useStore.d.ts +48 -0
- package/dist/ra-core/src/store/useStore.js +32 -0
- package/dist/ra-core/src/store/useStoreContext.d.ts +4 -0
- package/dist/ra-core/src/store/useStoreContext.js +6 -0
- package/dist/ra-core/src/test-ui/Admin.d.ts +2 -0
- package/dist/ra-core/src/test-ui/Admin.js +8 -0
- package/dist/ra-core/src/test-ui/ArrayInput.d.ts +10 -0
- package/dist/ra-core/src/test-ui/ArrayInput.js +8 -0
- package/dist/ra-core/src/test-ui/AutocompleteArrayInput.d.ts +5 -0
- package/dist/ra-core/src/test-ui/AutocompleteArrayInput.js +5 -0
- package/dist/ra-core/src/test-ui/AutocompleteInput.d.ts +5 -0
- package/dist/ra-core/src/test-ui/AutocompleteInput.js +29 -0
- package/dist/ra-core/src/test-ui/BooleanInput.d.ts +2 -0
- package/dist/ra-core/src/test-ui/BooleanInput.js +10 -0
- package/dist/ra-core/src/test-ui/Confirm.d.ts +10 -0
- package/dist/ra-core/src/test-ui/Confirm.js +25 -0
- package/dist/ra-core/src/test-ui/CreateButton.d.ts +3 -0
- package/dist/ra-core/src/test-ui/CreateButton.js +9 -0
- package/dist/ra-core/src/test-ui/DataTable.d.ts +15 -0
- package/dist/ra-core/src/test-ui/DataTable.js +88 -0
- package/dist/ra-core/src/test-ui/DeleteButton.d.ts +5 -0
- package/dist/ra-core/src/test-ui/DeleteButton.js +18 -0
- package/dist/ra-core/src/test-ui/EditButton.d.ts +5 -0
- package/dist/ra-core/src/test-ui/EditButton.js +13 -0
- package/dist/ra-core/src/test-ui/Layout.d.ts +4 -0
- package/dist/ra-core/src/test-ui/Layout.js +36 -0
- package/dist/ra-core/src/test-ui/Notification.d.ts +13 -0
- package/dist/ra-core/src/test-ui/Notification.js +109 -0
- package/dist/ra-core/src/test-ui/Pagination.d.ts +1 -0
- package/dist/ra-core/src/test-ui/Pagination.js +28 -0
- package/dist/ra-core/src/test-ui/PrevNextButtons.d.ts +5 -0
- package/dist/ra-core/src/test-ui/PrevNextButtons.js +18 -0
- package/dist/ra-core/src/test-ui/ShowButton.d.ts +5 -0
- package/dist/ra-core/src/test-ui/ShowButton.js +13 -0
- package/dist/ra-core/src/test-ui/SimpleForm.d.ts +2 -0
- package/dist/ra-core/src/test-ui/SimpleForm.js +11 -0
- package/dist/ra-core/src/test-ui/SimpleFormIterator.d.ts +46 -0
- package/dist/ra-core/src/test-ui/SimpleFormIterator.js +101 -0
- package/dist/ra-core/src/test-ui/SimpleList.d.ts +6 -0
- package/dist/ra-core/src/test-ui/SimpleList.js +12 -0
- package/dist/ra-core/src/test-ui/SimpleShowLayout.d.ts +4 -0
- package/dist/ra-core/src/test-ui/SimpleShowLayout.js +3 -0
- package/dist/ra-core/src/test-ui/TextInput.d.ts +6 -0
- package/dist/ra-core/src/test-ui/TextInput.js +9 -0
- package/dist/ra-core/src/test-ui/defaultI18nProvider.d.ts +2 -0
- package/dist/ra-core/src/test-ui/defaultI18nProvider.js +10 -0
- package/dist/ra-core/src/test-ui/index.d.ts +21 -0
- package/dist/ra-core/src/test-ui/index.js +21 -0
- package/dist/ra-core/src/types.d.ts +284 -0
- package/dist/ra-core/src/types.js +5 -0
- package/dist/ra-core/src/util/FieldTitle.d.ts +17 -0
- package/dist/ra-core/src/util/FieldTitle.js +24 -0
- package/dist/ra-core/src/util/Ready.d.ts +2 -0
- package/dist/ra-core/src/util/Ready.js +57 -0
- package/dist/ra-core/src/util/asyncDebounce.d.ts +7 -0
- package/dist/ra-core/src/util/asyncDebounce.js +29 -0
- package/dist/ra-core/src/util/escapePath.d.ts +11 -0
- package/dist/ra-core/src/util/escapePath.js +10 -0
- package/dist/ra-core/src/util/genericMemo.d.ts +5 -0
- package/dist/ra-core/src/util/genericMemo.js +14 -0
- package/dist/ra-core/src/util/getFieldLabelTranslationArgs.d.ts +22 -0
- package/dist/ra-core/src/util/getFieldLabelTranslationArgs.js +73 -0
- package/dist/ra-core/src/util/getMutationMode.d.ts +1 -0
- package/dist/ra-core/src/util/getMutationMode.js +13 -0
- package/dist/ra-core/src/util/hooks.d.ts +15 -0
- package/dist/ra-core/src/util/hooks.js +73 -0
- package/dist/ra-core/src/util/index.d.ts +20 -0
- package/dist/ra-core/src/util/index.js +19 -0
- package/dist/ra-core/src/util/mergeRefs.d.ts +2 -0
- package/dist/ra-core/src/util/mergeRefs.js +13 -0
- package/dist/ra-core/src/util/removeEmpty.d.ts +2 -0
- package/dist/ra-core/src/util/removeEmpty.js +16 -0
- package/dist/ra-core/src/util/removeKey.d.ts +2 -0
- package/dist/ra-core/src/util/removeKey.js +22 -0
- package/dist/ra-core/src/util/shallowEqual.d.ts +1 -0
- package/dist/ra-core/src/util/shallowEqual.js +29 -0
- package/dist/ra-core/src/util/useCheckForApplicationUpdate.d.ts +21 -0
- package/dist/ra-core/src/util/useCheckForApplicationUpdate.js +84 -0
- package/dist/ra-core/src/util/useDebouncedEvent.d.ts +8 -0
- package/dist/ra-core/src/util/useDebouncedEvent.js +28 -0
- package/dist/ra-core/src/util/useEvent.d.ts +7 -0
- package/dist/ra-core/src/util/useEvent.js +19 -0
- package/dist/ra-core/src/util/useFieldValue.d.ts +21 -0
- package/dist/ra-core/src/util/useFieldValue.js +27 -0
- package/dist/ra-core/src/util/useWhyDidYouUpdate.d.ts +12 -0
- package/dist/ra-core/src/util/useWhyDidYouUpdate.js +42 -0
- package/dist/ra-core/src/util/warning.d.ts +2 -0
- package/dist/ra-core/src/util/warning.js +5 -0
- package/dist/resource/Resource.d.ts +14 -0
- package/dist/resource/Resource.js +31 -0
- package/dist/resource/ResourceSchema.d.ts +170 -13
- package/dist/resource/ResourceSchema.js +118 -20
- package/dist/resource/ResourceSchemaProvider.d.ts +2 -1
- package/dist/resource/ResourceSchemaProvider.js +9 -9
- package/dist/resource/SchemaRegistry.d.ts +64 -5
- package/dist/resource/SchemaRegistry.js +189 -22
- package/dist/resource/index.d.ts +2 -0
- package/dist/resource/index.js +2 -0
- package/dist/resource/useConstructedPageTitle.d.ts +1 -0
- package/dist/resource/useConstructedPageTitle.js +27 -0
- package/dist/routing/index.d.ts +2 -0
- package/dist/routing/index.js +2 -0
- package/dist/routing/useCreatePath.d.ts +7 -0
- package/dist/routing/useCreatePath.js +36 -0
- package/dist/routing/useGetPathForRecord.d.ts +11 -0
- package/dist/routing/useGetPathForRecord.js +94 -0
- package/dist/settings/SettingsContext.d.ts +16 -0
- package/dist/settings/SettingsContext.js +3 -0
- package/dist/settings/useSettingValue.d.ts +15 -0
- package/dist/settings/useSettingValue.js +23 -0
- package/dist/strato-core/src/core/Resource.d.ts +0 -0
- package/dist/strato-core/src/core/Resource.js +1 -0
- package/dist/strato-core/src/core/index.d.ts +0 -0
- package/dist/strato-core/src/core/index.js +1 -0
- package/dist/strato-core/src/index.d.ts +3 -0
- package/dist/strato-core/src/index.js +4 -0
- package/dist/strato-core/src/ra-messages.d.ts +1 -0
- package/dist/strato-core/src/ra-messages.js +296 -0
- package/dist/strato-core/src/resource/FieldSchema.d.ts +18 -0
- package/dist/strato-core/src/resource/FieldSchema.js +19 -0
- package/dist/strato-core/src/resource/InputSchema.d.ts +18 -0
- package/dist/strato-core/src/resource/InputSchema.js +19 -0
- package/dist/strato-core/src/resource/ResourceContext.d.ts +2 -0
- package/dist/strato-core/src/resource/ResourceContext.js +3 -0
- package/dist/strato-core/src/resource/ResourceSchema.d.ts +33 -0
- package/dist/strato-core/src/resource/ResourceSchema.js +90 -0
- package/dist/strato-core/src/resource/ResourceSchemaProvider.d.ts +15 -0
- package/dist/strato-core/src/resource/ResourceSchemaProvider.js +71 -0
- package/dist/strato-core/src/resource/SchemaRegistry.d.ts +71 -0
- package/dist/strato-core/src/resource/SchemaRegistry.js +212 -0
- package/dist/strato-core/src/resource/index.d.ts +6 -0
- package/dist/strato-core/src/resource/index.js +6 -0
- package/package.json +9 -3
- package/src/index.ts +3 -4
- package/src/resource/Resource.test.tsx +87 -0
- package/src/resource/Resource.tsx +62 -0
- package/src/resource/ResourceSchema.tsx +378 -57
- package/src/resource/ResourceSchemaProvider.tsx +17 -27
- package/src/resource/SchemaRegistry.tsx +295 -46
- package/src/resource/index.ts +2 -0
- package/src/resource/useConstructedPageTitle.ts +31 -0
- package/src/routing/index.ts +2 -0
- package/src/routing/useCreatePath.test.tsx +38 -0
- package/src/routing/useCreatePath.ts +40 -0
- package/src/routing/useGetPathForRecord.ts +127 -0
- package/src/settings/SettingsContext.ts +20 -0
- package/src/settings/useSettingValue.ts +32 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { UseMutationOptions, UseMutationResult, MutateOptions, QueryKey } from '@tanstack/react-query';
|
|
2
|
+
import { MutationMode } from '../types';
|
|
3
|
+
export declare const useMutationWithMutationMode: <ErrorType = Error, TData extends {
|
|
4
|
+
data?: unknown;
|
|
5
|
+
} = {
|
|
6
|
+
data?: unknown;
|
|
7
|
+
}, TVariables = unknown>(params: TVariables | undefined, options: UseMutationWithMutationModeOptions<ErrorType, TData, TVariables>) => UseMutationWithMutationModeResult<boolean, ErrorType, TData, TVariables>;
|
|
8
|
+
export type Snapshot = [key: QueryKey, value: any][];
|
|
9
|
+
type MutationFunction<TData extends {
|
|
10
|
+
data?: unknown;
|
|
11
|
+
} = {
|
|
12
|
+
data?: unknown;
|
|
13
|
+
}, TVariables = unknown> = (variables: TVariables) => Promise<TData>;
|
|
14
|
+
export type UseMutationWithMutationModeOptions<ErrorType = Error, TData extends {
|
|
15
|
+
data?: unknown;
|
|
16
|
+
} = {
|
|
17
|
+
data?: unknown;
|
|
18
|
+
}, TVariables = unknown> = Omit<UseMutationOptions<TData['data'], ErrorType, Partial<TVariables>>, 'mutationFn'> & {
|
|
19
|
+
getMutateWithMiddlewares?: (mutate: MutationFunction<TData, TVariables>) => (params: TVariables) => Promise<TData>;
|
|
20
|
+
mutationFn?: MutationFunction<TData, TVariables>;
|
|
21
|
+
mutationMode?: MutationMode;
|
|
22
|
+
returnPromise?: boolean;
|
|
23
|
+
updateCache: <OptionsType extends {
|
|
24
|
+
mutationMode: MutationMode;
|
|
25
|
+
}>(params: Partial<TVariables>, options: OptionsType, mutationResult: TData['data'] | undefined) => TData['data'];
|
|
26
|
+
getQueryKeys: <OptionsType extends {
|
|
27
|
+
mutationMode: MutationMode;
|
|
28
|
+
}>(params: Partial<TVariables>, options: OptionsType) => Array<QueryKey>;
|
|
29
|
+
onUndo?: <OptionsType extends {
|
|
30
|
+
mutationMode: MutationMode;
|
|
31
|
+
}>(params: Partial<TVariables>, options: OptionsType) => void;
|
|
32
|
+
};
|
|
33
|
+
export type MutationFunctionWithOptions<TReturnPromise extends boolean = boolean, ErrorType = Error, TData extends {
|
|
34
|
+
data?: unknown;
|
|
35
|
+
} = {
|
|
36
|
+
data?: unknown;
|
|
37
|
+
}, TVariables = unknown> = (params?: Partial<TVariables>, options?: MutateOptions<TData['data'], ErrorType, Partial<TVariables>, unknown> & {
|
|
38
|
+
mutationMode?: MutationMode;
|
|
39
|
+
returnPromise?: TReturnPromise;
|
|
40
|
+
}) => Promise<TReturnPromise extends true ? TData['data'] : void>;
|
|
41
|
+
export type UseMutationWithMutationModeResult<TReturnPromise extends boolean = boolean, ErrorType = Error, TData extends {
|
|
42
|
+
data?: unknown;
|
|
43
|
+
} = {
|
|
44
|
+
data?: unknown;
|
|
45
|
+
}, TVariables = unknown> = [
|
|
46
|
+
MutationFunctionWithOptions<TReturnPromise, ErrorType, TData, TVariables>,
|
|
47
|
+
UseMutationResult<TData['data'], ErrorType, Partial<TVariables>, unknown> & {
|
|
48
|
+
isLoading: boolean;
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { useMutation, useQueryClient, } from '@tanstack/react-query';
|
|
3
|
+
import { useAddUndoableMutation } from './undo/useAddUndoableMutation';
|
|
4
|
+
import { useEvent } from '../util';
|
|
5
|
+
export const useMutationWithMutationMode = (params = {}, options) => {
|
|
6
|
+
const queryClient = useQueryClient();
|
|
7
|
+
const addUndoableMutation = useAddUndoableMutation();
|
|
8
|
+
const { mutationKey, mutationMode = 'pessimistic', mutationFn, getMutateWithMiddlewares, updateCache, getQueryKeys, onUndo, ...mutationOptions } = options;
|
|
9
|
+
if (mutationFn == null) {
|
|
10
|
+
throw new Error('useMutationWithMutationMode mutation requires a mutationFn');
|
|
11
|
+
}
|
|
12
|
+
const mutationFnEvent = useEvent(mutationFn);
|
|
13
|
+
const updateCacheEvent = useEvent(updateCache);
|
|
14
|
+
const getQueryKeysEvent = useEvent(getQueryKeys);
|
|
15
|
+
const getSnapshotEvent = useEvent(
|
|
16
|
+
/**
|
|
17
|
+
* Snapshot the previous values via queryClient.getQueriesData()
|
|
18
|
+
*
|
|
19
|
+
* The snapshotData ref will contain an array of tuples [query key, associated data]
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* [
|
|
23
|
+
* [['posts', 'getList'], { data: [{ id: 1, title: 'Hello' }], total: 1 }],
|
|
24
|
+
* [['posts', 'getMany'], [{ id: 1, title: 'Hello' }]],
|
|
25
|
+
* ]
|
|
26
|
+
*
|
|
27
|
+
* @see https://tanstack.com/query/v5/docs/react/reference/QueryClient#queryclientgetqueriesdata
|
|
28
|
+
*/
|
|
29
|
+
(queryKeys) => queryKeys.reduce((prev, queryKey) => prev.concat(queryClient.getQueriesData({ queryKey })), []));
|
|
30
|
+
const onUndoEvent = useEvent(onUndo ?? noop);
|
|
31
|
+
const getMutateWithMiddlewaresEvent = useEvent(getMutateWithMiddlewares ??
|
|
32
|
+
noop);
|
|
33
|
+
const mode = useRef(mutationMode);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
mode.current = mutationMode;
|
|
36
|
+
}, [mutationMode]);
|
|
37
|
+
// This ref won't be updated when params change in an effect, only when the mutate callback is called (See L247)
|
|
38
|
+
// This ensures that for undoable and optimistic mutations, the params are not changed by side effects (unselectAll for instance)
|
|
39
|
+
// _after_ the mutate function has been called, while keeping the ability to change declaration time params _until_ the mutation is called.
|
|
40
|
+
const paramsRef = useRef(params);
|
|
41
|
+
// Ref that stores the snapshot of the state before the mutation to allow reverting it
|
|
42
|
+
const snapshot = useRef([]);
|
|
43
|
+
// Ref that stores the mutation with middlewares to avoid losing them if the calling component is unmounted
|
|
44
|
+
const mutateWithMiddlewares = useRef(mutationFnEvent);
|
|
45
|
+
// We need to store the call-time onError and onSettled in refs to be able to call them in the useMutation hook even
|
|
46
|
+
// when the calling component is unmounted
|
|
47
|
+
const callTimeOnError = useRef(undefined);
|
|
48
|
+
const callTimeOnSettled = useRef(undefined);
|
|
49
|
+
// We don't need to keep a ref on the onSuccess callback as we call it ourselves for optimistic and
|
|
50
|
+
// undoable mutations. There is a limitation though: if one of the side effects applied by the onSuccess callback
|
|
51
|
+
// unmounts the component that called the useUpdate hook (redirect for instance), it must be the last one applied,
|
|
52
|
+
// otherwise the other side effects may not applied.
|
|
53
|
+
const hasCallTimeOnSuccess = useRef(false);
|
|
54
|
+
const mutation = useMutation({
|
|
55
|
+
mutationKey,
|
|
56
|
+
mutationFn: async (params) => {
|
|
57
|
+
if (params == null) {
|
|
58
|
+
throw new Error('useMutationWithMutationMode mutation requires parameters');
|
|
59
|
+
}
|
|
60
|
+
return (mutateWithMiddlewares
|
|
61
|
+
.current(params)
|
|
62
|
+
// Middlewares expect the data property of the dataProvider response
|
|
63
|
+
.then(({ data }) => data));
|
|
64
|
+
},
|
|
65
|
+
...mutationOptions,
|
|
66
|
+
onMutate: async (...args) => {
|
|
67
|
+
if (mutationOptions.onMutate) {
|
|
68
|
+
const userContext = (await mutationOptions.onMutate(...args)) || {};
|
|
69
|
+
return {
|
|
70
|
+
snapshot: snapshot.current,
|
|
71
|
+
// @ts-ignore
|
|
72
|
+
...userContext,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Return a context object with the snapshot value
|
|
77
|
+
return { snapshot: snapshot.current };
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
onError: (...args) => {
|
|
81
|
+
if (mode.current === 'optimistic' ||
|
|
82
|
+
mode.current === 'undoable') {
|
|
83
|
+
const [, , onMutateResult] = args;
|
|
84
|
+
// If the mutation fails, use the context returned from onMutate to rollback
|
|
85
|
+
onMutateResult.snapshot.forEach(([key, value]) => {
|
|
86
|
+
queryClient.setQueryData(key, value);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (callTimeOnError.current) {
|
|
90
|
+
return callTimeOnError.current(...args);
|
|
91
|
+
}
|
|
92
|
+
if (mutationOptions.onError) {
|
|
93
|
+
return mutationOptions.onError(...args);
|
|
94
|
+
}
|
|
95
|
+
// call-time error callback is executed by react-query
|
|
96
|
+
},
|
|
97
|
+
onSuccess: (...args) => {
|
|
98
|
+
if (mode.current === 'pessimistic') {
|
|
99
|
+
const [data, variables] = args;
|
|
100
|
+
// update the getOne and getList query cache with the new result
|
|
101
|
+
updateCacheEvent({ ...paramsRef.current, ...variables }, {
|
|
102
|
+
mutationMode: mode.current,
|
|
103
|
+
}, data);
|
|
104
|
+
if (mutationOptions.onSuccess &&
|
|
105
|
+
!hasCallTimeOnSuccess.current) {
|
|
106
|
+
mutationOptions.onSuccess(...args);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
onSettled: (...args) => {
|
|
111
|
+
if (mode.current === 'optimistic' ||
|
|
112
|
+
mode.current === 'undoable') {
|
|
113
|
+
const [, , variables] = args;
|
|
114
|
+
// Always refetch after error or success:
|
|
115
|
+
getQueryKeysEvent({ ...paramsRef.current, ...variables }, {
|
|
116
|
+
mutationMode: mode.current,
|
|
117
|
+
}).forEach(queryKey => {
|
|
118
|
+
queryClient.invalidateQueries({ queryKey });
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
if (callTimeOnSettled.current) {
|
|
122
|
+
return callTimeOnSettled.current(...args);
|
|
123
|
+
}
|
|
124
|
+
if (mutationOptions.onSettled) {
|
|
125
|
+
return mutationOptions.onSettled(...args);
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
const mutate = async (callTimeParams = {}, callTimeOptions = {}) => {
|
|
130
|
+
const { mutationMode, returnPromise = mutationOptions.returnPromise, onError, onSettled, onSuccess, ...otherCallTimeOptions } = callTimeOptions;
|
|
131
|
+
// store the hook time params *at the moment of the call*
|
|
132
|
+
// because they may change afterwards, which would break the undoable mode
|
|
133
|
+
// as the previousData would be overwritten by the optimistic update
|
|
134
|
+
paramsRef.current = params;
|
|
135
|
+
// Store the mutation with middlewares to avoid losing them if the calling component is unmounted
|
|
136
|
+
if (getMutateWithMiddlewares) {
|
|
137
|
+
mutateWithMiddlewares.current = getMutateWithMiddlewaresEvent((params) => {
|
|
138
|
+
return mutationFnEvent(params);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
mutateWithMiddlewares.current = mutationFnEvent;
|
|
143
|
+
}
|
|
144
|
+
// We need to keep the onSuccess callback here and not in the useMutation for undoable mutations
|
|
145
|
+
hasCallTimeOnSuccess.current = !!onSuccess;
|
|
146
|
+
// We need to store the onError and onSettled callbacks here to be able to call them in the useMutation hook
|
|
147
|
+
// so that they are called even when the calling component is unmounted
|
|
148
|
+
callTimeOnError.current = onError;
|
|
149
|
+
callTimeOnSettled.current = onSettled;
|
|
150
|
+
if (mutationMode) {
|
|
151
|
+
mode.current = mutationMode;
|
|
152
|
+
}
|
|
153
|
+
if (returnPromise && mode.current !== 'pessimistic') {
|
|
154
|
+
console.warn('The returnPromise parameter can only be used if the mutationMode is set to pessimistic');
|
|
155
|
+
}
|
|
156
|
+
snapshot.current = getSnapshotEvent(getQueryKeysEvent({ ...paramsRef.current, ...callTimeParams }, {
|
|
157
|
+
mutationMode: mode.current,
|
|
158
|
+
}));
|
|
159
|
+
if (mode.current === 'pessimistic') {
|
|
160
|
+
if (returnPromise) {
|
|
161
|
+
return mutation.mutateAsync({ ...paramsRef.current, ...callTimeParams },
|
|
162
|
+
// We don't pass onError and onSettled here as we will call them in the useMutation hook side effects
|
|
163
|
+
{ onSuccess, ...otherCallTimeOptions });
|
|
164
|
+
}
|
|
165
|
+
return mutation.mutate({ ...paramsRef.current, ...callTimeParams },
|
|
166
|
+
// We don't pass onError and onSettled here as we will call them in the useMutation hook side effects
|
|
167
|
+
{ onSuccess, ...otherCallTimeOptions });
|
|
168
|
+
}
|
|
169
|
+
// Cancel any outgoing re-fetches (so they don't overwrite our optimistic update)
|
|
170
|
+
await Promise.all(snapshot.current.map(([queryKey]) => queryClient.cancelQueries({ queryKey })));
|
|
171
|
+
// Optimistically update to the new value
|
|
172
|
+
const optimisticResult = updateCacheEvent({ ...paramsRef.current, ...callTimeParams }, {
|
|
173
|
+
mutationMode: mode.current,
|
|
174
|
+
}, undefined);
|
|
175
|
+
// run the success callbacks during the next tick
|
|
176
|
+
setTimeout(() => {
|
|
177
|
+
if (onSuccess) {
|
|
178
|
+
onSuccess(optimisticResult, { ...paramsRef.current, ...callTimeParams }, {
|
|
179
|
+
snapshot: snapshot.current,
|
|
180
|
+
}, {
|
|
181
|
+
client: queryClient,
|
|
182
|
+
mutationKey,
|
|
183
|
+
meta: mutationOptions.meta,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
else if (mutationOptions.onSuccess &&
|
|
187
|
+
!hasCallTimeOnSuccess.current) {
|
|
188
|
+
mutationOptions.onSuccess(optimisticResult, { ...paramsRef.current, ...callTimeParams }, {
|
|
189
|
+
snapshot: snapshot.current,
|
|
190
|
+
}, {
|
|
191
|
+
client: queryClient,
|
|
192
|
+
mutationKey,
|
|
193
|
+
meta: mutationOptions.meta,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}, 0);
|
|
197
|
+
if (mode.current === 'optimistic') {
|
|
198
|
+
// call the mutate method without success side effects
|
|
199
|
+
return mutation.mutate({
|
|
200
|
+
...paramsRef.current,
|
|
201
|
+
...callTimeParams,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// Undoable mutation: add the mutation to the undoable queue.
|
|
206
|
+
// The Notification component will dequeue it when the user confirms or cancels the message.
|
|
207
|
+
addUndoableMutation(({ isUndo }) => {
|
|
208
|
+
if (isUndo) {
|
|
209
|
+
if (onUndo) {
|
|
210
|
+
onUndoEvent({
|
|
211
|
+
...paramsRef.current,
|
|
212
|
+
...callTimeParams,
|
|
213
|
+
}, {
|
|
214
|
+
mutationMode: mode.current,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// rollback
|
|
218
|
+
snapshot.current.forEach(([key, value]) => {
|
|
219
|
+
queryClient.setQueryData(key, value);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// call the mutate method without success side effects
|
|
224
|
+
mutation.mutate({
|
|
225
|
+
...paramsRef.current,
|
|
226
|
+
...callTimeParams,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
const mutationResult = useMemo(() => ({
|
|
233
|
+
isLoading: mutation.isPending,
|
|
234
|
+
...mutation,
|
|
235
|
+
}), [mutation]);
|
|
236
|
+
return [useEvent(mutate), mutationResult];
|
|
237
|
+
};
|
|
238
|
+
const noop = () => { };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook for triggering a page refresh. Returns a callback function.
|
|
3
|
+
*
|
|
4
|
+
* The callback invalidates all queries and refetches the active ones.
|
|
5
|
+
* Any component depending on react-query data will be re-rendered.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
*
|
|
9
|
+
* const refresh = useRefresh();
|
|
10
|
+
* const handleClick = () => {
|
|
11
|
+
* refresh();
|
|
12
|
+
* };
|
|
13
|
+
*/
|
|
14
|
+
export declare const useRefresh: () => () => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
3
|
+
/**
|
|
4
|
+
* Hook for triggering a page refresh. Returns a callback function.
|
|
5
|
+
*
|
|
6
|
+
* The callback invalidates all queries and refetches the active ones.
|
|
7
|
+
* Any component depending on react-query data will be re-rendered.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* const refresh = useRefresh();
|
|
12
|
+
* const handleClick = () => {
|
|
13
|
+
* refresh();
|
|
14
|
+
* };
|
|
15
|
+
*/
|
|
16
|
+
export const useRefresh = () => {
|
|
17
|
+
const queryClient = useQueryClient();
|
|
18
|
+
return useCallback(() => {
|
|
19
|
+
queryClient.invalidateQueries();
|
|
20
|
+
}, [queryClient]);
|
|
21
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type UseMutationResult, type MutateOptions, UseMutationOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { RaRecord, UpdateParams, MutationMode, DataProvider } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Get a callback to call the dataProvider.update() method, the result and the loading state.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} resource
|
|
7
|
+
* @param {Params} params The update parameters { id, data, previousData, meta }
|
|
8
|
+
* @param {Object} options Options object to pass to the queryClient.
|
|
9
|
+
* May include side effects to be executed upon success or failure, e.g. { onSuccess: () => { refresh(); } }
|
|
10
|
+
* May include a mutation mode (optimistic/pessimistic/undoable), e.g. { mutationMode: 'undoable' }
|
|
11
|
+
*
|
|
12
|
+
* @typedef Params
|
|
13
|
+
* @prop params.id The resource identifier, e.g. 123
|
|
14
|
+
* @prop params.data The updates to merge into the record, e.g. { views: 10 }
|
|
15
|
+
* @prop params.previousData The record before the update is applied
|
|
16
|
+
* @prop params.meta Optional meta data
|
|
17
|
+
*
|
|
18
|
+
* @returns The current mutation state. Destructure as [update, { data, error, isPending }].
|
|
19
|
+
*
|
|
20
|
+
* The return value updates according to the request state:
|
|
21
|
+
*
|
|
22
|
+
* - initial: [update, { isPending: false, isIdle: true }]
|
|
23
|
+
* - start: [update, { isPending: true }]
|
|
24
|
+
* - success: [update, { data: [data from response], isPending: false, isSuccess: true }]
|
|
25
|
+
* - error: [update, { error: [error from response], isPending: false, isError: true }]
|
|
26
|
+
*
|
|
27
|
+
* The update() function must be called with a resource and a parameter object: update(resource, { id, data, previousData }, options)
|
|
28
|
+
*
|
|
29
|
+
* This hook uses react-query useMutation under the hood.
|
|
30
|
+
* This means the state object contains mutate, isIdle, reset and other react-query methods.
|
|
31
|
+
*
|
|
32
|
+
* @see https://react-query-v3.tanstack.com/reference/useMutation
|
|
33
|
+
*
|
|
34
|
+
* @example // set params when calling the update callback
|
|
35
|
+
*
|
|
36
|
+
* import { useUpdate, useRecordContext } from 'react-admin';
|
|
37
|
+
*
|
|
38
|
+
* const IncreaseLikeButton = () => {
|
|
39
|
+
* const record = useRecordContext();
|
|
40
|
+
* const diff = { likes: record.likes + 1 };
|
|
41
|
+
* const [update, { isPending, error }] = useUpdate();
|
|
42
|
+
* const handleClick = () => {
|
|
43
|
+
* update('likes', { id: record.id, data: diff, previousData: record })
|
|
44
|
+
* }
|
|
45
|
+
* if (error) { return <p>ERROR</p>; }
|
|
46
|
+
* return <button disabled={isPending} onClick={handleClick}>Like</div>;
|
|
47
|
+
* };
|
|
48
|
+
*
|
|
49
|
+
* @example // set params when calling the hook
|
|
50
|
+
*
|
|
51
|
+
* import { useUpdate, useRecordContext } from 'react-admin';
|
|
52
|
+
*
|
|
53
|
+
* const IncreaseLikeButton = () => {
|
|
54
|
+
* const record = useRecordContext();
|
|
55
|
+
* const diff = { likes: record.likes + 1 };
|
|
56
|
+
* const [update, { isPending, error }] = useUpdate('likes', { id: record.id, data: diff, previousData: record });
|
|
57
|
+
* if (error) { return <p>ERROR</p>; }
|
|
58
|
+
* return <button disabled={isPending} onClick={() => update()}>Like</button>;
|
|
59
|
+
* };
|
|
60
|
+
*
|
|
61
|
+
* @example // TypeScript
|
|
62
|
+
* const [update, { data }] = useUpdate<Product>('products', { id, data: diff, previousData: product });
|
|
63
|
+
* \-- data is Product
|
|
64
|
+
*/
|
|
65
|
+
export declare const useUpdate: <RecordType extends RaRecord = any, ErrorType = Error>(resource?: string, params?: Partial<UpdateParams<RecordType>>, options?: UseUpdateOptions<RecordType, ErrorType>) => UseUpdateResult<RecordType, boolean, ErrorType>;
|
|
66
|
+
export interface UseUpdateMutateParams<RecordType extends RaRecord = any> {
|
|
67
|
+
resource?: string;
|
|
68
|
+
id?: RecordType['id'];
|
|
69
|
+
data?: Partial<RecordType>;
|
|
70
|
+
previousData?: any;
|
|
71
|
+
meta?: any;
|
|
72
|
+
}
|
|
73
|
+
export type UseUpdateOptions<RecordType extends RaRecord = any, ErrorType = Error> = Omit<UseMutationOptions<RecordType, ErrorType, Partial<UseUpdateMutateParams<RecordType>>>, 'mutationFn'> & {
|
|
74
|
+
mutationMode?: MutationMode;
|
|
75
|
+
returnPromise?: boolean;
|
|
76
|
+
getMutateWithMiddlewares?: <UpdateFunctionType extends DataProvider['update'] = DataProvider['update']>(mutate: UpdateFunctionType) => (...Params: Parameters<UpdateFunctionType>) => ReturnType<UpdateFunctionType>;
|
|
77
|
+
};
|
|
78
|
+
export type UpdateMutationFunction<RecordType extends RaRecord = any, TReturnPromise extends boolean = boolean, ErrorType = Error> = (resource?: string, params?: Partial<UpdateParams<RecordType>>, options?: MutateOptions<RecordType, ErrorType, Partial<UseUpdateMutateParams<RecordType>>, unknown> & {
|
|
79
|
+
mutationMode?: MutationMode;
|
|
80
|
+
returnPromise?: TReturnPromise;
|
|
81
|
+
}) => Promise<TReturnPromise extends true ? RecordType : void>;
|
|
82
|
+
export type UseUpdateResult<RecordType extends RaRecord = any, TReturnPromise extends boolean = boolean, ErrorType = Error> = [
|
|
83
|
+
UpdateMutationFunction<RecordType, TReturnPromise, ErrorType>,
|
|
84
|
+
UseMutationResult<RecordType, ErrorType, Partial<UpdateParams<RecordType> & {
|
|
85
|
+
resource?: string;
|
|
86
|
+
}>, unknown> & {
|
|
87
|
+
isLoading: boolean;
|
|
88
|
+
}
|
|
89
|
+
];
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { useQueryClient, } from '@tanstack/react-query';
|
|
2
|
+
import { useDataProvider } from './useDataProvider';
|
|
3
|
+
import { useMutationWithMutationMode } from './useMutationWithMutationMode';
|
|
4
|
+
import { useEvent } from '../util';
|
|
5
|
+
/**
|
|
6
|
+
* Get a callback to call the dataProvider.update() method, the result and the loading state.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} resource
|
|
9
|
+
* @param {Params} params The update parameters { id, data, previousData, meta }
|
|
10
|
+
* @param {Object} options Options object to pass to the queryClient.
|
|
11
|
+
* May include side effects to be executed upon success or failure, e.g. { onSuccess: () => { refresh(); } }
|
|
12
|
+
* May include a mutation mode (optimistic/pessimistic/undoable), e.g. { mutationMode: 'undoable' }
|
|
13
|
+
*
|
|
14
|
+
* @typedef Params
|
|
15
|
+
* @prop params.id The resource identifier, e.g. 123
|
|
16
|
+
* @prop params.data The updates to merge into the record, e.g. { views: 10 }
|
|
17
|
+
* @prop params.previousData The record before the update is applied
|
|
18
|
+
* @prop params.meta Optional meta data
|
|
19
|
+
*
|
|
20
|
+
* @returns The current mutation state. Destructure as [update, { data, error, isPending }].
|
|
21
|
+
*
|
|
22
|
+
* The return value updates according to the request state:
|
|
23
|
+
*
|
|
24
|
+
* - initial: [update, { isPending: false, isIdle: true }]
|
|
25
|
+
* - start: [update, { isPending: true }]
|
|
26
|
+
* - success: [update, { data: [data from response], isPending: false, isSuccess: true }]
|
|
27
|
+
* - error: [update, { error: [error from response], isPending: false, isError: true }]
|
|
28
|
+
*
|
|
29
|
+
* The update() function must be called with a resource and a parameter object: update(resource, { id, data, previousData }, options)
|
|
30
|
+
*
|
|
31
|
+
* This hook uses react-query useMutation under the hood.
|
|
32
|
+
* This means the state object contains mutate, isIdle, reset and other react-query methods.
|
|
33
|
+
*
|
|
34
|
+
* @see https://react-query-v3.tanstack.com/reference/useMutation
|
|
35
|
+
*
|
|
36
|
+
* @example // set params when calling the update callback
|
|
37
|
+
*
|
|
38
|
+
* import { useUpdate, useRecordContext } from 'react-admin';
|
|
39
|
+
*
|
|
40
|
+
* const IncreaseLikeButton = () => {
|
|
41
|
+
* const record = useRecordContext();
|
|
42
|
+
* const diff = { likes: record.likes + 1 };
|
|
43
|
+
* const [update, { isPending, error }] = useUpdate();
|
|
44
|
+
* const handleClick = () => {
|
|
45
|
+
* update('likes', { id: record.id, data: diff, previousData: record })
|
|
46
|
+
* }
|
|
47
|
+
* if (error) { return <p>ERROR</p>; }
|
|
48
|
+
* return <button disabled={isPending} onClick={handleClick}>Like</div>;
|
|
49
|
+
* };
|
|
50
|
+
*
|
|
51
|
+
* @example // set params when calling the hook
|
|
52
|
+
*
|
|
53
|
+
* import { useUpdate, useRecordContext } from 'react-admin';
|
|
54
|
+
*
|
|
55
|
+
* const IncreaseLikeButton = () => {
|
|
56
|
+
* const record = useRecordContext();
|
|
57
|
+
* const diff = { likes: record.likes + 1 };
|
|
58
|
+
* const [update, { isPending, error }] = useUpdate('likes', { id: record.id, data: diff, previousData: record });
|
|
59
|
+
* if (error) { return <p>ERROR</p>; }
|
|
60
|
+
* return <button disabled={isPending} onClick={() => update()}>Like</button>;
|
|
61
|
+
* };
|
|
62
|
+
*
|
|
63
|
+
* @example // TypeScript
|
|
64
|
+
* const [update, { data }] = useUpdate<Product>('products', { id, data: diff, previousData: product });
|
|
65
|
+
* \-- data is Product
|
|
66
|
+
*/
|
|
67
|
+
export const useUpdate = (resource, params = {}, options = {}) => {
|
|
68
|
+
const dataProvider = useDataProvider();
|
|
69
|
+
const queryClient = useQueryClient();
|
|
70
|
+
const { mutationMode = 'pessimistic', getMutateWithMiddlewares, ...mutationOptions } = options;
|
|
71
|
+
const dataProviderUpdate = useEvent((resource, params) => dataProvider.update(resource, params));
|
|
72
|
+
const [mutate, mutationResult] = useMutationWithMutationMode({ resource, ...params }, {
|
|
73
|
+
...mutationOptions,
|
|
74
|
+
mutationKey: [resource, 'update', params],
|
|
75
|
+
mutationMode,
|
|
76
|
+
mutationFn: ({ resource, ...params }) => {
|
|
77
|
+
if (resource == null) {
|
|
78
|
+
throw new Error('useUpdate mutation requires a resource');
|
|
79
|
+
}
|
|
80
|
+
if (params.id == null) {
|
|
81
|
+
throw new Error('useUpdate mutation requires a non-empty id');
|
|
82
|
+
}
|
|
83
|
+
if (!params.data) {
|
|
84
|
+
throw new Error('useUpdate mutation requires a non-empty data object');
|
|
85
|
+
}
|
|
86
|
+
return dataProviderUpdate(resource, params);
|
|
87
|
+
},
|
|
88
|
+
updateCache: ({ resource, ...params }, { mutationMode }, result) => {
|
|
89
|
+
// hack: only way to tell react-query not to fetch this query for the next 5 seconds
|
|
90
|
+
// because setQueryData doesn't accept a stale time option
|
|
91
|
+
const now = Date.now();
|
|
92
|
+
const updatedAt = mutationMode === 'undoable' ? now + 5 * 1000 : now;
|
|
93
|
+
// Stringify and parse the data to remove undefined values.
|
|
94
|
+
// If we don't do this, an update with { id: undefined } as payload
|
|
95
|
+
// would remove the id from the record, which no real data provider does.
|
|
96
|
+
const clonedData = JSON.parse(JSON.stringify(mutationMode === 'pessimistic' ? result : params?.data));
|
|
97
|
+
const updateColl = (old) => {
|
|
98
|
+
if (!old)
|
|
99
|
+
return old;
|
|
100
|
+
const index = old.findIndex(
|
|
101
|
+
// eslint-disable-next-line eqeqeq
|
|
102
|
+
record => record.id == params?.id);
|
|
103
|
+
if (index === -1) {
|
|
104
|
+
return old;
|
|
105
|
+
}
|
|
106
|
+
return [
|
|
107
|
+
...old.slice(0, index),
|
|
108
|
+
{ ...old[index], ...clonedData },
|
|
109
|
+
...old.slice(index + 1),
|
|
110
|
+
];
|
|
111
|
+
};
|
|
112
|
+
const previousRecord = queryClient.getQueryData([
|
|
113
|
+
resource,
|
|
114
|
+
'getOne',
|
|
115
|
+
{ id: String(params?.id), meta: params?.meta },
|
|
116
|
+
]);
|
|
117
|
+
queryClient.setQueryData([
|
|
118
|
+
resource,
|
|
119
|
+
'getOne',
|
|
120
|
+
{ id: String(params?.id), meta: params?.meta },
|
|
121
|
+
], (record) => ({
|
|
122
|
+
...record,
|
|
123
|
+
...clonedData,
|
|
124
|
+
}), { updatedAt });
|
|
125
|
+
queryClient.setQueriesData({ queryKey: [resource, 'getList'] }, (res) => res && res.data
|
|
126
|
+
? { ...res, data: updateColl(res.data) }
|
|
127
|
+
: res, { updatedAt });
|
|
128
|
+
queryClient.setQueriesData({ queryKey: [resource, 'getInfiniteList'] }, (res) => res && res.pages
|
|
129
|
+
? {
|
|
130
|
+
...res,
|
|
131
|
+
pages: res.pages.map(page => ({
|
|
132
|
+
...page,
|
|
133
|
+
data: updateColl(page.data),
|
|
134
|
+
})),
|
|
135
|
+
}
|
|
136
|
+
: res, { updatedAt });
|
|
137
|
+
queryClient.setQueriesData({ queryKey: [resource, 'getMany'] }, (coll) => coll && coll.length > 0 ? updateColl(coll) : coll, { updatedAt });
|
|
138
|
+
queryClient.setQueriesData({ queryKey: [resource, 'getManyReference'] }, (res) => res && res.data
|
|
139
|
+
? { ...res, data: updateColl(res.data) }
|
|
140
|
+
: res, { updatedAt });
|
|
141
|
+
const optimisticResult = {
|
|
142
|
+
...previousRecord,
|
|
143
|
+
...clonedData,
|
|
144
|
+
};
|
|
145
|
+
return optimisticResult;
|
|
146
|
+
},
|
|
147
|
+
getQueryKeys: ({ resource, ...params }) => {
|
|
148
|
+
const queryKeys = [
|
|
149
|
+
[
|
|
150
|
+
resource,
|
|
151
|
+
'getOne',
|
|
152
|
+
{ id: String(params?.id), meta: params?.meta },
|
|
153
|
+
],
|
|
154
|
+
[resource, 'getList'],
|
|
155
|
+
[resource, 'getInfiniteList'],
|
|
156
|
+
[resource, 'getMany'],
|
|
157
|
+
[resource, 'getManyReference'],
|
|
158
|
+
];
|
|
159
|
+
return queryKeys;
|
|
160
|
+
},
|
|
161
|
+
getMutateWithMiddlewares: mutationFn => {
|
|
162
|
+
if (getMutateWithMiddlewares) {
|
|
163
|
+
// Immediately get the function with middlewares applied so that even if the middlewares gets unregistered (because of a redirect for instance),
|
|
164
|
+
// we still have them applied when users have called the mutate function.
|
|
165
|
+
const mutateWithMiddlewares = getMutateWithMiddlewares(dataProviderUpdate.bind(dataProvider));
|
|
166
|
+
return args => {
|
|
167
|
+
// This is necessary to avoid breaking changes in useUpdate:
|
|
168
|
+
// The mutation function must have the same signature as before (resource, params) and not ({ resource, params })
|
|
169
|
+
const { resource, ...params } = args;
|
|
170
|
+
return mutateWithMiddlewares(resource, params);
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return args => mutationFn(args);
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
const update = useEvent((callTimeResource = resource, callTimeParams = {}, callTimeOptions = {}) => {
|
|
177
|
+
return mutate({
|
|
178
|
+
resource: callTimeResource,
|
|
179
|
+
...callTimeParams,
|
|
180
|
+
}, callTimeOptions);
|
|
181
|
+
});
|
|
182
|
+
return [update, mutationResult];
|
|
183
|
+
};
|