import type { Meta, StoryObj } from "@storybook/react"; import { AdminContext, defaultI18nProvider, ShowBase, ShowContextProvider, useRecordContext, } from "react-admin"; import React, { useState } from "react"; import { GenerationInstructions } from "@amplicode/storybook-extensions"; import { delayDataProvider } from "../../dataProvider"; import { Box, Paper, Typography, TextField } from "@mui/material"; import { Code } from "../../utils"; const docDecorator = (Story: () => React.JSX.Element) => { const [record, setRecord] = useState({ name: "Jake" }); return ( useRecordContext grabs the current record. It’s available anywhere react-admin manipulates a record, e.g. in a Show page, in a Datagrid row, or in a Reference Field. Component that provides Record context { setRecord({ name: (event.currentTarget as any).value }); }} variant="outlined" /> Some inner component Component that needs Record context ); }; const meta = { title: "DataProviding/useRecordContext", parameters: { layout: "centered", }, decorators: [ (Story) => docDecorator(Story), (Story) => defaultDecorator(Story), ], } satisfies Meta; export default meta; type Story = StoryObj; export const Default: Story = { render: () => { const record = useRecordContext(); return ( {record?.name} ); }, }; const defaultDecorator = (Story: () => React.JSX.Element) => { return ( {Story()} ); };