@karmaniverous/hook-form-semantic
Version:
React Hook Form components with Semantic UI React integration - date pickers, WYSIWYG editor, phone input, JSON editor, and more.
124 lines (105 loc) • 9.52 kB
TypeScript
import * as react_jsx_runtime from 'react/jsx-runtime';
import { FieldValues, ControllerProps, ControllerRenderProps, Path, ControllerFieldState } from 'react-hook-form';
import { StrictFormFieldProps, StrictCheckboxProps, FormFieldProps, StrictMenuProps, StrictButtonProps, StrictDropdownProps, SemanticICONS } from 'semantic-ui-react';
import { DatePickerProps } from 'react-date-picker';
import { DateTimePickerProps } from 'react-datetime-picker';
import { DateRangePickerProps } from '@wojtekmaj/react-daterange-picker';
import { DateTimeRangePickerProps } from '@wojtekmaj/react-datetimerange-picker';
import { JSONEditorPropsOptional } from 'vanilla-jsoneditor';
import { ChangeEventHandler } from 'react';
import { NumericFormatProps } from 'react-number-format';
import { UsePhoneInputConfig } from 'react-international-phone';
import { UseRRStackOutput, UseRRStackProps } from '@karmaniverous/rrstack/react';
import { DescribeOptions } from '@karmaniverous/rrstack';
import { EditorProps } from 'react-draft-wysiwyg';
type PrefixedPartial<T, Prefix extends string> = {
[K in keyof T as K extends string ? `${Prefix}${Capitalize<K>}` : never]: T[K];
};
interface HookFormCheckboxProps<T extends FieldValues> extends Omit<StrictFormFieldProps, 'children' | 'checked' | 'disabled' | 'error' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'value'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'>, PrefixedPartial<StrictCheckboxProps, 'checkbox'> {
checkLabel?: string;
leftLabel?: string;
rightLabel?: string;
uncheckLabel?: string;
}
declare const HookFormCheckbox: <T extends FieldValues>({ checkLabel, label, leftLabel, rightLabel, uncheckLabel, ...props }: HookFormCheckboxProps<T>) => react_jsx_runtime.JSX.Element;
interface HookFormDatePickerProps<T extends FieldValues> extends Omit<FormFieldProps, 'children' | 'checked' | 'control' | 'disabled' | 'error' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'value'>, Partial<PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'>>, PrefixedPartial<DatePickerProps, 'datePicker'>, PrefixedPartial<DateTimePickerProps, 'timePicker'> {
/**
* Standalone mode (no RHF). Provide value and onChange handlers.
*/
standalone?: boolean;
value?: Date | null;
onChange?: (value: Date | null) => void;
}
declare const HookFormDatePicker: <T extends FieldValues>({ standalone, value: standaloneValue, onChange: standaloneOnChange, ...props }: HookFormDatePickerProps<T>) => react_jsx_runtime.JSX.Element;
type DateRange = [Date | null, Date | null];
declare const extractTimestamps: (dateRange: DateRange) => (number | undefined)[];
type Presets = Record<string, {
text: string;
value: DateRange | (() => DateRange);
epoch: 'past' | 'present' | 'future';
}>;
declare const defaultPresets: Presets;
declare const filterPresets: (epochs: Presets[string]["epoch"][], presets?: Presets) => Presets;
interface HookFormDateRangePickerProps<T extends FieldValues> extends Omit<FormFieldProps, 'children' | 'checked' | 'control' | 'disabled' | 'error' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'value'>, Partial<PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'>>, PrefixedPartial<DateRangePickerProps, 'datePicker'>, PrefixedPartial<DateTimeRangePickerProps, 'timePicker'> {
presets?: Presets;
standalone?: boolean;
value?: DateRange;
onChange?: (value: DateRange) => void;
}
declare const HookFormDateRangePicker: <T extends FieldValues>({ standalone, value: standaloneValue, onChange: standaloneOnChange, presets, ...props }: HookFormDateRangePickerProps<T>) => react_jsx_runtime.JSX.Element;
interface HookFormFieldProps<T extends FieldValues, C> extends Omit<FormFieldProps, 'children' | 'checked' | 'disabled' | 'error' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'value'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'> {
children?: FormFieldProps['children'] | ((field: ControllerRenderProps<T, Path<T>>, fieldState: ControllerFieldState) => FormFieldProps['children']);
onChange?: (event: React.SyntheticEvent<HTMLElement>, data: C) => void;
}
declare const HookFormField: <T extends FieldValues, C>({ children, onChange, ...props }: HookFormFieldProps<T, C>) => react_jsx_runtime.JSX.Element;
interface HookFormJsonEditorProps<T extends FieldValues> extends Omit<FormFieldProps, 'children' | 'disabled' | 'error' | 'name' | 'onBlur' | 'ref' | 'value'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'>, PrefixedPartial<Partial<Omit<JSONEditorPropsOptional, 'content'>>, 'json'> {
}
declare const HookFormJsonEditor: <T extends FieldValues>(props: HookFormJsonEditorProps<T>) => react_jsx_runtime.JSX.Element;
interface HookFormMenuProps<T extends FieldValues> extends Omit<FormFieldProps, 'children' | 'checked' | 'disabled' | 'error' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'value'>, PrefixedPartial<Omit<StrictMenuProps, 'activeIndex' | 'children' | 'onItemClick'>, 'menu'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'> {
}
declare const HookFormMenu: <T extends FieldValues>({ ...props }: HookFormMenuProps<T>) => react_jsx_runtime.JSX.Element;
type DisplayMode = 'card' | 'table' | 'wizard';
type HookFormMenuDisplayModeProps<T extends FieldValues> = Omit<HookFormMenuProps<T>, 'menuItems'>;
declare const HookFormMenuDisplayMode: <T extends FieldValues>({ hookName, ...props }: HookFormMenuDisplayModeProps<T>) => react_jsx_runtime.JSX.Element;
interface HookFormNumericProps<T extends FieldValues> extends Omit<FormFieldProps, 'children' | 'checked' | 'disabled' | 'error' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'value'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'>, PrefixedPartial<Omit<NumericFormatProps, 'customInput' | 'onChange'>, 'numeric'> {
onChange?: ChangeEventHandler<HTMLInputElement>;
}
declare const HookFormNumeric: <T extends FieldValues>({ label, ...props }: HookFormNumericProps<T>) => react_jsx_runtime.JSX.Element;
interface HookFormPhoneProps<T extends FieldValues> extends Omit<FormFieldProps, 'disabled' | 'error' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'value'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'>, PrefixedPartial<Omit<UsePhoneInputConfig, 'value'>, 'phone'> {
phonePlaceholderNumberChar?: string;
mobileBreakpoint?: number;
isValidating?: boolean;
}
declare const HookFormPhone: <T extends FieldValues>(props: HookFormPhoneProps<T>) => react_jsx_runtime.JSX.Element;
type Logger = ((...args: unknown[]) => void) | boolean | null | undefined;
interface RRStackRuleDescriptionPropsBase extends DescribeOptions {
fallback?: React.ReactNode;
index: number;
rrstack: UseRRStackOutput['rrstack'];
}
interface HookFormRRStackProps<T extends FieldValues> extends Omit<FormFieldProps, 'as' | 'children' | 'content' | 'control' | 'checked' | 'disabled' | 'error' | 'inline' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'type' | 'value'>, PrefixedPartial<Omit<RRStackRuleDescriptionPropsBase, 'index' | 'rrstack'>, 'describe'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'>, PrefixedPartial<Omit<UseRRStackProps, 'json' | 'timezone'>, 'rrstack'> {
logger?: Logger;
timestampFormat?: string;
}
declare const HookFormRRStack: <T extends FieldValues>({ logger, timestampFormat, ...props }: HookFormRRStackProps<T>) => react_jsx_runtime.JSX.Element;
type Sort<T extends string | undefined> = [
NonNullable<T> | 'auto',
boolean
];
interface HookFormSortProps<T extends FieldValues> extends Omit<FormFieldProps, 'children' | 'checked' | 'disabled' | 'error' | 'name' | 'onBlur' | 'onChange' | 'ref' | 'value'>, PrefixedPartial<Omit<StrictButtonProps, 'children' | 'icon' | 'onClick'>, 'button'>, PrefixedPartial<Omit<StrictDropdownProps, 'button' | 'children' | 'selection' | 'style' | 'value'>, 'dropdown'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'> {
ascIcon?: SemanticICONS;
descIcon?: SemanticICONS;
sortOptions?: StrictDropdownProps['options'];
dropdownOptions?: StrictDropdownProps['options'];
}
declare const HookFormSort: <T extends FieldValues>({ ascIcon, descIcon, sortOptions, dropdownOptions, ...props }: HookFormSortProps<T>) => react_jsx_runtime.JSX.Element;
interface WysiwygEditorProps extends Omit<EditorProps, 'editorState' | 'onChange' | 'onEditorStateChange'> {
onChange: (value: string) => void;
value?: string | null;
}
interface HookFormWysiwygEditorProps<T extends FieldValues> extends Omit<FormFieldProps, 'children' | 'disabled' | 'error' | 'name' | 'onBlur' | 'ref' | 'value'>, PrefixedPartial<Omit<ControllerProps<T>, 'render'>, 'hook'>, PrefixedPartial<Partial<WysiwygEditorProps>, 'wysiwyg'> {
}
declare const HookFormWysiwygEditor: <T extends FieldValues>(props: HookFormWysiwygEditorProps<T>) => react_jsx_runtime.JSX.Element;
declare const isPhoneValid: (phone: string) => boolean;
export { HookFormCheckbox, HookFormDatePicker, HookFormDateRangePicker, HookFormField, HookFormJsonEditor, HookFormMenu, HookFormMenuDisplayMode, HookFormNumeric, HookFormPhone, HookFormRRStack, HookFormSort, HookFormWysiwygEditor, defaultPresets, extractTimestamps, filterPresets, isPhoneValid };
export type { DateRange, DisplayMode, HookFormCheckboxProps, HookFormDatePickerProps, HookFormDateRangePickerProps, HookFormFieldProps, HookFormJsonEditorProps, HookFormMenuDisplayModeProps, HookFormMenuProps, HookFormNumericProps, HookFormPhoneProps, HookFormRRStackProps, HookFormSortProps, HookFormWysiwygEditorProps, Presets, Sort };