UNPKG

@docsvision/webclient

Version:

Type definitions for DocsVision WebClient scripts and extensions.

130 lines (129 loc) 7.39 kB
import { $LayoutFileController } from "@docsvision/webclient/Generated/DocsVision.WebClient.Controllers"; import { GenModels } from "@docsvision/webclient/Generated/DocsVision.WebClient.Models"; import { $CardId, $EditOperationStore, $ExtendedDataSourceInfos, $RowId } from '@docsvision/webclient/System/LayoutServices'; import { RequestHelper } from "@docsvision/webclient/System/RequestHelper"; import { Optional } from '@docsvision/web/core/services'; import React from "react"; /** @internal Свойства для {@link FileComments} */ export interface IFileCommentsProps { /** Идентификатор карточки файла. */ fileCardId: string; /** Идентификатор версии файла */ versionId: string; /** Индентификатор родительского задания или документа. */ ownerCardId?: string; /** Можно ли создать новый комментарий. */ canCreateComment?: () => boolean; /** Можно ли изменить последний комментарий. */ canEditLastComment?: () => boolean; /** Можно ли удалить последний комментарий. */ canDeleteLastComment?: () => boolean; /** Заголовок блока с комментариями. */ title?: string; /** Кнопка закрытия окна комментариев. */ closeButton?: boolean; /** Кнопка отправки комментариев в виде стрелки. */ arrowButton?: boolean; /** Иконка для драга блока комментариев. */ dragIcon?: boolean; /** Своя функция отрисовки. */ customRender?: (component: FileComments) => React.ReactNode; /** Перед добавлением комментария. */ onAdding?: (commentText: string) => Promise<any>; /** После добавления комментария. */ onAdded?: (commentText: string) => void; /** Перед изменением комментария. */ onEditing?: (commentId: string, commentText: string) => Promise<any>; /** После изменения комментария. */ onEdited?: (commentId: string, commentText: string) => void; /** Перед удалением комментария. */ onDeleting?: (commentId: string) => Promise<any>; /** После удаления комментария. */ onDeleted?: (commentId: string) => void; /** По нажатию на кнопку Отмена. */ onCancel?: () => void; /** По нажатию на кнопку закрытия окна комментариев. */ onClose?: () => void; services: $LayoutFileController & $CardId & $EditOperationStore & Optional<$RowId> & Optional<$ExtendedDataSourceInfos>; /** После любого изменения комментариев */ onChanged?: (comments: GenModels.VersionedFileCommentModel[]) => void; } /** @internal */ export interface IFileCommentsState { /** Название файла. */ fileName: string; /** Автор файла. */ fileAuthor: string; /** Дата создания файла. */ fileCreationDate: string; /** Версия файла. */ version: string; /** Timestamp карточки файла. */ timestamp?: number; /** Список комментариев. */ comments: GenModels.VersionedFileCommentModel[]; /** Содержимое поля ввода комментария. */ commentInputText: string; /** Было ли изменено поле комментария после последней отправки. */ isCommentInputDirty: boolean; /** Находилось ли поле комментария в фокусе хотя бы один раз после последнего сохранения/отмены комментария. */ wasCommentInputFocused: boolean; /** Если указан, то в форме с комментарием мы редактируем существующий комментарий. Иначе - создаём новый. */ editCommentId: string; /** Загружаются ли в данный момент данные для предпросмотра файла. */ isLoading: boolean; /** Помощник для загрузки данных о списке комментариев. */ loadingHelper: RequestHelper; deleteRequestHelper: RequestHelper; } export declare class FileComments extends React.Component<IFileCommentsProps, IFileCommentsState> { protected commentsContainer: HTMLElement; protected commentInput: HTMLTextAreaElement; protected commentDialog: HTMLDivElement; private requestServices; constructor(props: IFileCommentsProps); /** @internal */ componentDidMount(): void; componentWillUnmount(): void; /** @internal */ componentDidUpdate(prevProps: any): void; /** Устанавливает новое значение комментария. */ setCommentInputText: (newText: string, options?: { trim?: boolean; notSetDirty?: boolean; }) => void; getFilteredCommentInputText: () => string; /** Загружаются ли комментарии в данный момент */ get isLoading(): boolean; protected availableBuiltIn(id: string): boolean; /** Можно ли создать новый комментарий. */ protected canCreateComment(): boolean; /** Можно ли изменить последний комментарий. */ protected canEditLastComment(): boolean; /** Можно ли удалить последний комментарий. */ protected canDeleteLastComment(): boolean; /** Загрузить список комментариев. */ protected load: () => Promise<GenModels.VersionedFileCommentModel[]>; /** При изменении поля ввода комментария. */ protected onCommentInputChange: (event: React.FormEvent<any>) => void; /** При фокусе поля ввода комментария. */ protected onCommentInputFocus: (event: React.FocusEvent<any>) => void; /** При создании/изменении комментария. */ protected onApplyComment: (event: React.FocusEvent<any>) => void; /** При изменении комментария. */ protected onEditCommentButtonPress: (comment: GenModels.VersionedFileCommentModel) => void; /** Очищает поле для комментария. */ protected clearCommentInput: () => void; /** При удалении комментария. */ protected onDeleteComment: (comment: GenModels.VersionedFileCommentModel) => void; private scrollToCommentInput; private createRequestServices; /** @internal Отрисовка заголовка блока с комментариями. */ renderHeader(): JSX.Element; /** @internal Отрисовка блока с комментариями. */ renderComments(): JSX.Element; /** @internal Отрисовка формы для создания/изменения комментария. */ renderForm(): JSX.Element; /** @internal */ render(): {}; }