import type { Meta, StoryObj } from '@storybook/vue3-vite' import { fn } from 'storybook/test' import { ref } from 'vue' import SyTable from './SyTable.vue' import { commonTableArgTypes } from '../common/storyArgTypes' import type { DataOptions } from '../common/types' import type { VDataTable } from 'vuetify/components' const meta = { title: 'Composants/Tableaux/SyTable', component: SyTable, decorators: [ () => ({ template: '
', }), ], parameters: { layout: 'fullscreen', }, argTypes: { ...commonTableArgTypes, items: { description: 'Liste des éléments à afficher dans le tableau', control: { type: 'object' }, table: { category: 'props', defaultValue: { summary: '[]', }, }, }, showFilters: { description: 'Affiche les filtres au-dessus du tableau', control: { type: 'boolean' }, }, }, } satisfies Meta export default meta type Story = StoryObj export const Default: Story = { parameters: { a11y: { disable: true, }, sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { 'headers': [ { title: 'Nom', key: 'lastname', }, { title: 'Prénom', key: 'firstname', }, { title: 'Email', value: 'email', }, ], 'items': [ { firstname: 'Virginie', lastname: 'Beauchesne', email: 'virginie.beauchesne@example.com', }, { firstname: 'Simone', lastname: 'Bellefeuille', email: 'simone.bellefeuille@example.com', }, { firstname: 'Étienne', lastname: 'Salois', email: 'etienne.salois@example.com', }, { firstname: 'Thierry', lastname: 'Bobu', email: 'thierry.bobu@example.com', }, { firstname: 'Bernadette', lastname: 'Langelier', email: 'bernadette.langelier@exemple.com', }, { firstname: 'Agate', lastname: 'Roy', email: 'agate.roy@exemple.com', }, ], 'options': { itemsPerPage: 4, }, 'caption': '', 'suffix': 'default-table', 'density': 'default', 'striped': false, 'onUpdate:options': fn(), }, render: (args) => { return { components: { SyTable }, setup() { return { args } }, template: ` `, } }, } export const ManyTables: Story = { parameters: { a11y: { disable: true, }, sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { 'headers': [ { title: 'Nom', key: 'lastname', }, { title: 'Prénom', key: 'firstname', }, { title: 'Email', value: 'email', }, ], 'items': [ { firstname: 'Virginie', lastname: 'Beauchesne', email: 'virginie.beauchesne@example.com', }, { firstname: 'Simone', lastname: 'Bellefeuille', email: 'simone.bellefeuille@example.com', }, { firstname: 'Étienne', lastname: 'Salois', email: 'etienne.salois@example.com', }, { firstname: 'Thierry', lastname: 'Bobu', email: 'thierry.bobu@example.com', }, { firstname: 'Bernadette', lastname: 'Langelier', email: 'bernadette.langelier@exemple.com', }, { firstname: 'Agate', lastname: 'Roy', email: 'agate.roy@exemple.com', }, ], 'caption': '', 'suffix': 'multi-server', 'density': 'default', 'striped': false, 'onUpdate:options': fn(), }, render: (args) => { return { components: { SyTable }, setup() { const options1 = ref>({ itemsPerPage: 4, }) const options2 = ref>({ itemsPerPage: 2, }) return { args, options1, options2 } }, template: `
`, } }, }