From 0f936ec0e7606cb79434d94096b6e113a7ce78eb Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 15 Dec 2023 18:35:16 +0100 Subject: refactor(stories): migrate stories to CSF3 format --- .../organisms/nav/pagination/pagination.stories.ts | 95 +++++++++++++ .../nav/pagination/pagination.stories.tsx | 150 --------------------- 2 files changed, 95 insertions(+), 150 deletions(-) create mode 100644 src/components/organisms/nav/pagination/pagination.stories.ts delete mode 100644 src/components/organisms/nav/pagination/pagination.stories.tsx (limited to 'src/components/organisms/nav/pagination') diff --git a/src/components/organisms/nav/pagination/pagination.stories.ts b/src/components/organisms/nav/pagination/pagination.stories.ts new file mode 100644 index 0000000..fb1875f --- /dev/null +++ b/src/components/organisms/nav/pagination/pagination.stories.ts @@ -0,0 +1,95 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { + Pagination, + type RenderPaginationItemAriaLabel, + type RenderPaginationLink, +} from './pagination'; + +const meta = { + component: Pagination, + title: 'Organisms/Nav/Pagination', +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +const renderLink: RenderPaginationLink = (num: number) => `#page-${num}`; + +const renderItemAriaLabel: RenderPaginationItemAriaLabel = ({ + kind, + pageNumber, + isCurrentPage, +}) => { + switch (kind) { + case 'backward': + return 'Go to previous page'; + case 'forward': + return 'Go to next page'; + case 'number': + default: + return isCurrentPage + ? `Current page, page ${pageNumber}` + : `Go to page ${pageNumber}`; + } +}; + +export const RightEllipsis: Story = { + args: { + current: 2, + siblings: 2, + renderItemAriaLabel, + renderLink, + total: 50, + }, +}; + +export const LeftEllipsis: Story = { + args: { + current: 49, + siblings: 2, + renderItemAriaLabel, + renderLink, + total: 50, + }, +}; + +export const BothEllipsis: Story = { + args: { + current: 25, + siblings: 2, + renderItemAriaLabel, + renderLink, + total: 50, + }, +}; + +export const WithoutEllipsis: Story = { + args: { + current: 2, + siblings: 2, + renderItemAriaLabel, + renderLink, + total: 5, + }, +}; + +export const WithoutBackwardLink: Story = { + args: { + current: 1, + siblings: 2, + renderItemAriaLabel, + renderLink, + total: 5, + }, +}; + +export const WithoutForwardLink: Story = { + args: { + current: 5, + siblings: 2, + renderItemAriaLabel, + renderLink, + total: 5, + }, +}; diff --git a/src/components/organisms/nav/pagination/pagination.stories.tsx b/src/components/organisms/nav/pagination/pagination.stories.tsx deleted file mode 100644 index 83f3a63..0000000 --- a/src/components/organisms/nav/pagination/pagination.stories.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import type { ComponentMeta, ComponentStory } from '@storybook/react'; -import { - Pagination, - type RenderPaginationItemAriaLabel, - type RenderPaginationLink, -} from './pagination'; - -/** - * Pagination - Storybook Meta - */ -export default { - title: 'Organisms/Nav/Pagination', - component: Pagination, - args: { - siblings: 1, - }, - argTypes: { - current: { - control: { - type: 'number', - }, - description: 'The current page number.', - type: { - name: 'number', - required: true, - }, - }, - siblings: { - control: { - type: 'number', - }, - description: - 'The number of pages to show next to the current page for one side.', - table: { - category: 'Options', - defaultValue: { summary: 1 }, - }, - type: { - name: 'number', - required: false, - }, - }, - total: { - control: { - type: 'number', - }, - description: 'The total number of items.', - type: { - name: 'number', - required: true, - }, - }, - }, -} as ComponentMeta; - -const Template: ComponentStory = (args) => ( - -); - -const renderLink: RenderPaginationLink = (num: number) => `#page-${num}`; - -const renderItemAriaLabel: RenderPaginationItemAriaLabel = ({ - kind, - pageNumber, - isCurrentPage, -}) => { - switch (kind) { - case 'backward': - return 'Go to previous page'; - case 'forward': - return 'Go to next page'; - case 'number': - default: - return isCurrentPage - ? `Current page, page ${pageNumber}` - : `Go to page ${pageNumber}`; - } -}; - -/** - * Pagination Stories - More than 5 pages and current page is near the beginning - */ -export const RightEllipsis = Template.bind({}); -RightEllipsis.args = { - current: 2, - siblings: 2, - renderItemAriaLabel, - renderLink, - total: 50, -}; - -/** - * Pagination Stories - More than 5 pages and current page is near the end - */ -export const LeftEllipsis = Template.bind({}); -LeftEllipsis.args = { - current: 49, - siblings: 2, - renderItemAriaLabel, - renderLink, - total: 50, -}; - -/** - * Pagination Stories - More than 5 pages and current page is near the middle - */ -export const BothEllipsis = Template.bind({}); -BothEllipsis.args = { - current: 25, - siblings: 2, - renderItemAriaLabel, - renderLink, - total: 50, -}; - -/** - * Pagination Stories - Less than 5 pages - */ -export const WithoutEllipsis = Template.bind({}); -WithoutEllipsis.args = { - current: 2, - siblings: 2, - renderItemAriaLabel, - renderLink, - total: 5, -}; - -/** - * Pagination Stories - First page selected - */ -export const WithoutBackwardLink = Template.bind({}); -WithoutBackwardLink.args = { - current: 1, - siblings: 2, - renderItemAriaLabel, - renderLink, - total: 5, -}; - -/** - * Pagination Stories - Last page selected - */ -export const WithoutForwardLink = Template.bind({}); -WithoutForwardLink.args = { - current: 5, - siblings: 2, - renderItemAriaLabel, - renderLink, - total: 5, -}; -- cgit v1.2.3