Komponenter
Input
Input er et skjemaelement for å samle inn brukerdata. Det tilbyr grunnleggende funksjonalitet og er ideell når du trenger full kontroll over komponentens oppsett og validering, noe som gjør den ideell for bygging av spesialtilpassede elementer.
HTML
Unable to parse html
const Preview = () => { return <Input aria-label='input' />; }; render(<Preview />)
Bruk
Klassen ds-input brukes på de fleste inndatafelter, som <input>, <textarea> og <select>.
For et gyldig skjemaelement anbefaler vi å bruke <ds-field> sammen med en <label>.
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-input-padding-block | var(--ds-size-2) |
| --dsc-input-padding-inline | var(--ds-size-3) |
| --dsc-input-padding | var(--dsc-input-padding-block) var(--dsc-input-padding-inline) |
| --dsc-input-size--toggle | var(--ds-size-6) |
| --dsc-input-size | var(--ds-size-12) |
| --dsc-input-background--readonly | var(--ds-color-neutral-surface-tinted) |
| --dsc-input-background | var(--ds-color-neutral-surface-default) |
| --dsc-input-border-color--readonly | var(--ds-color-neutral-border-subtle) |
| --dsc-input-border-color | var(--ds-color-neutral-border-default) |
| --dsc-input-border-style | solid |
| --dsc-input-border-width--toggle | max(var(--ds-border-width-default),calc(var(--ds-size-1)/2)) |
| --dsc-input-border-width | var(--ds-border-width-default) |
| --dsc-input-outline-color--hover | var(--ds-color-neutral-border-default) |
| --dsc-input-outline-color--toggle--hover | var(--dsc-input-accent-color) |
| --dsc-input-outline-width--hover | var(--ds-border-width-default) |
| --dsc-input-outline-style--hover | solid |
| --dsc-input-color--readonly | var(--ds-color-neutral-text-default) |
| --dsc-input-color | var(--ds-color-neutral-text-default) |
| --dsc-input-stroke-color | var(--ds-color-base-contrast-default) |
| --dsc-input-stroke-color--invalid | var(--ds-color-danger-base-contrast-default) |
| --dsc-input-stroke-width | 0.05em |
| --dsc-input-accent-color | var(--ds-color-base-default) |
| --dsc-input-accent-color--invalid | var(--ds-color-danger-text-subtle) |
| --dsc-input-line-height | var(--ds-line-height-md) |
| Navn | Verdi |
|---|---|
| data-width | auto |
Eksempel
ReadOnly
HTML
Unable to parse html
const ReadOnly = () => { return ( <Field> <Label>Fødselsnummer</Label> <Input readOnly value='12345678901' /> </Field> ); }; render(<ReadOnly />)
React
- type
- Description
Supported `input` types
- Type
"number" | "hidden" | "color" | "checkbox" | "date" | "datetime-local" | "email" | "file" | "month" | "password" | "radio" | "search" | "tel" | "text" | "time" | "url" | "week"- Default
text
- size
- Description
Defines the width of `Input` in count of characters.
- Type
number
- disabled
- Description
Disables element @note Avoid using if possible for accessibility purposes
- Type
boolean
- readOnly
- Description
Toggle `readOnly`
- Type
boolean
- role
- Description
Set role, i.e. `switch` when `checkbox` or `radio`
- Type
AriaRole
- data-indeterminate
- Description
Indeterminate state for checkbox inputs Only works when used inside `Field` component
- Type
boolean- Default
false
| Name | Type | Default | Description |
|---|---|---|---|
| type | "number" | "hidden" | "color" | "checkbox" | "date" | "datetime-local" | "email" | "file" | "month" | "password" | "radio" | "search" | "tel" | "text" | "time" | "url" | "week" | text | Supported `input` types |
| size | number | - | Defines the width of `Input` in count of characters. |
| disabled | boolean | - | Disables element @note Avoid using if possible for accessibility purposes |
| readOnly | boolean | - | Toggle `readOnly` |
| role | AriaRole | - | Set role, i.e. `switch` when `checkbox` or `radio` |
| data-indeterminate | boolean | false | Indeterminate state for checkbox inputs Only works when used inside `Field` component |
Type verdier
Input eksponerer kun støttede type-verdier. Du kan se de gyldige type verdiene i nedtrekksmenyen nedenfor.
HTML
Unable to parse html
const InputType = () => { const [type, setType] = useState<TextfieldProps['type']>('text'); return ( <div style={{ display: 'flex', gap: 'var(--ds-size-4)', alignItems: 'end', flexWrap: 'wrap', }} > <Field> <Label> <span data-lang='no'>Velg</span> <span data-lang='en'>Choose</span> type </Label> <Select defaultValue='text' lang='en' onChange={(e) => setType(e.target.value as TextfieldProps['type'])} > <Select.Option value='text'>text</Select.Option> <Select.Option value='color'>color</Select.Option> <Select.Option value='date'>date</Select.Option> <Select.Option value='datetime-local'>datetime-local</Select.Option> <Select.Option value='email'>email</Select.Option> <Select.Option value='file'>file</Select.Option> <Select.Option value='month'>month</Select.Option> <Select.Option value='hidden'>hidden</Select.Option> <Select.Option value='number'>number</Select.Option> <Select.Option value='password'>password</Select.Option> <Select.Option value='search'>search</Select.Option> <Select.Option value='tel'>tel</Select.Option> <Select.Option value='time'>time</Select.Option> <Select.Option value='url'>url</Select.Option> <Select.Option value='week'>week</Select.Option> </Select> </Field> <ArrowRightIcon aria-hidden width='3rem' height='3rem' /> <Field> <Label>{`type="${type}"`}</Label> <Input type={type} /> </Field> </div> ); }; render(<InputType />)