UNPKG

flexlayout-react

Version:

A multi-tab docking layout manager

967 lines (675 loc) 20.8 kB
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; }