aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/organisms/nav/pagination
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-12-15 18:35:16 +0100
committerArmand Philippot <git@armandphilippot.com>2023-12-15 18:49:49 +0100
commit0f936ec0e7606cb79434d94096b6e113a7ce78eb (patch)
tree465ec7f66ac9459be6a18ac046e10357814c7b92 /src/components/organisms/nav/pagination
parent4e4d2eb25365be861e19f9756cf334ba2faa6911 (diff)
refactor(stories): migrate stories to CSF3 format
Diffstat (limited to 'src/components/organisms/nav/pagination')
-rw-r--r--src/components/organisms/nav/pagination/pagination.stories.ts95
-rw-r--r--src/components/organisms/nav/pagination/pagination.stories.tsx150
2 files changed, 95 insertions, 150 deletions
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<typeof Pagination>;
+
+export default meta;
+
+type Story = StoryObj<typeof meta>;
+
+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<typeof Pagination>;
-
-const Template: ComponentStory<typeof Pagination> = (args) => (
- <Pagination {...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,
-};