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: `
`,
}
},
}