flexlayout-react 0.5.15 → 0.5.19
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 +26 -0
- package/README.md +121 -97
- package/declarations/DragDrop.d.ts +1 -0
- package/declarations/I18nLabel.d.ts +1 -0
- package/declarations/Rect.d.ts +4 -0
- package/declarations/Types.d.ts +9 -1
- package/declarations/model/Actions.d.ts +18 -11
- package/declarations/model/BorderNode.d.ts +2 -1
- package/declarations/model/IJsonModel.d.ts +10 -0
- package/declarations/model/Model.d.ts +1 -0
- package/declarations/model/TabNode.d.ts +1 -0
- package/declarations/model/TabSetNode.d.ts +1 -0
- package/declarations/view/Layout.d.ts +20 -6
- package/dist/flexlayout.js +20 -20
- package/dist/flexlayout_min.js +1 -1
- package/lib/DockLocation.js +25 -11
- package/lib/DockLocation.js.map +1 -1
- package/lib/DragDrop.js +19 -3
- package/lib/DragDrop.js.map +1 -1
- package/lib/I18nLabel.js +1 -0
- package/lib/I18nLabel.js.map +1 -1
- package/lib/PopupMenu.js +14 -9
- package/lib/PopupMenu.js.map +1 -1
- package/lib/Rect.js +3 -0
- package/lib/Rect.js.map +1 -1
- package/lib/Types.js +8 -0
- package/lib/Types.js.map +1 -1
- package/lib/model/Actions.js +20 -11
- package/lib/model/Actions.js.map +1 -1
- package/lib/model/BorderNode.js +61 -14
- package/lib/model/BorderNode.js.map +1 -1
- package/lib/model/BorderSet.js +33 -19
- package/lib/model/BorderSet.js.map +1 -1
- package/lib/model/Model.js +39 -1
- package/lib/model/Model.js.map +1 -1
- package/lib/model/RowNode.js +19 -5
- package/lib/model/RowNode.js.map +1 -1
- package/lib/model/TabNode.js +14 -0
- package/lib/model/TabNode.js.map +1 -1
- package/lib/model/TabSetNode.js +42 -19
- package/lib/model/TabSetNode.js.map +1 -1
- package/lib/view/BorderButton.js +14 -3
- package/lib/view/BorderButton.js.map +1 -1
- package/lib/view/BorderTabSet.js +15 -4
- package/lib/view/BorderTabSet.js.map +1 -1
- package/lib/view/Layout.js +206 -45
- package/lib/view/Layout.js.map +1 -1
- package/lib/view/Splitter.js +34 -3
- package/lib/view/Splitter.js.map +1 -1
- package/lib/view/TabButton.js +11 -2
- package/lib/view/TabButton.js.map +1 -1
- package/lib/view/TabFloating.js +23 -11
- package/lib/view/TabFloating.js.map +1 -1
- package/lib/view/TabSet.js +50 -17
- package/lib/view/TabSet.js.map +1 -1
- package/package.json +1 -1
- package/src/DockLocation.ts +30 -9
- package/src/DragDrop.ts +26 -3
- package/src/I18nLabel.ts +1 -0
- package/src/PopupMenu.tsx +28 -10
- package/src/Rect.ts +6 -2
- package/src/Types.ts +9 -0
- package/src/model/Actions.ts +21 -11
- package/src/model/BorderNode.ts +57 -15
- package/src/model/BorderSet.ts +32 -19
- package/src/model/IJsonModel.ts +10 -0
- package/src/model/Model.ts +43 -1
- package/src/model/RowNode.ts +8 -5
- package/src/model/TabNode.ts +16 -0
- package/src/model/TabSetNode.ts +43 -19
- package/src/view/BorderButton.tsx +22 -3
- package/src/view/BorderTabSet.tsx +21 -4
- package/src/view/Layout.tsx +263 -70
- package/src/view/Splitter.tsx +49 -3
- package/src/view/TabButton.tsx +17 -1
- package/src/view/TabFloating.tsx +36 -19
- package/src/view/TabSet.tsx +76 -16
- package/style/_base.scss +75 -44
- package/style/dark.css +90 -61
- package/style/dark.css.map +1 -1
- package/style/dark.scss +20 -20
- package/style/gray.css +90 -61
- package/style/gray.css.map +1 -1
- package/style/gray.scss +20 -20
- package/style/light.css +90 -61
- package/style/light.css.map +1 -1
- package/style/light.scss +18 -18
- package/yarn-error.log +0 -11828
package/src/view/TabFloating.tsx
CHANGED
|
@@ -17,6 +17,16 @@ export interface ITabFloatingProps {
|
|
|
17
17
|
export const TabFloating = (props: ITabFloatingProps) => {
|
|
18
18
|
const { layout, selected, node } = props;
|
|
19
19
|
|
|
20
|
+
const showPopout = () => {
|
|
21
|
+
if (node.getWindow()) {
|
|
22
|
+
node.getWindow()!.focus();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const dockPopout = () => {
|
|
27
|
+
layout.doAction(Actions.unFloatTab(node.getId()));
|
|
28
|
+
}
|
|
29
|
+
|
|
20
30
|
const onMouseDown = () => {
|
|
21
31
|
const parent = node.getParent() as TabSetNode;
|
|
22
32
|
if (parent.getType() === TabSetNode.TYPE) {
|
|
@@ -28,14 +38,12 @@ export const TabFloating = (props: ITabFloatingProps) => {
|
|
|
28
38
|
|
|
29
39
|
const onClickFocus = (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
|
|
30
40
|
event.preventDefault();
|
|
31
|
-
|
|
32
|
-
node.getWindow()!.focus();
|
|
33
|
-
}
|
|
41
|
+
showPopout();
|
|
34
42
|
};
|
|
35
43
|
|
|
36
44
|
const onClickDock = (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
|
|
37
45
|
event.preventDefault();
|
|
38
|
-
|
|
46
|
+
dockPopout();
|
|
39
47
|
};
|
|
40
48
|
|
|
41
49
|
const cm = layout.getClassName;
|
|
@@ -48,21 +56,30 @@ export const TabFloating = (props: ITabFloatingProps) => {
|
|
|
48
56
|
const showMessage = layout.i18nName(I18nLabel.Floating_Window_Show_Window);
|
|
49
57
|
const dockMessage = layout.i18nName(I18nLabel.Floating_Window_Dock_Window);
|
|
50
58
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
const customRenderCallback = layout.getOnRenderFloatingTabPlaceholder();
|
|
60
|
+
if (customRenderCallback) {
|
|
61
|
+
return (
|
|
62
|
+
<div className={cm(CLASSES.FLEXLAYOUT__TAB_FLOATING)} onMouseDown={onMouseDown} onTouchStart={onMouseDown} style={style}>
|
|
63
|
+
{customRenderCallback(dockPopout, showPopout)}
|
|
64
|
+
</div>
|
|
65
|
+
);
|
|
66
|
+
} else {
|
|
67
|
+
return (
|
|
68
|
+
<div className={cm(CLASSES.FLEXLAYOUT__TAB_FLOATING)} onMouseDown={onMouseDown} onTouchStart={onMouseDown} style={style}>
|
|
69
|
+
<div className={cm(CLASSES.FLEXLAYOUT__TAB_FLOATING_INNER)}>
|
|
70
|
+
<div>{message}</div>
|
|
71
|
+
<div>
|
|
72
|
+
<a href="#" onClick={onClickFocus}>
|
|
73
|
+
{showMessage}
|
|
74
|
+
</a>
|
|
75
|
+
</div>
|
|
76
|
+
<div>
|
|
77
|
+
<a href="#" onClick={onClickDock}>
|
|
78
|
+
{dockMessage}
|
|
79
|
+
</a>
|
|
80
|
+
</div>
|
|
64
81
|
</div>
|
|
65
82
|
</div>
|
|
66
|
-
|
|
67
|
-
|
|
83
|
+
);
|
|
84
|
+
}
|
|
68
85
|
};
|
package/src/view/TabSet.tsx
CHANGED
|
@@ -17,7 +17,7 @@ export interface ITabSetProps {
|
|
|
17
17
|
iconFactory?: (node: TabNode) => React.ReactNode | undefined;
|
|
18
18
|
titleFactory?: (node: TabNode) => React.ReactNode | undefined;
|
|
19
19
|
icons?: IIcons;
|
|
20
|
-
editingTab?: TabNode;
|
|
20
|
+
editingTab?: TabNode;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
/** @hidden @internal */
|
|
@@ -31,9 +31,10 @@ export const TabSet = (props: ITabSetProps) => {
|
|
|
31
31
|
|
|
32
32
|
const { selfRef, position, userControlledLeft, hiddenTabs, onMouseWheel, tabsTruncated } = useTabOverflow(node, Orientation.HORZ, toolbarRef, stickyButtonsRef);
|
|
33
33
|
|
|
34
|
-
const onOverflowClick = () => {
|
|
34
|
+
const onOverflowClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
|
35
35
|
const element = overflowbuttonRef.current!;
|
|
36
36
|
showPopup(layout.getRootDiv(), element, hiddenTabs, onOverflowItemSelect, layout.getClassName);
|
|
37
|
+
event.stopPropagation();
|
|
37
38
|
};
|
|
38
39
|
|
|
39
40
|
const onOverflowItemSelect = (item: { node: TabNode; index: number }) => {
|
|
@@ -42,33 +43,53 @@ export const TabSet = (props: ITabSetProps) => {
|
|
|
42
43
|
};
|
|
43
44
|
|
|
44
45
|
const onMouseDown = (event: React.MouseEvent<HTMLDivElement, MouseEvent> | React.TouchEvent<HTMLDivElement>) => {
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
name =
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
|
|
47
|
+
if (!isAuxMouseEvent(event)) {
|
|
48
|
+
let name = node.getName();
|
|
49
|
+
if (name === undefined) {
|
|
50
|
+
name = "";
|
|
51
|
+
} else {
|
|
52
|
+
name = ": " + name;
|
|
53
|
+
}
|
|
54
|
+
layout.doAction(Actions.setActiveTabset(node.getId()));
|
|
55
|
+
if (!layout.getEditingTab()) {
|
|
56
|
+
const message = layout.i18nName(I18nLabel.Move_Tabset, name);
|
|
57
|
+
layout.dragStart(event, message, node, node.isEnableDrag(), (event2: Event) => undefined, onDoubleClick);
|
|
58
|
+
}
|
|
50
59
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const onAuxMouseClick = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
|
|
63
|
+
if (isAuxMouseEvent(event)) {
|
|
64
|
+
layout.auxMouseClick(node, event);
|
|
55
65
|
}
|
|
56
66
|
};
|
|
57
67
|
|
|
68
|
+
const onContextMenu = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
|
|
69
|
+
layout.showContextMenu(node, event);
|
|
70
|
+
};
|
|
71
|
+
|
|
58
72
|
const onInterceptMouseDown = (event: React.MouseEvent | React.TouchEvent) => {
|
|
59
73
|
event.stopPropagation();
|
|
60
74
|
};
|
|
61
75
|
|
|
62
|
-
const onMaximizeToggle = () => {
|
|
76
|
+
const onMaximizeToggle = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
|
63
77
|
if (node.canMaximize()) {
|
|
64
78
|
layout.maximize(node);
|
|
65
79
|
}
|
|
80
|
+
event.stopPropagation();
|
|
66
81
|
};
|
|
67
82
|
|
|
68
|
-
const
|
|
83
|
+
const onClose = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
|
84
|
+
layout.doAction(Actions.deleteTabset(node.getId()));
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const onFloatTab = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
|
69
89
|
if (selectedTabNode !== undefined) {
|
|
70
90
|
layout.doAction(Actions.floatTab(selectedTabNode.getId()));
|
|
71
91
|
}
|
|
92
|
+
event.stopPropagation();
|
|
72
93
|
};
|
|
73
94
|
|
|
74
95
|
const onDoubleClick = (event: Event) => {
|
|
@@ -195,6 +216,23 @@ export const TabSet = (props: ITabSetProps) => {
|
|
|
195
216
|
);
|
|
196
217
|
}
|
|
197
218
|
|
|
219
|
+
if (!node.isMaximized() && node.isEnableClose()) {
|
|
220
|
+
const title = layout.i18nName(I18nLabel.Close_Tabset);
|
|
221
|
+
const btns = showHeader ? headerButtons : buttons;
|
|
222
|
+
btns.push(
|
|
223
|
+
<button
|
|
224
|
+
key="close"
|
|
225
|
+
title={title}
|
|
226
|
+
className={cm(CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON) + " " + cm(CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE)}
|
|
227
|
+
onClick={onClose}
|
|
228
|
+
onMouseDown={onInterceptMouseDown}
|
|
229
|
+
onTouchStart={onInterceptMouseDown}
|
|
230
|
+
>
|
|
231
|
+
{icons?.closeTabset}
|
|
232
|
+
</button>
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
|
|
198
236
|
toolbar = (
|
|
199
237
|
<div key="toolbar" ref={toolbarRef}
|
|
200
238
|
className={cm(CLASSES.FLEXLAYOUT__TAB_TOOLBAR)}
|
|
@@ -248,7 +286,12 @@ export const TabSet = (props: ITabSetProps) => {
|
|
|
248
286
|
}
|
|
249
287
|
|
|
250
288
|
header = (
|
|
251
|
-
<div className={tabHeaderClasses} style={{ height: node.getHeaderHeight() + "px" }}
|
|
289
|
+
<div className={tabHeaderClasses} style={{ height: node.getHeaderHeight() + "px" }}
|
|
290
|
+
onMouseDown={onMouseDown}
|
|
291
|
+
onContextMenu={onContextMenu}
|
|
292
|
+
onClick={onAuxMouseClick}
|
|
293
|
+
onAuxClick={onAuxMouseClick}
|
|
294
|
+
onTouchStart={onMouseDown}>
|
|
252
295
|
<div className={cm(CLASSES.FLEXLAYOUT__TABSET_HEADER_CONTENT)}>{headerContent}</div>
|
|
253
296
|
{headerToolbar}
|
|
254
297
|
</div>
|
|
@@ -263,7 +306,12 @@ export const TabSet = (props: ITabSetProps) => {
|
|
|
263
306
|
tabStripStyle["bottom"] = "0px";
|
|
264
307
|
}
|
|
265
308
|
tabStrip = (
|
|
266
|
-
<div className={tabStripClasses} style={tabStripStyle}
|
|
309
|
+
<div className={tabStripClasses} style={tabStripStyle}
|
|
310
|
+
onMouseDown={onMouseDown}
|
|
311
|
+
onContextMenu={onContextMenu}
|
|
312
|
+
onClick={onAuxMouseClick}
|
|
313
|
+
onAuxClick={onAuxMouseClick}
|
|
314
|
+
onTouchStart={onMouseDown}>
|
|
267
315
|
<div ref={tabbarInnerRef} className={cm(CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER) + " " + cm(CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER_ + node.getTabLocation())}>
|
|
268
316
|
<div
|
|
269
317
|
style={{ left: position }}
|
|
@@ -279,9 +327,21 @@ export const TabSet = (props: ITabSetProps) => {
|
|
|
279
327
|
style = layout.styleFont(style);
|
|
280
328
|
|
|
281
329
|
return (
|
|
282
|
-
<div ref={selfRef} style={style} className={cm(CLASSES.FLEXLAYOUT__TABSET)} onWheel={onMouseWheel}>
|
|
330
|
+
<div ref={selfRef} dir="ltr" style={style} className={cm(CLASSES.FLEXLAYOUT__TABSET)} onWheel={onMouseWheel}>
|
|
283
331
|
{header}
|
|
284
332
|
{tabStrip}
|
|
285
333
|
</div>
|
|
286
334
|
);
|
|
287
335
|
};
|
|
336
|
+
|
|
337
|
+
/** @hidden @internal */
|
|
338
|
+
export function isAuxMouseEvent(event: React.MouseEvent<HTMLDivElement, MouseEvent> | React.TouchEvent<HTMLDivElement>) {
|
|
339
|
+
let auxEvent = false;
|
|
340
|
+
if (event.nativeEvent instanceof MouseEvent) {
|
|
341
|
+
if (event.nativeEvent.button !== 0 || event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {
|
|
342
|
+
auxEvent = true;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return auxEvent;
|
|
346
|
+
}
|
|
347
|
+
|
package/style/_base.scss
CHANGED
|
@@ -8,6 +8,21 @@
|
|
|
8
8
|
|
|
9
9
|
.flexlayout {
|
|
10
10
|
&__layout {
|
|
11
|
+
--color-text: #{$color_text};
|
|
12
|
+
--color-background: #{$color_background};
|
|
13
|
+
--color-base: #{$color_base};
|
|
14
|
+
--color-1: #{$color_1};
|
|
15
|
+
--color-2: #{$color_2};
|
|
16
|
+
--color-3: #{$color_3};
|
|
17
|
+
--color-4: #{$color_4};
|
|
18
|
+
--color-5: #{$color_5};
|
|
19
|
+
--color-6: #{$color_6};
|
|
20
|
+
--color-drag1: #{$color_drag1};
|
|
21
|
+
--color-drag2: #{$color_drag2};
|
|
22
|
+
|
|
23
|
+
--font-size: #{$font-size};
|
|
24
|
+
--font-family: #{$font-family};
|
|
25
|
+
|
|
11
26
|
@include absoluteFill;
|
|
12
27
|
overflow: hidden;
|
|
13
28
|
}
|
|
@@ -17,6 +32,8 @@
|
|
|
17
32
|
|
|
18
33
|
@media (hover: hover) {
|
|
19
34
|
&:hover {
|
|
35
|
+
transition: background-color ease-in .1s;
|
|
36
|
+
transition-delay: 0.05s;
|
|
20
37
|
@include splitter_hover_mixin;
|
|
21
38
|
}
|
|
22
39
|
}
|
|
@@ -24,25 +41,27 @@
|
|
|
24
41
|
z-index: 10;
|
|
25
42
|
@include splitter_border_mixin;
|
|
26
43
|
}
|
|
27
|
-
|
|
28
44
|
&_drag {
|
|
29
45
|
z-index: 1000;
|
|
30
46
|
@include splitter_drag_mixin;
|
|
31
47
|
}
|
|
48
|
+
&_extra {
|
|
49
|
+
background-color: transparent;
|
|
50
|
+
}
|
|
32
51
|
}
|
|
33
52
|
|
|
34
53
|
&__outline_rect {
|
|
35
54
|
position: absolute;
|
|
36
|
-
|
|
55
|
+
pointer-events: none;
|
|
37
56
|
box-sizing: border-box;
|
|
38
|
-
border: 2px solid
|
|
57
|
+
border: 2px solid var(--color-drag1);
|
|
39
58
|
box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.2);
|
|
40
59
|
border-radius: 5px;
|
|
41
60
|
z-index: 1000;
|
|
42
61
|
|
|
43
62
|
&_edge {
|
|
44
|
-
|
|
45
|
-
border: 2px solid
|
|
63
|
+
pointer-events: none;
|
|
64
|
+
border: 2px solid var(--color-drag2);
|
|
46
65
|
box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.2);
|
|
47
66
|
border-radius: 5px;
|
|
48
67
|
z-index: 1000;
|
|
@@ -55,14 +74,15 @@
|
|
|
55
74
|
z-index: 1000;
|
|
56
75
|
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
|
|
57
76
|
background-color: gray;
|
|
77
|
+
pointer-events: none;
|
|
58
78
|
}
|
|
59
79
|
|
|
60
80
|
&__drag_rect {
|
|
61
81
|
position: absolute;
|
|
62
82
|
cursor: move;
|
|
63
|
-
color:
|
|
64
|
-
background-color:
|
|
65
|
-
border: 2px solid
|
|
83
|
+
color: var(--color-text);
|
|
84
|
+
background-color: var(--color-1);
|
|
85
|
+
border: 2px solid var(--color-4);
|
|
66
86
|
box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.3);
|
|
67
87
|
border-radius: 5px;
|
|
68
88
|
z-index: 1000;
|
|
@@ -76,16 +96,16 @@
|
|
|
76
96
|
overflow: hidden;
|
|
77
97
|
padding: 10px;
|
|
78
98
|
word-wrap: break-word;
|
|
79
|
-
font-size:
|
|
80
|
-
font-family:
|
|
99
|
+
font-size: var(--font-size);
|
|
100
|
+
font-family: var(--font-family);
|
|
81
101
|
}
|
|
82
102
|
|
|
83
103
|
&__tabset {
|
|
84
104
|
overflow: hidden;
|
|
85
|
-
background-color:
|
|
105
|
+
background-color: var(--color-1);
|
|
86
106
|
box-sizing: border-box;
|
|
87
|
-
font-size:
|
|
88
|
-
font-family:
|
|
107
|
+
font-size: var(--font-size);
|
|
108
|
+
font-family: var(--font-family);
|
|
89
109
|
@include tabset_mixin;
|
|
90
110
|
|
|
91
111
|
&_header {
|
|
@@ -97,8 +117,8 @@
|
|
|
97
117
|
right: 0;
|
|
98
118
|
padding: 3px 3px 3px 5px;
|
|
99
119
|
box-sizing: border-box;
|
|
100
|
-
border-bottom: 1px solid
|
|
101
|
-
color:
|
|
120
|
+
border-bottom: 1px solid var(--color-3);
|
|
121
|
+
color: var(--color-text);
|
|
102
122
|
@include tabset_header_mixin;
|
|
103
123
|
|
|
104
124
|
&_content {
|
|
@@ -110,7 +130,7 @@
|
|
|
110
130
|
&_outer {
|
|
111
131
|
// tabset tabbar outer
|
|
112
132
|
box-sizing: border-box;
|
|
113
|
-
background-color:
|
|
133
|
+
background-color: var(--color-1);
|
|
114
134
|
position: absolute;
|
|
115
135
|
left: 0;
|
|
116
136
|
right: 0;
|
|
@@ -120,11 +140,11 @@
|
|
|
120
140
|
}
|
|
121
141
|
|
|
122
142
|
&_outer_top {
|
|
123
|
-
border-bottom: 1px solid
|
|
143
|
+
border-bottom: 1px solid var(--color-3);
|
|
124
144
|
}
|
|
125
145
|
|
|
126
146
|
&_outer_bottom {
|
|
127
|
-
border-top: 1px solid
|
|
147
|
+
border-top: 1px solid var(--color-3);
|
|
128
148
|
}
|
|
129
149
|
|
|
130
150
|
&_inner {
|
|
@@ -166,8 +186,8 @@
|
|
|
166
186
|
overflow: auto;
|
|
167
187
|
position: absolute;
|
|
168
188
|
box-sizing: border-box;
|
|
169
|
-
color:
|
|
170
|
-
background-color:
|
|
189
|
+
color: var(--color-text);
|
|
190
|
+
background-color: var(--color-background);
|
|
171
191
|
|
|
172
192
|
&_button {
|
|
173
193
|
display: inline-flex;
|
|
@@ -209,8 +229,12 @@
|
|
|
209
229
|
|
|
210
230
|
&_textbox {
|
|
211
231
|
border: none;
|
|
212
|
-
|
|
213
|
-
|
|
232
|
+
font-family: var(--font-family);
|
|
233
|
+
font-size: var(--font-size);
|
|
234
|
+
color: var(--color-text);
|
|
235
|
+
background-color: var(--color-5);
|
|
236
|
+
border: 1px inset var(--color-1);
|
|
237
|
+
border-radius: 3px;
|
|
214
238
|
}
|
|
215
239
|
|
|
216
240
|
&_textbox:focus {
|
|
@@ -270,6 +294,10 @@
|
|
|
270
294
|
&-float {
|
|
271
295
|
background: transparent url("../images/popout.png") no-repeat center;
|
|
272
296
|
}
|
|
297
|
+
|
|
298
|
+
&-close {
|
|
299
|
+
background: transparent url("../images/close.png") no-repeat center;
|
|
300
|
+
}
|
|
273
301
|
}
|
|
274
302
|
|
|
275
303
|
&_sticky_buttons_container {
|
|
@@ -282,8 +310,8 @@
|
|
|
282
310
|
overflow: auto;
|
|
283
311
|
position: absolute;
|
|
284
312
|
box-sizing: border-box;
|
|
285
|
-
color:
|
|
286
|
-
background-color:
|
|
313
|
+
color: var(--color-text);
|
|
314
|
+
background-color: var(--color-background);
|
|
287
315
|
display: flex;
|
|
288
316
|
justify-content: center;
|
|
289
317
|
align-items: center;
|
|
@@ -311,28 +339,28 @@
|
|
|
311
339
|
box-sizing: border-box;
|
|
312
340
|
overflow: hidden;
|
|
313
341
|
display: flex;
|
|
314
|
-
font-size:
|
|
315
|
-
font-family:
|
|
342
|
+
font-size: var(--font-size);
|
|
343
|
+
font-family: var(--font-family);
|
|
316
344
|
@include border_mixin;
|
|
317
345
|
|
|
318
346
|
&_top {
|
|
319
|
-
border-bottom: 1px solid
|
|
347
|
+
border-bottom: 1px solid var(--color-3);
|
|
320
348
|
align-items: center;
|
|
321
349
|
}
|
|
322
350
|
|
|
323
351
|
&_bottom {
|
|
324
|
-
border-top: 1px solid
|
|
352
|
+
border-top: 1px solid var(--color-3);
|
|
325
353
|
align-items: center;
|
|
326
354
|
}
|
|
327
355
|
|
|
328
356
|
&_left {
|
|
329
|
-
border-right: 1px solid
|
|
357
|
+
border-right: 1px solid var(--color-3);
|
|
330
358
|
align-content: center;
|
|
331
359
|
flex-direction: column;
|
|
332
360
|
}
|
|
333
361
|
|
|
334
362
|
&_right {
|
|
335
|
-
border-left: 1px solid
|
|
363
|
+
border-left: 1px solid var(--color-3);
|
|
336
364
|
align-content: center;
|
|
337
365
|
flex-direction: column;
|
|
338
366
|
}
|
|
@@ -466,25 +494,28 @@
|
|
|
466
494
|
}
|
|
467
495
|
|
|
468
496
|
&__popup_menu {
|
|
469
|
-
font-size:
|
|
470
|
-
font-family:
|
|
497
|
+
font-size: var(--font-size);
|
|
498
|
+
font-family: var(--font-family);
|
|
471
499
|
|
|
472
500
|
&_item {
|
|
501
|
+
margin: 2px;
|
|
473
502
|
padding: 2px 10px 2px 10px;
|
|
474
503
|
white-space: nowrap;
|
|
504
|
+
cursor: pointer;
|
|
505
|
+
border-radius: 2px;
|
|
475
506
|
}
|
|
476
507
|
|
|
477
508
|
@media (hover: hover) {
|
|
478
509
|
&_item:hover {
|
|
479
|
-
background-color:
|
|
510
|
+
background-color: var(--color-6);
|
|
480
511
|
}
|
|
481
512
|
}
|
|
482
513
|
|
|
483
514
|
&_container {
|
|
484
515
|
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.15);
|
|
485
|
-
border: 1px solid
|
|
486
|
-
color:
|
|
487
|
-
background:
|
|
516
|
+
border: 1px solid var(--color-6);
|
|
517
|
+
color: var(--color-text);
|
|
518
|
+
background: var(--color-background);
|
|
488
519
|
border-radius: 3px;
|
|
489
520
|
position: absolute;
|
|
490
521
|
z-index: 1000;
|
|
@@ -508,8 +539,8 @@
|
|
|
508
539
|
@include absoluteFill;
|
|
509
540
|
|
|
510
541
|
box-sizing: border-box;
|
|
511
|
-
background-color:
|
|
512
|
-
color:
|
|
542
|
+
background-color: var(--color-background);
|
|
543
|
+
color: var(--color-text);
|
|
513
544
|
}
|
|
514
545
|
}
|
|
515
546
|
|
|
@@ -530,21 +561,21 @@
|
|
|
530
561
|
&__tabset_sizer {
|
|
531
562
|
padding-top: 5px; // tab_button has 3 padding top, tabset header inner has 2 border
|
|
532
563
|
padding-bottom: 3px; // tab_button has 3 padding bottom
|
|
533
|
-
font-size:
|
|
534
|
-
font-family:
|
|
564
|
+
font-size: var(--font-size);
|
|
565
|
+
font-family: var(--font-family);
|
|
535
566
|
}
|
|
536
567
|
|
|
537
568
|
&__tabset_header_sizer {
|
|
538
569
|
padding-top: 3px;
|
|
539
570
|
padding-bottom: 3px;
|
|
540
|
-
font-size:
|
|
541
|
-
font-family:
|
|
571
|
+
font-size: var(--font-size);
|
|
572
|
+
font-family: var(--font-family);
|
|
542
573
|
}
|
|
543
574
|
|
|
544
575
|
&__border_sizer {
|
|
545
576
|
padding-top: 6px;
|
|
546
577
|
padding-bottom: 5px;
|
|
547
|
-
font-size:
|
|
548
|
-
font-family:
|
|
578
|
+
font-size: var(--font-size);
|
|
579
|
+
font-family: var(--font-family);
|
|
549
580
|
}
|
|
550
581
|
}
|