@uifabric/experiments
Version:
Experimental React components for building experiences for Microsoft 365.
106 lines (105 loc) • 3.57 kB
TypeScript
import * as React from 'react';
import { IRefObject } from '@uifabric/utilities';
import { IBaseFloatingSuggestionsProps } from '../FloatingSuggestionsComposite/FloatingSuggestions.types';
import { ISelectedItemsListProps } from '../SelectedItemsList/SelectedItemsList.types';
import { IFocusZoneProps, IInputProps, Autofill, IDragDropEvents } from 'office-ui-fabric-react';
export interface IUnifiedPickerProps<T> {
/**
* Ref of the component
*/
componentRef?: IRefObject<any>;
/**
* ClassName for the picker
*/
className?: string;
/**
* Component to render selected items
* selectedItemsListProps will be passed as props to this component
*/
onRenderSelectedItems: (props: ISelectedItemsListProps<T>) => JSX.Element;
/**
* Props to pass to SelectedItems component
*/
selectedItemsListProps: ISelectedItemsListProps<T>;
/**
* Component to render floating suggestions
* floatingSuggestionProps will be passed as props to this component
*/
onRenderFloatingSuggestions: (props: IBaseFloatingSuggestionsProps<T>) => JSX.Element;
/**
* Props to pass to floating suggestions component
*/
floatingSuggestionProps: IBaseFloatingSuggestionsProps<T>;
/**
* Current query string to show in input component
*/
currentRenderedQuerystring?: string;
/**
* Callback when input query string changes
*/
onQueryStringChange?: (query: string) => void;
/**
* A callback for when the user put focus on the picker
*/
onFocus?: React.FocusEventHandler<HTMLInputElement | Autofill>;
/**
* A callback for when the user moves the focus away from the picker
*/
onBlur?: React.FocusEventHandler<HTMLInputElement | Autofill>;
/**
* Focus zone props
*/
focusZoneProps?: IFocusZoneProps;
/**
* Autofill input native props
* @defaultvalue undefined
*/
inputProps?: IInputProps;
/**
* Header component
*/
headerComponent?: JSX.Element;
/**
* On paste to input
*/
onPaste?: (pastedValue: string, selectedItemsList: T[]) => void;
/**
* On input value change
*/
onInputChange?: (filter: string, composing?: boolean, resultItemsList?: T[]) => void;
/**
* Callback for when a key is pressed
*/
onKeyDown?: (ev: React.KeyboardEvent<HTMLDivElement>) => void;
/**
* Drag drop events callback interface
*/
dragDropEvents?: IDragDropEvents;
/**
* String used in drag drop to identify information for this specific control
* Is only used when dragDropEvents is not specified (default)
* getSerializedItems and getDeserializedItems on the selectedItemsListProps should be specified as well
* if this is used
*/
customClipboardType?: string;
/**
* If dragDropEvents is set, this property will be ignored
* @defaultvalue true
*/
defaultDragDropEnabled?: boolean;
/**
* If this property is not specified, defaultDragDropEnabled will be used
* @defaultvalue true
*/
autofillDragDropEnabled?: boolean;
/**
* Function to customize drop behavior over the autofill portion
* If this is not set, but autofillDragDropEnabled is, the built
* in drop behavior will be used.
*/
onDropAutoFill?: (event?: React.DragEvent<HTMLDivElement>) => void;
/**
* A function used to validate if raw text entered into the well can be added
*/
onValidateInput?: (input: string) => boolean;
}