import type { Meta, StoryObj } from "@storybook/react";
import {
AdminContext,
Button,
Create,
DateInput,
defaultI18nProvider,
Identifier,
required,
ResourceContextProvider,
SimpleForm,
TextInput,
TopToolbar,
useSaveContext,
} from "react-admin";
import { dataProvider } from "../../../dataProvider";
import React, { useState } from "react";
import { Box, Dialog, DialogTitle, Stack, Typography } from "@mui/material";
import { FieldValues } from "react-hook-form";
import { resourceName } from "../../../ideExtension";
import { GenerationInstructions } from "@amplicode/storybook-extensions";
const createRedirectFunc = (
resource?: string,
id?: Identifier,
) => {
return `/redirect/to/${resource}/${id}`;
};
const handleClick = () => {
console.log("Custom action result");
};
const CreateActions = () => {
return (
)
};
const CreateAside = () => {
return (
Aside content
Additional aside content
)
};
const createTransformFunc = (record: any) => ({...record});
const meta = {
title: "Pages/Create",
component: Create as any,
decorators: [(Story) => defaultDecorator(Story)],
argTypes: {
title: {
control: "text",
},
actions: {
control: "select",
options: ["default", "customActions"],
mapping: {
default: undefined,
customActions: ,
},
},
aside: {
control: "select",
options: ["default", "createAside"],
mapping: {
default: undefined,
createAside: ,
},
},
redirect: {
control: "select",
options: ["list", "edit", "show", "disable", "redirectToFunction"],
mapping: {
list: "list",
show: "show",
disable: false,
redirectToFunction: createRedirectFunc,
},
},
disableAuthentication: {
control: 'boolean'
},
mutationOptions: {
control: "text"
},
transform: {
control: "select",
options: ["default", "createTransformFn"],
mapping: {
default: undefined,
createTransformFn: createTransformFunc,
},
},
},
} satisfies Meta;
export default meta;
type Story = StoryObj;
export const Default: Story = {
render: ({ resource, ...props }) => {
return (
);
},
args: {
resource: resourceName("users")
}
};
export const CustomActions: Story = {
render: ({ ...props }) => {
return (
} {...props}>
);
},
};
export const Aside: Story = {
render: ({ ...props }) => {
return (
} {...props}>
);
},
};
export const CreateDialog: Story = {
render: () => {
const [open, setOpen] = useState(false);
const MyForm = () => {
let { save } = useSaveContext();
const onSubmit = async (values: FieldValues) => {
if (save) {
await save(values, {
onSuccess: () => setOpen(false),
});
}
};
return (
);
};
return (
<>