@nu-art/db-api-generator
Version:
db-api-generator
30 lines (29 loc) • 1.71 kB
TypeScript
import * as React from 'react';
import { Component, ReactNode } from 'react';
import { EditableItem, PartialProps_DropDown } from '@nu-art/thunderstorm/frontend';
import './TS_MultiSelect.scss';
import { AssetValueType, DB_Object, PreDB } from '@nu-art/ts-common';
import { PartialProps_GenericDropDown } from '../GenericDropDown';
import { ModuleFE_BaseApi } from '../../modules/ModuleFE_BaseApi';
export type TS_MultiSelect_Renderer<InnerItem extends DB_Object> = {
label: string;
module: ModuleFE_BaseApi<InnerItem>;
itemRenderer: (item?: InnerItem, onDelete?: () => Promise<void>) => ReactNode;
placeholder: string;
noOptionsRenderer: string;
createNewItemFromLabel?: (filterText: string, matchingItems: InnerItem[], e: React.KeyboardEvent) => Promise<PreDB<InnerItem>>;
selectionRenderer: React.ComponentType<PartialProps_GenericDropDown<InnerItem> | PartialProps_DropDown<InnerItem>>;
itemResolver?: () => InnerItem[];
};
export type DynamicProps_TS_MultiSelect<EnclosingItem, K extends keyof EnclosingItem> = {
editable: EditableItem<EnclosingItem>;
prop: AssetValueType<EnclosingItem, K, string[]>;
};
export type StaticProps_TS_MultiSelect<InnerItem extends DB_Object> = {
props: TS_MultiSelect_Renderer<InnerItem>;
};
export type Props_TS_MultiSelect<EnclosingItem, K extends keyof EnclosingItem, InnerItem extends DB_Object> = StaticProps_TS_MultiSelect<InnerItem> & DynamicProps_TS_MultiSelect<EnclosingItem, K>;
export declare class TS_MultiSelect<EnclosingItem, K extends keyof EnclosingItem, InnerItem extends DB_Object> extends Component<Props_TS_MultiSelect<EnclosingItem, K, InnerItem>, any> {
render(): JSX.Element;
private renderSelector;
}