react-widgets-up
Version:
An à la carte set of polished, extensible, and accessible inputs built for React
71 lines • 2.51 kB
TypeScript
import * as React from 'react';
import { GroupBy } from './List';
import { RenderProp, Value } from './types';
import { TextAccessor, DataKeyAccessor } from './Accessors';
import { WidgetHTMLProps } from './shared';
import { UserProvidedMessages } from './messages';
export interface ListboxHandle {
scrollIntoView(): void;
}
export type RenderItemProp<TDataItem> = RenderProp<{
item: TDataItem;
searchTerm?: string;
index: number;
text: string;
value: unknown;
disabled: boolean;
}>;
export type RenderGroupProp = RenderProp<{
group: any;
}>;
export type SingleChangeHandler<TDataItem> = (dataItem: TDataItem, metadata: {
lastValue: Value;
originalEvent?: React.SyntheticEvent;
}) => void;
export type MultipleChangeHandler<TDataItem> = (dataItem: readonly TDataItem[], metadata: {
action: 'insert' | 'remove';
dataItem: TDataItem;
lastValue: Value;
originalEvent?: React.SyntheticEvent;
}) => void;
export interface BaseListboxProps<TDataItem> extends WidgetHTMLProps {
data: TDataItem[];
defaultValue?: Value;
focusedItem?: TDataItem;
className?: string;
multiple?: boolean;
readOnly?: boolean;
/**
* @example false
*/
disabled?: boolean | TDataItem[];
messages?: UserProvidedMessages;
renderItem?: RenderItemProp<TDataItem>;
renderGroup?: RenderGroupProp;
searchTerm?: string;
groupBy?: GroupBy<TDataItem>;
optionComponent?: React.ElementType;
textField?: TextAccessor;
dataKey?: DataKeyAccessor;
}
export interface SingleListboxProps<TDataItem> extends BaseListboxProps<TDataItem> {
value?: Value;
defaultValue?: Value;
multiple?: false;
onChange?: SingleChangeHandler<TDataItem>;
ref?: any;
}
export interface MultipleListboxProps<TDataItem> extends BaseListboxProps<TDataItem> {
value?: Value[];
defaultValue?: Value[];
multiple: true;
onChange?: MultipleChangeHandler<TDataItem>;
ref?: any;
}
export type ListboxProps<TDataItem> = SingleListboxProps<TDataItem> | MultipleListboxProps<TDataItem>;
declare function Listbox<TDataItem>({ defaultValue, value: propsValue, onChange: propsOnChange, textField, dataKey, data, onKeyDown, disabled, readOnly, onBlur, onFocus, multiple, ref, ...props }: ListboxProps<TDataItem>): React.JSX.Element;
declare namespace Listbox {
var displayName: string;
}
export default Listbox;
//# sourceMappingURL=Listbox.d.ts.map