Hopp til hovedinnhold
Meny

lmfaole.party / designsystem / komponenter / Panel-skillelinje

  • Forside
  • Turer
  • Økonomi
  • Slides
  • <lm-splitter> – Panel-skillelinje / Splitter

    Om komponenten

    Formål

    En flyttbar skillelinje mellom to paneler - f.eks. et sidepanel og hovedinnhold i et dashboard - som lar brukeren justere den relative størrelsen med mus/berøring eller piltaster. Implementerer ARIA APG sitt Window Splitter-mønster: skillelinjen får role="separator" med aria-valuenow/-min/-max, og piltaster justerer størrelsen i faste steg.

    Egner seg for

    • Dashboards og arbeidsflater med to paneler der brukeren har nytte av å selv justere hvor mye plass hvert panel får.
    • Sidepanel + hovedinnhold-oppsett der begge deler trenger variabel bredde avhengig av bruk.

    Egner seg ikke for

    • Faste, ikke-justerbare layout-forhold - bruk <lm-grid>/<lm-flex> med faste andeler i stedet.
    • Mobil/smale skjermer der to side-ved-side-paneler uansett ikke gir plass - vurder å stable panelene i stedet under et brytepunkt.

    Bruk

    <script type="module" src="/designsystem/komponenter/layout/splitter/splitter.js"></script>
    
    <lm-splitter verdi="30" min="20" maks="60" style="block-size: 60vh;">
        <nav slot="forste">... sidepanel ...</nav>
        <main slot="andre">... hovedinnhold ...</main>
    </lm-splitter>

    Prøv selv

    Rediger koden under - resultatet oppdateres live.

    Attributter

    Attributt Type Standard Beskrivelse
    orientering"horisontal" | "vertikal""horisontal"Attributt/property. "horisontal" deler panelene side ved side (loddrett skillelinje); "vertikal" deler dem over/under hverandre (vannrett skillelinje).
    verdinumber50Attributt/property. Størrelsen på første panel, i prosent av totalen.
    minnumber10Attributt/property. Laveste tillatte prosentandel for første panel.
    maksnumber90Attributt/property. Høyeste tillatte prosentandel for første panel.

    Events

    Event Type Beskrivelse
    splitter:endringCustomEventDispatches når skillelinjen flyttes. detail.verdi er den nye prosentandelen for første panel.

    Slots

    Slot Beskrivelse
    forsteInnholdet i det første panelet.
    andreInnholdet i det andre panelet.

    Parts

    Part Beskrivelse
    wrapperGrid-containeren rundt begge panelene og skillelinjen.
    forsteDet første panelet.
    andreDet andre panelet.
    skillelinjeSelve den flyttbare skillelinjen (role="separator").

    Styling med ::part()

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

    lm-splitter::part(wrapper) {
        /* egne stiler for "Grid-containeren rundt begge panelene og skillelinjen." */
    }
    
    lm-splitter::part(forste) {
        /* egne stiler for "Det første panelet." */
    }
    
    lm-splitter::part(andre) {
        /* egne stiler for "Det andre panelet." */
    }
    
    lm-splitter::part(skillelinje) {
        /* egne stiler for "Selve den flyttbare skillelinjen (`role="separator"`)." */
    }

    Tilgjengelighet

    Skillelinjen har role="separator", aria-orientation, og aria-valuenow/-min/-max som alltid reflekterer gjeldende og tillatt størrelsesintervall. Piltaster (høyre/venstre i horisontal modus, ned/opp i vertikal modus) justerer størrelsen i faste steg; Home/End hopper til min/maks.

    • role="separator" med aria-orientation ("vertical" for side-ved-side-paneler, "horizontal" for stablede paneler - motsatt av komponentens eget orientering-attributt, per ARIA-spesifikasjonens definisjon av selve skillelinjens retning).
    • aria-valuenow/aria-valuemin/aria-valuemax oppdateres synkront med den visuelle posisjonen, i prosent.
    • Skillelinjen er selvstendig tastaturnåbar (tabindex="0") uavhengig av panelenes eget innhold.

    Detaljer

    • Panel-størrelsen implementeres med CSS Grid (grid-template-columns/-rows) satt dynamisk av komponenten - selve panelene er vanlige <div>-er med overflow: auto, ikke noe eget scroll-rammeverk.
    • verdi klemmes alltid til [min, maks] ved setting, uansett om endringen kommer fra drag, piltaster, eller direkte property-tilordning.

    Referanser

    Se også:

    Avhengigheter: Ingen