@docsvision/webclient
Version:
Type definitions for DocsVision WebClient scripts and extensions.
86 lines (85 loc) • 4.93 kB
TypeScript
import { $LayoutStaffController } from "@docsvision/webclient/Generated/DocsVision.WebClient.Controllers";
import { GenModels } from "@docsvision/webclient/Generated/DocsVision.WebClient.Models";
import { RecursiveVisitor } from "@docsvision/webclient/Helpers/CustomTree/RecursiveVisitor";
import { IAccessor } from "@docsvision/webclient/Helpers/DynamicModel/IAccessor";
import { LoadingState } from "@docsvision/webclient/System/LoadingState";
import { RequestHelper } from "@docsvision/webclient/System/RequestHelper";
import React from "react";
/** @internal */
export interface IDepartmentSelectDialogProps {
itemTypes: GenModels.SearchDepartmentType;
departmentSelected: (node: GenModels.DepartmentTreeNode) => void;
departmentAccepted: (node: GenModels.DepartmentTreeNode) => void;
/** Where to perform the search */
source: GenModels.DepartmentDataSource;
/** Задержка перед поиском (в мс) */
searchDelay?: number;
searchText: string;
services: $LayoutStaffController;
}
/** @internal */
export interface IDepartmentSelectDialogState {
requestHelper: RequestHelper;
searchRequestHelper: RequestHelper;
selectedNode?: GenModels.DepartmentTreeNode;
focusedNode?: GenModels.DepartmentTreeNode;
treeWrapper?: HTMLElement;
searchResultCount: number;
showingSearchResults: boolean;
searchText: string;
initialLoading: LoadingState;
nodes: GenModels.DepartmentTreeNode[];
flatNodes: GenModels.DepartmentTreeNode[];
searchTimerHandle?: any;
}
/** @internal */
export declare class DepartmentSelectDialog extends React.Component<IDepartmentSelectDialogProps, IDepartmentSelectDialogState> {
static LoadTreeLevelDown: number;
static LevelsToExpandByDefault: number;
/** @internal */
state: IDepartmentSelectDialogState;
recursive: RecursiveVisitor<GenModels.DepartmentTreeNode>;
/** Уровень узла */
levels: IAccessor<GenModels.DepartmentTreeNode, number>;
/** Раскрыт ли узел */
expanded: IAccessor<GenModels.DepartmentTreeNode, boolean>;
/** Виден ли узел */
visible: IAccessor<GenModels.DepartmentTreeNode, boolean>;
/** Отображает процесс загрузки данных с сервера */
childrenLoading: IAccessor<GenModels.DepartmentTreeNode, LoadingState>;
/** Были ли загружены узлы с сервера */
childrenLoaded: IAccessor<GenModels.DepartmentTreeNode, boolean>;
/** Название для отображаемых имён узлов */
displayNames: IAccessor<GenModels.DepartmentTreeNode, React.ReactNode>;
/** Идентификаторы родительских узлов */
parentIDs: IAccessor<GenModels.DepartmentTreeNode, string>;
/** Выключенные узлы */
disabled: IAccessor<GenModels.DepartmentTreeNode, boolean>;
searchInput: HTMLElement;
constructor(props: IDepartmentSelectDialogProps);
componentDidMount(): void;
protected getNodeID: (node: GenModels.DepartmentTreeNode) => string;
protected getNodeIconClass: (node: GenModels.DepartmentTreeNode) => string;
protected resetStores: () => void;
get selectedDepartment(): GenModels.DepartmentTreeNode;
protected loadTree(parentNode?: GenModels.DepartmentTreeNode): Promise<GenModels.DepartmentTreeNode[]>;
protected loadNodeChild(node: GenModels.DepartmentTreeNode): Promise<void | GenModels.DepartmentTreeNode[]>;
protected searchTree(searchText: string, resultNumber: number): Promise<GenModels.DepartmentFindInTreeResult>;
protected updateNodesVisibility(visibility: boolean, nodes: GenModels.DepartmentTreeNode[], parentNode?: GenModels.DepartmentTreeNode): void;
protected updateNodesMeta(nodes: GenModels.DepartmentTreeNode[], parentNode?: GenModels.DepartmentTreeNode, enabledItemTypes?: GenModels.SearchDepartmentType): void;
protected onNodeSelected(node: GenModels.DepartmentTreeNode): void;
protected onNodeAccepted(node: GenModels.DepartmentTreeNode): void;
protected onNodeBlur(node: GenModels.DepartmentTreeNode, isSelected: boolean): void;
protected onNodeToggle(node: GenModels.DepartmentTreeNode): void;
protected onInputChange(ev: React.ChangeEvent<any>): void;
protected onInputKeyDown(ev: React.KeyboardEvent<any>): void;
protected attachSearchInput(el: HTMLElement): void;
protected onNodeKeyDown(ev: React.KeyboardEvent<any>, node: GenModels.DepartmentTreeNode, flatIndex: number): void;
protected onContainerKeyDown(ev: React.KeyboardEvent<any>): void;
protected getSearchResultLabel(): string;
private resetSearchMode;
renderSearchResult(nodeName: string, searchText: string, matchedPropertyName: string, matchedPropertyValue: string): JSX.Element;
renderNode: (index: any, key: any) => JSX.Element;
/** @internal */
render(): React.ReactNode;
}