import * as React from 'react';
import { useGetPathForRecord } from './useGetPathForRecord';
import {
AuthProvider,
CoreAdminContext,
RecordContextProvider,
ResourceContextProvider,
ResourceDefinitionContextProvider,
TestMemoryRouter,
LinkBase,
} from '..';
import { QueryClient } from '@tanstack/react-query';
export default {
title: 'ra-core/routing/useGetPathForRecord',
};
const EditLink = () => {
const path = useGetPathForRecord({ link: 'edit' });
return path ? (
Edit
) : (
Edit no link
);
};
const ShowLink = () => {
const path = useGetPathForRecord({ link: 'show' });
return path ? (
Show
) : (
Show no link
);
};
const InferredLink = () => {
const path = useGetPathForRecord();
return path ? Link : No link;
};
export const NoAuthProvider = () => (
);
export const InferredEditLink = () => (
);
export const InferredShowLink = () => (
);
export const SlowLoading = () => {
const [record, setRecord] = React.useState(undefined);
const handleClick = () => {
setRecord({ id: 123 });
};
return (
);
};
export const AccessControlWithLinkTypeProvided = ({
authProvider = {
login: () => Promise.resolve(),
logout: () => Promise.resolve(),
checkAuth: () => Promise.resolve(),
checkError: () => Promise.resolve(),
getPermissions: () => Promise.resolve(),
canAccess: ({ action }) =>
new Promise(resolve => setTimeout(resolve, 300, action === 'edit')),
},
}: {
authProvider?: AuthProvider;
}) => (
);
export const InferredEditLinkWithAccessControl = () => (
Promise.resolve(),
logout: () => Promise.resolve(),
checkAuth: () => Promise.resolve(),
checkError: () => Promise.resolve(),
getPermissions: () => Promise.resolve(),
canAccess: ({ action }) =>
new Promise(resolve =>
setTimeout(resolve, 300, action === 'edit')
),
}}
>
);
export const InferredShowLinkWithAccessControl = () => (
Promise.resolve(),
logout: () => Promise.resolve(),
checkAuth: () => Promise.resolve(),
checkError: () => Promise.resolve(),
getPermissions: () => Promise.resolve(),
canAccess: ({ action }) =>
new Promise(resolve =>
setTimeout(resolve, 300, action === 'show')
),
}}
>
);