UNPKG

@nu-art/db-api-generator

Version:
30 lines (29 loc) 1.71 kB
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; }