import type { Meta, StoryObj } from '@storybook/vue3' import AmeliproPagination from './AmeliproPagination.vue' import { createDeprecationNotice } from '@/stories/DeprecationNotice/DeprecationNotice' const meta = { argTypes: { activePageDefault: { description: 'Numéro de page active par défaut' }, click: { description: 'Événement émis lorsque l’utilisateur clique sur un des boutons. Retourne le numéro de page active', type: 'number' }, items: { description: 'Liste des pages composants la pagination, la propriété key étant le numéro de la page', table: { type: { detail: `Array<{ key: number; href?: string; to?: string }>`, summary: 'PaginationTypes[]', }, }, }, uniqueId: { description: 'Identifiant unique de la pagination' }, }, component: AmeliproPagination, title: 'Composants/Amelipro/AmeliproPagination', } as Meta export default meta type Story = StoryObj export const Default: Story = { name: 'Default', args: { items: [ { key: 1 }, { key: 2 }, { key: 3 }, { key: 4 }, { key: 5 }, ], activePageDefault: 1, uniqueId: 'pagination-basique', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproPagination }, setup() { return { args } }, template: `

Pagination simple sur 5 pages, sans navigation interne ni liens.

`, }), } export const PaginationLongue: Story = { name: 'Pagination longue (plus de 5 pages)', args: { items: Array.from({ length: 10 }, (_, i) => ({ key: i + 1 })), activePageDefault: 6, uniqueId: 'pagination-longue', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproPagination }, setup() { return { args } }, template: `

Pagination longue (plus de 5 pages) avec gestion des chevrons et affichage dynamique.

`, }), } export const EvenementClick: Story = { name: 'Gestion de l’événement click', args: { items: [ { key: 1 }, { key: 2 }, { key: 3 }, { key: 4 }, { key: 5 }, ], activePageDefault: 1, uniqueId: 'pagination-click', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproPagination }, setup() { function onPageClick(page: number) { alert('Page active : ' + page) } return { args, onPageClick } }, template: `

La pagination émet un événement click à chaque changement de page.

`, }), } export const DeprecationNotice = { ...createDeprecationNotice([ { label: 'SyPagination', url: '/?path=/docs/composants-navigation-sypagination--docs&globals=theme:ap' }, ]), tags: ['!dev'], }