import * as React from 'react'; import './styles.scss'; interface InputProps { step?: string; onKeyPress?: (e: React.KeyboardEvent) => void; onKeyUp?: (e: React.KeyboardEvent) => void; onPaste?: (e: React.ClipboardEvent) => void; } export interface SafeInputFieldProps { /** Unik ID */ id?: string; /** name attributt på input feltet */ inputName?: string; /** HMTL Input type */ type?: string; /** Verdi som vises i feltet */ value?: string | number; /** Tekst placeholder som vises i feltet når det ikke er satt value */ placeholder?: string; /** Om input feltet er readOnly */ readOnly?: boolean; /** Om feltet er disabled */ disabled?: boolean; /** Ekstra CSS-class som legges på wrapperen */ wrapperClasses?: string; /** Innhold som vises i komponentet */ children?: React.ReactNode; /** Ekstra CSS-class som legges på feltet */ className?: string; min?: number; /** Minimum lengde på tekst i input */ minLength?: number; max?: number; /** Maksimum lengde på tekst i input. En feilmelding vises dersom man skriver inn flere tegn. */ maxLength?: number; /** Function som kallers når det tastes i feltet */ onKeyDown?: React.EventHandler>; /** Function som kalles når fokus går bort fra feltet */ onBlur?: (event: React.FocusEvent<{}>) => void | undefined; /** Validator Function som kalles når fokus går bort fra feltet */ onBlurValidator?: (value: string | number) => Promise; /** Function som kalles når fokus er på feltet */ onFocus?: (event: React.FocusEvent<{}>, id: string | undefined) => void; /** Function som kalles når verdien i feltet endres */ onChange?: (event: React.FormEvent<{}>, id: string | undefined, formattedValue: string) => void; /** Function som kalles når datoen valideres riktig */ onValidated?: (valid: boolean | undefined) => void; /** Tillatter bare endringer av feltet hvis denne funksjonen returnerer true */ onChangeValidator?: (value: string | number) => boolean; /** Validerer value ved submit, dersom required */ onSubmitValidator?: (value?: string | number) => boolean; /** Denne funksjonen returnere strengen dette feltet settes til etter onChange. Tar imot e.target.value */ onChangeFormatter?: (value: string | number) => string; /** ErrorMessages som vises gjennom validering */ errorMessage?: string | ((value: string | number | undefined) => string); /** Meldingen som vises ved feilmelding om required*/ requiredErrorMessage?: string | ((value: string | number | undefined) => string); /** Component som vises ved validartion error */ validationErrorRenderer?: JSX.Element; /** Om feltet er påkrevd eller ikke */ isRequired?: boolean; /** Om label skal vises eller ikke */ showLabel?: boolean; /** Teksten til label */ label?: string | JSX.Element; /** Teksten til sub label, brukes som enkel hjelpetekst. Sublabel legges som et eget blokk-element nederst i