2023-02-20 16:27:37 +01:00
|
|
|
import { Canvas, Meta, Story, Source, ArgsTable } from '@storybook/addon-docs';
|
|
|
|
|
import { Pagination, usePagination } from './index';
|
2023-05-22 11:39:11 +02:00
|
|
|
import * as Stories from './index.stories';
|
2023-02-20 16:27:37 +01:00
|
|
|
|
2023-05-22 11:39:11 +02:00
|
|
|
<Meta of={Stories}/>
|
2023-02-20 16:27:37 +01:00
|
|
|
|
|
|
|
|
# Pagination
|
|
|
|
|
|
|
|
|
|
The Pagination component can be used anywhere you have some data you want to split between pages, you can use it
|
|
|
|
|
for synchronous loading as well as asynchronous loading. You can paginate your already loaded data, but you can also
|
|
|
|
|
fetch it from a server, the component is really versatile.
|
|
|
|
|
|
|
|
|
|
|
2023-05-12 16:03:16 +02:00
|
|
|
<Canvas sourceState="none">
|
2023-02-20 16:27:37 +01:00
|
|
|
<Story id="components-pagination--basic"/>
|
|
|
|
|
</Canvas>
|
|
|
|
|
|
|
|
|
|
<Source
|
|
|
|
|
language='ts'
|
|
|
|
|
dark
|
|
|
|
|
format={false}
|
|
|
|
|
code={`import { Pagination, usePagination } from "@openfun/cunningham-react";`}
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
|
|
The Pagination component comes with a hook called `usePagination` that handles the logic behind it. Pagination is a
|
|
|
|
|
controlled component, so, to make it more handy we provide you this hook.
|
|
|
|
|
|
|
|
|
|
The most basic usage you can make of it is this one, defining a pagination with 10 pages.
|
|
|
|
|
|
|
|
|
|
### Basic
|
|
|
|
|
|
2023-05-12 16:03:16 +02:00
|
|
|
<Canvas sourceState="shown">
|
2023-02-20 16:27:37 +01:00
|
|
|
<Story id="components-pagination--basic"/>
|
|
|
|
|
</Canvas>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### List of items
|
|
|
|
|
|
|
|
|
|
But this won't make you really happy if you want to paginate your list of items, so you can wire things a bit better.
|
|
|
|
|
Let's make a component that paginate a list of random number.
|
|
|
|
|
|
2023-05-12 16:03:16 +02:00
|
|
|
<Canvas sourceState="shown">
|
2023-02-20 16:27:37 +01:00
|
|
|
<Story id="components-pagination--list"/>
|
|
|
|
|
</Canvas>
|
|
|
|
|
|
|
|
|
|
### Set page programmatically
|
|
|
|
|
|
|
|
|
|
You can also set the page programmatically, for example, if you want to use a query parameter to set the page.
|
|
|
|
|
|
2023-05-12 16:03:16 +02:00
|
|
|
<Canvas sourceState="shown">
|
2023-02-20 16:27:37 +01:00
|
|
|
<Story id="components-pagination--force-page"/>
|
|
|
|
|
</Canvas>
|
|
|
|
|
|
|
|
|
|
### Things to know
|
|
|
|
|
|
|
|
|
|
- The pagination will never render if the number of pages is less than 2.
|
|
|
|
|
|
|
|
|
|
## Props
|
|
|
|
|
|
|
|
|
|
### `<Pagination/>` component
|
|
|
|
|
|
|
|
|
|
<ArgsTable of={Pagination} />
|
|
|
|
|
|
|
|
|
|
### `usePagination` hook
|
|
|
|
|
|
|
|
|
|
<ArgsTable of={usePagination} />
|