react-widgets-up
Version:
An à la carte set of polished, extensible, and accessible inputs built for React
54 lines • 2.28 kB
TypeScript
import * as React from 'react';
import { ListOptionProps } from './ListOption';
import { UserProvidedMessages } from './messages';
import { RenderProp, Value } from './types';
import { Accessors } from './Accessors';
export type GroupBy<TDataItem = unknown> = ((item: TDataItem) => unknown) | string;
export interface ListHandle {
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 OptionComponentProp = React.ComponentType<ListOptionProps<any>>;
export type ChangeHandler<TDataItem> = (dataItem: TDataItem | TDataItem[], metadata: {
action?: 'insert' | 'remove';
dataItem?: TDataItem;
lastValue: Value;
originalEvent?: React.SyntheticEvent;
}) => void;
export interface ListProps<TDataItem> {
data: readonly TDataItem[];
value?: readonly TDataItem[] | TDataItem;
accessors: Accessors;
focusedItem?: TDataItem;
className?: string;
multiple?: boolean;
disabled?: boolean | readonly TDataItem[];
messages?: UserProvidedMessages;
renderItem?: RenderItemProp<TDataItem>;
renderGroup?: RenderGroupProp;
searchTerm?: string;
groupBy?: GroupBy<TDataItem>;
optionComponent?: React.ElementType;
onChange: ChangeHandler<TDataItem>;
ref?: React.Ref<ListHandle>;
elementRef?: React.RefObject<HTMLDivElement | null>;
[key: string]: any;
}
export declare const useScrollFocusedIntoView: (element: HTMLElement | null, observeChanges?: boolean) => () => void;
export declare function useHandleSelect<TDataItem>(multiple: boolean, dataItems: TDataItem[], onChange: ChangeHandler<TDataItem>): (dataItem: TDataItem, event: React.SyntheticEvent) => void;
declare function List<TDataItem>({ multiple, data, value, onChange, accessors, className, messages, disabled, renderItem, renderGroup, searchTerm, groupBy, elementRef, optionComponent: Option, renderList, ref: outerRef, ...props }: ListProps<TDataItem>): any;
declare namespace List {
var displayName: string;
}
export default List;
//# sourceMappingURL=List.d.ts.map