UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

46 lines 1.83 kB
import * as React from 'react'; import { createMemoryRouter, RouterProvider, useLocation, useNavigate, } from 'react-router-dom'; const UseLocation = ({ locationCallback, }) => { const location = useLocation(); locationCallback(location); return null; }; const UseNavigate = ({ navigateCallback, }) => { const navigate = useNavigate(); navigateCallback(navigate); return null; }; /** * Wrapper around react-router's `createMemoryRouter` to be used in test components. * * It is similar to `MemoryRouter` but it supports * [data APIs](https://reactrouter.com/en/main/routers/picking-a-router#data-apis). * * Additionally, it provides * - a `locationCallback` prop to get the location in the test * - a `navigateCallback` prop to be able to navigate in the test */ export const TestMemoryRouter = ({ children, locationCallback, navigateCallback, ...rest }) => { const router = createMemoryRouter([ { path: '*', element: (React.createElement(React.Fragment, null, children, locationCallback && (React.createElement(UseLocation, { locationCallback: locationCallback })), navigateCallback && (React.createElement(UseNavigate, { navigateCallback: navigateCallback })))), }, ], { future: { v7_fetcherPersist: false, v7_normalizeFormMethod: false, v7_partialHydration: false, v7_relativeSplatPath: false, v7_skipActionErrorRevalidation: false, }, ...rest, }); return (React.createElement(RouterProvider, { router: router, // @ts-expect-error react-router types are not up-to-date future: { v7_startTransition: false, v7_relativeSplatPath: false } })); }; //# sourceMappingURL=TestMemoryRouter.js.map