Hopp til hovedinnhold
Meny

lmfaole.party / designsystem / komponenter / Paginering

  • Forside
  • Turer
  • Økonomi
  • Slides
  • <lm-pagination> – Paginering / Pagination

    Om komponenten

    Formål

    Gir et kompakt og tilgjengelig sidevelger-mønster for paginerte datasett, med første/forrige/neste/siste og sidenumre som komprimeres med ellipser når antall sider blir stort. Komponenten er laget for klientstyrte lister og tabeller der vanlige lenker ikke er nok alene.

    Egner seg for

    • Klientstyrte tabeller, kortlister og søkeresultater der UI-et må kunne bytte side uten full sidelast.
    • Datasett med mange sider der du vil holde kontrollen konsistent uten å kode sideknapp-logikken på nytt for hvert prosjekt.

    Egner seg ikke for

    • Vanlig dokument- eller side-navigasjon med ekte URL-er - bruk en enkel <nav> med <a href>-lenker direkte i markupen.
    • Uendelig rulling eller "last mer"-mønstre der brukeren ikke tenker i sidetall.

    Bruk

    Komponenten er ment for klientstyrt paging. Lytt på pagination:endret, last eller filtrer riktig side, og la komponenten selv holde rede på aktiv side gjennom current-attributtet.

    <script type="module" src="/designsystem/komponenter/navigasjon/pagination/pagination.js"></script>
    
    <lm-pagination current="3" total="18" label="Sider i transaksjonslisten"></lm-pagination>
    const pagination = document.querySelector("lm-pagination");
    
    pagination.addEventListener("pagination:endret", (event) => {
        renderSide(event.detail.page);
    });
    
    pagination.setPage(4);

    Prøv selv

    Rediger koden under - resultatet oppdateres live.

    Attributter

    Attributt Type Standard Beskrivelse
    currentnumber1Attributt/property. Nåværende side. Verdien klemmes automatisk til området 1..total.
    totalnumber1Attributt/property. Totalt antall sider. Komponenten skjules automatisk når verdien er 1 eller lavere.
    window-sizenumber5Attributt/property. Omtrent hvor mange sidenumre som skal vises samtidig før komponenten komprimerer med ellipser.
    labelstring"Sidenavigasjon"Attributt/property. aria-label på den omsluttende <nav>-regionen.

    Events

    Event Type Beskrivelse
    pagination:endretCustomEvent<{page: number}>Dispatches når brukeren velger en ny side. detail.page er den nye siden.

    Parts

    Part Beskrivelse
    navDen omsluttende navigasjonsregionen.
    listBeholderen som holder alle kontrollene og ellipsene.
    buttonFelles part for alle knappene i pagination-kontrollen.
    page-numberPart lagt til på de numeriske sideknappene.
    ellipsisEllipsen som markerer skjulte sider mellom de viste sidenumrene.

    Styling med ::part()

    Hver part over kan restyles direkte fra et vanlig, ytre stilark - uten å måtte endre selve komponenten eller duplisere den:

    lm-pagination::part(nav) {
        /* egne stiler for "Den omsluttende navigasjonsregionen." */
    }
    
    lm-pagination::part(list) {
        /* egne stiler for "Beholderen som holder alle kontrollene og ellipsene." */
    }
    
    lm-pagination::part(button) {
        /* egne stiler for "Felles part for alle knappene i pagination-kontrollen." */
    }
    
    lm-pagination::part(page-number) {
        /* egne stiler for "Part lagt til på de numeriske sideknappene." */
    }
    
    lm-pagination::part(ellipsis) {
        /* egne stiler for "Ellipsen som markerer skjulte sider mellom de viste sidenumrene." */
    }

    Metoder

    Metode Parametre Returverdi Beskrivelse
    setPage(page)page: number - Ny side som skal bli aktiv. Verdien klemmes automatisk til 1..total.Oppdaterer den aktive siden programmatisk.

    Tilgjengelighet

    Komponenten bruker en ekte <nav>-region med aria-label, native <button>-kontroller og aria-current="page" på den aktive siden. Siden knappene er native, får tastaturbrukeren vanlig Tab-navigasjon uten egen ARIA-rovinglogikk. Disabled-tilstand brukes bare på første/forrige og neste/siste når brukeren allerede står ytterst i området.

    • Den omsluttende regionen er en ekte <nav> med aria-label, slik at skjermlesere kan hoppe direkte til sidenavigasjonen.
    • Aktiv side får aria-current="page", som er den etablerte måten å markere dagens side i navigasjon på.
    • Knappene er native og krever derfor ingen ekstra tastaturhåndtering utover det nettleseren allerede gir.

    Detaljer

    • Komponenten skjuler seg selv når total er 1 eller lavere, slik at konsumenten slipper å huske den regelen hver gang.
    • window-size styrer hvor mange sidenumre som holdes synlige før ellipsene tar over, men første og siste side vises alltid.

    Referanser

    Se også:

    Brukes av:

    • Ingen ennå - ny komponent.

    Avhengigheter: Ingen