import * as ko from 'knockout'; import { DockingLayoutController } from '../../common/docking-layout/_docking-layout-controller'; import { LayoutItem } from '../../common/docking-layout/core/_layout-item'; import { DashboardLocalizationId } from '../../data/localization/_default'; import { DashboardItem } from '../../model'; import { DisposableObject } from '../../model/disposable-object'; import { PropertiesController } from '../properties-controller/_properties-controller'; import { BaseItemSurface } from './surfaces/_base-item-surface'; export declare var DashboardItemMenuSizes: { BindingPanelPanelWidth: (collapsed?: boolean) => 300 | 220 | 600 | 495; OptionsPanelWidth: (content?: boolean) => 300 | 298 | 274; }; export interface IContextPopupMenu { menuItemId: string; icon: string; title?: DashboardLocalizationId; hint?: DashboardLocalizationId; detailVisible: ko.Observable; templateName: string; popoverClass?: string; panelWidth: ko.Observable | number; customData: any; showMenu?: () => void; index?: number; isDisposing?: boolean; } export interface IContextPopupMenuViewModel { menuButton: { icon: string; hint: string; cssClass: ko.PureComputed; clickHandler: () => void; }; menuPropertiesPanel: { title: string; panelContent: { view: string; viewModel: any; }; cssClasses: ko.PureComputed; style: ko.PureComputed<{ width: string; marginLeft: string; }>; detailVisible: ko.Observable; hidePanelAction: () => void; }; getPopoverOptions: any; } export declare const createContextPopupMenuViewModel: (menuItem: IContextPopupMenu, dashboardItemMenu: DashboardItemMenu) => IContextPopupMenuViewModel; export interface IDashboardItemMenu { contextMenuItems: ko.ObservableArray; } export interface IDashboardItemMenuViewModel { menuContainerCssClasses: ko.PureComputed; menuItemDetailVisible: ko.PureComputed; contextMenuItemViewModels: ko.PureComputed; isCollapsedStateToggleVisible: ko.Subscribable; isCollapsed: ko.Subscribable; collapsedStateToggle: () => void; deleteCurrentItemAction: () => void; deleteCurrentItemActionCaption: string; } export declare class DashboardItemMenu extends DisposableObject implements IDashboardItemMenu { layoutController: DockingLayoutController; layoutItem: LayoutItem; private _positionCalculator; propertiesController: PropertiesController; constructor(layoutController: DockingLayoutController, layoutItem: LayoutItem, _positionCalculator: ItemMenuPositionCalculator, propertiesController: PropertiesController, itemSurface: BaseItemSurface); createViewModel(): IDashboardItemMenuViewModel; menuItemClick: (menuItemId: string) => void; selectedItemSurface: BaseItemSurface; contextMenuItems: ko.ObservableArray; contextMenuItemViewModels: ko.PureComputed; menuItemDetailVisible: ko.PureComputed; propertiesPanelStyle: ko.PureComputed<{ width: string; marginLeft: string; }>; verticalPosition: ko.Observable; isLeft: ko.Observable; isCollapsed: ko.Observable; isCollapsedStateToggleVisible: ko.Observable; _recalculatePosition: () => void; _recalculatePositionDebounced: (...args: any[]) => void; hideBindingProperties: () => void; hideBindingPanel: () => void; isSecondaryPanelVisible: ko.Observable; __secondaryPanelVisibleTimeout: number; private _repaintHandlers; subscribeLayoutItemRepaintRequest(handler: any): void; unsubscribeLayoutItemRepaintRequest(handler: any): void; dispose(): void; } export declare const _registerDxDashboardItemMenu: () => void; export declare class ItemMenuPositionCalculator { element: HTMLElement; layoutContainer: HTMLElement; private _isValidElement; constructor(element: HTMLElement); calculateIsLeft(): boolean; calculateVPosition(): ItemMenuPosition; calculateIsLeftAndInside(): boolean; } export type ItemMenuPosition = 'center' | 'top' | 'bottom';