import { IgcDragService } from '../drag-drop/drag.service'; export declare enum IgcDockManagerPaneType { splitPane = "splitPane", contentPane = "contentPane", tabGroupPane = "tabGroupPane", documentHost = "documentHost" } export declare enum IgcSplitPaneOrientation { horizontal = "horizontal", vertical = "vertical" } export declare enum IgcUnpinnedLocation { top = "top", bottom = "bottom", left = "left", right = "right" } export interface IgcDockManagerPoint { x: number; y: number; } export interface IgcActivePaneEventArgs { /** * Gets the new active pane. */ readonly newPane: IgcContentPane; /** * Gets the old active pane. */ readonly oldPane: IgcContentPane; } export declare enum IgcDockingIndicatorPosition { left = "left", outerLeft = "outerLeft", right = "right", outerRight = "outerRight", top = "top", outerTop = "outerTop", bottom = "bottom", outerBottom = "outerBottom", center = "center" } export interface IgcDockingIndicator { /** * Gets the position of the docking indicator. */ readonly position: IgcDockingIndicatorPosition; /** * Gets a value indicating whether the docking indicator is a root one. */ readonly isRoot: boolean; /** * Gets a value indicating the direction of the docking indicator. */ readonly direction?: string; } export interface IgcPaneHeaderConnectionEventArgs { /** * The pane whose header is being connected/disconnected. */ readonly pane: IgcContentPane; /** * The header element that is being connected/disconnected. */ readonly element: IgcPaneHeaderElement; } export interface IgcTabHeaderConnectionEventArgs { /** * The pane whose tab header is being connected/disconnected. */ readonly pane: IgcContentPane; /** * The tab header element that is being connected/disconnected. */ readonly element: IgcTabHeaderElement; } export interface IgcPaneCloseEventArgs { /** * Get the source pane that triggers the close. */ readonly sourcePane: IgcDockManagerPane; /** * Gets/sets the panes that are about to close. */ panes: IgcContentPane[]; } export interface IgcPanePinnedEventArgs { /** * Gets the source pane that triggers the pinned state change. */ readonly sourcePane: IgcContentPane; /** * Gets/sets the panes that are about to get pinned/unpinned. */ panes: IgcContentPane[]; /** * Gets the new pinned value. */ readonly newValue: boolean; /** * Gets the unpinned location. */ readonly location: IgcUnpinnedLocation; } export interface IgcPaneDragStartEventArgs { /** * Gets the source pane that triggers the drag start. */ readonly sourcePane: IgcSplitPane | IgcContentPane; /** * Gets the panes that are about to get dragged. */ readonly panes: IgcContentPane[]; } export declare enum IgcPaneDragActionType { floatPane = "floatPane", moveFloatingPane = "moveFloatingPane", dockPane = "dockPane", moveTab = "moveTab" } export interface IgcFloatPaneAction { readonly type: IgcPaneDragActionType.floatPane; readonly location: IgcDockManagerPoint; width: number; height: number; } export interface IgcMoveFloatingPaneAction { readonly type: IgcPaneDragActionType.moveFloatingPane; readonly oldLocation: IgcDockManagerPoint; readonly newLocation: IgcDockManagerPoint; } export interface IgcDockPaneAction { readonly type: IgcPaneDragActionType.dockPane; readonly dockingIndicator: IgcDockingIndicator; readonly targetPane: IgcDockManagerPane; } export interface IgcMoveTabAction { readonly type: IgcPaneDragActionType.moveTab; readonly oldIndex: number; readonly newIndex: number; } export declare type IgcPaneDragAction = IgcFloatPaneAction | IgcMoveFloatingPaneAction | IgcDockPaneAction | IgcMoveTabAction; export interface IgcPaneDragOverEventArgs { /** * Gets the source pane that triggers the drag over. */ readonly sourcePane: IgcSplitPane | IgcTabGroupPane | IgcContentPane; /** * Gets the panes that are dragged over. */ readonly panes: IgcContentPane[]; /** * Gets information about the action being performed. */ readonly action: IgcPaneDragAction; /** * Gets/sets whether the action is valid. */ isValid: boolean; } export interface IgcPaneDragEndEventArgs { /** * Gets the source pane that ends dragging. */ readonly sourcePane: IgcSplitPane | IgcTabGroupPane | IgcContentPane; /** * Gets the panes that end dragging. */ readonly panes: IgcContentPane[]; } export interface IgcContentPane { /** * The id of the pane. If not set the Dock Manager generates it automatically. */ id?: string; /** * The type of the pane. */ type: IgcDockManagerPaneType.contentPane; /** * The slot attribute's value of the content element. */ contentId: string; /** * The text header of the content pane. Even if header slot templates are used, the text header is used for aria label. */ header: string; /** * The slot attribute's value of the content pane header element. If not set, the `header` property value is used. */ headerId?: string; /** * The slot attribute's value of the tab header element. If not set, the `header` property value is used. */ tabHeaderId?: string; /** * The slot attribute's value of the unpinned header element. If not set, the `header` property value is used. */ unpinnedHeaderId?: string; /** * The slot attribute's value of the floating header element. If not set, the `headerId` property value is used. */ floatingHeaderId?: string; /** * The size of the pane relative to its sibling panes' sizes. Defaults to 100. */ size?: number; /** * Determines whether the end user is allowed to close the pane. Defaults to true. */ allowClose?: boolean; /** * Determines whether the end user is allowed to maximize the pane. */ allowMaximize?: boolean; /** * Determines whether the end user is allowed to pin/unpin the pane. Defaults to true. */ allowPinning?: boolean; /** * Determines whether the end user is allowed to dock the pane. Defaults to true. */ allowDocking?: boolean; /** * Determines whether the end user is allowed to make the pane floating. Defaults to true. */ allowFloating?: boolean; /** * The absolute size of the pane in an unpinned state. Defaults to 200. */ unpinnedSize?: number; /** * Determines whether a content pane is pinned or not. Defaults to true. */ isPinned?: boolean; /** * The desired unpinned location of the content pane. * * If not set the Dock Manager automatically calculates it based on the location of the pane relatively to the document host. * If more than one document host is presented, the closest one in the pane hierarchy will be used for the calculation. * If there is no document host, the default location is left. */ unpinnedLocation?: IgcUnpinnedLocation; /** * Determines whether a pane is hidden in the UI. Defaults to false. */ hidden?: boolean; /** * Determines whether a pane is disabled. Defaults to false. */ disabled?: boolean; /** * Marks that a content pane can be docked only inside a document host. */ documentOnly?: boolean; } export interface IgcSplitPane { /** * The id of the pane. If not set the Dock Manager generates it automatically. */ id?: string; /** * The type of the pane. */ type: IgcDockManagerPaneType.splitPane; /** * The orientation of the split pane. */ orientation: IgcSplitPaneOrientation; /** * The child panes of the split pane. */ panes: IgcDockManagerPane[]; /** * The size of the pane relative to its sibling panes' sizes. Defaults to 100. */ size?: number; /** * The absolute location point of the pane. Applies only for floating panes. */ floatingLocation?: IgcDockManagerPoint; /** * The absolute width of the pane. Applies only for floating panes. Defaults to 100. */ floatingWidth?: number; /** * The absolute height of the pane. Applies only for floating panes. Defaults to 100. */ floatingHeight?: number; /** * Determines whether floating pane resizing is allowed. Applies only for floating panes. */ floatingResizable?: boolean; /** * Determines whether the pane should present in the UI when empty. */ allowEmpty?: boolean; } export interface IgcTabGroupPane { /** * The id of the pane. If not set the Dock Manager generates it automatically. */ id?: string; /** * The type of the pane. */ type: IgcDockManagerPaneType.tabGroupPane; /** * The child content panes of the tab group. */ panes: IgcContentPane[]; /** * The size of the pane relative to its sibling panes' sizes. Defaults to 100. */ size?: number; /** * The index of the selected tab. */ selectedIndex?: number; /** * Determines whether the pane should present in the UI when empty. */ allowEmpty?: boolean; } export interface IgcDocumentHost { /** * The id of the pane. If not set the Dock Manager generates it automatically. */ id?: string; /** * The type of the pane. */ type: IgcDockManagerPaneType.documentHost; /** * The root split pane of the document host. */ rootPane: IgcSplitPane; /** * The size of the pane relative to its sibling panes' sizes. Defaults to 100. */ size?: number; } export declare type IgcDockManagerPane = IgcContentPane | IgcSplitPane | IgcTabGroupPane | IgcDocumentHost; /** * Describes a Dock Manager layout. */ export interface IgcDockManagerLayout { /** * The root split pane of the layout. */ rootPane: IgcSplitPane; /** * The floating panes of the layout. */ floatingPanes?: IgcSplitPane[]; } export interface IgcDockManagerEventMap extends HTMLElementEventMap { /** * An event raised when a splitter resizing starts. */ 'splitterResizeStart': CustomEvent; /** * An event raised when a splitter resizing ends. */ 'splitterResizeEnd': CustomEvent; /** * An event raised when a pane header element is connected. */ 'paneHeaderConnected': CustomEvent; /** * An event raised when a pane header element is disconnected. */ 'paneHeaderDisconnected': CustomEvent; /** * An event raised when a tab header element is connected. */ 'tabHeaderConnected': CustomEvent; /** * An event raised when a tab header element is disconnected. */ 'tabHeaderDisconnected': CustomEvent; /** * An event raised when panes are about to close. */ 'paneClose': CustomEvent; /** * An event raised when panes are about to get pinned/unpinned. */ 'panePinnedToggle': CustomEvent; /** * An event raised when a pane drag starts. */ 'paneDragStart': CustomEvent; /** * An event raised when a pane is dragged over. */ 'paneDragOver': CustomEvent; /** * An event raised when a pane drag ends. */ 'paneDragEnd': CustomEvent; /** * An event raised when a pane is selected/activated */ 'activePaneChanged': CustomEvent; /** * An event raised when a floating pane resize operation ends. */ 'floatingPaneResizeEnd': CustomEvent; /** * An event raised when a floating pane resizing operation starts. */ 'floatingPaneResizeStart': CustomEvent; /** * An event raised when a floating pane resizing operation is in progress. */ 'floatingPaneResizeMove': CustomEvent; /** * An event raised when the layout changes. */ 'layoutChange': CustomEvent; } /** * Describes a Dock Manager component. */ export declare class IgcDockManagerComponent extends HTMLElement { /** * Gets/sets the layout configuration of the Dock Manager. */ layout: IgcDockManagerLayout; /** * Gets/sets the currently dragged pane. */ draggedPane: IgcContentPane | IgcSplitPane | IgcTabGroupPane; /** * Gets/sets the current drop position when performing custom drag/drop. */ dropPosition: IgcDockManagerPoint; /** * Gets/sets the active pane of the Dock Manager. */ activePane: IgcContentPane; /** * Determines whether the end user is allowed to maximize panes. Defaults to true. */ allowMaximize: boolean; /** * Determines which tab header icons should show when hovering over the tab with the mouse. Defaults to undefined. */ showHeaderIconOnHover: 'closeOnly' | 'moreOptionsOnly' | 'all'; /** * Gets/sets the maximized pane. */ maximizedPane: IgcContentPane | IgcSplitPane | IgcTabGroupPane; /** * Gets/sets the resource strings. */ resourceStrings: IgcDockManagerResourceStrings; /** * Determines whether the end user is allowed to resize floating panes. Defaults to true. */ allowFloatingPanesResize: boolean; /** * Disables the built-in keyboard shortcuts for pane navigation. Defaults to false. */ disableKeyboardNavigation: boolean; /** * Performs drop of the `draggedPane` into the specified `dropPosition`. * Returns true if the pane has been docked otherwise returns false. */ dropPane(): Promise; /** * Removes a pane from the layout. */ removePane(pane: IgcDockManagerPane): Promise; addEventListener(type: K, listener: (this: HTMLElement, ev: IgcDockManagerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: HTMLElement, ev: IgcDockManagerEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } /** * Describes a pane header element. */ export interface IgcPaneHeaderElement extends HTMLElement { /** * Gets/sets the drag service. */ dragService: IgcDragService; } /** * Describes a tab header element. */ export interface IgcTabHeaderElement extends HTMLElement { /** * Gets/sets the drag service. */ dragService: IgcDragService; } /** * Describes dock manager resource strings. */ export interface IgcDockManagerResourceStrings { close?: string; pin?: string; unpin?: string; maximize?: string; minimize?: string; moreOptions?: string; moreTabs?: string; panes?: string; documents?: string; } export declare enum IgcResizerLocation { top = "top", bottom = "bottom", left = "left", right = "right", topLeft = "topLeft", topRight = "topRight", bottomLeft = "bottomLeft", bottomRight = "bottomRight" } export interface IgcSplitterResizeEventArgs { /** * Gets the pane being resized with the splitter. */ readonly pane: IgcDockManagerPane; /** * Gets the pane's orientation. */ readonly orientation: IgcSplitPaneOrientation; /** * Gets the pane's width. */ readonly paneWidth: number; /** * Gets the pane's height. */ readonly paneHeight: number; } export interface IgcFloatingPaneResizeEventArgs { /** * Gets the source pane that triggers the resize operation. */ readonly sourcePane: IgcSplitPane; /** * Gets the edge/corner that is being dragged. */ readonly resizerLocation: IgcResizerLocation; } export interface IgcFloatingPaneResizeMoveEventArgs extends IgcFloatingPaneResizeEventArgs { /** * Gets the pane's width before the resizing operation. */ readonly oldWidth: number; /** * Gets the pane's width after the resizing operation. */ newWidth: number; /** * Gets the pane's height before the resizing operation. */ readonly oldHeight: number; /** * Gets the pane's height after the resizing operation. */ newHeight: number; /** * Gets the pane's floating location before the resizing operation. */ readonly oldLocation: IgcDockManagerPoint; /** * Gets the pane's floating location after the resizing operation. */ newLocation: IgcDockManagerPoint; }