Files
cunningham/packages/react/src/components/Pagination/index.mdx
Nathan Vasse 30ec253ab0 (react) make Pagination goto input optionnal
Based on a recent request we needed to make it optionnal in order to
have simpler pagination in some cases.

Closes #183
2024-03-08 16:33:54 +01:00

76 lines
2.0 KiB
Plaintext

import { Canvas, Meta, Story, Source, ArgTypes } from '@storybook/blocks';
import { Pagination, usePagination } from './index';
import * as Stories from './index.stories';
<Meta of={Stories}/>
# 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.
<Canvas sourceState="none">
<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
<Canvas sourceState="shown">
<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.
<Canvas sourceState="shown">
<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.
<Canvas sourceState="shown">
<Story id="components-pagination--force-page"/>
</Canvas>
### Hide go to input
You can also hide the go to input if you don't want to allow the user to go to a specific page or to have a simpler pagination.
<Canvas of={Stories.WithoutGoto}/>
### Things to know
- The pagination will never render if the number of pages is less than 2.
## Props
### `<Pagination/>` component
<ArgTypes of={Pagination} />
### `usePagination` hook
<ArgTypes of={usePagination} />