import type { Meta, StoryObj } from '@storybook/vue3' import AmeliproMultipleFoldingCard from './AmeliproMultipleFoldingCard.vue' import type { AmeliproMultipleFoldingCardItem } from './types' const meta = { argTypes: { 'borderColor': { description: 'Couleur de bordure de la carte' }, 'bordered': { description: 'Permet d’activer ou de désactiver les bordures de la carte' }, 'cardColor': { description: 'Couleur de fond de la carte' }, 'defaultItemOpened': { description: 'Index du bloc ouvert par défaut au chargement du composant' }, 'headerRight': { description: 'le contenu de la partie droite du header' }, 'headerRightWidth': { description: 'Défini la largeur de la partie droite du header de la carte. Cette props est utile seulement si le slot header-right est utilisé' }, 'item': { description: 'Slot généré automatiquement pour tous les blocs dépliants afin d’y insérer le contenu principal du bloc' }, 'item.id': { description: 'Slot généré automatiquement pour chaque bloc dépliant afin d’y insérer le contenu principal du bloc' }, 'manualValidation': { description: 'Active le fonctionnement manuel de la validation des items' }, 'tab-clicked': { description: 'Événement émis au click sur les boutons ouverture/fermeture des cards, renvoie l’id de l’item cliqué' }, 'tabs': { description: 'Tableau comprenant la liste des blocs dépliant avec leur identifiant( doit être unique dans la page) et leurs titres', table: { type: { detail: `Array<{ id: string; title: string; valid?: boolean; error?: boolean; }>`, summary: 'AmeliproMultipleFoldingCardItem[]', }, }, }, 'title': { description: 'Titre de la carte autour des panneaux dépliants' }, 'titleLevel': { description: 'Niveau de titre des panneaux dépliants' }, 'titleUppercase': { description: 'Transforme le titre de la carte en lettres capitales' }, 'uniqueId': { description: 'identifiant unique du composant' }, }, component: AmeliproMultipleFoldingCard, title: 'Composants/Amelipro/Cartes/AmeliproMultipleFoldingCard', } as Meta export default meta type Story = StoryObj const items: AmeliproMultipleFoldingCardItem[] = [ { id: 'amelipro-multiple-folding-card-item-1', title: 'Exemple 1', valid: true, }, { error: true, id: 'amelipro-multiple-folding-card-item-2', title: 'Exemple 2', }, { id: 'amelipro-multiple-folding-card-item-3', title: 'Exemple 3', }, { id: 'amelipro-multiple-folding-card-item-4', title: 'Exemple 4', }, ] export const Default: Story = { args: { tabs: items, title: 'Titre de la carte', uniqueId: 'amelipro-multiple-folding-card-unique-id', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproMultipleFoldingCard }, setup() { return { args } }, template: ` `, }), } // --- Carte avec titre en capitales et niveau de titre personnalisé --- export const TitreCapitalesNiveau: Story = { name: 'Titre capitales et niveau', args: { tabs: items, title: 'Titre capitales H3', titleUppercase: true, titleLevel: 3, uniqueId: 'amelipro-multiple-folding-card-uppercase', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproMultipleFoldingCard }, setup() { return { args } }, template: `

Le titre de la carte est en capitales et le niveau de titre est personnalisé grâce aux props titleUppercase et titleLevel.

`, }), } // --- Carte avec bordure et couleur personnalisées --- export const BordureEtCouleur: Story = { name: 'Bordure et couleur', args: { tabs: items, title: 'Carte colorée', bordered: true, borderColor: '#1976d2', cardColor: '#e3f2fd', uniqueId: 'amelipro-multiple-folding-card-colored', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproMultipleFoldingCard }, setup() { return { args } }, template: `

La carte possède une bordure et une couleur de fond personnalisées grâce aux props bordered, borderColor et cardColor.

`, }), } // --- Carte avec ouverture manuelle et gestion de validation --- export const ValidationManuelle: Story = { name: 'Validation manuelle', args: { tabs: [ { id: 'item-1', title: 'Étape 1', valid: false }, { id: 'item-2', title: 'Étape 2', error: true }, { id: 'item-3', title: 'Étape 3' }, ], title: 'Validation manuelle', manualValidation: true, uniqueId: 'amelipro-multiple-folding-card-manual', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproMultipleFoldingCard }, setup() { return { args } }, template: `

Activation de la validation manuelle des étapes via la prop manualValidation.

`, }), } // --- Carte avec header droit personnalisé --- export const HeaderDroit: Story = { name: 'Header droit personnalisé', args: { tabs: items, title: 'Header droit', headerRightWidth: '120px', uniqueId: 'amelipro-multiple-folding-card-header-right', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproMultipleFoldingCard }, setup() { return { args } }, template: `

Personnalisation de la partie droite du header via le slot headerRight et la prop headerRightWidth.

`, }), }