@docsvision/webclient
Version:
Type definitions for DocsVision WebClient scripts and extensions.
187 lines (186 loc) • 13.5 kB
TypeScript
import { BaseControl, BaseControlParams } from "@docsvision/webclient/System/BaseControl";
import { IDataChangedEventArgsEx } from "@docsvision/webclient/System/IDataChangedEventArgs";
import { InputBasedControlState } from "@docsvision/webclient/System/InputBasedControlImpl";
import { $LayoutInfo } from "@docsvision/webclient/System/LayoutServices";
import { IBindingsWriteRequest } from "@docsvision/webclient/System/IBindingsWriteRequest";
import { EditMode } from "@docsvision/webclient/System/EditMode";
import { BasicApiEvent, CancelableApiEvent } from "@docsvision/webclient/System/ApiEvent";
import { ICancelableEventArgs } from "@docsvision/webclient/System/ICancelableEventArgs";
import { IEventArgs } from "@docsvision/webclient/System/IEventArgs";
import { IValidationParams } from "@docsvision/webclient/System/IValidationParams";
import { IValidationResult } from "@docsvision/webclient/System/IValidationResult";
import { $LabelWidth } from '@docsvision/webclient/System/$LabelWidth';
import { Optional } from '@docsvision/web/core/services';
import { EditPopover } from '@docsvision/webclient/Helpers/PopoverHelpers/EditPopover/EditPopover';
import { IKeyboardEventArgs } from "@docsvision/webclient/System/IKeyboardEventArgs";
export declare const EDIT_IN_PLACE_SUFFIX = "_modal_control";
/** Класс параметров для базового класса {@link InputBasedControl}. */
export declare class InputBasedControlParams<ModelT> extends BaseControlParams {
/** Значение элемента управления. @covered */
value?: ModelT;
/**
* Флаг, определяющий возможность изменения значения элемента управления:
* true - разрешено (разрешена настроенная операция редактирования),
* false - не разрешено.
* @covered
*/
canEdit?: boolean;
/**
* Флаг, определяющий, что элемент управления находится в
* модальном окне редактирования значения элемента управления в режиме редактирования.
* {@link EditMode.EditInPlace}
*
* Элемент управления, расположеный в модальном окне редактирования, доступен по названию: `названиеЭУ**_modal_control**`
*/
modalMode?: boolean;
/** Возвращает значение по умолчанию @covered */
default?: any;
/** Возвращает режим редактирования. @partly_covered */
editMode?: EditMode;
/** Флаг сохранения карточки, при введении данных в режиме edit in place. */
savingCardWithEditInPlaceMode?: boolean;
/** Текст всплывающей подсказки */
tip?: string;
/**
* Текст заполнителя.
*
* Заполнитель отображается в элементе управления, когда его (элемента управления) значение не задано.
*/
placeHolder?: string;
/**
* Текст метки.
*
* Метка - текст отображаемый рядом (слева или вверху) с элементом управления.
*/
labelText?: string;
/** Флаг, определяющий, что метка должна отображаться, когда значение элемента управления не задано: true - отображать, false - не отображать. */
showEmptyLabel?: boolean;
/** Флаг, указывающий, обязательно ли должно быть задано значение элемента управления: true - обязательно, false - не обязательно. */
required?: boolean;
/**
* Флаг, определяющий, должно ли переноситься на следующую строку тектовое содержимое, когда оно не помещается в одну строку:
* true - переносить,
* false - не переносить.
*/
wrapLongValueUnderLabel?: boolean;
/** Флаг, определяющий, что модальное окно редактирования значения открыто: true - открыто, false - не открыто. */
isEditDialogShown?: boolean;
/** Флаг, определяющий минимальный текстовый внешний вид элемента управления, подходящий для встраивания в текст. */
simpleView?: boolean;
/** Флаг, определяющий, что в режиме edit in place был совершен клик по тексту. */
clickedLabel?: boolean;
/** Флаг, определяющий, что в режиме edit in place был совершен клик по иконке, расположенной рядом с текстом. */
clickedIcon?: boolean;
displayIcon?: boolean;
/** Событие возникает при изменении значения элемента управления. @covered */
dataChanged?: BasicApiEvent<IDataChangedEventArgsEx<ModelT>>;
/** Событие возникает при открытии модального окна редактирования. @covered */
inPlaceEditOpening?: CancelableApiEvent<IEventArgs>;
/** Событие возникает после открытия модального окна редактирования. @covered */
inPlaceEditOpened?: BasicApiEvent<IEventArgs>;
/** Событие возникает при закрытии диалогового окна редактирования. @covered */
inPlaceEditClosing?: CancelableApiEvent<IEventArgs>;
/** Событие возникает после закрытия диалогового окна редактирования. @covered */
inPlaceEditClosed?: BasicApiEvent<IEventArgs>;
/** Событие возникает при сохранении изменения значения в модальном окна редактирования. */
editPopoverAccepting?: CancelableApiEvent<any>;
/** Событие возникает при нажатии на клавишу клавиатуры в поле для ввода данных */
inputKeyDown?: BasicApiEvent<IKeyboardEventArgs>;
/** @internal Specifies control name, that should be placed into binding. Used in edit-in-place scenario. */
editInPlaceCreatorControlName?: string;
}
/**
* Базовый класс элементов управления, поддерживающих ввод данных.
*
* @param P Класс, наследующийся от {@link InputBasedControlParams} и описывающий публичные свойства компонента.
* @param S Интерфейс, расширяющий {@link InputBasedControlState} и описывающий внутренние переменные инетрфейсного компонента.
*/
export declare abstract class InputBasedControl<ModelT, P extends InputBasedControlParams<ModelT>, S extends InputBasedControlState<ModelT>> extends BaseControl<P, S> {
protected isAccepting: boolean;
constructor(props: P);
/** При переопределении в производных классах должен возвращать объект, содержащий соответствующие сервисы. */
protected abstract getServices(): Optional<$LayoutInfo> & Optional<$LabelWidth>;
/** @internal */
protected set defaultValue(value: ModelT);
private get myControlImpl();
/**
* Проверяет возможность отображения диалогового окна редактирования.
* @returns true - если операция редактирования доступна и элемент управления находится в режиме редактирования "По месту"; иначе - false.
* @covered
*/
canShowEditDialog(): boolean;
/**
* Открывает диалоговое окно редактирования значения.
*
* Внимание, в связи с изменениями в React 16, в Web-клиент начиная с версии 10 данный метод асинхронный.
* @covered
*/
showEditDialog(): Promise<InputBasedControl<ModelT, P, S>>;
/**
* Закрывает диалоговое окно редактирования значения, отменяя правки.
* @covered
*/
hideEditDialog(): Promise<unknown>;
/**
* Закрывает диалоговое окно редактирования значения, применяя правки.
* @covered
*/
acceptEditDialog(): Promise<unknown>;
/**
* Проверяет наличие значения у элемента управления.
* @returns true - если значение элемента управления установлено, иначе - false.
* @covered
*/
hasValue(): boolean;
private get isEditDialogShown();
/** Тоже что и {@link InputBasedControlParams.value} @covered */
get value(): ModelT;
/** @covered */
set value(val: ModelT);
/**
* Для контрола, находящегося в режиме редактирования по месту возвращает основной экземпляр контрола.
*
* При открытии окна редактирования по месту контрол создает свою копию в модальном окне, так что пользователь взаимодейсвует
* именно с ней. При помощи данного свойства имея ссылку на данную копию (например, из свойства sender события) можно обратится к основному
* контролу. Если контрол не редактируется в режиме "по месту", то свойство вернет ссылку на сам контрол.
* @covered
*/
get primaryInstance(): this;
/**
* Для контрола в режиме редактирования по месту возвращает экземпляр контрола, находящегося в модальном окне.
*
* При открытии окна редактирования по месту контрол создает свою копию в модальном окне, так что пользователь взаимодейсвует
* именно с ней. При помощи данного свойства имея ссылку на основной контрол, можно получить ссылку на экземпляр данной копии.
* Если контрол не редактируется в режиме "по месту", то свойство вернет null. Если обратится к данному свойству из экземпляра копии,
* то будет возвращена ссылка на текущий экземпляр.
*/
/** @covered */
get editInPlaceInstance(): this;
/** @covered */
get editPopover(): EditPopover;
/** Запускает валидацию элемента управления. @covered */
validate(params: IValidationParams): IValidationResult[];
/** @internal */
componentDidMount(): void;
private get myGenericControlImpl();
/** @internal */
onEditPopoverAccepting(sender: any, event: ICancelableEventArgs<IEventArgs>): void;
/** @covered */
copyParametersFromEditInPlace(editPopoverControl: InputBasedControl<any, any, any>): void;
/** Вызывается при закрытии edit-in-place окна, для определения - нужно ли сохранять значение на сервере или нет. */
protected shouldSaveEditInPlaceValue(): boolean;
/**
* При переопределении в дочерних классах возвращает объект,
* в котором перечислены параметры, значения которых необходимо
* перенести из edit-in-place окна в основной контрол. В объекте в качестве ключей имена параметров,
* а в качестве значений соответствующие значения из аргумента params.
*/
protected getParamsToKeep(params: P): {
value: ModelT;
};
/**
* Возвращает модель данных, которая будет передана на сервер при сохранении значения контрола.
* Сами данные получаются путем вызова {@link getBindings}. @covered
*/
getBindingsWriteRequests(): IBindingsWriteRequest[];
}