UNPKG

@docsvision/webclient

Version:

Type definitions for DocsVision WebClient scripts and extensions.

102 lines (101 loc) 5.5 kB
import { TableCompositionNames, TableCompositions, TableCompositionTypes } from '@docsvision/web/components/table/interfaces'; import { Event, Store } from 'effector'; import { IComposition } from '@docsvision/web/core/composition'; export interface ICustomContextMenuOption { id: string; name: string; action: (context: TableCompositions.Row | TableCompositions.HeaderRow | TableCompositions.Cell) => void; composition?: string; iconClassName?: string; className?: string; visible?: boolean; order?: number; blockId?: string; /** Операция отключена */ disabled?: boolean; } export interface ICustomContextMenuStateData { isOpened: boolean; className: string; eventTarget: CustomMenuEventTarget; context: CustomMenuCompositions; items: ICustomContextMenuOption[]; } export interface ICustomContextMenuBlock { id: string; order?: number; items?: ICustomContextMenuOption[]; } export interface IParamsItemProvider<TLogic, TView> { logic?: TLogic; view?: TView; } export declare type CustomMenuCompositions = TableCompositions.Row | TableCompositions.HeaderRow | TableCompositions.Cell; export declare type CustomMenuEventTarget = { target: HTMLElement; userSelection?: string; }; export declare type CustomMenuStateData = Store<{ isOpened: boolean; items: ICustomContextMenuOption[]; context: CustomMenuCompositions; className: string; eventTarget: CustomMenuEventTarget; }>; export declare type ContextMenuItemsManagementData<T> = { [TableCompositionNames.TableHeaderRow]?: T; [TableCompositionNames.TableRow]?: T; [TableCompositionNames.TableCell]?: T; }; export declare type ContextMenuItemsManagementDataProvider = ContextMenuItemsManagementData<IDataItemProvider[]>; export declare type ContextMenuItemsManagementDataFilter = ContextMenuItemsManagementData<IDataItemFilter[]>; export declare type ContextMenuComppositionTypes = TableCompositionTypes.Row | TableCompositionTypes.Cell | TableCompositionTypes.HeaderRow; export interface IDataItem { id: string; composition: string; } export interface IDataItemProvider extends IDataItem { getItemsToAdd: (context?: IComposition<ContextMenuComppositionTypes, unknown, unknown>) => ICustomContextMenuOption[]; } export interface IDataItemFilter extends IDataItem { getItemsToHide: (context: IComposition<ContextMenuComppositionTypes, unknown, unknown>) => string[]; } /** Сервис для создания опций кастомного контекстного меню. */ export interface IContextMenuOptionsService { /** Состояние контекстного меню */ $stateData: CustomMenuStateData; /** Устанавлиет значение флага меню открыто/закрыто */ setOpened: Event<boolean>; /** Устанавливает значение конекста, в котором было открыто меню */ setContext: Event<CustomMenuCompositions>; /** Устанавливает значение DOM-элемента, на котором было открыто меню */ setEventTarget: Event<CustomMenuEventTarget>; /** Пользовательский класс контекстного меню */ menuClassName?: string; /** Данные функций-провайдеров контекстного меню в соответсвии с композицией */ readonly $itemProviders: Store<ContextMenuItemsManagementDataProvider>; /** Данные функций-фильтров контекстного меню в соответсвии с композицией */ readonly $itemFilters: Store<ContextMenuItemsManagementDataFilter>; /** Добавляет функцию-провайдер пунктов контекстного меню */ addItemProvider?: (data: IDataItemProvider) => void; /** Удаляет функцию-провайдер пунктов контекстного меню */ deleteItemProvider?: (functionId?: string) => void; /** Добавляет функцию-фильтр пунктов контекстного меню */ addItemFilter?: (data: IDataItemFilter) => void; /** Удаляет функцию-фильтр пунктов контекстного меню */ deleteItemFilter?: (functionId?: string) => void; /** Регистрирует блоки контекстного меню */ registerBlocks?: (blocks: ICustomContextMenuBlock[]) => void; /** Удаляет зарегистрированные блоки контекстного меню */ unregisterBlocks?: (blockIds: string[]) => void; getMenuItems?: (context: IComposition<ContextMenuComppositionTypes, unknown, unknown>) => ICustomContextMenuOption[]; /** Проверка провайдера в заданной композиции */ isAddedProvider?: (id: string, compositionName: string) => boolean; /** Проверка фильтра в заданной композиции */ isAddedFilter?: (id: string, compositionName: string) => boolean; } /** Сервис для создания опций кастомного контекстного меню. */ export declare type $ContextMenuOptions = { contextMenuOptions: IContextMenuOptionsService; }; export declare const $ContextMenuOptions: string | ((model?: $ContextMenuOptions) => IContextMenuOptionsService);