import type { Meta, StoryObj } from '@storybook/vue3' import { fn } from '@storybook/test' import AmeliproTooltips from './AmeliproTooltips.vue' const meta = { argTypes: { btnLabel: { description: 'Libellé du bouton d’ouverture de la bulle d’information' }, classes: { descriptions: 'classes css à ajouter au wrapper du composant' }, iconBgColor: { description: 'Couleur de fond pour l’icône du bouton d’ouverture de la bulle d’information' }, iconColor: { description: 'Couleur de l’icône du bouton d’ouverture de la bulle d’information' }, iconHoverBgColor: { description: 'Couleur de fond pour l’icône au survol du bouton d’ouverture de la bulle d’information' }, iconHoverColor: { description: 'Couleur de l’icône au survol du bouton d’ouverture de la bulle d’information' }, iconName: { description: 'Nom de l’icône personnalisée' }, tooltipBg: { description: 'Couleur de fond du Tooltips' }, tooltipText: { description: 'Texte du Tooltips' }, tooltipTextColor: { description: 'Couleur du text du Tooltips' }, uniqueId: { description: 'Défini l’id du tooltip dans le DOM' }, click: { description: 'Evénement émis au click sur le bouton' }, }, component: AmeliproTooltips, title: 'Composants/Amelipro/AmeliproTooltips', } as Meta export default meta type Story = StoryObj export const Default: Story = { args: { tooltipText: 'Contenu de mon infobulle', uniqueId: 'amelipro-tooltip-id', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproTooltips }, setup() { return { args } }, template: ` `, }), } export const CouleursPersonnalisees: Story = { name: 'Couleurs personnalisées', args: { tooltipText: 'Info-bulle personnalisée avec couleurs', tooltipBg: 'ap-parme-darken-1', tooltipTextColor: 'ap-white', iconBgColor: 'ap-parme-darken-1', iconColor: 'ap-white', iconHoverBgColor: 'ap-white', iconHoverColor: 'ap-parme-darken-1', uniqueId: 'tooltip-couleurs', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproTooltips }, setup() { return { args } }, template: `

Info-bulle avec couleurs personnalisées pour l’icône et le fond de l’infobulle.

`, }), } export const TexteLong: Story = { name: 'Texte long', args: { tooltipText: 'Ceci est un texte très long pour tester l’affichage de l’info-bulle sur plusieurs lignes. Le composant doit gérer correctement le retour à la ligne et la largeur maximale.', uniqueId: 'tooltip-long', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproTooltips }, setup() { return { args } }, template: `

Info-bulle avec un texte très long pour vérifier le retour à la ligne et la largeur maximale.

`, }), } export const IconePersonnalisee: Story = { name: 'Icône personnalisée', args: { iconName: 'plus', iconBgColor: 'ap-blue-darken-1', iconColor: 'ap-white', iconHoverBgColor: 'ap-white', iconHoverColor: 'ap-blue-darken-1', tooltipText: 'Icône personnalisée', uniqueId: 'tooltip-icon-custom', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproTooltips }, setup() { return { args } }, template: `

Info-bulle avec une icône personnalisée (iconName).

`, }), } export const AvecAction: Story = { name: 'Avec action', args: { iconName: 'plus', iconBgColor: 'ap-blue-darken-1', iconColor: 'ap-white', iconHoverBgColor: 'ap-white', iconHoverColor: 'ap-blue-darken-1', tooltipText: 'Action sur le clic', uniqueId: 'tooltip-icon-custom', onClick: fn(), }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproTooltips }, setup() { return { args } }, template: `

Info-bulle avec une action lors d'un clic sur l'icone (iconName).

`, }), } export const SlotDefault: Story = { name: 'Slot default', args: { tooltipText: '', uniqueId: 'tooltip-slot-default', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproTooltips }, setup() { return { args } }, template: `

Utilisation du slot default pour personnaliser le contenu de l’info-bulle.

`, }), }