@docsvision/webclient
Version:
Type definitions for DocsVision WebClient scripts and extensions.
89 lines (88 loc) • 5.41 kB
TypeScript
/// <reference types="react" />
import { $LayoutController } from "@docsvision/webclient/Generated/DocsVision.WebClient.Controllers";
import { GenModels } from "@docsvision/webclient/Generated/DocsVision.WebClient.Models";
import { BaseControl, BaseControlParams, BaseControlState } from "@docsvision/webclient/System/BaseControl";
import { ControlImpl } from "@docsvision/webclient/System/ControlImpl";
import { LoadingState } from "@docsvision/webclient/System/LoadingState";
import { RequestHelper } from "@docsvision/webclient/System/RequestHelper";
import { Optional } from "@docsvision/web/core/services";
import { $LayoutManager } from "@docsvision/webclient/System/$LayoutManager";
import { $Layout, ILayout } from "@docsvision/webclient/System/$Layout";
import { $CurrentLocation } from '@docsvision/webclient/System/LayoutServices';
import { CancelableEvent } from '@docsvision/webclient/System/CancelableEvent';
import { IEventArgs } from '@docsvision/webclient/System/IEventArgs';
import { SimpleEvent } from '@docsvision/webclient/System/SimpleEvent';
import { LocationSourceMode } from '@docsvision/webclient/Helpers/LocationContainer/LocationSourceMode';
import { $DeviceType } from "@docsvision/webclient/StandardServices";
export declare type $LocationContainerControlServices = Optional<$LayoutController> & $LayoutManager & Optional<$CurrentLocation> & Optional<$Layout> & $DeviceType;
/**
* Содержит публичные свойства элемента управления [LayoutPosition]{@link LayoutPosition}.
*/
export declare class LocationContainerControlParams extends BaseControlParams {
/** Стандартный CSS класс со стилями элемента управления */
standardCssClass?: string;
/** Имя загружаемой разметки. */
locationName?: string;
/** Идентификатор режима загружаемой разметки. */
layoutMode?: string;
/** Если значение true, то контролы разметки полностью интегрируются в родительскую разметку. */
ownerLayoutPart?: boolean;
/**
* Если значени true, запрос разметки будет асинхронным после монтирования контрола в соответствии со параметром {@link locationName}.
* Иначе параметр {@link layoutModel} должен содержать загруженную модель разметки. По умолчанию false.
*/
async: boolean;
/** Сервер возвращает пустую разметку, не выдавая никаких ошибок в случае, если разметка с запрошенными условиями не будет обнаружена */
useEmptyLayoutAsDefault?: boolean;
/** Json объект с перечнем параметров layoutParams, которые будут переданы при получении разметки */
params?: string;
/** Функция выполняющая собственную логику загрузки разметки. */
customLayoutLoader?: (sender: LocationContainerControl) => Promise<GenModels.LayoutViewModel>;
/** Загруженная модель разметки. Если значение параметра задано, то загрузка разметки не производится. */
layoutModel?: GenModels.LayoutViewModel;
/** Экземпляр разметки, отображенной на странице. */
mountedLayout?: ILayout;
renderLoadingState?: (state: LoadingState) => JSX.Element;
showLoaderDelay?: number;
reportLoadingError?: (err: any) => void;
locationSource?: LocationSourceMode;
layoutLoaded?: SimpleEvent<IEventArgs>;
layoutLoading?: CancelableEvent<IEventArgs>;
layoutUnloading?: SimpleEvent<IEventArgs>;
services?: $LocationContainerControlServices;
}
/** @internal */
export interface LocationContainerControlState extends BaseControlState, LocationContainerControlParams {
loadingHelper: RequestHelper;
customLayoutLoaderName: string;
currentCardId: string;
}
/**
* Класс элемента управления, служащего для загрузки и отображения разметки.
*/
export declare class LocationContainerControl extends BaseControl<LocationContainerControlParams, LocationContainerControlState> {
private root;
private isControlEmpty;
private destroying;
protected construct(): void;
componentWillUnmount(): void;
dispose(): Promise<void>;
private set customLayoutLoader(value);
private set setBinding(value);
private getCustomLayoutLoader;
protected createParams(): LocationContainerControlParams;
addCssClass: () => "" | " location-container-empty control-empty";
isContent: () => boolean;
protected createImpl(): ControlImpl;
/** @internal */
init(): void;
/** @internal */
protected initInternal(isReload?: boolean): Promise<unknown>;
reloadLayout(): Promise<void>;
/** @internal */
protected loadLayout(): Promise<GenModels.LayoutViewModel>;
/** @internal */
protected attachRoot(elem: HTMLElement): void;
/** @internal */
renderControl(): JSX.Element;
}