Komponenter
Pagination
Pagination er en liste med knapper som brukes for å navigere mellom ulike sider med innhold, for eksempel søkeresultater eller tabeller.
React
const Preview = () => { return ( <Pagination> <Pagination.List> <Pagination.Item> <Pagination.Button aria-label='Forrige side' data-variant='tertiary'> Forrige </Pagination.Button> </Pagination.Item> <Pagination.Item> <Pagination.Button aria-label='Side 1' data-variant='tertiary'> 1 </Pagination.Button> </Pagination.Item> <Pagination.Item> <Pagination.Button aria-label='Side 2' data-variant='primary'> 2 </Pagination.Button> </Pagination.Item> <Pagination.Item /> <Pagination.Item> <Pagination.Button aria-label='Side 9' data-variant='tertiary'> 9 </Pagination.Button> </Pagination.Item> <Pagination.Item> <Pagination.Button aria-label='Side 10' data-variant='tertiary'> 10 </Pagination.Button> </Pagination.Item> <Pagination.Item> <Pagination.Button aria-label='Neste side' data-variant='tertiary'> Neste </Pagination.Button> </Pagination.Item> </Pagination.List> </Pagination> ); }; render(<Preview />)
Bruk Pagination når
- søkeresultater eller store mengder data skal deles inn i flere sider
- brukeren har behov for å vite hvor de befinner seg i en større mengde innhold
- lasting av hele datamengden ville vært for tungt eller gitt dårlig ytelse
Unngå Pagination når
- det totale innholdet er så lite at én side er tilstrekkelig
- du skal dele inn et skjema i flere sider
- fremdrift skal vises
Eksempel
Med lenker
Du kan bruke Pagination med lenker (anchor tags) for bedre navigasjon
React
const WithAnchor = () => { const [currentPage, setCurrentPage] = useState(2); const { pages, nextButtonProps, prevButtonProps } = usePagination({ currentPage, setCurrentPage, totalPages: 10, showPages: 7, }); return ( <Pagination aria-label='Sidenavigering'> <Pagination.List> <Pagination.Item> <Pagination.Button asChild aria-label='Forrige side' {...prevButtonProps} > <a href='#forrige-side'>Forrige</a> </Pagination.Button> </Pagination.Item> {pages.map(({ page, itemKey, buttonProps }) => ( <Pagination.Item key={itemKey}> {typeof page === 'number' && ( <Pagination.Button asChild aria-label={`Side ${page}`} {...buttonProps} > <a href={`#side-${page}`}>{page}</a> </Pagination.Button> )} </Pagination.Item> ))} <Pagination.Item> <Pagination.Button asChild aria-label='Neste side' {...nextButtonProps} > <a href='#neste-side'>Neste</a> </Pagination.Button> </Pagination.Item> </Pagination.List> </Pagination> ); }; render(<WithAnchor />)
Mobil variant
For mobile enheter kan du vise færre sider, og ikke tekst for forrige/neste
React
const Mobile = () => { return ( <Pagination> <Pagination.List> <Pagination.Item> <Pagination.Button aria-label='Forrige side' data-variant='tertiary' /> </Pagination.Item> <Pagination.Item> <Pagination.Button aria-label='Side 2' data-variant='tertiary'> 2 </Pagination.Button> </Pagination.Item> <Pagination.Item> <Pagination.Button aria-label='Side 3'>3</Pagination.Button> </Pagination.Item> <Pagination.Item> <Pagination.Button aria-label='Side 4' data-variant='tertiary'> 4 </Pagination.Button> </Pagination.Item> <Pagination.Item> <Pagination.Button aria-label='Neste side' data-variant='tertiary' /> </Pagination.Item> </Pagination.List> </Pagination> ); }; render(<Mobile />)
Retningslinjer
Bruk Pagination når innholdet er for stort for én side, for eksempel ved søkeresultater eller lange lister, og brukeren trenger å navigere frem og tilbake. Vi deler kun opp innhold i flere sider når det forbedrer lastetiden eller brukervennligheten.
Tekst
Vi bruker et fast mønster for Pagination med ord: «Forrige» og «Neste».
Unngå «Forrige side», «Neste side», «Gå tilbake», «Gå videre», «Videre» og «Tilbake».
Rediger denne siden på github.com (åpnes i ny fane)