flexlayout-react 0.7.15 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ChangeLog.txt +28 -0
- package/README.md +157 -330
- package/Screenshot_light.png +0 -0
- package/Screenshot_rounded.png +0 -0
- package/declarations/Attribute.d.ts +1 -1
- package/declarations/AttributeDefinitions.d.ts +1 -1
- package/declarations/DockLocation.d.ts +12 -12
- package/declarations/DropInfo.d.ts +12 -12
- package/declarations/I18nLabel.d.ts +12 -14
- package/declarations/Orientation.d.ts +7 -7
- package/declarations/PopupMenu.d.ts +1 -1
- package/declarations/Rect.d.ts +41 -28
- package/declarations/Types.d.ts +95 -79
- package/declarations/examples/demo/Utils.d.ts +4 -0
- package/declarations/index.d.ts +21 -22
- package/declarations/model/Action.d.ts +5 -5
- package/declarations/model/Actions.d.ts +127 -110
- package/declarations/model/BorderNode.d.ts +30 -34
- package/declarations/model/BorderSet.d.ts +3 -4
- package/declarations/model/ICloseType.d.ts +5 -5
- package/declarations/model/IDraggable.d.ts +2 -2
- package/declarations/model/IDropTarget.d.ts +2 -2
- package/declarations/model/IJsonModel.d.ts +811 -149
- package/declarations/model/LayoutWindow.d.ts +28 -0
- package/declarations/model/Model.d.ts +91 -86
- package/declarations/model/Node.d.ts +17 -17
- package/declarations/model/RowNode.d.ts +10 -11
- package/declarations/model/TabNode.d.ts +44 -37
- package/declarations/model/TabSetNode.d.ts +44 -41
- package/declarations/model/Utils.d.ts +1 -1
- package/declarations/model/WindowLayout.d.ts +24 -0
- package/declarations/src/Attribute.d.ts +1 -0
- package/declarations/src/AttributeDefinitions.d.ts +1 -0
- package/declarations/src/DockLocation.d.ts +12 -0
- package/declarations/src/DropInfo.d.ts +12 -0
- package/declarations/src/I18nLabel.d.ts +10 -0
- package/declarations/src/Orientation.d.ts +7 -0
- package/declarations/src/PopupMenu.d.ts +1 -0
- package/declarations/src/Rect.d.ts +31 -0
- package/declarations/src/Types.d.ts +92 -0
- package/declarations/src/index.d.ts +20 -0
- package/declarations/src/model/Action.d.ts +5 -0
- package/declarations/src/model/Actions.d.ts +110 -0
- package/declarations/src/model/BorderNode.d.ts +28 -0
- package/declarations/src/model/BorderSet.d.ts +3 -0
- package/declarations/src/model/ICloseType.d.ts +5 -0
- package/declarations/src/model/IDraggable.d.ts +2 -0
- package/declarations/src/model/IDropTarget.d.ts +2 -0
- package/declarations/src/model/IJsonModel.d.ts +153 -0
- package/declarations/src/model/Model.d.ts +98 -0
- package/declarations/src/model/Node.d.ts +16 -0
- package/declarations/src/model/RowNode.d.ts +11 -0
- package/declarations/src/model/TabNode.d.ts +36 -0
- package/declarations/src/model/TabSetNode.d.ts +37 -0
- package/declarations/src/model/Utils.d.ts +1 -0
- package/declarations/src/view/BorderButton.d.ts +1 -0
- package/declarations/src/view/BorderTab.d.ts +2 -0
- package/declarations/src/view/BorderTabSet.d.ts +1 -0
- package/declarations/src/view/DragContainer.d.ts +1 -0
- package/declarations/src/view/ErrorBoundary.d.ts +1 -0
- package/declarations/src/view/FloatingWindow.d.ts +1 -0
- package/declarations/src/view/Icons.d.ts +7 -0
- package/declarations/src/view/Layout.d.ts +113 -0
- package/declarations/src/view/Overlay.d.ts +1 -0
- package/declarations/src/view/PopupMenu.d.ts +1 -0
- package/declarations/src/view/Row.d.ts +1 -0
- package/declarations/src/view/Splitter.d.ts +1 -0
- package/declarations/src/view/Tab.d.ts +1 -0
- package/declarations/src/view/TabButton.d.ts +1 -0
- package/declarations/src/view/TabButtonStamp.d.ts +1 -0
- package/declarations/src/view/TabOverflowHook.d.ts +1 -0
- package/declarations/src/view/TabSet.d.ts +1 -0
- package/declarations/src/view/Utils.d.ts +4 -0
- package/declarations/view/BorderButton.d.ts +1 -1
- package/declarations/view/BorderTab.d.ts +2 -0
- package/declarations/view/BorderTabSet.d.ts +1 -1
- package/declarations/view/DragContainer.d.ts +1 -0
- package/declarations/view/ErrorBoundary.d.ts +1 -1
- package/declarations/view/ExtendedResizeObserver.d.ts +23 -0
- package/declarations/view/FloatingWindow.d.ts +1 -1
- package/declarations/view/Icons.d.ts +8 -7
- package/declarations/view/Layout.d.ts +140 -161
- package/declarations/view/Overlay.d.ts +1 -0
- package/declarations/view/PopoutWindow.d.ts +1 -0
- package/declarations/view/PopupMenu.d.ts +1 -0
- package/declarations/view/Row.d.ts +1 -0
- package/declarations/view/SizeTracker.d.ts +10 -0
- package/declarations/view/Splitter.d.ts +1 -1
- package/declarations/view/Tab.d.ts +1 -1
- package/declarations/view/TabButton.d.ts +1 -1
- package/declarations/view/TabButtonStamp.d.ts +1 -1
- package/declarations/view/TabOverflowHook.d.ts +1 -1
- package/declarations/view/TabSet.d.ts +1 -1
- package/declarations/view/Utils.d.ts +11 -1
- package/dist/bundles/demo.js +232052 -0
- package/dist/bundles/demo.js.map +1 -0
- package/dist/flexlayout.js +122 -92
- package/dist/flexlayout_min.js +1 -1
- package/lib/Attribute.js +42 -31
- package/lib/Attribute.js.map +1 -1
- package/lib/AttributeDefinitions.js +131 -108
- package/lib/AttributeDefinitions.js.map +1 -1
- package/lib/DockLocation.js +120 -124
- package/lib/DockLocation.js.map +1 -1
- package/lib/DropInfo.js +9 -13
- package/lib/DropInfo.js.map +1 -1
- package/lib/I18nLabel.js +13 -18
- package/lib/I18nLabel.js.map +1 -1
- package/lib/Orientation.js +22 -26
- package/lib/Orientation.js.map +1 -1
- package/lib/Rect.js +104 -72
- package/lib/Rect.js.map +1 -1
- package/lib/Types.js +96 -83
- package/lib/Types.js.map +1 -1
- package/lib/index.js +21 -38
- package/lib/index.js.map +1 -1
- package/lib/model/Action.js +6 -10
- package/lib/model/Action.js.map +1 -1
- package/lib/model/Actions.js +169 -155
- package/lib/model/Actions.js.map +1 -1
- package/lib/model/BorderNode.js +385 -406
- package/lib/model/BorderNode.js.map +1 -1
- package/lib/model/BorderSet.js +66 -121
- package/lib/model/BorderSet.js.map +1 -1
- package/lib/model/ICloseType.js +6 -9
- package/lib/model/ICloseType.js.map +1 -1
- package/lib/model/IDraggable.js +1 -2
- package/lib/model/IDropTarget.js +1 -2
- package/lib/model/IJsonModel.js +1 -2
- package/lib/model/LayoutWindow.js +83 -0
- package/lib/model/LayoutWindow.js.map +1 -0
- package/lib/model/Model.js +614 -496
- package/lib/model/Model.js.map +1 -1
- package/lib/model/Node.js +217 -228
- package/lib/model/Node.js.map +1 -1
- package/lib/model/RowNode.js +491 -504
- package/lib/model/RowNode.js.map +1 -1
- package/lib/model/TabNode.js +289 -184
- package/lib/model/TabNode.js.map +1 -1
- package/lib/model/TabSetNode.js +459 -446
- package/lib/model/TabSetNode.js.map +1 -1
- package/lib/model/Utils.js +47 -82
- package/lib/model/Utils.js.map +1 -1
- package/lib/view/BorderButton.js +129 -138
- package/lib/view/BorderButton.js.map +1 -1
- package/lib/view/BorderTab.js +47 -0
- package/lib/view/BorderTab.js.map +1 -0
- package/lib/view/BorderTabSet.js +134 -128
- package/lib/view/BorderTabSet.js.map +1 -1
- package/lib/view/DragContainer.js +16 -0
- package/lib/view/DragContainer.js.map +1 -0
- package/lib/view/ErrorBoundary.js +23 -27
- package/lib/view/ErrorBoundary.js.map +1 -1
- package/lib/view/Icons.js +40 -45
- package/lib/view/Icons.js.map +1 -1
- package/lib/view/Layout.js +919 -907
- package/lib/view/Layout.js.map +1 -1
- package/lib/view/Overlay.js +9 -0
- package/lib/view/Overlay.js.map +1 -0
- package/lib/view/PopoutWindow.js +129 -0
- package/lib/view/PopoutWindow.js.map +1 -0
- package/lib/view/PopupMenu.js +71 -0
- package/lib/view/PopupMenu.js.map +1 -0
- package/lib/view/Row.js +45 -0
- package/lib/view/Row.js.map +1 -0
- package/lib/view/SizeTracker.js +11 -0
- package/lib/view/SizeTracker.js.map +1 -0
- package/lib/view/Splitter.js +191 -147
- package/lib/view/Splitter.js.map +1 -1
- package/lib/view/Tab.js +86 -60
- package/lib/view/Tab.js.map +1 -1
- package/lib/view/TabButton.js +127 -135
- package/lib/view/TabButton.js.map +1 -1
- package/lib/view/TabButtonStamp.js +16 -21
- package/lib/view/TabButtonStamp.js.map +1 -1
- package/lib/view/TabOverflowHook.js +150 -149
- package/lib/view/TabOverflowHook.js.map +1 -1
- package/lib/view/TabSet.js +272 -234
- package/lib/view/TabSet.js.map +1 -1
- package/lib/view/Utils.js +126 -68
- package/lib/view/Utils.js.map +1 -1
- package/package.json +36 -30
- package/src/Attribute.ts +23 -0
- package/src/AttributeDefinitions.ts +38 -15
- package/src/DockLocation.ts +13 -13
- package/src/I18nLabel.ts +7 -9
- package/src/Rect.ts +53 -1
- package/src/Types.ts +16 -0
- package/src/index.ts +1 -2
- package/src/model/Actions.ts +49 -29
- package/src/model/BorderNode.ts +208 -214
- package/src/model/BorderSet.ts +42 -91
- package/src/model/IJsonModel.ts +883 -103
- package/src/model/LayoutWindow.ts +121 -0
- package/src/model/Model.ts +488 -366
- package/src/model/Node.ts +98 -111
- package/src/model/RowNode.ts +323 -319
- package/src/model/TabNode.ts +294 -110
- package/src/model/TabSetNode.ts +303 -242
- package/src/model/Utils.ts +6 -32
- package/src/view/BorderButton.tsx +36 -52
- package/src/view/BorderTab.tsx +70 -0
- package/src/view/BorderTabSet.tsx +64 -52
- package/src/view/DragContainer.tsx +32 -0
- package/src/view/Icons.tsx +6 -0
- package/src/view/Layout.tsx +1053 -1046
- package/src/view/Overlay.tsx +22 -0
- package/src/view/PopoutWindow.tsx +152 -0
- package/src/{PopupMenu.tsx → view/PopupMenu.tsx} +36 -31
- package/src/view/Row.tsx +68 -0
- package/src/view/SizeTracker.tsx +20 -0
- package/src/view/Splitter.tsx +167 -112
- package/src/view/Tab.tsx +76 -42
- package/src/view/TabButton.tsx +39 -54
- package/src/view/TabButtonStamp.tsx +5 -9
- package/src/view/TabOverflowHook.tsx +14 -9
- package/src/view/TabSet.tsx +221 -176
- package/src/view/Utils.tsx +119 -39
- package/style/_base.scss +140 -34
- package/style/dark.css +140 -35
- package/style/dark.css.map +1 -1
- package/style/dark.scss +3 -1
- package/style/gray.css +139 -34
- package/style/gray.css.map +1 -1
- package/style/gray.scss +2 -0
- package/style/light.css +141 -36
- package/style/light.css.map +1 -1
- package/style/light.scss +4 -2
- package/style/rounded.css +697 -0
- package/style/rounded.css.map +1 -0
- package/style/rounded.scss +194 -0
- package/style/underline.css +139 -34
- package/style/underline.css.map +1 -1
- package/style/underline.scss +2 -0
- package/cypress.config.ts +0 -16
- package/lib/DragDrop.js +0 -316
- package/lib/DragDrop.js.map +0 -1
- package/lib/PopupMenu.js +0 -68
- package/lib/PopupMenu.js.map +0 -1
- package/lib/model/SplitterNode.js +0 -72
- package/lib/model/SplitterNode.js.map +0 -1
- package/lib/view/FloatingWindow.js +0 -123
- package/lib/view/FloatingWindow.js.map +0 -1
- package/lib/view/FloatingWindowTab.js +0 -19
- package/lib/view/FloatingWindowTab.js.map +0 -1
- package/lib/view/TabFloating.js +0 -66
- package/lib/view/TabFloating.js.map +0 -1
- package/src/DragDrop.ts +0 -392
- package/src/model/SplitterNode.ts +0 -78
- package/src/view/FloatingWindow.tsx +0 -140
- package/src/view/FloatingWindowTab.tsx +0 -29
- package/src/view/TabFloating.tsx +0 -101
package/src/view/Utils.tsx
CHANGED
|
@@ -1,46 +1,33 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { Node } from "../model/Node";
|
|
2
3
|
import { TabNode } from "../model/TabNode";
|
|
3
|
-
import {
|
|
4
|
+
import { LayoutInternal } from "./Layout";
|
|
5
|
+
import { TabSetNode } from "../model/TabSetNode";
|
|
6
|
+
import { Rect } from "../Rect";
|
|
4
7
|
|
|
8
|
+
/** @internal */
|
|
9
|
+
export function isDesktop() {
|
|
10
|
+
const desktop = typeof window !== "undefined" && window.matchMedia && window.matchMedia("(hover: hover) and (pointer: fine)").matches;
|
|
11
|
+
return desktop;
|
|
12
|
+
}
|
|
5
13
|
/** @internal */
|
|
6
14
|
export function getRenderStateEx(
|
|
7
|
-
layout:
|
|
15
|
+
layout: LayoutInternal,
|
|
8
16
|
node: TabNode,
|
|
9
|
-
iconFactory?: IconFactory,
|
|
10
|
-
titleFactory?: TitleFactory,
|
|
11
17
|
iconAngle?: number
|
|
12
18
|
) {
|
|
13
|
-
let leadingContent =
|
|
19
|
+
let leadingContent = undefined;
|
|
14
20
|
let titleContent: React.ReactNode = node.getName();
|
|
15
21
|
let name = node.getName();
|
|
16
22
|
if (iconAngle === undefined) {
|
|
17
23
|
iconAngle = 0;
|
|
18
24
|
}
|
|
19
25
|
|
|
20
|
-
function isTitleObject(obj: any): obj is ITitleObject {
|
|
21
|
-
return obj.titleContent !== undefined
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (titleFactory !== undefined) {
|
|
25
|
-
const titleObj = titleFactory(node);
|
|
26
|
-
if (titleObj !== undefined) {
|
|
27
|
-
if (typeof titleObj === "string") {
|
|
28
|
-
titleContent = titleObj as string;
|
|
29
|
-
name = titleObj as string;
|
|
30
|
-
} else if (isTitleObject(titleObj)) {
|
|
31
|
-
titleContent = titleObj.titleContent;
|
|
32
|
-
name = titleObj.name;
|
|
33
|
-
} else {
|
|
34
|
-
titleContent = titleObj;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
26
|
if (leadingContent === undefined && node.getIcon() !== undefined) {
|
|
40
27
|
if (iconAngle !== 0) {
|
|
41
|
-
|
|
28
|
+
leadingContent = <img style={{ width: "1em", height: "1em", transform: "rotate(" + iconAngle + "deg)" }} src={node.getIcon()} alt="leadingContent" />;
|
|
42
29
|
} else {
|
|
43
|
-
leadingContent = <img style={{ width: "1em", height: "1em" }} src={node.getIcon()} alt="leadingContent" />;
|
|
30
|
+
leadingContent = <img style={{ width: "1em", height: "1em" }} src={node.getIcon()} alt="leadingContent" />;
|
|
44
31
|
}
|
|
45
32
|
}
|
|
46
33
|
|
|
@@ -50,24 +37,13 @@ export function getRenderStateEx(
|
|
|
50
37
|
const renderState = { leading: leadingContent, content: titleContent, name, buttons };
|
|
51
38
|
layout.customizeTab(node, renderState);
|
|
52
39
|
|
|
53
|
-
node.
|
|
40
|
+
node.setRenderedName(renderState.name);
|
|
54
41
|
|
|
55
42
|
return renderState;
|
|
56
|
-
|
|
57
43
|
}
|
|
58
44
|
|
|
59
45
|
/** @internal */
|
|
60
|
-
export function
|
|
61
|
-
if (useVisibility) {
|
|
62
|
-
style.visibility = "hidden";
|
|
63
|
-
} else {
|
|
64
|
-
style.display = "none";
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
/** @internal */
|
|
70
|
-
export function isAuxMouseEvent(event: React.MouseEvent<HTMLDivElement, MouseEvent> | React.TouchEvent<HTMLDivElement>) {
|
|
46
|
+
export function isAuxMouseEvent(event: React.MouseEvent<HTMLElement, MouseEvent> | React.TouchEvent<HTMLElement>) {
|
|
71
47
|
let auxEvent = false;
|
|
72
48
|
if (event.nativeEvent instanceof MouseEvent) {
|
|
73
49
|
if (event.nativeEvent.button !== 0 || event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {
|
|
@@ -77,3 +53,107 @@ export function isAuxMouseEvent(event: React.MouseEvent<HTMLDivElement, MouseEve
|
|
|
77
53
|
return auxEvent;
|
|
78
54
|
}
|
|
79
55
|
|
|
56
|
+
export function enablePointerOnIFrames(enable: boolean, currentDocument: Document) {
|
|
57
|
+
const iframes = [
|
|
58
|
+
...getElementsByTagName('iframe', currentDocument),
|
|
59
|
+
...getElementsByTagName('webview', currentDocument),
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
for (const iframe of iframes) {
|
|
63
|
+
(iframe as HTMLElement).style.pointerEvents = enable ? 'auto' : 'none';
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export function getElementsByTagName(tag: string, currentDocument: Document): Element[] {
|
|
68
|
+
return [...currentDocument.getElementsByTagName(tag)];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function startDrag(
|
|
72
|
+
doc: Document,
|
|
73
|
+
event: React.PointerEvent<HTMLElement>,
|
|
74
|
+
drag: (x: number, y: number) => void,
|
|
75
|
+
dragEnd: () => void,
|
|
76
|
+
dragCancel: () => void) {
|
|
77
|
+
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
|
|
80
|
+
const pointerMove = (ev: PointerEvent) => {
|
|
81
|
+
ev.preventDefault();
|
|
82
|
+
drag(ev.clientX, ev.clientY);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const pointerCancel = (ev: PointerEvent) => {
|
|
86
|
+
ev.preventDefault();
|
|
87
|
+
dragCancel();
|
|
88
|
+
};
|
|
89
|
+
const pointerUp = () => {
|
|
90
|
+
doc.removeEventListener("pointermove", pointerMove);
|
|
91
|
+
doc.removeEventListener("pointerup", pointerUp);
|
|
92
|
+
doc.removeEventListener("pointercancel", pointerCancel);
|
|
93
|
+
dragEnd();
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
doc.addEventListener("pointermove", pointerMove);
|
|
97
|
+
doc.addEventListener("pointerup", pointerUp);
|
|
98
|
+
doc.addEventListener('pointercancel', pointerCancel);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export function canDockToWindow(node: Node) {
|
|
102
|
+
if (node instanceof TabNode) {
|
|
103
|
+
return node.isEnablePopout();
|
|
104
|
+
} else if (node instanceof TabSetNode) {
|
|
105
|
+
for (const child of node.getChildren()) {
|
|
106
|
+
if ((child as TabNode).isEnablePopout() === false) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function keepOnScreen(rect: Rect) {
|
|
116
|
+
rect.snap(10);
|
|
117
|
+
|
|
118
|
+
const availableScreenWidth = window.screen.availWidth;
|
|
119
|
+
const availableScreenHeight = window.screen.availHeight;
|
|
120
|
+
|
|
121
|
+
if (rect.x + rect.width > availableScreenWidth || rect.y + rect.height > availableScreenHeight) {
|
|
122
|
+
// Adjust the rectangle to fit within the available screen space
|
|
123
|
+
rect.x = Math.max(0, Math.min(rect.x, availableScreenWidth - rect.width));
|
|
124
|
+
rect.y = Math.max(0, Math.min(rect.y, availableScreenHeight - rect.height));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return rect;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function isOnScreen(rect: Rect) {
|
|
131
|
+
const availableScreenWidth = window.screen.availWidth;
|
|
132
|
+
const availableScreenHeight = window.screen.availHeight;
|
|
133
|
+
|
|
134
|
+
return (rect.x >= 0 && rect.getRight() <= availableScreenWidth &&
|
|
135
|
+
rect.y >= 0 || rect.getBottom() <= availableScreenHeight);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export function copyInlineStyles(source: HTMLElement, target: HTMLElement): boolean {
|
|
139
|
+
// Get the inline style attribute from the source element
|
|
140
|
+
const sourceStyle = source.getAttribute('style');
|
|
141
|
+
const targetStyle = target.getAttribute('style');
|
|
142
|
+
if (sourceStyle === targetStyle) return false;
|
|
143
|
+
|
|
144
|
+
// console.log("copyInlineStyles", sourceStyle);
|
|
145
|
+
|
|
146
|
+
if (sourceStyle) {
|
|
147
|
+
// Set the style attribute on the target element
|
|
148
|
+
target.setAttribute('style', sourceStyle);
|
|
149
|
+
} else {
|
|
150
|
+
// If the source has no inline style, clear the target's style attribute
|
|
151
|
+
target.removeAttribute('style');
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export function isSafari() {
|
|
157
|
+
const userAgent = navigator.userAgent;
|
|
158
|
+
return userAgent.includes("Safari") && !userAgent.includes("Chrome") && !userAgent.includes("Chromium");
|
|
159
|
+
}
|
package/style/_base.scss
CHANGED
|
@@ -6,14 +6,64 @@
|
|
|
6
6
|
position: absolute;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
@mixin flexFix {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-basis: 0px;
|
|
12
|
+
min-width: 0;
|
|
13
|
+
min-height: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
9
16
|
.flexlayout {
|
|
10
17
|
&__layout {
|
|
11
18
|
@include absoluteFill;
|
|
12
|
-
|
|
19
|
+
display:flex;
|
|
20
|
+
|
|
21
|
+
&_overlay {
|
|
22
|
+
@include absoluteFill;
|
|
23
|
+
z-index: 1000;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&_tab_stamps {
|
|
27
|
+
position:absolute;
|
|
28
|
+
top:-10000px; // offscreen
|
|
29
|
+
z-index:100;
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: column;
|
|
32
|
+
align-items: start;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&_moveables {
|
|
36
|
+
visibility: hidden;
|
|
37
|
+
position:absolute;
|
|
38
|
+
width: 100px; // size is needed to tabs have something to draw into
|
|
39
|
+
height: 100px;
|
|
40
|
+
top:-20000px; // offscreen
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&_main {
|
|
44
|
+
@include flexFix;
|
|
45
|
+
flex-grow:1;
|
|
46
|
+
position:relative;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&__layout_border_container {
|
|
51
|
+
@include flexFix;
|
|
52
|
+
flex-grow:1;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&__layout_border_container_inner {
|
|
56
|
+
@include flexFix;
|
|
57
|
+
flex-grow: 1;
|
|
13
58
|
}
|
|
14
59
|
|
|
15
60
|
&__splitter {
|
|
61
|
+
display: flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
justify-content: center;
|
|
16
64
|
background-color: var(--color-splitter);
|
|
65
|
+
touch-action: none;
|
|
66
|
+
z-index: 10;
|
|
17
67
|
@include splitter_mixin;
|
|
18
68
|
|
|
19
69
|
@media (hover: hover) {
|
|
@@ -25,15 +75,33 @@
|
|
|
25
75
|
}
|
|
26
76
|
}
|
|
27
77
|
&_border {
|
|
28
|
-
z-index: 10;
|
|
29
78
|
@include splitter_border_mixin;
|
|
30
79
|
}
|
|
31
80
|
&_drag {
|
|
81
|
+
position:absolute;
|
|
82
|
+
display:flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
justify-content: center;
|
|
32
85
|
z-index: 1000;
|
|
33
86
|
background-color: var(--color-splitter-drag);
|
|
34
87
|
@include splitter_drag_mixin;
|
|
35
88
|
}
|
|
89
|
+
&_handle {
|
|
90
|
+
background-color:#ccc;
|
|
91
|
+
border-radius:3px;
|
|
92
|
+
|
|
93
|
+
&_horz {
|
|
94
|
+
width: 3px;
|
|
95
|
+
height:30px;
|
|
96
|
+
}
|
|
97
|
+
&_vert {
|
|
98
|
+
width: 30px;
|
|
99
|
+
height:3px;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
36
103
|
&_extra {
|
|
104
|
+
touch-action: none;
|
|
37
105
|
background-color: transparent;
|
|
38
106
|
}
|
|
39
107
|
}
|
|
@@ -68,48 +136,58 @@
|
|
|
68
136
|
}
|
|
69
137
|
|
|
70
138
|
&__drag_rect {
|
|
71
|
-
position: absolute;
|
|
72
|
-
cursor: move;
|
|
73
139
|
color: var(--color-drag-rect);
|
|
74
140
|
background-color: var(--color-drag-rect-background);
|
|
75
141
|
border: 2px solid var(--color-drag-rect-border);
|
|
76
|
-
// box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.3);
|
|
77
142
|
border-radius: 5px;
|
|
78
|
-
z-index: 1000;
|
|
79
143
|
box-sizing: border-box;
|
|
80
|
-
|
|
81
|
-
text-align: center;
|
|
144
|
+
// text-align: center;
|
|
82
145
|
|
|
83
146
|
display: flex;
|
|
84
147
|
justify-content: center;
|
|
85
148
|
flex-direction: column;
|
|
86
149
|
overflow: hidden;
|
|
87
|
-
padding: 0.3em
|
|
150
|
+
padding: 0.3em .8em;
|
|
88
151
|
word-wrap: break-word;
|
|
89
152
|
font-size: var(--font-size);
|
|
90
153
|
font-family: var(--font-family);
|
|
91
154
|
}
|
|
92
155
|
|
|
156
|
+
&__row {
|
|
157
|
+
@include flexFix;
|
|
158
|
+
position: relative;
|
|
159
|
+
box-sizing: border-box;
|
|
160
|
+
overflow: hidden;
|
|
161
|
+
}
|
|
162
|
+
|
|
93
163
|
&__tabset {
|
|
94
|
-
display:
|
|
164
|
+
display:flex;
|
|
95
165
|
flex-direction: column;
|
|
96
|
-
|
|
166
|
+
position: relative;
|
|
97
167
|
background-color: var(--color-tabset-background);
|
|
98
168
|
box-sizing: border-box;
|
|
99
|
-
font-size: var(--font-size);
|
|
100
169
|
font-family: var(--font-family);
|
|
170
|
+
overflow: hidden;
|
|
171
|
+
flex-grow:1;
|
|
101
172
|
@include tabset_mixin;
|
|
102
173
|
|
|
174
|
+
&_container {
|
|
175
|
+
@include flexFix;
|
|
176
|
+
flex-direction: column;
|
|
177
|
+
overflow: hidden;
|
|
178
|
+
flex-grow:1;
|
|
179
|
+
}
|
|
180
|
+
|
|
103
181
|
&_tab_divider {
|
|
104
182
|
width: 4px;
|
|
105
183
|
@include tabset_tab_divider_mixin;
|
|
106
184
|
}
|
|
107
185
|
|
|
108
186
|
&_content {
|
|
109
|
-
|
|
187
|
+
@include flexFix;
|
|
110
188
|
flex-grow: 1;
|
|
111
|
-
|
|
112
|
-
|
|
189
|
+
box-sizing: border-box;
|
|
190
|
+
position: relative;
|
|
113
191
|
}
|
|
114
192
|
|
|
115
193
|
&_header {
|
|
@@ -121,6 +199,7 @@
|
|
|
121
199
|
border-bottom: 1px solid var(--color-tabset-divider-line);
|
|
122
200
|
color: var(--color-tabset-header);
|
|
123
201
|
background-color: var(--color-tabset-header-background);
|
|
202
|
+
font-size: var(--font-size);
|
|
124
203
|
@include tabset_header_mixin;
|
|
125
204
|
|
|
126
205
|
&_content {
|
|
@@ -135,14 +214,17 @@
|
|
|
135
214
|
background-color: var(--color-tabset-background);
|
|
136
215
|
overflow: hidden;
|
|
137
216
|
display: flex;
|
|
217
|
+
font-size: var(--font-size);
|
|
138
218
|
@include tabset_tabbar_mixin;
|
|
139
219
|
}
|
|
140
220
|
|
|
141
221
|
&_outer_top {
|
|
222
|
+
padding:0px 2px 0px 2px;
|
|
142
223
|
border-bottom: 1px solid var(--color-tabset-divider-line);
|
|
143
224
|
}
|
|
144
225
|
|
|
145
226
|
&_outer_bottom {
|
|
227
|
+
padding: 0px 2px 0px 2px;
|
|
146
228
|
border-top: 1px solid var(--color-tabset-divider-line);
|
|
147
229
|
}
|
|
148
230
|
|
|
@@ -155,15 +237,13 @@
|
|
|
155
237
|
overflow: hidden;
|
|
156
238
|
|
|
157
239
|
&_tab_container {
|
|
240
|
+
position: relative;
|
|
158
241
|
display: flex;
|
|
159
242
|
padding-left: 4px;
|
|
160
243
|
padding-right: 4px;
|
|
161
244
|
box-sizing: border-box;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
bottom: 0;
|
|
165
|
-
width: 10000px;
|
|
166
|
-
|
|
245
|
+
white-space: nowrap;
|
|
246
|
+
|
|
167
247
|
&_top {
|
|
168
248
|
border-top: 2px solid transparent; // if you change this, update the _sizer above
|
|
169
249
|
}
|
|
@@ -194,11 +274,30 @@
|
|
|
194
274
|
}
|
|
195
275
|
|
|
196
276
|
&__tab {
|
|
197
|
-
overflow:
|
|
198
|
-
position: absolute;
|
|
277
|
+
overflow: hidden;
|
|
199
278
|
box-sizing: border-box;
|
|
200
|
-
background-color: var(--color-
|
|
279
|
+
background-color: var(--color-tab-content);
|
|
201
280
|
color: var(--color-text);
|
|
281
|
+
position: relative;
|
|
282
|
+
|
|
283
|
+
&_moveable {
|
|
284
|
+
position:relative;
|
|
285
|
+
height:100%;
|
|
286
|
+
min-width:1px;
|
|
287
|
+
min-height:1px;
|
|
288
|
+
overflow:auto;
|
|
289
|
+
box-sizing: border-box;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
&_overlay {
|
|
293
|
+
z-index: 20;
|
|
294
|
+
position: absolute;
|
|
295
|
+
top: 0;
|
|
296
|
+
left: 0;
|
|
297
|
+
right: 0;
|
|
298
|
+
bottom: 0;
|
|
299
|
+
background-color: #0000003d;
|
|
300
|
+
}
|
|
202
301
|
|
|
203
302
|
&_button {
|
|
204
303
|
display: flex;
|
|
@@ -264,6 +363,7 @@
|
|
|
264
363
|
|
|
265
364
|
&_content {
|
|
266
365
|
display: flex;
|
|
366
|
+
text-wrap: nowrap;
|
|
267
367
|
}
|
|
268
368
|
|
|
269
369
|
&_textbox {
|
|
@@ -320,6 +420,15 @@
|
|
|
320
420
|
padding-left: .5em;
|
|
321
421
|
padding-right: .3em;
|
|
322
422
|
|
|
423
|
+
&_icon {
|
|
424
|
+
border: none;
|
|
425
|
+
outline: none;
|
|
426
|
+
font-size: inherit;
|
|
427
|
+
margin: 0px;
|
|
428
|
+
background-color: transparent;
|
|
429
|
+
padding: 1px;
|
|
430
|
+
}
|
|
431
|
+
|
|
323
432
|
&_button {
|
|
324
433
|
border: none;
|
|
325
434
|
outline: none;
|
|
@@ -394,6 +503,12 @@
|
|
|
394
503
|
background-color: var(--color-border-background);
|
|
395
504
|
@include border_mixin;
|
|
396
505
|
|
|
506
|
+
&_tab_contents {
|
|
507
|
+
box-sizing: border-box;
|
|
508
|
+
overflow:hidden;
|
|
509
|
+
background-color: var(--color-border-tab-content);
|
|
510
|
+
}
|
|
511
|
+
|
|
397
512
|
&_top {
|
|
398
513
|
border-bottom: 1px solid var(--color-border-divider-line);
|
|
399
514
|
align-items: center;
|
|
@@ -430,8 +545,6 @@
|
|
|
430
545
|
padding-right: 2px;
|
|
431
546
|
box-sizing: border-box;
|
|
432
547
|
position: absolute;
|
|
433
|
-
top: 0;
|
|
434
|
-
bottom: 0;
|
|
435
548
|
width: 10000px;
|
|
436
549
|
|
|
437
550
|
&_right {
|
|
@@ -606,15 +719,6 @@
|
|
|
606
719
|
&_content {
|
|
607
720
|
@include absoluteFill;
|
|
608
721
|
}
|
|
609
|
-
|
|
610
|
-
&_tab {
|
|
611
|
-
overflow: auto;
|
|
612
|
-
@include absoluteFill;
|
|
613
|
-
|
|
614
|
-
box-sizing: border-box;
|
|
615
|
-
background-color: var(--color-background);
|
|
616
|
-
color: var(--color-text);
|
|
617
|
-
}
|
|
618
722
|
}
|
|
619
723
|
|
|
620
724
|
&__error_boundary_container {
|
|
@@ -646,6 +750,8 @@
|
|
|
646
750
|
}
|
|
647
751
|
|
|
648
752
|
&__border_sizer {
|
|
753
|
+
position:absolute;
|
|
754
|
+
top:-30000px; // offscreen
|
|
649
755
|
padding-top: 6px;
|
|
650
756
|
padding-bottom: 5px;
|
|
651
757
|
font-size: var(--font-size);
|