import type { Meta, StoryObj } from '@storybook/vue3' import AmeliproTabs from './AmeliproTabs.vue' const meta = { argTypes: { '`${uniqueId}-tab-panel-${index}`': { description: 'Slot généré automatiquement pour chaque onglet afin d’y insérer son contenu son nom est composé de trois parties : l’id du groupe d’onglets, de "-tab-panel-" et de l’index de l’onglet dans la liste' }, 'ariaLabel': { description: 'Titre du groupe d’onglets s’il n’y a pas de ariaLabelledby (il faut au moins un ariaLabelledby ou un ariaLabel)' }, 'ariaLabelledby': { description: 'Id du titre associé au groupe d’onglets (il faut au moins un ariaLabelledby ou un ariaLabel)' }, 'btnGroupClasses': { description: 'Classes à ajouter autour du groupe de boutons' }, 'change-tab': { table: { category: 'events' }, description: 'Événement émis au click sur un des boutons', }, 'items': { description: 'Tableau comprenant la liste des onglets et leur valeur activé ou désactivé', table: { type: { detail: `Array<{ disabled: boolean; label: string; notification?: number; }>`, summary: 'AmeliproTab[]', }, }, }, 'noTabDefaultStyle': { description: 'Retire le style par défaut du contenu des tabs (fond blanc et padding)' }, 'pills': { description: 'Change le style des boutons' }, 'onSameLine': { description: 'Garde les onglets sur la même ligne si les libellés sont trop longs' }, 'tab-panel': { description: 'Slot généré automatiquement pour tous les onglets afin d’y insérer des contenus génériques' }, 'tabsDesc': { description: 'Slot pour ajouter des informations au dessus des boutons' }, 'uniqueId': { description: 'Renseigne un id pour le groupe d’onglets' }, 'value': { description: 'Position de l’onglet séléctionné par défaut' }, }, component: AmeliproTabs, title: 'Composants/Amelipro/Mise en page/AmeliproTabs', } as Meta export default meta type Story = StoryObj const items = [ { label: 'Mon onglet 1', disabled: false, }, { label: 'Mon onglet 2', disabled: false, }, { label: 'Mon onglet 3', disabled: true, }, { label: 'Mon onglet 4', disabled: false, }, ] const longLabelItems = [ { label: 'Mon onglet 1 avec un très très très long texte', disabled: false, }, { label: 'Mon onglet 2 avec un très très très long texte', disabled: false, }, { label: 'Mon onglet 3 avec un très très très long texte', disabled: true, }, { label: 'Mon onglet 4 avec un très très très long texte', disabled: false, }, ] export const Default: Story = { args: { ariaLabel: 'Titre du group d\'onglets', items, uniqueId: 'tabs', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproTabs }, setup() { return { args } }, template: ` `, }), } export const Pills: Story = { args: { ariaLabel: 'Titre du group d\'onglets', items, pills: true, uniqueId: 'tabs', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproTabs }, setup() { return { args } }, template: ` `, }), } export const OnSameLine: Story = { args: { ariaLabel: 'Titre du group d\'onglets', items: longLabelItems, onSameLine: true, uniqueId: 'tabs', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproTabs }, setup() { return { args } }, template: ` `, }), }