@docsvision/webclient
Version:
Type definitions for DocsVision WebClient scripts and extensions.
204 lines (203 loc) • 14 kB
TypeScript
import { SimpleItemViewContent } from "@docsvision/webclient/BackOffice/SimpleItemViewContent";
import { GenModels } from '@docsvision/webclient/Generated/DocsVision.WebClient.Models';
import { CommonModalDialogHost } from '@docsvision/webclient/Helpers/ModalDialog/CommonModalDialogHost';
import { QuickSearchLogic } from "@docsvision/webclient/Helpers/QuickSearchLogic";
import { DirectorySelectingMode } from '@docsvision/webclient/System/DirectorySelectingMode';
import { IDirectoryChildrenLoadResponse, IDirectoryItem, IDirectorySearchItem, IDirectorySearchResponse } from '@docsvision/webclient/System/DirectoryServerModels';
import { LoadingState } from "@docsvision/webclient/System/LoadingState";
import { RequestHelper } from "@docsvision/webclient/System/RequestHelper";
import React from "react";
import { IDirectorySelectDialog } from '@docsvision/webclient/System/IDirectorySelectDialog';
/** @internal */
export interface IDirectorySelectDialogSearchPathOptions<NodeT> {
path: NodeT[];
notAppendToSelectedFilterPath?: boolean;
}
/** @internal */
export interface IDirectorySelectDialogProps<ValueT extends NodeT | ItemT | NodeT[] | ItemT[], NodeT extends GenModels.IDirectoryItemData, ItemT extends GenModels.IDirectoryItemData> {
valueSelected: (node: ValueT) => void;
searchDelay: number;
onSelect?: () => void;
predefinedFilter: NodeT;
selectedFilterPath: NodeT[];
onSelectedFilterPathChange?: (newPath: NodeT[]) => void;
onSearchFilterPathChange?: (newPath: NodeT[]) => void;
selectingNodesMode: DirectorySelectingMode;
selectedValue: ValueT;
className?: string;
isOpen: boolean;
onCancel: () => void;
/** Существует ли кнопка развертывания */
maximizeButtonEnabled?: boolean;
/** Вызывается при попытке развернуть окно */
onMaximize?: () => void;
/** При смене значения на true модальное окно развернётся, при смене в false - свернётся. */
maximized?: boolean;
services?: any;
dataTestId?: string;
}
/** @internal */
export interface IDirectoryChildrenCacheItem<DataT extends GenModels.IDirectoryItemData> {
items: IDirectoryItem<DataT>[];
totalItemsCount: number;
accessTimestamp: Date;
}
/** @internal */
export interface IDirectoryChildrenCache<DataT extends GenModels.IDirectoryItemData> {
[ ]: IDirectoryChildrenCacheItem<DataT>;
}
/** @internal */
export interface IDirectorySelectedNodesPath<DataT extends GenModels.IDirectoryItemData> {
[ ]: IDirectoryItem<DataT>;
}
/** @internal */
export interface IDirectorySelectDialogState<ValueT extends NodeT | ItemT | NodeT[] | ItemT[], NodeT extends GenModels.IDirectoryItemData, ItemT extends GenModels.IDirectoryItemData> {
/** Выбранный партнёр */
selectedValue: ValueT;
/** Выбранный узел, используется только для навигации с клавиатуры */
selectedNode: NodeT | ItemT;
/** Список выбранных узлов с прошлых уровней, используется только для навигации с клавиатуры */
selectedNodesPath: IDirectorySelectedNodesPath<NodeT | ItemT>;
searchRequestHelper: RequestHelper;
showingSearchResults: boolean;
searchText: string;
searchItems: IDirectorySearchItem<NodeT, NodeT | ItemT>[];
hasMoreSearchItems: boolean;
searchDebouncer: QuickSearchLogic;
selectedNodeFocused: boolean;
loadChildrenHelper: RequestHelper;
childrenListCache: IDirectoryChildrenCache<NodeT | ItemT>;
initialLoading: boolean;
initialLoadingState: LoadingState;
directoryTimestamp: number;
}
/** @internal */
export declare abstract class DirectorySelectDialog<ValueT extends NodeT | ItemT | NodeT[] | ItemT[], NodeT extends GenModels.IDirectoryItemData, ItemT extends GenModels.IDirectoryItemData, PropsT extends IDirectorySelectDialogProps<ValueT, NodeT, ItemT> = IDirectorySelectDialogProps<ValueT, NodeT, ItemT>, StateT extends IDirectorySelectDialogState<ValueT, NodeT, ItemT> = IDirectorySelectDialogState<ValueT, NodeT, ItemT>> extends React.Component<PropsT, StateT> implements IDirectorySelectDialog {
static ChildrenPageSize: number;
static SearchPageSize: number;
protected modalHost: CommonModalDialogHost;
static SimpleItemView:
import("styled-components").StyledComponent<typeof SimpleItemViewContent, any,
import("D:/BuildAgent/work/43698d70d905217f/Bin/Helpers/CustomTree/Theme/Default/CustomTreeNodeContentDefault").ICustomTreeNodeContentDefaultProps, never>;
static SimpleItemViewCompact:
import("styled-components").StyledComponent<typeof SimpleItemViewContent, any,
import("D:/BuildAgent/work/43698d70d905217f/Bin/Helpers/CustomTree/Theme/Default/CustomTreeNodeContentDefault").ICustomTreeNodeContentDefaultProps, never>;
/** @internal */
state: StateT;
searchInput: HTMLInputElement;
protected readonly rootId = "root";
constructor(props: PropsT);
protected abstract itemHasChildren(item: IDirectoryItem<NodeT | ItemT>): boolean;
protected abstract itemIsNode(item: IDirectoryItem<NodeT | ItemT>): boolean;
protected abstract getSearchItemDisplayName(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): string;
protected abstract getSearchItemIconClassName(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): string;
protected abstract getSearchItemTooltip(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): string;
protected abstract getItemDisplayName(item: IDirectoryItem<NodeT | ItemT>): string;
protected abstract getItemIconClassName(item: IDirectoryItem<NodeT | ItemT>): string;
protected abstract getItemTooltip(item: IDirectoryItem<NodeT | ItemT>): string;
protected abstract loadChildrenList(nodeId: string, nodeType: GenModels.DirectoryDataType, from: number, to: number): Promise<IDirectoryChildrenLoadResponse<NodeT | ItemT>>;
protected abstract search(searchText: string, nodeId: string, nodeType: GenModels.DirectoryDataType, maxCount: number, skip: number, reset: boolean): Promise<IDirectorySearchResponse<NodeT, NodeT | ItemT>>;
componentDidMount(): void;
componentWillUnmount(): void;
UNSAFE_componentWillReceiveProps(newProps: IDirectorySelectDialogProps<ValueT, NodeT, ItemT>): void;
cancel(): void;
accept(): void;
protected isItemAllowedToAccept(item: IDirectoryItem<NodeT | ItemT>): boolean;
get selectedValue(): ValueT;
protected loadChildrenListInternal(nodeId: string, nodeType: GenModels.DirectoryDataType, from: number, to: number): Promise<unknown>;
protected searchInternal(searchText: string, nodeId: string, nodeType: GenModels.DirectoryDataType, maxCount: number, skip: number, reset: boolean): Promise<unknown>;
protected onModalKeyDown: (ev: any) => void;
protected onNavigateToFolder(nodeId: string, nodeType: GenModels.DirectoryDataType): Promise<{}>;
protected onSelectedFilterPathChange(newPath: NodeT[]): void;
protected onSelectedFilterMoveBack(): void;
protected get currentNodeId(): string;
protected get currentNodeType(): GenModels.DirectoryDataType;
protected get currentChildren(): IDirectoryItem<NodeT | ItemT>[];
protected get currentChildrenCache(): IDirectoryChildrenCacheItem<NodeT | ItemT>;
protected getNodeCache(id: string): IDirectoryChildrenCacheItem<NodeT | ItemT>;
protected clearCache(): void;
protected onChildrenLoaded(response: IDirectoryChildrenLoadResponse<NodeT | ItemT>, departmentId: string, from: number, to: number): void;
protected onReactListLoadRequest: (indexes: number[]) => void;
protected onSearchResultLoaded(response: IDirectorySearchResponse<NodeT, NodeT | ItemT>, reset: boolean): void;
protected attachSearchInput(elem: HTMLInputElement): void;
protected onInputKeyUp(ev: React.KeyboardEvent<any>): void;
protected onInputChange(event: any): void;
protected onSearchFilterPathChange(newPath: NodeT[]): void;
protected resetSearchMode(): Promise<{}>;
protected get selectingItemsAndNodesMode(): boolean;
protected get selectingOnlyItemsMode(): boolean;
protected get selectingOnlyNodesMode(): boolean;
protected onDialogAccept(): void;
protected onDialogCancel(): void;
protected onSelectValue(item: IDirectoryItem<NodeT | ItemT>, searchPathOptions?: IDirectorySelectDialogSearchPathOptions<NodeT>): void;
protected processSelectValue(item: IDirectoryItem<NodeT | ItemT>, searchPathOptions?: IDirectorySelectDialogSearchPathOptions<NodeT>): void;
protected onChildrenListItemClick(item: IDirectoryItem<NodeT | ItemT>, ev: React.MouseEvent<any>): void;
protected onChildrenListItemFocus(item: IDirectoryItem<NodeT | ItemT>, ev: React.FocusEvent<any>): void;
protected onSearchItemClick(item: IDirectorySearchItem<NodeT, NodeT | ItemT>, ev: React.MouseEvent<any>): void;
protected onSearchItemFocus(item: IDirectorySearchItem<NodeT, NodeT | ItemT>, ev: React.FocusEvent<any>): void;
protected onChildrenListItemKeyDown(item: IDirectoryItem<NodeT | ItemT>, ev: React.KeyboardEvent<unknown>): boolean;
protected onChildrenListItemDoubleClick(item: IDirectoryItem<NodeT | ItemT>, ev: React.MouseEvent<unknown>): boolean;
protected onSearchItemKeyDown(item: IDirectorySearchItem<NodeT, NodeT | ItemT>, ev: React.KeyboardEvent<unknown>): boolean;
protected onSearchItemDoubleClick(item: IDirectorySearchItem<NodeT, NodeT | ItemT>, ev: React.MouseEvent<unknown>): boolean;
protected onChildrenListItemMoveForward(item: IDirectoryItem<NodeT | ItemT>): void;
protected onChildrenListItemGoInto(item: IDirectoryItem<NodeT | ItemT>): void;
protected onSearchItemMoveForward(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): void;
protected onChildrenListItemSelectSibling(mode: 'prev' | 'next', index: number, getCollectionData: () => IDirectoryItem<NodeT | ItemT>[]): void;
protected onSearchPathItemClick(clickedNode: NodeT, searchItem: IDirectorySearchItem<NodeT, NodeT | ItemT>): void;
protected onLoadNextSearchPage(): Promise<unknown>;
protected onLoadNewSearchResults(): Promise<unknown>;
protected isGoToButtonActive(item: IDirectoryItem<NodeT | ItemT>): boolean;
protected getGoToButtonTitle(item: IDirectoryItem<NodeT | ItemT>): string;
protected isGoToButtonVisible(item: IDirectoryItem<NodeT | ItemT>): boolean;
protected renderGoToButton(item: IDirectoryItem<NodeT | ItemT>): JSX.Element;
protected reload(): void;
protected getCurrentNode(): NodeT;
protected stopPropagation: (ev: React.MouseEvent) => void;
protected findSelected(items: IDirectoryItem<ItemT | NodeT>[]): IDirectoryItem<NodeT | ItemT>;
protected isItemSelected(item: IDirectoryItem<ItemT | NodeT>): boolean;
protected onItemListMouseWheel(ev: React.MouseEvent): void;
protected renderSearchItem(index: number, key: string): JSX.Element;
protected renderSearchItemBreadcrumbsRow(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): JSX.Element;
protected renderSearchItemNameRow(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): JSX.Element;
protected renderActionButton: (item: IDirectoryItem<NodeT | ItemT>) => any;
protected renderActionMenu: (item: IDirectoryItem<NodeT | ItemT>) => any;
protected renderSearchItemPath(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): any;
protected renderSearchItemName(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): JSX.Element;
protected getMatchedPropertyNameTranslation(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): string;
protected renderSearchItemMatchedPropertyRow(item: IDirectorySearchItem<NodeT, NodeT | ItemT>): JSX.Element;
protected renderSearchItemContentView(item: IDirectorySearchItem<NodeT, NodeT | ItemT>, index: number): JSX.Element;
protected renderSearchItemContent(item: IDirectorySearchItem<NodeT, NodeT | ItemT>, index: number): JSX.Element;
protected renderItemName(item: IDirectoryItem<NodeT | ItemT>): JSX.Element;
protected renderItemNameRow(item: IDirectoryItem<NodeT | ItemT>): JSX.Element;
protected renderChildrenListItemView(item: IDirectoryItem<NodeT | ItemT>, index: number): JSX.Element;
protected renderChildrenListItem(key: number | string, item: IDirectoryItem<NodeT | ItemT>, index: number): JSX.Element;
protected renderLoadingItem(index: number, key: number | string): JSX.Element;
protected renderEmptyItem(index: number, key: number | string): JSX.Element;
protected renderChildrenInfiniteScrollList(): JSX.Element;
protected renderChildrenListItems(): JSX.Element;
protected renderSearchInfiniteScrollList(): JSX.Element;
protected renderSearchItems(): JSX.Element;
protected renderItems(): JSX.Element;
protected renderDialogBreadcrumbs(): any;
protected renderDialogBreadcrumbsPanel(): JSX.Element;
protected renderSearchModeToggle(): any;
protected getSearchInputClassName(): string;
protected getSearchInputPlaceholder(): string;
protected renderSearchInput(): JSX.Element;
protected renderSearchInputCell(): JSX.Element;
protected renderSearchLoadingIcon(): JSX.Element;
protected renderSearchResetButton(): JSX.Element;
protected renderInitialLoading(): JSX.Element;
protected renderSearchInputRow(): JSX.Element;
/** @internal */
protected renderDialogContent(): React.ReactNode;
protected renderExtraDialogButtons(): any;
protected isDialogSelectButtonEnabled(): boolean;
protected renderDialogSelectButtonName(): string;
protected renderDialogSelectButton(): JSX.Element;
protected renderDialogCancelButton(): JSX.Element;
protected renderDialogExtraButtonsSeparator(): JSX.Element;
protected renderButtonsPanel(): JSX.Element;
protected getDialogHeader(): JSX.Element;
render(): JSX.Element;
}