alm
Version:
The best IDE for TypeScript
357 lines (295 loc) • 10.6 kB
TypeScript
/**
* Golden Layout
*/
declare namespace GoldenLayout {
export type ItemConfigType = ItemConfig | ComponentConfig | ReactComponentConfig;
export interface Settings {
/**
* Turns headers on or off. If false, the layout will be displayed with splitters only.
* Default: true
*/
hasHeaders?: boolean;
/**
* Constrains the area in which items can be dragged to the layout's container. Will be set to false
* automatically when layout.createDragSource() is called.
* Default: true
*/
constrainDragToContainer?: boolean;
/**
* If true, the user can re-arrange the layout by dragging items by their tabs to the desired location.
* Default: true
*/
reorderEnabled?: boolean;
/**
* If true, the user can select items by clicking on their header. This sets the value of layout.selectedItem to
* the clicked item, highlights its header and the layout emits a 'selectionChanged' event.
* Default: false
*/
selectionEnabled?: boolean;
/**
* Decides what will be opened in a new window if the user clicks the popout icon. If true the entire stack will
* be transferred to the new window, if false only the active component will be opened.
* Default: false
*/
popoutWholeStack?: boolean;
/**
* Specifies if an error is thrown when a popout is blocked by the browser (e.g. by opening it programmatically).
* If false, the popout call will fail silently.
* Default: true
*/
blockedPopoutsThrowError?: boolean;
/**
* Specifies if all popouts should be closed when the page that created them is closed. Popouts don't have a
* strong dependency on their parent and can exist on their own, but can be quite annoying to close by hand. In
* addition, any changes made to popouts won't be stored after the parent is closed.
* Default: true
*/
closePopoutsOnUnload?: boolean;
/**
* Specifies if the popout icon should be displayed in the header-bar.
* Default: true
*/
showPopoutIcon?: boolean;
/**
* Specifies if the maximise icon should be displayed in the header-bar.
* Default: true
*/
showMaximiseIcon: boolean;
/**
* Specifies if the close icon should be displayed in the header-bar.
* Default: true
*/
showCloseIcon: boolean;
}
export interface Dimensions {
/**
* The width of the borders between the layout items in pixel. Please note: The actual draggable area is wider
* than the visible one, making it safe to set this to small values without affecting usability.
* Default: 5
*/
borderWidth?: number;
/**
* The minimum height an item can be resized to (in pixel).
* Default: 10
*/
minItemHeight?: number;
/**
* The minimum width an item can be resized to (in pixel).
* Default: 10
*/
minItemWidth?: number;
/**
* The height of the header elements in pixel. This can be changed, but your theme's header css needs to be
* adjusted accordingly.
* Default: 20
*/
headerHeight?: number;
/**
* The width of the element that appears when an item is dragged (in pixel).
* Default: 300
*/
dragProxyWidth?: number;
/**
* The height of the element that appears when an item is dragged (in pixel).
* Default: 200
*/
dragProxyHeight?: number;
}
export interface Labels {
/**
* The tooltip text that appears when hovering over the close icon.
* Default: 'close'
*/
close?: string;
/**
* The tooltip text that appears when hovering over the maximise icon.
* Default: 'maximise'
*/
maximise?: string;
/**
* The tooltip text that appears when hovering over the minimise icon.
* Default: 'minimise'
*/
minimise?: string;
/**
* The tooltip text that appears when hovering over the popout icon.
* Default: 'open in new window'
*/
popout?: string;
}
export interface ItemConfig {
/**
* The type of the item. Possible values are 'row', 'column', 'stack', 'component' and 'react-component'.
*/
type: string;
/**
* An array of configurations for items that will be created as children of this item.
*/
content?: ItemConfigType[];
/**
* The width of this item, relative to the other children of its parent in percent
*/
width?: number;
/**
* The height of this item, relative to the other children of its parent in percent
*/
height?: number;
/**
* A String or an Array of Strings. Used to retrieve the item using item.getItemsById()
*/
id?: string | string[];
/**
* Determines if the item is closable. If false, the x on the items tab will be hidden and container.close()
* will return false
* Default: true
*/
isClosable?: boolean;
/**
* The title of the item as displayed on its tab and on popout windows
* Default: componentName or ''
*/
title?: string;
}
export interface ComponentConfig extends ItemConfig {
/**
* The name of the component as specified in layout.registerComponent. Mandatory if type is 'component'.
*/
componentName: string;
/**
* A serialisable object. Will be passed to the component constructor function and will be the value returned by
* container.getState().
*/
componentState?: any;
}
export interface ReactComponentConfig extends ItemConfig {
/**
* The name of the component as specified in layout.registerComponent. Mandatory if type is 'react-component'
*/
component: string;
/**
* Properties that will be passed to the component and accessible using this.props.
*/
props?: any;
}
export interface Config {
settings?: Settings;
dimensions?: Dimensions;
labels?: Labels;
content: ItemConfigType[];
}
export interface ContentItem {
/**
* This items configuration in its current state
*/
config: ItemConfigType
/**
* The type of the item. Can be row, column, stack, component or root
*/
type: string;
/**
* An array of items that are children of this item
*/
contentItems: ContentItem[];
/**
* The item that is this item's parent (or null if the item is root)
*/
parent: ContentItem;
/**
* A String or array of identifiers if provided in the configuration
*/
id: string;
/**
* True if the item had been initialised
*/
isInitialised: boolean;
/**
* True if the item is maximised
*/
isMaximised: boolean;
/**
* True if the item is the layout's root item
*/
isRoot: boolean;
/**
* True if the item is a row
*/
isRow: boolean;
/**
* True if the item is a column
*/
isColumn: boolean;
/**
* True if the item is a stack
*/
isStack: boolean;
/**
* True if the item is a component
*/
isComponent: boolean;
/**
* A reference to the layoutManager that controls this item
*/
layoutManager: any;
/**
* The item's outer element
*/
element: any;
/**
* The item's inner element. Can be the same as the outer element.
*/
childElementContainer: Container;
/**
* Only Stacks have this method! It's the programmatical equivalent of clicking a tab.
* @param contentItem The new active content item
*/
setActiveContentItem(contentItem: ContentItem): void;
/**
* Returns all items with the specified id.
* @param id An id specified in the itemConfig
*/
getItemsById(id: string | string[]): ContentItem[];
}
export interface Container extends EventEmitter {
/**
* The current width of the container in pixel
*/
width: number;
/**
* The current height of the container in pixel
*/
height: number;
}
export interface BrowserWindow {
}
export interface EventEmitter {
/**
* Subscribe to an event
* @param eventName The name of the event to describe to
* @param callback The function that should be invoked when the event occurs
* @param context The value of the this pointer in the callback function
*/
on(eventName: string, callback: Function, context?: any): void;
/**
* Notify listeners of an event and pass arguments along
* @param eventName The name of the event to emit
*/
emit(eventName: string, arg1?: any, arg2?: any, ...argN: any[]): void;
/**
* Alias for emit
*/
trigger(eventName: string, arg1?: any, arg2?: any, ...argN: any[]): void;
/**
* Unsubscribes either all listeners if just an eventName is provided, just a specific callback if invoked with
* eventName and callback or just a specific callback with a specific context if invoked with all three
* arguments.
* @param eventName The name of the event to unsubscribe from
* @param callback The function that should be invoked when the event occurs
* @param context The value of the this pointer in the callback function
*/
unbind(eventName: string, callback?: Function, context?: any): void;
/**
* Alias for unbind
*/
off(eventName: string, callback?: Function, context?: any): void;
}
}