Hopp til hovedinnhold
Meny

lmfaole.party / designsystem / komponenter / Sparkline / minidiagram

  • Forside
  • Turer
  • Økonomi
  • Slides
  • <lm-chart-sparkline> – Sparkline / minidiagram / Sparkline

    Om komponenten

    Formål

    En svært kompakt, akseløs trendlinje uten rutenett, verdietiketter eller legende - kun selve kurven og en markør på siste (nåværende) punkt. Ment å stå tett ved siden av (eller rett under) et enkelttall, f.eks. en <lm-stat>, for å gi rask visuell retningskontekst ('går dette opp eller ned?') uten å ta stor plass. Inspirert av OpenBridge (openbridge-storybook.web.app) sin 'Graph Mini'.

    Merk: Ikke en erstatning for <lm-chart-line> - se 'egnerSegIkkeFor' under. De to komponentene deler ikke kode utover den felles chart-delt.css-infrastrukturen, siden sparklinens drastisk forenklede visning (ingen akse/rutenett/etiketter) gjør en felles abstraksjon mer komplisert enn å holde dem separate.

    Egner seg for

    • Å gi rask visuell trendkontekst ved siden av et nøkkeltall (f.eks. formuesutvikling siste 12 måneder, ved siden av selve saldoen).
    • Kompakte oversikter/dashbord med mange små trender der et fullt diagram per rad ville tatt for mye plass.

    Egner seg ikke for

    • Når trenden selv er hovedinnholdet og fortjener nøyaktig avlesning - bruk <lm-chart-line>, som har rutenett, Y-akse-tallmerking og synlige punktetiketter.
    • Flere serier i samme visualisering - komponenten tegner kun én linje.

    Bruk

    <script type="module" src="/designsystem/komponenter/data-visualisering/chart-sparkline/chart-sparkline.js"></script>
    
    <lm-chart-sparkline tittel="Formuesutvikling siste 6 måneder"></lm-chart-sparkline>
    const sparkline = document.querySelector("lm-chart-sparkline");
    sparkline.data = [
        {label: "Jan", value: 120000},
        {label: "Feb", value: 121500},
        {label: "Mar", value: 119800},
        {label: "Apr", value: 124300},
    ];
    sparkline.formatVerdi = (value) => `${value.toLocaleString("nb-NO")} kr`;

    Prøv selv

    Rediger koden under - resultatet oppdateres live.

    Attributter

    Attributt Type Standard Beskrivelse
    dataArray<{label: string, value: number}>[]Property. Dataserie brukt til trendlinjen og skjult datatabell.
    tittelstring""Attributt/property. Tekst brukt som <caption> i den skjulte datatabellen.
    formatVerdi(value: number) => stringString(value)Property. Formatterer verdien i sluttpunktets native <title>-tooltip og i datatabellen.

    Parts

    Part Beskrivelse
    diagramYtterrammen rundt diagram og tabell.
    diagram-visualSelve SVG-visualiseringen.
    linjeSVG-<path>-en for selve trendlinjen.
    siste-punktMarkøren på siste (nåværende) datapunkt.
    sammendragVisuelt skjult, men skjermleser-tilgjengelig tekstsammendrag.
    data-tabellSkjult datatabell for tilgjengelighet.

    Styling med ::part()

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

    lm-chart-sparkline::part(diagram) {
        /* egne stiler for "Ytterrammen rundt diagram og tabell." */
    }
    
    lm-chart-sparkline::part(diagram-visual) {
        /* egne stiler for "Selve SVG-visualiseringen." */
    }
    
    lm-chart-sparkline::part(linje) {
        /* egne stiler for "SVG-`<path>`-en for selve trendlinjen." */
    }
    
    lm-chart-sparkline::part(siste-punkt) {
        /* egne stiler for "Markøren på siste (nåværende) datapunkt." */
    }
    
    lm-chart-sparkline::part(sammendrag) {
        /* egne stiler for "Visuelt skjult, men skjermleser-tilgjengelig tekstsammendrag." */
    }
    
    lm-chart-sparkline::part(data-tabell) {
        /* egne stiler for "Skjult datatabell for tilgjengelighet." */
    }

    Tilgjengelighet

    SVG-en skjules med aria-hidden="true" og role="presentation"; skjermlesere får den skjulte <table>-en. Tekstsammendraget (høyeste/laveste punkt) er - i motsetning til <lm-chart-line>/<lm-chart-bar>/<lm-chart-area> - visuelt skjult (samme klippe-teknikk som selve datatabellen) i stedet for synlig for alle: sparklinen er bevisst designet som en liten, dekorativ følgesvenn til et enkelttall som allerede vises synlig et annet sted (f.eks. i en <lm-stat>), så et fullt tekstavsnitt her ville visuelt dominere en komponent ment å være ubetydelig i størrelse. Eksakte tall er uansett tilgjengelige for alle brukere via den skjulte datatabellen (skjermlesere) og callout-tooltippen på siste punkt (musbrukere). forced-colors: active bruker systemfarger; ingen bevegelse/animasjon er lagt til i utgangspunktet, så prefers-reduced-motion er ikke relevant her.

    • SVG-en skjules med aria-hidden="true" og role="presentation"; skjermlesere får den skjulte <table>-en.
    • Tekstsammendraget er visuelt skjult (bevisst, se tilgjengelighet), men fortsatt til stede i DOM-en for skjermlesere.
    • Eksakte tall er tilgjengelige for alle via den skjulte datatabellen og tooltippen på siste punkt.
    • forced-colors: active bruker systemfarger.

    Referanser

    Se også:

    • ../chart-line/index.html - det fullverdige linjediagrammet med rutenett, Y-akse-tallmerking og synlige punktetiketter - bruk denne når trenden selv er hovedinnholdet.

    Brukes av:

    • Ingen ennå - ny komponent.

    Avhengigheter: designsystem/funksjoner/sikkerhet/escape-html/, designsystem/funksjoner/statistikk/finn-ytterpunkter/