import type { Meta, StoryObj } from '@storybook/react-vite'; import { fn } from 'storybook/test'; import { DataTable as DataTableComponent, DataTableWithLoader as DataTableWithLoaderComponent, } from '../src/components'; import { type CommonProps, DataDecorator, DataLoaderDecorator, type DataType, columns, } from '../src/decorators/DataDecorator'; import { type WrapperProps } from '../src/components/data-loader'; type StoryProps = React.ComponentProps & WrapperProps & { isSelectable: boolean; }; const meta: Meta = { component: DataTableComponent, title: 'Data/Data Table', argTypes: { onSelectionChange: { table: { disable: true, }, }, isSelectable: { name: 'Selectable (onSelectionChange)', control: 'boolean', description: 'Toggle to enable selection checkboxes', }, clickToLoad: { control: 'boolean', description: 'Require a click to load data (when using loader)', }, }, args: { onHeaderClick: fn(), onSelectionChange: fn(), isSelectable: true, clickToLoad: false, }, }; export default meta; type Story = StoryObj; export const DataTable: Story = { argTypes: { clickToLoad: { table: { disable: true, }, }, }, render: (args) => { const { isSelectable, onSelectionChange, clickToLoad, ...restArgs } = args; const finalOnSelectionChange = isSelectable ? onSelectionChange : undefined; return ( {(props: CommonProps) => ( )} ); }, }; export const DataTableWithLoader: Story = { render: (args) => { const { isSelectable, onSelectionChange, ...restArgs } = args; const finalOnSelectionChange = isSelectable ? onSelectionChange : undefined; return ( {(props: CommonProps & WrapperProps) => ( )} ); }, }; export const DataTableColumnLoading: Story = { render: (args) => { const { isSelectable, onSelectionChange, ...restArgs } = args; const finalOnSelectionChange = isSelectable ? onSelectionChange : undefined; return ( {(props: CommonProps & WrapperProps) => ( row.content6.complexValue, }, ]} /> )} ); }, };