Om komponenten
Formål
Beløpsfelt bygget på type="text" (siden formatert visning som "1 234,50 kr" ikke er et gyldig native tall), som viser verdien live valutaformatert via den delte formatCurrency-funksjonen når feltet ikke har fokus, og en enkel, redigerbar rå tallverdi mens brukeren skriver.
Egner seg for
- Ekte pengebeløp i okonomi-prosjektet og lignende - lønn, utgifter, formuesverdier, budsjettgrenser.
Egner seg ikke for
- Enkle enhetstall som ikke er penger ("kr" som blott en etikett, prosent, antall) - bruk
<lm-number-field>sinsuffiks-attributt. - Presise heltallsberegninger som må unngå flyttallsavrunding i selve komponenten - komponenten leverer et JS-tall (
valueAsNumber), og eventuell øre-nøyaktig regning bør gjøres i hele kroner/øre i den kallende koden.
Bruk
<script type="module" src="/designsystem/komponenter/skjema/currency-field/currency-field.js"></script>
<lm-currency-field name="belop" label="Beløp" currency="NOK" value="1500" required></lm-currency-field>
const felt = document.querySelector("lm-currency-field");
const kroner = felt.valueAsNumber; // ekte tall, uten formatering
Prøv selv
Rediger koden under - resultatet oppdateres live.
Attributter
| Attributt | Type | Standard | Beskrivelse |
|---|---|---|---|
label | string | Attributt/property. Synlig etikett-tekst. | |
name | string | Attributt. Skjemafelt-navn - komponenten er form-associated og deltar i FormData under dette navnet. | |
value | string | Attributt/property. Rå tallverdi (uten formatering), f.eks. "1234.5". Bruk valueAsNumber-propertyen for et ekte tall. | |
currency | string | "NOK" | Attributt. Tresifret valutakode brukt av Intl.NumberFormat for formatert visning. |
locale | string | "nb-NO" | Attributt. Locale brukt av Intl.NumberFormat for tusenskille/desimaltegn. |
required | boolean | false | Attributt/property. Gjør feltet obligatorisk. |
disabled | boolean | false | Attributt/property. Deaktiverer feltet. |
help | string | Attributt. Kort hjelpetekst vist under feltet, koblet via aria-describedby. |
Parts
| Part | Beskrivelse |
|---|---|
etikett | Det omsluttende <label>-elementet. |
etikett-tekst | <span>-en med selve etikett-teksten. |
felt | Det interne <input type="text">-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-currency-field::part(etikett) {
/* egne stiler for "Det omsluttende `<label>`-elementet." */
}
lm-currency-field::part(etikett-tekst) {
/* egne stiler for "`<span>`-en med selve etikett-teksten." */
}
lm-currency-field::part(felt) {
/* egne stiler for "Det interne `<input type="text">`-elementet." */
}
lm-currency-field::part(hjelpetekst) {
/* egne stiler for "`<small>`-elementet med hjelpeteksten." */
}
lm-currency-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(). |
Tilgjengelighet
Samme etikett-/hjelpetekst-/feilmeldingsoppsett som <lm-text-field>. Verdien vises formatert kun når feltet ikke har fokus, slik at skjermlesere og redigering alltid møter et enkelt, entydig tall mens brukeren skriver.
- Samme
<label>/aria-describedby-oppsett som<lm-text-field>. - Feltet viser alltid en enkel, uformatert tallverdi mens det har fokus, og formatert tekst kun når det ikke har fokus - unngår at skjermlesere må tolke valutasymboler midt i redigeringen.
Detaljer
- Er form-associated og deltar i
FormDataunder sittname-attributt som en rå, uformatert tallstreng. valueAsNumber-propertyen gir/tar imot et ekte JS-tall.- Bruker den delte
formatCurrency-funksjonen fradesignsystem/funksjoner/formattering/format-currency/- ingen egen formateringslogikk i komponenten.
Referanser
Se også:
../number-field/index.html - brukes i stedet for enkle enhetstall som ikke er penger.../../../guider/skjemafelt/index.html - full oversikt over hvilken feltkomponent som dekker hvilken native input-type.
Brukes av:
Ingen ennå - ny komponent.
Avhengigheter: designsystem/komponenter/skjema/skjema-felt-delt.css, designsystem/komponenter/skjema/skjema-felt-delt.js, designsystem/funksjoner/formattering/format-currency/