@oslokommune/punkt-react
Version:
React komponentbibliotek til Punkt, et designsystem laget av Oslo Origo
113 lines (112 loc) • 3.88 kB
TypeScript
import { ChangeEvent, InputHTMLAttributes, ReactNode } from 'react';
import { IDatepickerStrings } from '../../shared-types/datepicker';
import { TPktInputSize } from '../../shared-types/size';
export interface IPktDatepicker extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {
id: string;
label: string;
value?: string | string[];
dateformat?: string;
multiple?: boolean;
maxlength?: number;
range?: boolean;
showRangeLabels?: boolean;
weeknumbers?: boolean;
withcontrols?: boolean;
excludedates?: string[];
excludeweekdays?: string[];
currentmonth?: string;
today?: string;
calendarOpen?: boolean;
timezone?: string;
fullwidth?: boolean;
inputSize?: TPktInputSize;
hasFieldset?: boolean;
inline?: boolean;
helptext?: string | ReactNode;
helptextDropdown?: string | ReactNode;
helptextDropdownButton?: string;
hasError?: boolean;
errorMessage?: string | ReactNode;
optionalTag?: boolean;
optionalText?: string;
requiredTag?: boolean;
requiredText?: string;
tagText?: string;
useWrapper?: boolean;
strings?: IDatepickerStrings;
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
onValueChange?: (values: string[]) => void;
className?: string;
}
export interface IDatepickerState {
id: string;
inputId: string;
values: string[];
calendarOpen: boolean;
label: string;
dateformat: string;
multiple: boolean;
maxlength?: number;
range: boolean;
showRangeLabels: boolean;
weeknumbers: boolean;
withcontrols: boolean;
excludedates?: string[];
excludeweekdays?: string[];
disabled: boolean;
readOnly: boolean;
required: boolean;
name?: string;
placeholder?: string;
fullwidth: boolean;
inputSize: TPktInputSize;
hasFieldset: boolean;
inline: boolean;
helptext?: string | ReactNode;
helptextDropdown?: string | ReactNode;
helptextDropdownButton?: string;
hasError: boolean;
errorMessage?: string | ReactNode;
optionalTag: boolean;
optionalText?: string;
requiredTag: boolean;
requiredText?: string;
tagText?: string;
useWrapper: boolean;
className?: string;
minStr?: string;
maxStr?: string;
effectiveCurrentMonth?: string;
today?: string;
inputType: string;
isIOSDevice: boolean;
strings: IDatepickerStrings;
inputClasses: string;
buttonClasses: string;
rangeLabelClasses: string;
datepickerInputsClasses: string;
isInputDisabled: boolean;
hasCounter: boolean;
inputRef: React.RefObject<HTMLInputElement | null>;
inputRefTo: React.RefObject<HTMLInputElement | null>;
changeInputRef: React.RefObject<HTMLInputElement | null>;
btnRef: React.RefObject<HTMLButtonElement | null>;
wrapperRef: React.RefObject<HTMLDivElement | null>;
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
toggleCalendar: () => void;
hideCalendar: () => void;
handleDateSelected: (selected: string[]) => void;
handleCalendarClose: () => void;
handleFocus: () => void;
handleSingleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
handleRangeFromChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
handleRangeToChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
handleRangeBlur: () => void;
handleMultipleBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
handleTagRemoved: (date: string) => void;
handleSingleKeydown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
handleRangeFromKeydown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
handleRangeToKeydown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
handleMultipleKeydown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
restProps: Record<string, unknown>;
}