Komponenter
Field
Field er et hjelpemiddel for å automatisk koble et felt sammen med label, beskrivelse, validation message og antall tegn.
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.
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.
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".
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, validation |
| 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. |