Hopp til hovedinnhold
Meny

lmfaole.party / designsystem / komponenter / Tekstfelt

  • Forside
  • Turer
  • Økonomi
  • Slides
  • <lm-text-field> – Tekstfelt / Text field

    Om komponenten

    Formål

    Ettlinjes tekstfelt med etikett, valgfri hjelpetekst og automatisk feilmeldingsvisning - én komponent for text/email/url/tel/password/search via type-attributtet, i stedet for å håndskrive <label>+<input>+feilmelding-oppsettet i hvert skjema.

    Egner seg for

    • Navn, e-post, URL, telefonnummer, passord og søkefelt - alt som naturlig er én tekstlinje.
    • Skjemaer som trenger konsistent etikett-/hjelpetekst-/feilmeldingsoppsett uten å skrive egen CSS for det i hvert prosjekt.

    Egner seg ikke for

    • Flerlinjes tekst - bruk <lm-textarea-field>.
    • Tall som skal valideres/steppes numerisk - bruk <lm-number-field>.
    • Søk-med-forslag mot en datakilde - bruk et <input list>/<datalist>-par, se kobleDatalistSok().

    Bruk

    <script type="module" src="/designsystem/komponenter/skjema/text-field/text-field.js"></script>
    
    <form>
        <lm-text-field name="navn" label="Navn" required></lm-text-field>
        <lm-text-field name="epost" type="email" label="E-post" autocomplete="email" help="Brukes kun til kvittering."></lm-text-field>
        <button type="submit">Lagre</button>
    </form>

    Prøv selv

    Rediger koden under - resultatet oppdateres live.

    Attributter

    Attributt Type Standard Beskrivelse
    labelstringAttributt/property. Synlig etikett-tekst - kobles til feltet via et omsluttende <label>, ikke for/id.
    type"text" | "email" | "url" | "tel" | "password" | "search""text"Attributt. Videresendes direkte til det interne <input type="..."> - gir riktig tastatur på mobil og native format-/URL-/e-postvalidering.
    namestringAttributt. Skjemafelt-navn - komponenten er form-associated og deltar i FormData under dette navnet.
    valuestring""Attributt/property. Feltets gjeldende tekstverdi.
    placeholderstringAttributt. Videresendes til det interne feltet.
    requiredbooleanfalseAttributt/property. Gjør feltet obligatorisk, legger til en stjerne i etiketten, og fungerer med native reportValidity()/checkValidity().
    disabledbooleanfalseAttributt/property. Deaktiverer feltet (arves også automatisk fra en <fieldset disabled>).
    readonlybooleanfalseAttributt. Videresendes til det interne feltet.
    patternstringAttributt. Videresendes til det interne feltet - regex-mønster for native validering.
    minlengthnumberAttributt. Videresendes til det interne feltet.
    maxlengthnumberAttributt. Videresendes til det interne feltet.
    autocompletestringAttributt. Videresendes til det interne feltet, f.eks. "email"/"tel"/"name".
    helpstringAttributt. Kort hjelpetekst vist under feltet, koblet via aria-describedby.

    Parts

    Part Beskrivelse
    etikettDet omsluttende <label>-elementet.
    etikett-tekst<span>-en med selve etikett-teksten.
    feltDet interne <input>-elementet.
    hjelpetekst<small>-elementet med hjelpeteksten.
    feilmelding<small role="alert">-elementet med valideringsmeldingen.

    Styling med ::part()

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

    lm-text-field::part(etikett) {
        /* egne stiler for "Det omsluttende `<label>`-elementet." */
    }
    
    lm-text-field::part(etikett-tekst) {
        /* egne stiler for "`<span>`-en med selve etikett-teksten." */
    }
    
    lm-text-field::part(felt) {
        /* egne stiler for "Det interne `<input>`-elementet." */
    }
    
    lm-text-field::part(hjelpetekst) {
        /* egne stiler for "`<small>`-elementet med hjelpeteksten." */
    }
    
    lm-text-field::part(feilmelding) {
        /* egne stiler for "`<small role="alert">`-elementet med valideringsmeldingen." */
    }

    Metoder

    Metode Parametre Returverdi Beskrivelse
    checkValidity()-Videresender til den interne ElementInternals.checkValidity().
    reportValidity()-Videresender til den interne ElementInternals.reportValidity() - viser nettleserens native valideringsboble anker et til feltet.

    Tilgjengelighet

    Etikett-teksten står i et ekte <label> som omslutter feltet (ingen for/id-kobling å holde synkron). aria-describedby peker alltid på både hjelpetekst- og feilmeldingselementet (tomme elementer annonserer ingenting ekstra). Feilmeldingen får role="alert" og vises først etter at brukeren har forlatt feltet (blur) eller et skjemainnsendingsforsøk har feilet (native invalid-hendelse) - aldri på et urørt, tomt felt.

    • Etikett-teksten står i et ekte <label> som omslutter feltet.
    • aria-describedby peker på både hjelpetekst- og feilmeldingselementet.
    • Feilmeldingen får role="alert" og vises først etter blur eller et feilet innsendingsforsøk.
    • Obligatoriske felt får en visuell stjerne i tillegg til required-attributtet på det interne feltet.

    Detaljer

    • Er form-associated (static formAssociated = true) og deltar i FormData under sitt name-attributt, helt uten en skjult hjelpe-input.
    • value-attributtet/-propertyen og alle valideringsattributter (pattern, minlength, maxlength, osv.) videresendes direkte til det interne <input>, slik at native validering (:invalid, checkValidity()) fungerer uendret.

    Referanser

    Se også:

    Brukes av:

    • Ingen ennå - ny komponent.

    Avhengigheter: designsystem/komponenter/skjema/skjema-felt-delt.css, designsystem/komponenter/skjema/skjema-felt-delt.js