Files
MattrixwvReactComponents/lib/types/InputTypes.ts

172 lines
3.5 KiB
TypeScript

import type React from "react";
import type { ChangeEventHandler } from "react";
export interface TextInputProps {
id?: string;
className?: string;
inputClassName?: string;
labelClassName?: string;
name?: string;
maxLength?: number;
spellCheck?: boolean;
placeholder?: string;
defaultValue?: string;
value?: string;
onChange?: ChangeEventHandler<HTMLInputElement>;
disabled?: boolean;
}
export interface TextAreaProps {
id?: string;
className?: string;
inputClassName?: string;
labelClassName?: string;
name?: string;
maxLength?: number;
spellCheck?: boolean;
placeholder?: string;
defaultValue?: string;
value?: string;
disabled?: boolean;
rows?: number;
cols?: number;
onChange?: ChangeEventHandler<HTMLTextAreaElement>;
}
export interface SelectInputProps {
label: React.ReactNode;
value?: string;
onChange?: (newValue: string) => void;
children: React.ReactNode;
}
export interface OptionInputProps {
id?: string;
className?: string;
value: string;
children: React.ReactNode;
}
export type MattrixwvSwitchSize = "none" | "xs" | "sm" | "md" | "lg" | "xl";
export interface MattrixwvSwitchProps {
id?: string;
className?: string;
knobClassName?: string;
size?: MattrixwvSwitchSize;
wide?: boolean;
name?: string;
value?: string;
defaultChecked?: boolean;
checked?: boolean;
onChange?: (newChecked: boolean) => void;
disabled?: boolean;
children?: React.ReactNode;
offText?: React.ReactNode;
onText?: React.ReactNode;
}
export interface MattrixwvButtonSwitchProps {
id?: string;
className?: string;
name?: string;
value?: string;
defaultChecked?: boolean;
checked?: boolean;
onChange?: (newChecked: boolean) => void;
disabled?: boolean;
onNode: React.ReactNode;
offNode: React.ReactNode;
}
export interface NumberInputProps {
id?: string;
className?: string;
inputClassName?: string;
labelClassName?: string;
name?: string;
min?: number;
max?: number;
defaultValue?: number;
value?: number;
onChange?: (newValue: number) => void;
disabled?: boolean;
children?: React.ReactNode;
}
export interface NumberSliderProps {
id?: string;
className?: string;
name?: string;
min?: number;
max?: number;
step?: number;
defaultValue?: number;
value?: number;
onChange?: (newValue: number) => void;
disabled?: boolean;
}
export interface FileInputProps {
id?: string;
className?: string;
name?: string;
minSize?: number;
maxSize?: number;
showFileName?: boolean;
showSize?: boolean;
onChange?: (newFile: File | undefined) => void;
disabled?: boolean;
children?: React.ReactNode;
}
export type CheckboxSize = "none" | "xs" | "sm" | "md" | "lg" | "xl";
export interface CheckboxProps {
id?: string;
className?: string;
labelClassName?: string;
name?: string;
size?: CheckboxSize;
box?: boolean;
onChange?: (newChecked: boolean) => void;
checked?: boolean;
defaultChecked?: boolean;
strokeWidth?: number;
value?: string;
children?: React.ReactNode;
}
export type RadioButtonSize = "none" | "xs" | "sm" | "md" | "lg" | "xl";
export interface RadioButtonProps {
id?: string;
className?: string;
labelClassName?: string;
size?: RadioButtonSize;
value: string;
children?: React.ReactNode;
}
export interface RadioListProps {
id?: string;
className?: string;
name?: string;
value?: string;
onChange?: (value: string) => void;
defaultValue?: string;
direction?: "vertical" | "horizontal";
children?: React.ReactNode;
}
export interface DateInputProps {
id?: string;
className?: string;
defaultValue?: Date;
value?: Date;
onChange?: (newValue: Date) => void;
}