import DataListGroup from './DataListGroup.vue' import type { Meta, StoryObj } from '@storybook/vue3' import { mdiAccount, mdiCalendar, mdiCardAccountDetails, mdiDoctor, mdiPencil } from '@mdi/js' const meta: Meta = { title: 'Composants/Données/DataListGroup', component: DataListGroup, parameters: { layout: 'fullscreen', controls: { exclude: ['width', 'minWidth', 'maxWidth'] }, }, argTypes: { items: { control: 'object' }, icons: { control: 'object' }, itemWidth: { control: 'text' }, loading: { control: 'boolean' }, renderHtmlValue: { control: 'boolean', description: '@deprecated Utiliser un slot (par exemple "item") pour rendre du HTML plutôt qu\'une string interprétée via v-html.', }, }, } export default meta type Story = StoryObj export const Default: Story = { parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { items: [ { title: 'Informations patient', items: [ { key: 'Nom', value: 'Dupont', }, { key: 'Prénom', value: 'Paul', }, { key: 'Date de naissance', value: '24/09/1970', }, ], }, { title: 'Médecin traitant', items: [ { key: 'Nom du praticien', value: 'Gérard Leblanc', }, { key: 'N° RPPS', value: 'XXXXX', }, ], }, { title: 'Autres informations', items: [ { key: 'Dernière modification', value: '04/06/2020', }, ], }, ], icons: undefined, itemWidth: '200px', loading: false, }, render: (args) => { return { components: { DataListGroup }, setup() { return { args } }, template: `
`, } }, } export const Icons: Story = { parameters: { controls: { exclude: ['itemWidth', 'loading', 'renderHtmlValue', 'click:list-item'] }, sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { items: [ { title: 'Informations patient', items: [ { key: 'Nom', value: 'Dupont', icon: 'accountIcon', }, { key: 'Prénom', value: 'Paul', icon: 'accountIcon', }, { key: 'Date de naissance', value: '24/09/1970', icon: 'calendarIcon', }, ], }, { title: 'Médecin traitant', items: [ { key: 'Nom du praticien', value: 'Gérard Leblanc', icon: 'doctorIcon', }, { key: 'N° RPPS', value: 'XXXXX', icon: 'cardAccountIcon', }, ], }, { title: 'Autres informations', items: [ { key: 'Dernière modification', value: '04/06/2020', icon: 'editIcon', }, ], }, ], icons: { calendarIcon: mdiCalendar, accountIcon: mdiAccount, doctorIcon: mdiDoctor, cardAccountIcon: mdiCardAccountDetails, editIcon: mdiPencil, }, }, render: (args) => { return { components: { DataListGroup }, setup() { return { args } }, template: `
`, } }, } export const ActionBtn: Story = { parameters: { controls: { exclude: ['icons', 'itemWidth', 'loading', 'renderHtmlValue', 'click:list-item'] }, sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { items: [ { title: 'Informations patient', items: [ { key: 'Nom', value: 'Dupont', }, { key: 'Prénom', value: 'Paul', }, { key: 'Date de naissance', value: '24/09/1970', action: 'Modifier', }, ], }, { title: 'Médecin traitant', items: [ { key: 'Nom du praticien', value: 'Gérard Leblanc', }, { key: 'N° RPPS', value: 'XXXXX', }, ], }, { title: 'Autres informations', items: [ { key: 'Dernière modification', value: '04/06/2020', }, ], }, ], icons: undefined, itemWidth: '200px', loading: false, renderHtmlValue: false, }, render: (args) => { return { components: { DataListGroup }, setup() { const updateBirthdate = (eventValue: { dataListIndex: number, itemIndex: number }) => { args.items[eventValue.dataListIndex]!.items[eventValue.itemIndex]!.value = '25/09/1970' } return { args, updateBirthdate } }, template: `
`, } }, } export const ItemWidth: Story = { parameters: { controls: { exclude: ['icons', 'loading', 'renderHtmlValue', 'click:list-item'] }, sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { items: [ { title: 'Informations patient', items: [ { key: 'Nom', value: 'Dupont', }, { key: 'Prénom', value: 'Paul', }, { key: 'Date de naissance', value: '24/09/1970', }, ], }, { title: 'Médecin traitant', items: [ { key: 'Nom du praticien', value: 'Gérard Leblanc', }, { key: 'N° RPPS', value: 'XXXXX', }, ], }, { title: 'Autres informations', items: [ { key: 'Dernière modification', value: '04/06/2020', }, ], }, ], itemWidth: '300px', }, render: (args) => { return { components: { DataListGroup }, setup() { return { args } }, template: `
`, } }, } export const Chips: Story = { parameters: { controls: { exclude: ['icons', 'loading', 'itemWidth', 'renderHtmlValue', 'click:list-item'] }, sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { items: [ { title: 'Informations patient', items: [ { key: 'Nom', value: 'Dupont', chip: true, }, { key: 'Prénom', value: 'Paul', chip: true, }, { key: 'Date de naissance', value: '24/09/1970', chip: true, }, ], }, { title: 'Médecin traitant', items: [ { key: 'Nom du praticien', value: 'Gérard Leblanc', chip: true, }, { key: 'N° RPPS', value: 'XXXXX', chip: true, }, ], }, { title: 'Autres informations', items: [ { key: 'Dernière modification', value: '04/06/2020', chip: true, }, ], }, ], }, render: (args) => { return { components: { DataListGroup }, setup() { return { args } }, template: `
`, } }, } export const HtmlValue: Story = { parameters: { controls: { exclude: ['icons', 'loading', 'itemsWidth', 'click:list-item'] }, sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { items: [ { title: 'Informations patient', items: [ { key: 'Nom', value: 'Dupont', }, { key: 'Prénom', value: 'Paul', }, { key: 'Date de naissance', value: '24/09/1970', }, ], }, { title: 'Médecin traitant', items: [ { key: 'Nom du praticien', value: 'Gérard Leblanc', }, { key: 'N° RPPS', value: 'XXXXX', }, ], }, { title: 'Autres informations', items: [ { key: 'Adresse', value: '50 Avenue du Professeur André Lemierre', }, ], }, ], }, render: (args) => { return { components: { DataListGroup }, setup() { return { args } }, template: `
`, } }, } export const Loading: Story = { parameters: { controls: { exclude: ['icons', 'itemsWidth', 'renderHtmlValue', 'click:list-item'] }, sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { items: [ { title: 'Informations patient', items: [ { key: 'Nom', value: 'Dupont', }, { key: 'Prénom', value: 'Paul', }, { key: 'Date de naissance', value: '24/09/1970', }, ], }, { title: 'Médecin traitant', items: [ { key: 'Nom du praticien', value: 'Gérard Leblanc', }, { key: 'N° RPPS', value: 'XXXXX', }, ], }, { title: 'Autres informations', items: [ { key: 'Dernière modification', value: '04/06/2020', }, ], }, ], loading: true, }, render: (args) => { return { components: { DataListGroup }, setup() { return { args } }, template: `
`, } }, }