flexlayout-react
Version:
A multi-tab docking layout manager
967 lines (675 loc) • 20.8 kB
text/typescript
import { ICloseType } from "./ICloseType";
export type IBorderLocation = "top" | "bottom" | "left" | "right";
export type ITabLocation = "top" | "bottom";
export interface IJsonModel {
global?: IGlobalAttributes;
borders?: IJsonBorderNode[];
layout: IJsonRowNode; // top level 'row' is horizontal, rows inside rows take opposite orientation to parent row (ie can act as columns)
popouts?: Record<string, IJsonPopout>;
}
export interface IJsonRect {
x: number;
y: number;
width: number;
height: number;
}
export interface IJsonPopout {
layout: IJsonRowNode;
rect: IJsonRect ;
}
export interface IJsonBorderNode extends IBorderAttributes {
location: IBorderLocation;
children: IJsonTabNode[];
}
export interface IJsonRowNode extends IRowAttributes {
children: (IJsonRowNode | IJsonTabSetNode)[];
}
export interface IJsonTabSetNode extends ITabSetAttributes {
/** Marks this as the active tab set, read from initial json but
* must subseqently be set on the model (only one tab set can be active)*/
active?: boolean;
/** Marks this tab set as being maximized, read from initial json but
* must subseqently be set on the model (only one tab set can be maximized) */
maximized?: boolean;
children: IJsonTabNode[];
}
export interface IJsonTabNode extends ITabAttributes {
}
//----------------------------------------------------------------------------------------------------------
// below this line is autogenerated from attributes in code via Model static method toTypescriptInterfaces()
//----------------------------------------------------------------------------------------------------------
export interface IGlobalAttributes {
/**
Value for BorderNode attribute autoSelectTabWhenClosed if not overridden
whether to select new/moved tabs in border when the border is currently closed
Default: false
*/
borderAutoSelectTabWhenClosed?: boolean;
/**
Value for BorderNode attribute autoSelectTabWhenOpen if not overridden
whether to select new/moved tabs in border when the border is already open
Default: true
*/
borderAutoSelectTabWhenOpen?: boolean;
/**
Value for BorderNode attribute className if not overridden
class applied to tab button
Default: undefined
*/
borderClassName?: string;
/**
Value for BorderNode attribute enableAutoHide if not overridden
hide border if it has zero tabs
Default: false
*/
borderEnableAutoHide?: boolean;
/**
Value for BorderNode attribute enableDrop if not overridden
whether tabs can be dropped into this border
Default: true
*/
borderEnableDrop?: boolean;
/**
Value for BorderNode attribute enableTabScrollbar if not overridden
whether to show a mini scrollbar for the tabs
Default: false
*/
borderEnableTabScrollbar?: boolean;
/**
Value for BorderNode attribute maxSize if not overridden
the maximum size of the tab area
Default: 99999
*/
borderMaxSize?: number;
/**
Value for BorderNode attribute minSize if not overridden
the minimum size of the tab area
Default: 0
*/
borderMinSize?: number;
/**
Value for BorderNode attribute size if not overridden
size of the tab area when selected
Default: 200
*/
borderSize?: number;
/**
enable docking to the edges of the layout, this will show the edge indicators
Default: true
*/
enableEdgeDock?: boolean;
/**
boolean indicating if tab icons should rotate with the text in the left and right borders
Default: true
*/
enableRotateBorderIcons?: boolean;
/**
the top level 'row' will layout horizontally by default, set this option true to make it layout vertically
Default: false
*/
rootOrientationVertical?: boolean;
/**
enable a small centralized handle on all splitters
Default: false
*/
splitterEnableHandle?: boolean;
/**
additional width in pixels of the splitter hit test area
Default: 0
*/
splitterExtra?: number;
/**
width in pixels of all splitters between tabsets/borders
Default: 8
*/
splitterSize?: number;
/**
Value for TabNode attribute borderHeight if not overridden
height when added to border, -1 will use border size
Default: -1
*/
tabBorderHeight?: number;
/**
Value for TabNode attribute borderWidth if not overridden
width when added to border, -1 will use border size
Default: -1
*/
tabBorderWidth?: number;
/**
Value for TabNode attribute className if not overridden
class applied to tab button
Default: undefined
*/
tabClassName?: string;
/**
Value for TabNode attribute closeType if not overridden
see values in ICloseType
Default: 1
*/
tabCloseType?: ICloseType;
/**
Value for TabNode attribute contentClassName if not overridden
class applied to tab content
Default: undefined
*/
tabContentClassName?: string;
/**
Default: 0.3
*/
tabDragSpeed?: number;
/**
Value for TabNode attribute enableClose if not overridden
allow user to close tab via close button
Default: true
*/
tabEnableClose?: boolean;
/**
Value for TabNode attribute enableDrag if not overridden
allow user to drag tab to new location
Default: true
*/
tabEnableDrag?: boolean;
/**
Value for TabNode attribute enablePopout if not overridden
enable popout (in popout capable browser)
Default: false
*/
tabEnablePopout?: boolean;
/**
Value for TabNode attribute enablePopoutIcon if not overridden
whether to show the popout icon in the tabset header if this tab enables popouts
Default: true
*/
tabEnablePopoutIcon?: boolean;
/**
Value for TabNode attribute enablePopoutOverlay if not overridden
if this tab will not work correctly in a popout window when the main window is backgrounded (inactive)
then enabling this option will gray out this tab
Default: false
*/
tabEnablePopoutOverlay?: boolean;
/**
Value for TabNode attribute enableRename if not overridden
allow user to rename tabs by double clicking
Default: true
*/
tabEnableRename?: boolean;
/**
Value for TabNode attribute enableRenderOnDemand if not overridden
whether to avoid rendering component until tab is visible
Default: true
*/
tabEnableRenderOnDemand?: boolean;
/**
Value for TabNode attribute icon if not overridden
the tab icon
Default: undefined
*/
tabIcon?: string;
/**
Value for TabNode attribute maxHeight if not overridden
the max height of this tab
Default: 99999
*/
tabMaxHeight?: number;
/**
Value for TabNode attribute maxWidth if not overridden
the max width of this tab
Default: 99999
*/
tabMaxWidth?: number;
/**
Value for TabNode attribute minHeight if not overridden
the min height of this tab
Default: 0
*/
tabMinHeight?: number;
/**
Value for TabNode attribute minWidth if not overridden
the min width of this tab
Default: 0
*/
tabMinWidth?: number;
/**
Value for TabSetNode attribute autoSelectTab if not overridden
whether to select new/moved tabs in tabset
Default: true
*/
tabSetAutoSelectTab?: boolean;
/**
Value for TabSetNode attribute classNameTabStrip if not overridden
a class name to apply to the tab strip
Default: undefined
*/
tabSetClassNameTabStrip?: string;
/**
Value for TabSetNode attribute enableActiveIcon if not overridden
whether the active icon (*) should be displayed when the tabset is active
Default: false
*/
tabSetEnableActiveIcon?: boolean;
/**
Value for TabSetNode attribute enableClose if not overridden
allow user to close tabset via a close button
Default: false
*/
tabSetEnableClose?: boolean;
/**
Value for TabSetNode attribute enableDeleteWhenEmpty if not overridden
whether to delete this tabset when is has no tabs
Default: true
*/
tabSetEnableDeleteWhenEmpty?: boolean;
/**
Value for TabSetNode attribute enableDivide if not overridden
allow user to drag tabs to region of this tabset, splitting into new tabset
Default: true
*/
tabSetEnableDivide?: boolean;
/**
Value for TabSetNode attribute enableDrag if not overridden
allow user to drag tabs out this tabset
Default: true
*/
tabSetEnableDrag?: boolean;
/**
Value for TabSetNode attribute enableDrop if not overridden
allow user to drag tabs into this tabset
Default: true
*/
tabSetEnableDrop?: boolean;
/**
Value for TabSetNode attribute enableMaximize if not overridden
allow user to maximize tabset to fill view via maximize button
Default: true
*/
tabSetEnableMaximize?: boolean;
/**
Value for TabSetNode attribute enableSingleTabStretch if not overridden
if the tabset has only a single tab then stretch the single tab to fill area and display in a header style
Default: false
*/
tabSetEnableSingleTabStretch?: boolean;
/**
Value for TabSetNode attribute enableTabScrollbar if not overridden
whether to show a mini scrollbar for the tabs
Default: false
*/
tabSetEnableTabScrollbar?: boolean;
/**
Value for TabSetNode attribute enableTabStrip if not overridden
enable tab strip and allow multiple tabs in this tabset
Default: true
*/
tabSetEnableTabStrip?: boolean;
/**
Value for TabSetNode attribute enableTabWrap if not overridden
wrap tabs onto multiple lines
Default: false
*/
tabSetEnableTabWrap?: boolean;
/**
Value for TabSetNode attribute maxHeight if not overridden
maximum height (in px) for this tabset
Default: 99999
*/
tabSetMaxHeight?: number;
/**
Value for TabSetNode attribute maxWidth if not overridden
maximum width (in px) for this tabset
Default: 99999
*/
tabSetMaxWidth?: number;
/**
Value for TabSetNode attribute minHeight if not overridden
minimum height (in px) for this tabset
Default: 0
*/
tabSetMinHeight?: number;
/**
Value for TabSetNode attribute minWidth if not overridden
minimum width (in px) for this tabset
Default: 0
*/
tabSetMinWidth?: number;
/**
Value for TabSetNode attribute tabLocation if not overridden
the location of the tabs either top or bottom
Default: "top"
*/
tabSetTabLocation?: ITabLocation;
}
export interface IRowAttributes {
/**
the unique id of the row, if left undefined a uuid will be assigned
Default: undefined
*/
id?: string;
/**
Fixed value: "row"
*/
type?: string;
/**
relative weight for sizing of this row in parent row
Default: 100
*/
weight?: number;
}
export interface ITabSetAttributes {
/**
whether to select new/moved tabs in tabset
Default: inherited from Global attribute tabSetAutoSelectTab (default true)
*/
autoSelectTab?: boolean;
/**
a class name to apply to the tab strip
Default: inherited from Global attribute tabSetClassNameTabStrip (default undefined)
*/
classNameTabStrip?: string;
/**
a place to hold json config used in your own code
Default: undefined
*/
config?: any;
/**
whether the active icon (*) should be displayed when the tabset is active
Default: inherited from Global attribute tabSetEnableActiveIcon (default false)
*/
enableActiveIcon?: boolean;
/**
allow user to close tabset via a close button
Default: inherited from Global attribute tabSetEnableClose (default false)
*/
enableClose?: boolean;
/**
whether to delete this tabset when is has no tabs
Default: inherited from Global attribute tabSetEnableDeleteWhenEmpty (default true)
*/
enableDeleteWhenEmpty?: boolean;
/**
allow user to drag tabs to region of this tabset, splitting into new tabset
Default: inherited from Global attribute tabSetEnableDivide (default true)
*/
enableDivide?: boolean;
/**
allow user to drag tabs out this tabset
Default: inherited from Global attribute tabSetEnableDrag (default true)
*/
enableDrag?: boolean;
/**
allow user to drag tabs into this tabset
Default: inherited from Global attribute tabSetEnableDrop (default true)
*/
enableDrop?: boolean;
/**
allow user to maximize tabset to fill view via maximize button
Default: inherited from Global attribute tabSetEnableMaximize (default true)
*/
enableMaximize?: boolean;
/**
if the tabset has only a single tab then stretch the single tab to fill area and display in a header style
Default: inherited from Global attribute tabSetEnableSingleTabStretch (default false)
*/
enableSingleTabStretch?: boolean;
/**
whether to show a mini scrollbar for the tabs
Default: inherited from Global attribute tabSetEnableTabScrollbar (default false)
*/
enableTabScrollbar?: boolean;
/**
enable tab strip and allow multiple tabs in this tabset
Default: inherited from Global attribute tabSetEnableTabStrip (default true)
*/
enableTabStrip?: boolean;
/**
wrap tabs onto multiple lines
Default: inherited from Global attribute tabSetEnableTabWrap (default false)
*/
enableTabWrap?: boolean;
/**
the unique id of the tab set, if left undefined a uuid will be assigned
Default: undefined
*/
id?: string;
/**
maximum height (in px) for this tabset
Default: inherited from Global attribute tabSetMaxHeight (default 99999)
*/
maxHeight?: number;
/**
maximum width (in px) for this tabset
Default: inherited from Global attribute tabSetMaxWidth (default 99999)
*/
maxWidth?: number;
/**
minimum height (in px) for this tabset
Default: inherited from Global attribute tabSetMinHeight (default 0)
*/
minHeight?: number;
/**
minimum width (in px) for this tabset
Default: inherited from Global attribute tabSetMinWidth (default 0)
*/
minWidth?: number;
/**
Default: undefined
*/
name?: string;
/**
index of selected/visible tab in tabset
Default: 0
*/
selected?: number;
/**
the location of the tabs either top or bottom
Default: inherited from Global attribute tabSetTabLocation (default "top")
*/
tabLocation?: ITabLocation;
/**
Fixed value: "tabset"
*/
type?: string;
/**
relative weight for sizing of this tabset in parent row
Default: 100
*/
weight?: number;
}
export interface ITabAttributes {
/**
if there is no name specifed then this value will be used in the overflow menu
Default: undefined
*/
altName?: string;
/**
height when added to border, -1 will use border size
Default: inherited from Global attribute tabBorderHeight (default -1)
*/
borderHeight?: number;
/**
width when added to border, -1 will use border size
Default: inherited from Global attribute tabBorderWidth (default -1)
*/
borderWidth?: number;
/**
class applied to tab button
Default: inherited from Global attribute tabClassName (default undefined)
*/
className?: string;
/**
see values in ICloseType
Default: inherited from Global attribute tabCloseType (default 1)
*/
closeType?: ICloseType;
/**
string identifying which component to run (for factory)
Default: undefined
*/
component?: string;
/**
a place to hold json config for the hosted component
Default: undefined
*/
config?: any;
/**
class applied to tab content
Default: inherited from Global attribute tabContentClassName (default undefined)
*/
contentClassName?: string;
/**
allow user to close tab via close button
Default: inherited from Global attribute tabEnableClose (default true)
*/
enableClose?: boolean;
/**
allow user to drag tab to new location
Default: inherited from Global attribute tabEnableDrag (default true)
*/
enableDrag?: boolean;
/**
enable popout (in popout capable browser)
Default: inherited from Global attribute tabEnablePopout (default false)
*/
enablePopout?: boolean;
/**
whether to show the popout icon in the tabset header if this tab enables popouts
Default: inherited from Global attribute tabEnablePopoutIcon (default true)
*/
enablePopoutIcon?: boolean;
/**
if this tab will not work correctly in a popout window when the main window is backgrounded (inactive)
then enabling this option will gray out this tab
Default: inherited from Global attribute tabEnablePopoutOverlay (default false)
*/
enablePopoutOverlay?: boolean;
/**
allow user to rename tabs by double clicking
Default: inherited from Global attribute tabEnableRename (default true)
*/
enableRename?: boolean;
/**
whether to avoid rendering component until tab is visible
Default: inherited from Global attribute tabEnableRenderOnDemand (default true)
*/
enableRenderOnDemand?: boolean;
/**
if enabled the tab will re-mount when popped out/in
Default: false
*/
enableWindowReMount?: boolean;
/**
An optional help text for the tab to be displayed upon tab hover.
Default: undefined
*/
helpText?: string;
/**
the tab icon
Default: inherited from Global attribute tabIcon (default undefined)
*/
icon?: string;
/**
the unique id of the tab, if left undefined a uuid will be assigned
Default: undefined
*/
id?: string;
/**
the max height of this tab
Default: inherited from Global attribute tabMaxHeight (default 99999)
*/
maxHeight?: number;
/**
the max width of this tab
Default: inherited from Global attribute tabMaxWidth (default 99999)
*/
maxWidth?: number;
/**
the min height of this tab
Default: inherited from Global attribute tabMinHeight (default 0)
*/
minHeight?: number;
/**
the min width of this tab
Default: inherited from Global attribute tabMinWidth (default 0)
*/
minWidth?: number;
/**
name of tab to be displayed in the tab button
Default: "[Unnamed Tab]"
*/
name?: string;
/**
class applied to parent tabset when this is the only tab and it is stretched to fill the tabset
Default: undefined
*/
tabsetClassName?: string;
/**
Fixed value: "tab"
*/
type?: string;
}
export interface IBorderAttributes {
/**
whether to select new/moved tabs in border when the border is currently closed
Default: inherited from Global attribute borderAutoSelectTabWhenClosed (default false)
*/
autoSelectTabWhenClosed?: boolean;
/**
whether to select new/moved tabs in border when the border is already open
Default: inherited from Global attribute borderAutoSelectTabWhenOpen (default true)
*/
autoSelectTabWhenOpen?: boolean;
/**
class applied to tab button
Default: inherited from Global attribute borderClassName (default undefined)
*/
className?: string;
/**
a place to hold json config used in your own code
Default: undefined
*/
config?: any;
/**
hide border if it has zero tabs
Default: inherited from Global attribute borderEnableAutoHide (default false)
*/
enableAutoHide?: boolean;
/**
whether tabs can be dropped into this border
Default: inherited from Global attribute borderEnableDrop (default true)
*/
enableDrop?: boolean;
/**
whether to show a mini scrollbar for the tabs
Default: inherited from Global attribute borderEnableTabScrollbar (default false)
*/
enableTabScrollbar?: boolean;
/**
the maximum size of the tab area
Default: inherited from Global attribute borderMaxSize (default 99999)
*/
maxSize?: number;
/**
the minimum size of the tab area
Default: inherited from Global attribute borderMinSize (default 0)
*/
minSize?: number;
/**
index of selected/visible tab in border; -1 means no tab selected
Default: -1
*/
selected?: number;
/**
show/hide this border
Default: true
*/
show?: boolean;
/**
size of the tab area when selected
Default: inherited from Global attribute borderSize (default 200)
*/
size?: number;
/**
Fixed value: "border"
*/
type?: string;
}