import type { Meta, StoryObj } from '@storybook/vue3' import { ref, watch } from 'vue' import AmeliproBtn from '../AmeliproBtn/AmeliproBtn.vue' import AmeliproFirstLogin from './AmeliproFirstLogin.vue' const meta = { argTypes: { 'change': { description: 'Événement émis au click sur les boutons annuler et fermer' }, 'click:more-info': { description: 'Événement émis au click sur le bouton plus d\'informations' }, 'update:model-value': { description: 'Événement émis à la mise à jour du v-model de la modale' }, 'confirm': { description: 'Événement émis au click sur le bouton valider' }, 'mainContentMaxHeight': { description: 'Hauteur maximale du contenu principal' }, 'mainContentMinHeight': { description: 'Hauteur minimale du contenu principal' }, 'modelValue': { description: 'Valeur d’affichage de la fenêtre de dialogue' }, 'moreInfoHref': { description: 'Url pour le bouton plus d\'informations' }, 'moreInfoTo': { description: 'Route pour le bouton plus d\'informations' }, 'uniqueId': { description: 'Identifiant unique de la modale' }, }, component: AmeliproFirstLogin, title: 'Composants/Amelipro/Boites de dialogue/AmeliproFirstLogin', } as Meta export default meta type Story = StoryObj export const Default: Story = { args: { modelValue: false, uniqueId: 'amelipro-first-login-unique-id', }, parameters: { args: {}, sourceCode: [ { name: 'Template', code: ``, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproFirstLogin, AmeliproBtn }, setup() { const value = ref(false) // Optional: Keeps v-model in sync with storybook args watch(() => args.modelValue, (newValue) => { value.value = newValue }) return { args, value } }, template: `
Ouvrir la modale de première connexion
`, }), } export const AvecLienPlusInfos: Story = { name: 'Avec lien "Plus d\'informations"', args: { modelValue: false, uniqueId: 'amelipro-first-login-plus-info', moreInfoHref: 'https://ameli.fr', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproFirstLogin, AmeliproBtn }, setup() { const value = ref(false) watch(() => args.modelValue, (newValue) => { value.value = newValue }) return { args, value } }, template: `

Modale avec un bouton "Plus d'informations" redirigeant vers une URL (moreInfoHref).

Ouvrir la modale avec lien "Plus d'informations"
`, }), } export const AvecRoutePlusInfos: Story = { name: 'Avec route interne "Plus d\'informations"', args: { modelValue: false, uniqueId: 'amelipro-first-login-plus-info-to', moreInfoTo: '/plus-d-infos', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproFirstLogin, AmeliproBtn }, setup() { const value = ref(false) watch(() => args.modelValue, (newValue) => { value.value = newValue }) return { args, value } }, template: `

Modale avec un bouton "Plus d'informations" utilisant une route interne (moreInfoTo).

Ouvrir la modale avec route interne "Plus d'informations"
`, }), } export const HauteurContenuPersonnalisee: Story = { name: 'Hauteur du contenu personnalisée', args: { modelValue: false, uniqueId: 'amelipro-first-login-content-height', mainContentMinHeight: '200px', mainContentMaxHeight: '400px', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproFirstLogin, AmeliproBtn }, setup() { const value = ref(false) watch(() => args.modelValue, (newValue) => { value.value = newValue }) return { args, value } }, template: `

Modale avec hauteur de contenu personnalisée (mainContentMinHeight et mainContentMaxHeight).

Ouvrir la modale avec hauteur personnalisée
`, }), }