Komponenter
Field
Field er et hjelpemiddel for å automatisk koble et felt sammen med label, beskrivelse, validation message og antall tegn.
HTML
Unable to parse html
const Preview = () => { return ( <Field> <Label>Etternavn</Label> <Field.Description> Etternavn kan ikke inneholde mellomrom </Field.Description> <Input defaultValue='Nordmann Svenske' /> <ValidationMessage> Du kan ikke ha mellomrom i etternavnet ditt </ValidationMessage> </Field> ); }; render(<Preview />)
Bruk
Det er vanlig å bli forvirret mellom fieldset og field. En god huskeregel er at fieldset er et sett med field.
Field kan brukes sammen med input, textarea og select. OBS: textfield har allerede field innebygd og kan derfor ikke brukes inni en field.
Legg klassenavnet ds-field på <ds-field>-elementet. <ds-field> kobler sammen label, input, beskrivelse, valideringsmelding og counter.
Eksempel
Prefix/Suffix
Prefixer og suffixer er nyttige for å vise enheter, valuta eller andre typer informasjon som er relevant for feltet. Du skal ikke bruke disse alene, siden skjermlesere ikke leser dem opp.
HTML
Unable to parse html
const Affix = () => ( <Field> <Label>Hvor mange kroner koster det per måned?</Label> <Field.Affixes> <Field.Affix>NOK</Field.Affix> <Input /> <Field.Affix>pr. mnd.</Field.Affix> </Field.Affixes> </Field> ); render(<Affix />)
Antall tegn
Legg til en <p> med attributtet data-field="counter" inne i ds-field for å få en teller på input og textarea.
HTML
Unable to parse html
const Counter = () => ( <Field> <Label>Legg til en beskrivelse</Label> <Textarea rows={2} /> <Field.Counter limit={10} /> </Field> ); render(<Counter />)
Du kan styre teksten i telleren ved å bruke følgende attributter:
| attribute | type | default | required |
|---|---|---|---|
| data-limit | number | undefined | true |
| data-over | string | %d tegn for mye | false |
| data-under | string | %d tegn igjen | false |
Plassering
Bruk data-position="end" på <ds-field> når du for eksempel ønsker å plassere en switch til høyre for label. Standard er data-position="start".
HTML
Unable to parse html
const Position = () => ( <> <Field position='end'> <Label>Flymodus</Label> <Input type='checkbox' role='switch' /> </Field> </> ); render(<Position />)
Ubestemt
For å sette en checkbox til ubestemt, legg til data-indeterminate="true" på <input>-elementet.
CSS variabler og data-attributter
Størrelser styres med data-size og farger med data-color. Komponenten vil arve nærmeste forelder med disse satt.
| Navn | Verdi |
|---|---|
| --dsc-field-content-spacing | var(--ds-size-2) |
| --dsc-field-counter-over | "%d tegn for mye" |
| --dsc-field-counter-under | "%d tegn igjen" |
| --dsc-field-description-color | var(--ds-color-neutral-text-subtle) |
| --dsc-field-border-color | var(--ds-color-neutral-border-default) |
| --dsc-field-border-color--checked | var(--ds-color-border-default) |
| --dsc-field-border-color--invalid | var(--ds-color-danger-border-default) |
| --dsc-field-border-color--readonly | var(--ds-color-neutral-border-subtle) |
| --dsc-field-border-radius | var(--ds-border-radius-lg) |
| --dsc-field-border-style | solid |
| --dsc-field-border-width | var(--ds-border-width-default) |
| --dsc-field-border-width--active | max(2px,0.125rem) |
| --dsc-field-padding | var(--ds-size-4) |
| --dsc-field-affix-border-width | var(--ds-border-width-default) |
| --dsc-field-affix-border-style | solid |
| --dsc-field-affix-border-color | var(--ds-color-neutral-border-default) |
| --dsc-field-affix-padding-inline | var(--ds-size-4) |
| --dsc-field-affix-background | var(--ds-color-neutral-surface-tinted) |
| --dsc-field-affix-color | var(--ds-color-neutral-text-subtle) |
| Navn | Verdi |
|---|---|
| data-field | description, counter |
| data-state | over |
| data-clickdelegatefor | |
| data-position | end |
| data-variant | outline |
React
- position
- Description
Position of toggle inputs (radio, checkbox, switch) in field
- Type
"start" | "end"- Default
start
- asChild
- Description
Change the default rendered element for the one passed as a child, merging their props and behavior. @deprecated This is not supported anymore, as the element needs to be `ds-field`
- Type
boolean- Default
false
| Name | Type | Default | Description |
|---|---|---|---|
| position | "start" | "end" | start | Position of toggle inputs (radio, checkbox, switch) in field |
| asChild | boolean | false | Change the default rendered element for the one passed as a child, merging their props and behavior. @deprecated This is not supported anymore, as the element needs to be `ds-field` |
FieldCounter
- over
- Description
Label template for when `maxCount` is exceeded. Use `%d` to insert the number of characters.
- Type
string- Default
'%d tegn for mye'
- under
- Description
Label template for count. Use `%d` to insert the number of characters.
- Type
string- Default
'%d tegn igjen'
- hint
- Description
@deprecated The hint attribute is deprecated.
- Type
string
- limit
- Description
The maximum allowed characters.
- Type
number- Default
undefined
- asChild
- Description
Change the default rendered element for the one passed as a child, merging their props and behavior.
- Type
boolean- Default
false
| Name | Type | Default | Description |
|---|---|---|---|
| over | string | '%d tegn for mye' | Label template for when `maxCount` is exceeded. Use `%d` to insert the number of characters. |
| under | string | '%d tegn igjen' | Label template for count. Use `%d` to insert the number of characters. |
| hint | string | - | @deprecated The hint attribute is deprecated. |
| limit | number | undefined | The maximum allowed characters. |
| asChild | boolean | false | Change the default rendered element for the one passed as a child, merging their props and behavior. |