import React, { ComponentType } from 'react'; import { FieldBaseProps } from '@blueprintjs-formik/core'; import { SuggestProps as BPSuggestProps, ItemRendererProps as IItemRendererProps } from '@blueprintjs/select'; import { FormikItemRendererState, SelectOptionProps } from './types'; interface SuggestOptionProps extends SelectOptionProps { } type SuggestItemRenderer = (item: T, itemProps: IItemRendererProps, { isSelected }: FormikItemRendererState) => JSX.Element | null; interface SuggestCommonProps { itemRenderer?: SuggestItemRenderer; onItemSelect?: (item: T, event?: React.SyntheticEvent) => void; onCreateItemSelect?: (item: T, event?: React.SyntheticEvent) => void; valueAccessor?: string; labelAccessor?: string; textAccessor?: string; onItemChange?: (value: string, item: T, event?: React.SyntheticEvent) => void; onValueChange?: (value: string | number | null) => void; } interface BaseSuggestProps extends Omit, 'itemRenderer' | 'onItemSelect' | 'inputValueRenderer'>, SuggestCommonProps { } export interface SuggestProps extends BaseSuggestProps { selectedValue?: string | number; initialSelectedValue?: string | number; } export interface FormikSuggestProps extends Omit, BaseSuggestProps { name: string; } /** * Suggest component (standalone, not bound to Formik). * @param {SuggestProps} props * @returns {JSX.Element} */ export declare function Suggest(props: SuggestProps): React.JSX.Element; /** * Props for the Formik-bound Suggest component created by withFormikSuggest. */ export type WithFormikSuggestProps = Omit, 'selectedValue' | 'onValueChange' | 'initialSelectedValue'> & Omit & { name: string; }; /** * Higher-Order Component that wraps a Suggest component to bind it with Formik. * * @example * ```tsx * const FormikBoundSuggest = withFormikSuggest(Suggest); * * // Usage in a Formik form: * * ``` * * @param WrappedComponent - The Suggest component to wrap * @returns A new component that is bound to Formik */ export declare function withFormikSuggest(WrappedComponent: ComponentType>): { (props: WithFormikSuggestProps): JSX.Element; displayName: string; }; /** * Suggest component bound to Formik. * Built using withFormikSuggest HOC. * @exports * @param {FormikSuggestProps} props * @returns {JSX.Element} */ export declare const FormikSuggest: (props: WithFormikSuggestProps) => JSX.Element; /** * @deprecated Use FormikSuggest instead. This alias is provided for backwards compatibility. */ export declare const SuggestField: (props: WithFormikSuggestProps) => JSX.Element; export {};