import type { Meta, StoryObj } from "@storybook/react";
import {
AdminContext,
List,
defaultI18nProvider,
Resource,
TextInput,
useListContext,
ListBase,
} from "react-admin";
import { generatorProp, topLevel } from "@amplicode/storybook-extensions";
import { Card } from "@mui/material";
import { delayDataProvider } from "../../../dataProvider";
import { resourceName } from "../../../ideExtension";
const defaultDecorator = (Story: () => JSX.Element) => (
);
const meta = {
title: "Pages/Lists/Base",
component: List as any,
decorators: [(Story) => defaultDecorator(Story)],
args: {},
argTypes: {
perPage: {
control: "select",
description: "Items per page",
options: [5, 10, 20],
},
filters: generatorProp({
description: "The filters to display in the toolbar.",
generatorId: "amplicode.reactAdmin.filtersGenerator",
hideInStoryBook: true,
defaultValue: [],
}),
disableAuthentication: {
control: "boolean",
},
disableSyncWithLocation: {
control: "boolean",
},
sort: {
control: "text",
},
filter: {
control: "text",
},
queryOptions: {
control: "text",
},
},
} satisfies Meta;
export default meta;
type Story = StoryObj;
export const Default: Story = {
render: ({ resource, ...props }) => {
const CustomList = topLevel(() => {
const { data, isLoading, error } = useListContext();
if (isLoading) return <>Loading>;
if (error) return <>{error.message}>;
if (!data || data.length === 0) return <>No data>;
return (
<>
Users
{data?.map((item) => (
- {item.name}
))}
>
);
});
return (
);
},
args: {
resource: resourceName("users"),
},
};