import { DB_Object, DBPointer, DBProto, Filter, ResolvableContent } from '@nu-art/ts-common'; import * as React from 'react'; import { CSSProperties } from 'react'; import { TS_DropDown } from '../TS_Dropdown/index.js'; import { ModuleFE_BaseApi } from '../../modules/db-api-gen/ModuleFE_BaseApi.js'; import { Adapter } from '../adapter/Adapter.js'; import { ComponentSync } from '../../core/ComponentSync.js'; import { UIProps_EditableItem } from '../../utils/EditableItem.js'; import { ComponentProps_Error } from '../types.js'; type Props_CanUnselect = ({ canUnselect: true; onSelected: (selected?: T) => void; } | { canUnselect?: false; onSelected: (selected: T) => void; }); type BaseInfraProps_TS_GenericDropDownV3 = ComponentProps_Error & { dropdownRef?: React.RefObject; className?: string; style?: CSSProperties; placeholder?: string; mapper?: (item: T) => (string | undefined)[]; noOptionsRenderer?: React.ReactNode | ((filter?: string) => React.ReactNode); renderer?: (item: T) => React.ReactElement; ifNoneShowAll?: boolean; caret?: { open: React.ReactNode; close: React.ReactNode; }; onNoMatchingSelectionForString?: (filterText: string, matchingItems: T[], e: React.KeyboardEvent) => any; limitItems?: number; hidePlaceholderOnOpen?: boolean; itemResolver?: () => T[]; innerRef?: React.RefObject; tabIndex?: number; unselectLabel?: string; id?: string; queryFilter?: (item: T) => boolean; sortBy?: ((keyof T) | ((item: T) => string | number))[]; }; type BaseAppLevelProps_TS_GenericDropDownV3 = BaseInfraProps_TS_GenericDropDownV3 & { inputValue?: string; boundingParentSelector?: string; renderSearch?: (dropDown: TS_DropDown) => React.ReactNode; limitItems?: number; disabled?: boolean; }; export type AppLevelProps_TS_GenericDropDownV3 = Props_CanUnselect & BaseAppLevelProps_TS_GenericDropDownV3 & { selected?: T | string | (() => T | undefined); }; type EditableItemProps_GenericDropDownV3 = BaseAppLevelProps_TS_GenericDropDownV3 & UIProps_EditableItem & { onSelected?: (selected: T | undefined, superOnSelected: (selected?: T) => Promise) => void; canUnselect?: boolean; } & ComponentProps_Error; export type TemplatingProps_TS_GenericDropDown, T extends Proto['dbType'] = Proto['dbType']> = BaseInfraProps_TS_GenericDropDownV3 & { placeholder: string; module: ModuleFE_BaseApi; modules: ModuleFE_BaseApi[]; mapper: (item: T) => (string | undefined)[]; renderer: (item: T) => React.ReactElement; selectedItemRenderer?: (selected: T) => React.ReactNode; }; export type GenericDropDown_DBPointer_Item> = { dbKey: Proto['dbKey']; item: Proto['dbType']; }; export type TemplatingProps_TS_GenericDropDown_DBPointer, T extends GenericDropDown_DBPointer_Item = GenericDropDown_DBPointer_Item> = Omit, 'mapper'> & { placeholder: string; selectedItemRenderer?: (selected: T) => React.ReactNode; pointerProps: { [P in Proto as P['dbKey']]: { module: ModuleFE_BaseApi

; mapper: (item: GenericDropDown_DBPointer_Item

) => string[]; renderer: (item: GenericDropDown_DBPointer_Item

) => React.ReactElement; }; }; }; type EditableItemProps_GenericDropDownV3_DBPointer = BaseAppLevelProps_TS_GenericDropDownV3 & UIProps_EditableItem & { onSelected?: (selected: T | undefined, superOnSelected: (selected?: T) => Promise) => void; canUnselect?: boolean; } & ComponentProps_Error; type Props_TS_GenericDropDownV3, T extends Proto['dbType'] = Proto['dbType']> = TemplatingProps_TS_GenericDropDown & BaseAppLevelProps_TS_GenericDropDownV3 & Props_CanUnselect & { selected?: Proto['dbType'] | string | (() => Proto['dbType'] | undefined); }; type State = ComponentProps_Error & { items: T[]; selected?: T; filter: Filter; adapter: Adapter; }; export declare class GenericDropDownV3, T extends Proto['dbType'] = Proto['dbType']> extends ComponentSync, State> { static readonly prepareEditable: >(mandatoryProps: ResolvableContent>) => (props: EditableItemProps_GenericDropDownV3) => import("react/jsx-runtime").JSX.Element; static readonly prepareSelectable: >(mandatoryProps: ResolvableContent>) => (props: AppLevelProps_TS_GenericDropDownV3) => import("react/jsx-runtime").JSX.Element; static readonly prepare: >(mandatoryProps: ResolvableContent>) => { editable: (props: EditableItemProps_GenericDropDownV3) => import("react/jsx-runtime").JSX.Element; selectable: (props: AppLevelProps_TS_GenericDropDownV3) => import("react/jsx-runtime").JSX.Element; }; static readonly prepareSelectable_DBPointers: >(mandatoryProps: ResolvableContent>) => (props: AppLevelProps_TS_GenericDropDownV3>) => import("react/jsx-runtime").JSX.Element; static readonly prepareEditable_DBPointers: >(mandatoryProps: ResolvableContent>) => (props: EditableItemProps_GenericDropDownV3_DBPointer>) => import("react/jsx-runtime").JSX.Element; static readonly prepare_DBPointers: >(mandatoryProps: ResolvableContent>) => { editable: (props: EditableItemProps_GenericDropDownV3_DBPointer>) => import("react/jsx-runtime").JSX.Element; selectable: (props: AppLevelProps_TS_GenericDropDownV3>) => import("react/jsx-runtime").JSX.Element; }; protected deriveStateFromProps(nextProps: Props_TS_GenericDropDownV3): State; private getSelected; render(): import("react/jsx-runtime").JSX.Element; } export {};