Hopp til hovedinnhold
Meny

lmfaole.party / designsystem / komponenter / Menyknapp

  • Forside
  • Turer
  • Økonomi
  • Slides
  • <lm-menu-button> – Menyknapp / Menu button

    Om komponenten

    Formål

    En knapp (ofte et "⋯"-ikon) som åpner en meny med flere handlinger for én rad/kort - f.eks. "Rediger"/"Dupliser"/"Slett" for en transaksjon i en liste. Implementerer ARIA APG sitt Menu Button-mønster: aria-haspopup="menu"/aria-expanded på knappen, role="menu"/"menuitem" på menyen, med full piltast-/Home-/End-/Escape-navigasjon.

    Egner seg for

    • Overflow-/kontekstmenyer for enkeltrader eller -kort med flere mulige handlinger.
    • Å samle sjeldnere brukte handlinger bak én knapp i stedet for å fylle UI-et med mange synlige knapper.

    Egner seg ikke for

    • De 1-2 viktigste handlingene på en side - disse bør være synlige knapper (se <lm-button-group>), ikke skjult bak en meny.
    • Navigasjon mellom sider - bruk vanlige <a>-lenker eller <lm-nav-tabs> i stedet.

    Bruk

    <script type="module" src="/designsystem/komponenter/handling/menu-button/menu-button.js"></script>
    
    <lm-menu-button aria-label="Handlinger for transaksjonen">
        <button type="button" role="menuitem">Rediger</button>
        <button type="button" role="menuitem">Dupliser</button>
        <button type="button" role="menuitem">Slett</button>
    </lm-menu-button>

    Prøv selv

    Rediger koden under - resultatet oppdateres live.

    Events

    Event Type Beskrivelse
    meny:apnetCustomEventDispatches når menyen åpnes.
    meny:lukketCustomEventDispatches når menyen lukkes (valg, Escape, eller klikk utenfor).
    meny:valgtCustomEventDispatches når et menyelement velges. detail.element er det klikkede elementet.

    Slots

    Slot Beskrivelse
    knappInnholdet i selve utløser-knappen. Standard er "⋯" hvis intet gis - sett alltid enten tekst eller aria-label<lm-menu-button> selv for skjermlesere når standardsymbolet brukes.
    (standard)Menyelementene - <button type="button" role="menuitem">-elementer, i den rekkefølgen de skal navigeres med piltaster.

    Parts

    Part Beskrivelse
    knappSelve utløser-knappen.
    menyMenyflaten (popover) som inneholder menyelementene.

    Styling med ::part()

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

    lm-menu-button::part(knapp) {
        /* egne stiler for "Selve utløser-knappen." */
    }
    
    lm-menu-button::part(meny) {
        /* egne stiler for "Menyflaten (popover) som inneholder menyelementene." */
    }

    Tilgjengelighet

    Utløserknappen har aria-haspopup="menu" og aria-expanded. Menyen har role="menu", menyelementene role="menuitem". Piltaster flytter fokus mellom menyelementene, Home/End hopper til første/siste, Escape lukker og returnerer fokus til knappen, og klikk utenfor lukker menyen.

    • Utløserknappen har aria-haspopup="menu" og aria-expanded="true"/"false" som reflekterer menyens åpne/lukkede tilstand.
    • Menyen får role="menu"; hvert menyelement skal ha role="menuitem" satt av forbrukeren (se bruk-eksempel).
    • Ved åpning flyttes fokus til det første menyelementet; Escape lukker menyen og returnerer fokus til utløserknappen.
    • Piltaster (opp/ned) flytter fokus syklisk mellom menyelementene; Home/End hopper til første/siste.

    Detaljer

    • Menyen bruker Popover API i "manual"-modus (samme begrunnelse som <lm-toast>) slik at den alltid vises over en eventuell åpen native <dialog>.
    • Klikk hvor som helst utenfor komponenten lukker en åpen meny.

    Referanser

    Se også:

    Avhengigheter: Ingen