import * as React from 'react'; import { DBProto, UniqueId } from '@nu-art/ts-common'; import { TS_Route } from '../../modules/routing/index.js'; import './Page_ItemsEditor.scss'; import { ModuleFE_BaseApi } from '../../modules/db-api-gen/ModuleFE_BaseApi.js'; import { EditableItem } from '../../utils/EditableItem.js'; import { Props_ListRenderer } from './defaults/ItemEditor_ListRenderer/index.js'; import { ItemEditor_CustomSort, ItemEditor_FilterType, ItemEditor_MapperType } from './types.js'; import { Props_Filter } from './defaults/ItemEditor_DefaultFilter/index.js'; import { InferProps, InferState } from '../../utils/types.js'; import { ProtoComponent, ProtoComponentDef, SuperProto } from '../../core/proto-component/index.js'; import { Props_EditableItemControllerProto } from '../TS_EditableItemControllerProto/index.js'; export type MenuAction> = { label: string; action: (state: State_ItemsEditor) => Promise; }; export type State_ItemsEditor> = { editable: EditableItem; filter: ItemEditor_FilterType; actionInProgress?: number; }; export type Props_ItemsEditor> = { ListRenderer?: React.ComponentType>; EditorRenderer: React.ComponentType>>; Filter?: React.ComponentType>; module: ModuleFE_BaseApi; route?: TS_Route<{ _id: string; }>; sort: ItemEditor_CustomSort; mapper: ItemEditor_MapperType; itemRenderer: (item: Proto['uiType']) => JSX.Element; actions: MenuAction[]; id?: string; onSelectedItemChanged?: (editable?: EditableItem) => void; contextMenuActions: MenuAction[]; hideAddItem: boolean; className?: string; }; /** * Manages a list of items on the left with a selected item, and an editor on the right */ export type ProtoDef_Selection = ProtoComponentDef<'selected', { selected: { [dbKey: string]: UniqueId; }; }>; export declare abstract class Page_ItemsEditor, CProto extends SuperProto> = ProtoDef_Selection, P = {}, S = {}> extends ProtoComponent & P, State_ItemsEditor & S> { static _defaultProps: ProtoDef_Selection['props']; constructor(p: InferProps>); componentDidMount(): void; protected deriveStateFromProps(nextProps: InferProps, state: InferState): InferState; private __onItemUpdated; private createEditableItem; render(): import("react/jsx-runtime").JSX.Element; protected renderHeader(): React.ReactNode; protected renderAddNewItem(): "" | import("react/jsx-runtime").JSX.Element; static refactoring_setSelected>(module: ModuleFE_BaseApi, id?: string): void; private onSelected; private renderMenuIcon; private renderMenu; } export declare const Component_AddNewItem: (props: { onCreateNewItem: () => Promise; entity: React.ReactNode; }) => import("react/jsx-runtime").JSX.Element;