flexlayout-react 0.5.18 → 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 +8 -0
- package/README.md +109 -96
- package/declarations/Types.d.ts +7 -1
- package/declarations/view/Layout.d.ts +5 -0
- package/dist/flexlayout.js +12 -12
- package/dist/flexlayout_min.js +1 -1
- package/lib/PopupMenu.js +14 -9
- package/lib/PopupMenu.js.map +1 -1
- package/lib/Types.js +6 -0
- package/lib/Types.js.map +1 -1
- package/lib/model/BorderNode.js +8 -7
- package/lib/model/BorderNode.js.map +1 -1
- package/lib/model/Model.js +7 -3
- 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/TabSetNode.js +8 -4
- 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 +81 -48
- package/lib/view/Layout.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 +43 -18
- package/lib/view/TabSet.js.map +1 -1
- package/package.json +1 -1
- package/src/PopupMenu.tsx +28 -10
- package/src/Types.ts +6 -0
- package/src/model/BorderNode.ts +8 -7
- package/src/model/Model.ts +7 -3
- package/src/model/RowNode.ts +8 -5
- package/src/model/TabSetNode.ts +8 -4
- package/src/view/BorderButton.tsx +22 -3
- package/src/view/BorderTabSet.tsx +21 -4
- package/src/view/Layout.tsx +100 -58
- package/src/view/TabButton.tsx +16 -1
- package/src/view/TabFloating.tsx +36 -19
- package/src/view/TabSet.tsx +56 -17
- package/style/_base.scss +65 -41
- package/style/dark.css +81 -59
- package/style/dark.css.map +1 -1
- package/style/dark.scss +20 -20
- package/style/gray.css +81 -59
- package/style/gray.css.map +1 -1
- package/style/gray.scss +20 -20
- package/style/light.css +81 -59
- package/style/light.css.map +1 -1
- package/style/light.scss +18 -18
package/lib/view/TabFloating.js
CHANGED
|
@@ -9,6 +9,14 @@ var I18nLabel_1 = require("../I18nLabel");
|
|
|
9
9
|
/** @hidden @internal */
|
|
10
10
|
var TabFloating = function (props) {
|
|
11
11
|
var layout = props.layout, selected = props.selected, node = props.node;
|
|
12
|
+
var showPopout = function () {
|
|
13
|
+
if (node.getWindow()) {
|
|
14
|
+
node.getWindow().focus();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var dockPopout = function () {
|
|
18
|
+
layout.doAction(Actions_1.default.unFloatTab(node.getId()));
|
|
19
|
+
};
|
|
12
20
|
var onMouseDown = function () {
|
|
13
21
|
var parent = node.getParent();
|
|
14
22
|
if (parent.getType() === TabSetNode_1.default.TYPE) {
|
|
@@ -19,13 +27,11 @@ var TabFloating = function (props) {
|
|
|
19
27
|
};
|
|
20
28
|
var onClickFocus = function (event) {
|
|
21
29
|
event.preventDefault();
|
|
22
|
-
|
|
23
|
-
node.getWindow().focus();
|
|
24
|
-
}
|
|
30
|
+
showPopout();
|
|
25
31
|
};
|
|
26
32
|
var onClickDock = function (event) {
|
|
27
33
|
event.preventDefault();
|
|
28
|
-
|
|
34
|
+
dockPopout();
|
|
29
35
|
};
|
|
30
36
|
var cm = layout.getClassName;
|
|
31
37
|
var style = node._styleWithPosition({
|
|
@@ -34,13 +40,19 @@ var TabFloating = function (props) {
|
|
|
34
40
|
var message = layout.i18nName(I18nLabel_1.I18nLabel.Floating_Window_Message);
|
|
35
41
|
var showMessage = layout.i18nName(I18nLabel_1.I18nLabel.Floating_Window_Show_Window);
|
|
36
42
|
var dockMessage = layout.i18nName(I18nLabel_1.I18nLabel.Floating_Window_Dock_Window);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
var customRenderCallback = layout.getOnRenderFloatingTabPlaceholder();
|
|
44
|
+
if (customRenderCallback) {
|
|
45
|
+
return (React.createElement("div", { className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_FLOATING), onMouseDown: onMouseDown, onTouchStart: onMouseDown, style: style }, customRenderCallback(dockPopout, showPopout)));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return (React.createElement("div", { className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_FLOATING), onMouseDown: onMouseDown, onTouchStart: onMouseDown, style: style },
|
|
49
|
+
React.createElement("div", { className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_FLOATING_INNER) },
|
|
50
|
+
React.createElement("div", null, message),
|
|
51
|
+
React.createElement("div", null,
|
|
52
|
+
React.createElement("a", { href: "#", onClick: onClickFocus }, showMessage)),
|
|
53
|
+
React.createElement("div", null,
|
|
54
|
+
React.createElement("a", { href: "#", onClick: onClickDock }, dockMessage)))));
|
|
55
|
+
}
|
|
44
56
|
};
|
|
45
57
|
exports.TabFloating = TabFloating;
|
|
46
58
|
//# sourceMappingURL=TabFloating.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabFloating.js","sourceRoot":"","sources":["../../src/view/TabFloating.tsx"],"names":[],"mappings":";;;AAAA,6BAA+B;AAC/B,4CAAuC;AAEvC,kDAA6C;AAC7C,kCAAmC;AAEnC,0CAAyC;AASzC,wBAAwB;AACjB,IAAM,WAAW,GAAG,UAAC,KAAwB;IACxC,IAAA,MAAM,GAAqB,KAAK,OAA1B,EAAE,QAAQ,GAAW,KAAK,SAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAW;IAEzC,IAAM,WAAW,GAAG;QAChB,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAgB,CAAC;QAC9C,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,oBAAU,CAAC,IAAI,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;gBACpB,MAAM,CAAC,QAAQ,CAAC,iBAAO,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC5D;SACJ;IACL,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAC,KAAsD;QACxE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,
|
|
1
|
+
{"version":3,"file":"TabFloating.js","sourceRoot":"","sources":["../../src/view/TabFloating.tsx"],"names":[],"mappings":";;;AAAA,6BAA+B;AAC/B,4CAAuC;AAEvC,kDAA6C;AAC7C,kCAAmC;AAEnC,0CAAyC;AASzC,wBAAwB;AACjB,IAAM,WAAW,GAAG,UAAC,KAAwB;IACxC,IAAA,MAAM,GAAqB,KAAK,OAA1B,EAAE,QAAQ,GAAW,KAAK,SAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAW;IAEzC,IAAM,UAAU,GAAG;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,SAAS,EAAG,CAAC,KAAK,EAAE,CAAC;SAC7B;IACL,CAAC,CAAA;IAED,IAAM,UAAU,GAAG;QACf,MAAM,CAAC,QAAQ,CAAC,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAA;IAED,IAAM,WAAW,GAAG;QAChB,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAgB,CAAC;QAC9C,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,oBAAU,CAAC,IAAI,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;gBACpB,MAAM,CAAC,QAAQ,CAAC,iBAAO,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC5D;SACJ;IACL,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAC,KAAsD;QACxE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,KAAsD;QACvE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,IAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;IAE/B,IAAM,KAAK,GAAwB,IAAI,CAAC,kBAAkB,CAAC;QACvD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;KACtC,CAAC,CAAC;IAEH,IAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,uBAAuB,CAAC,CAAC;IACnE,IAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,2BAA2B,CAAC,CAAC;IAC3E,IAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,2BAA2B,CAAC,CAAC;IAE3E,IAAM,oBAAoB,GAAG,MAAM,CAAC,iCAAiC,EAAE,CAAC;IACxE,IAAI,oBAAoB,EAAE;QACtB,OAAO,CACH,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,IAClH,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAC3C,CACT,CAAC;KACL;SAAM;QACH,OAAO,CACH,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK;YACnH,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,8BAA8B,CAAC;gBACtD,iCAAM,OAAO,CAAO;gBACpB;oBACI,2BAAG,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,YAAY,IAC5B,WAAW,CACZ,CACF;gBACN;oBACI,2BAAG,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,WAAW,IAC3B,WAAW,CACZ,CACF,CACJ,CACJ,CACT,CAAC;KACL;AACL,CAAC,CAAC;AApEW,QAAA,WAAW,eAoEtB"}
|
package/lib/view/TabSet.js
CHANGED
|
@@ -5,7 +5,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
|
5
5
|
return to;
|
|
6
6
|
};
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.TabSet = void 0;
|
|
8
|
+
exports.isAuxMouseEvent = exports.TabSet = void 0;
|
|
9
9
|
var React = require("react");
|
|
10
10
|
var I18nLabel_1 = require("../I18nLabel");
|
|
11
11
|
var Actions_1 = require("../model/Actions");
|
|
@@ -22,43 +22,57 @@ var TabSet = function (props) {
|
|
|
22
22
|
var tabbarInnerRef = React.useRef(null);
|
|
23
23
|
var stickyButtonsRef = React.useRef(null);
|
|
24
24
|
var _a = TabOverflowHook_1.useTabOverflow(node, Orientation_1.default.HORZ, toolbarRef, stickyButtonsRef), selfRef = _a.selfRef, position = _a.position, userControlledLeft = _a.userControlledLeft, hiddenTabs = _a.hiddenTabs, onMouseWheel = _a.onMouseWheel, tabsTruncated = _a.tabsTruncated;
|
|
25
|
-
var onOverflowClick = function () {
|
|
25
|
+
var onOverflowClick = function (event) {
|
|
26
26
|
var element = overflowbuttonRef.current;
|
|
27
27
|
PopupMenu_1.showPopup(layout.getRootDiv(), element, hiddenTabs, onOverflowItemSelect, layout.getClassName);
|
|
28
|
+
event.stopPropagation();
|
|
28
29
|
};
|
|
29
30
|
var onOverflowItemSelect = function (item) {
|
|
30
31
|
layout.doAction(Actions_1.default.selectTab(item.node.getId()));
|
|
31
32
|
userControlledLeft.current = false;
|
|
32
33
|
};
|
|
33
34
|
var onMouseDown = function (event) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
if (!isAuxMouseEvent(event)) {
|
|
36
|
+
var name_1 = node.getName();
|
|
37
|
+
if (name_1 === undefined) {
|
|
38
|
+
name_1 = "";
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
name_1 = ": " + name_1;
|
|
42
|
+
}
|
|
43
|
+
layout.doAction(Actions_1.default.setActiveTabset(node.getId()));
|
|
44
|
+
if (!layout.getEditingTab()) {
|
|
45
|
+
var message = layout.i18nName(I18nLabel_1.I18nLabel.Move_Tabset, name_1);
|
|
46
|
+
layout.dragStart(event, message, node, node.isEnableDrag(), function (event2) { return undefined; }, onDoubleClick);
|
|
47
|
+
}
|
|
40
48
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
layout.
|
|
49
|
+
};
|
|
50
|
+
var onAuxMouseClick = function (event) {
|
|
51
|
+
if (isAuxMouseEvent(event)) {
|
|
52
|
+
layout.auxMouseClick(node, event);
|
|
45
53
|
}
|
|
46
54
|
};
|
|
55
|
+
var onContextMenu = function (event) {
|
|
56
|
+
layout.showContextMenu(node, event);
|
|
57
|
+
};
|
|
47
58
|
var onInterceptMouseDown = function (event) {
|
|
48
59
|
event.stopPropagation();
|
|
49
60
|
};
|
|
50
|
-
var onMaximizeToggle = function () {
|
|
61
|
+
var onMaximizeToggle = function (event) {
|
|
51
62
|
if (node.canMaximize()) {
|
|
52
63
|
layout.maximize(node);
|
|
53
64
|
}
|
|
65
|
+
event.stopPropagation();
|
|
54
66
|
};
|
|
55
|
-
var onClose = function () {
|
|
67
|
+
var onClose = function (event) {
|
|
56
68
|
layout.doAction(Actions_1.default.deleteTabset(node.getId()));
|
|
69
|
+
event.stopPropagation();
|
|
57
70
|
};
|
|
58
|
-
var onFloatTab = function () {
|
|
71
|
+
var onFloatTab = function (event) {
|
|
59
72
|
if (selectedTabNode !== undefined) {
|
|
60
73
|
layout.doAction(Actions_1.default.floatTab(selectedTabNode.getId()));
|
|
61
74
|
}
|
|
75
|
+
event.stopPropagation();
|
|
62
76
|
};
|
|
63
77
|
var onDoubleClick = function (event) {
|
|
64
78
|
if (node.canMaximize()) {
|
|
@@ -151,7 +165,7 @@ var TabSet = function (props) {
|
|
|
151
165
|
if (node.getClassNameHeader() !== undefined) {
|
|
152
166
|
tabHeaderClasses += " " + node.getClassNameHeader();
|
|
153
167
|
}
|
|
154
|
-
header = (React.createElement("div", { className: tabHeaderClasses, style: { height: node.getHeaderHeight() + "px" }, onMouseDown: onMouseDown, onTouchStart: onMouseDown },
|
|
168
|
+
header = (React.createElement("div", { className: tabHeaderClasses, style: { height: node.getHeaderHeight() + "px" }, onMouseDown: onMouseDown, onContextMenu: onContextMenu, onClick: onAuxMouseClick, onAuxClick: onAuxMouseClick, onTouchStart: onMouseDown },
|
|
155
169
|
React.createElement("div", { className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_HEADER_CONTENT) }, headerContent),
|
|
156
170
|
headerToolbar));
|
|
157
171
|
}
|
|
@@ -163,14 +177,25 @@ var TabSet = function (props) {
|
|
|
163
177
|
else {
|
|
164
178
|
tabStripStyle["bottom"] = "0px";
|
|
165
179
|
}
|
|
166
|
-
tabStrip = (React.createElement("div", { className: tabStripClasses, style: tabStripStyle, onMouseDown: onMouseDown, onTouchStart: onMouseDown },
|
|
180
|
+
tabStrip = (React.createElement("div", { className: tabStripClasses, style: tabStripStyle, onMouseDown: onMouseDown, onContextMenu: onContextMenu, onClick: onAuxMouseClick, onAuxClick: onAuxMouseClick, onTouchStart: onMouseDown },
|
|
167
181
|
React.createElement("div", { ref: tabbarInnerRef, className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER_ + node.getTabLocation()) },
|
|
168
182
|
React.createElement("div", { style: { left: position }, className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER_ + node.getTabLocation()) }, tabs)),
|
|
169
183
|
toolbar));
|
|
170
184
|
style = layout.styleFont(style);
|
|
171
|
-
return (React.createElement("div", { ref: selfRef, style: style, className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET), onWheel: onMouseWheel },
|
|
185
|
+
return (React.createElement("div", { ref: selfRef, dir: "ltr", style: style, className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET), onWheel: onMouseWheel },
|
|
172
186
|
header,
|
|
173
187
|
tabStrip));
|
|
174
188
|
};
|
|
175
189
|
exports.TabSet = TabSet;
|
|
190
|
+
/** @hidden @internal */
|
|
191
|
+
function isAuxMouseEvent(event) {
|
|
192
|
+
var auxEvent = false;
|
|
193
|
+
if (event.nativeEvent instanceof MouseEvent) {
|
|
194
|
+
if (event.nativeEvent.button !== 0 || event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {
|
|
195
|
+
auxEvent = true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return auxEvent;
|
|
199
|
+
}
|
|
200
|
+
exports.isAuxMouseEvent = isAuxMouseEvent;
|
|
176
201
|
//# sourceMappingURL=TabSet.js.map
|
package/lib/view/TabSet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabSet.js","sourceRoot":"","sources":["../../src/view/TabSet.tsx"],"names":[],"mappings":";;;;;;;;AAAA,6BAA+B;AAC/B,0CAAyC;AACzC,4CAAuC;AAGvC,0CAAyC;AAEzC,yCAAwC;AACxC,qDAAmD;AACnD,8CAAyC;AACzC,kCAAmC;AAYnC,wBAAwB;AACjB,IAAM,MAAM,GAAG,UAAC,KAAmB;IAC9B,IAAA,IAAI,GAA+C,KAAK,KAApD,EAAE,MAAM,GAAuC,KAAK,OAA5C,EAAE,WAAW,GAA0B,KAAK,YAA/B,EAAE,YAAY,GAAY,KAAK,aAAjB,EAAE,KAAK,GAAK,KAAK,MAAV,CAAW;IAEjE,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC7D,IAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAA2B,IAAI,CAAC,CAAC;IACvE,IAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IACjE,IAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IAE7D,IAAA,KAAqF,gCAAc,CAAC,IAAI,EAAE,qBAAW,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAvJ,OAAO,aAAA,EAAE,QAAQ,cAAA,EAAE,kBAAkB,wBAAA,EAAE,UAAU,gBAAA,EAAE,YAAY,kBAAA,EAAE,aAAa,mBAAyE,CAAC;IAEhK,IAAM,eAAe,GAAG;
|
|
1
|
+
{"version":3,"file":"TabSet.js","sourceRoot":"","sources":["../../src/view/TabSet.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/PopupMenu.tsx
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import * as ReactDOM from "react-dom";
|
|
3
|
+
import { DragDrop } from ".";
|
|
3
4
|
import TabNode from "./model/TabNode";
|
|
5
|
+
import { CLASSES } from "./Types";
|
|
4
6
|
|
|
5
7
|
/** @hidden @internal */
|
|
6
8
|
export function showPopup(
|
|
@@ -15,7 +17,7 @@ export function showPopup(
|
|
|
15
17
|
const layoutRect = layoutDiv.getBoundingClientRect();
|
|
16
18
|
|
|
17
19
|
const elm = currentDocument.createElement("div");
|
|
18
|
-
elm.className = classNameMapper(
|
|
20
|
+
elm.className = classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU_CONTAINER);
|
|
19
21
|
if (triggerRect.left < layoutRect.left + layoutRect.width / 2) {
|
|
20
22
|
elm.style.left = triggerRect.left - layoutRect.left + "px";
|
|
21
23
|
} else {
|
|
@@ -27,27 +29,37 @@ export function showPopup(
|
|
|
27
29
|
} else {
|
|
28
30
|
elm.style.bottom = layoutRect.bottom - triggerRect.bottom + "px";
|
|
29
31
|
}
|
|
32
|
+
DragDrop.instance.addGlass(() => onHide());
|
|
33
|
+
DragDrop.instance.setGlassCursorOverride("default");
|
|
34
|
+
|
|
30
35
|
layoutDiv.appendChild(elm);
|
|
31
36
|
|
|
32
37
|
const onHide = () => {
|
|
38
|
+
DragDrop.instance.hideGlass();
|
|
33
39
|
layoutDiv.removeChild(elm);
|
|
34
40
|
ReactDOM.unmountComponentAtNode(elm);
|
|
35
|
-
elm.removeEventListener("
|
|
36
|
-
currentDocument.removeEventListener("
|
|
41
|
+
elm.removeEventListener("mousedown", onElementMouseDown);
|
|
42
|
+
currentDocument.removeEventListener("mousedown", onDocMouseDown);
|
|
37
43
|
};
|
|
38
44
|
|
|
39
|
-
const
|
|
45
|
+
const onElementMouseDown = (event: Event) => {
|
|
40
46
|
event.stopPropagation();
|
|
41
47
|
};
|
|
42
48
|
|
|
43
|
-
const
|
|
49
|
+
const onDocMouseDown = (event: Event) => {
|
|
44
50
|
onHide();
|
|
45
51
|
};
|
|
46
52
|
|
|
47
|
-
elm.addEventListener("
|
|
48
|
-
currentDocument.addEventListener("
|
|
53
|
+
elm.addEventListener("mousedown", onElementMouseDown);
|
|
54
|
+
currentDocument.addEventListener("mousedown", onDocMouseDown);
|
|
49
55
|
|
|
50
|
-
ReactDOM.render(<PopupMenu
|
|
56
|
+
ReactDOM.render(<PopupMenu
|
|
57
|
+
currentDocument={currentDocument}
|
|
58
|
+
onSelect={onSelect}
|
|
59
|
+
onHide={onHide}
|
|
60
|
+
items={items}
|
|
61
|
+
classNameMapper={classNameMapper}
|
|
62
|
+
/>, elm);
|
|
51
63
|
}
|
|
52
64
|
|
|
53
65
|
/** @hidden @internal */
|
|
@@ -70,10 +82,16 @@ const PopupMenu = (props: IPopupMenuProps) => {
|
|
|
70
82
|
};
|
|
71
83
|
|
|
72
84
|
const itemElements = items.map((item) => (
|
|
73
|
-
<div key={item.index}
|
|
85
|
+
<div key={item.index}
|
|
86
|
+
className={classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU_ITEM)}
|
|
87
|
+
onClick={(event) => onItemClick(item, event)}
|
|
88
|
+
title={item.node.getHelpText()}>
|
|
74
89
|
{item.node._getRenderedName()}
|
|
75
90
|
</div>
|
|
76
91
|
));
|
|
77
92
|
|
|
78
|
-
return
|
|
93
|
+
return (
|
|
94
|
+
<div className={classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU)}>
|
|
95
|
+
{itemElements}
|
|
96
|
+
</div>);
|
|
79
97
|
};
|
package/src/Types.ts
CHANGED
|
@@ -9,6 +9,8 @@ export enum CLASSES {
|
|
|
9
9
|
FLEXLAYOUT__BORDER_BUTTON_TRAILING = "flexlayout__border_button_trailing",
|
|
10
10
|
FLEXLAYOUT__BORDER_BUTTON__SELECTED = "flexlayout__border_button--selected",
|
|
11
11
|
FLEXLAYOUT__BORDER_BUTTON__UNSELECTED = "flexlayout__border_button--unselected",
|
|
12
|
+
FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW = "flexlayout__border_toolbar_button_overflow",
|
|
13
|
+
FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW_ = "flexlayout__border_toolbar_button_overflow_",
|
|
12
14
|
|
|
13
15
|
FLEXLAYOUT__BORDER_INNER = "flexlayout__border_inner",
|
|
14
16
|
FLEXLAYOUT__BORDER_INNER_ = "flexlayout__border_inner_",
|
|
@@ -34,6 +36,7 @@ export enum CLASSES {
|
|
|
34
36
|
FLEXLAYOUT__LAYOUT = "flexlayout__layout",
|
|
35
37
|
|
|
36
38
|
FLEXLAYOUT__OUTLINE_RECT = "flexlayout__outline_rect",
|
|
39
|
+
FLEXLAYOUT__OUTLINE_RECT_EDGE = "flexlayout__outline_rect_edge",
|
|
37
40
|
|
|
38
41
|
FLEXLAYOUT__SPLITTER = "flexlayout__splitter",
|
|
39
42
|
FLEXLAYOUT__SPLITTER_EXTRA = "flexlayout__splitter_extra",
|
|
@@ -78,4 +81,7 @@ export enum CLASSES {
|
|
|
78
81
|
FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER = "flexlayout__tab_toolbar_sticky_buttons_container",
|
|
79
82
|
FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE = "flexlayout__tab_toolbar_button-close",
|
|
80
83
|
|
|
84
|
+
FLEXLAYOUT__POPUP_MENU_CONTAINER = "flexlayout__popup_menu_container",
|
|
85
|
+
FLEXLAYOUT__POPUP_MENU_ITEM = "flexlayout__popup_menu_item",
|
|
86
|
+
FLEXLAYOUT__POPUP_MENU = "flexlayout__popup_menu",
|
|
81
87
|
}
|
package/src/model/BorderNode.ts
CHANGED
|
@@ -4,6 +4,7 @@ import DockLocation from "../DockLocation";
|
|
|
4
4
|
import DropInfo from "../DropInfo";
|
|
5
5
|
import Orientation from "../Orientation";
|
|
6
6
|
import Rect from "../Rect";
|
|
7
|
+
import { CLASSES } from "../Types";
|
|
7
8
|
import IDraggable from "./IDraggable";
|
|
8
9
|
import IDropTarget from "./IDropTarget";
|
|
9
10
|
import { IJsonBorderNode } from "./IJsonModel";
|
|
@@ -309,18 +310,18 @@ class BorderNode extends Node implements IDropTarget {
|
|
|
309
310
|
childCenter = childRect.x + childRect.width / 2;
|
|
310
311
|
if (x >= pos && x < childCenter) {
|
|
311
312
|
const outlineRect = new Rect(childRect.x - 2, childY, 3, childHeight);
|
|
312
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, i,
|
|
313
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, i, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
313
314
|
break;
|
|
314
315
|
}
|
|
315
316
|
pos = childCenter;
|
|
316
317
|
}
|
|
317
318
|
if (dropInfo == null) {
|
|
318
319
|
const outlineRect = new Rect(childRect.getRight() - 2, childY, 3, childHeight);
|
|
319
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, this._children.length,
|
|
320
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, this._children.length, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
320
321
|
}
|
|
321
322
|
} else {
|
|
322
323
|
const outlineRect = new Rect(this._tabHeaderRect!.x + 1, this._tabHeaderRect!.y + 2, 3, 18);
|
|
323
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, 0,
|
|
324
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, 0, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
324
325
|
}
|
|
325
326
|
} else {
|
|
326
327
|
if (this._children.length > 0) {
|
|
@@ -337,18 +338,18 @@ class BorderNode extends Node implements IDropTarget {
|
|
|
337
338
|
childCenter = childRect.y + childRect.height / 2;
|
|
338
339
|
if (y >= pos && y < childCenter) {
|
|
339
340
|
const outlineRect = new Rect(childX, childRect.y - 2, childWidth, 3);
|
|
340
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, i,
|
|
341
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, i, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
341
342
|
break;
|
|
342
343
|
}
|
|
343
344
|
pos = childCenter;
|
|
344
345
|
}
|
|
345
346
|
if (dropInfo == null) {
|
|
346
347
|
const outlineRect = new Rect(childX, childRect.getBottom() - 2, childWidth, 3);
|
|
347
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, this._children.length,
|
|
348
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, this._children.length, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
348
349
|
}
|
|
349
350
|
} else {
|
|
350
351
|
const outlineRect = new Rect(this._tabHeaderRect!.x + 2, this._tabHeaderRect!.y + 1, 18, 3);
|
|
351
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, 0,
|
|
352
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, 0, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
352
353
|
}
|
|
353
354
|
}
|
|
354
355
|
if (!dragNode._canDockInto(dragNode, dropInfo)) {
|
|
@@ -356,7 +357,7 @@ class BorderNode extends Node implements IDropTarget {
|
|
|
356
357
|
}
|
|
357
358
|
} else if (this.getSelected() !== -1 && this._contentRect!.contains(x, y)) {
|
|
358
359
|
const outlineRect = this._contentRect;
|
|
359
|
-
dropInfo = new DropInfo(this, outlineRect!, dockLocation, -1,
|
|
360
|
+
dropInfo = new DropInfo(this, outlineRect!, dockLocation, -1, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
360
361
|
if (!dragNode._canDockInto(dragNode, dropInfo)) {
|
|
361
362
|
return undefined;
|
|
362
363
|
}
|
package/src/model/Model.ts
CHANGED
|
@@ -281,13 +281,17 @@ class Model {
|
|
|
281
281
|
const node = this._idMap[action.data.node];
|
|
282
282
|
|
|
283
283
|
if (node instanceof TabSetNode) {
|
|
284
|
-
// first delete all child tabs
|
|
284
|
+
// first delete all child tabs that are closeable
|
|
285
285
|
const children = [...node.getChildren()];
|
|
286
286
|
children.forEach((child, i) => {
|
|
287
|
-
(child as TabNode).
|
|
287
|
+
if ((child as TabNode).isEnableClose()) {
|
|
288
|
+
(child as TabNode)._delete();
|
|
289
|
+
}
|
|
288
290
|
});
|
|
289
291
|
|
|
290
|
-
node.
|
|
292
|
+
if (node.getChildren().length === 0) {
|
|
293
|
+
node._delete();
|
|
294
|
+
}
|
|
291
295
|
this._tidy();
|
|
292
296
|
}
|
|
293
297
|
break;
|
package/src/model/RowNode.ts
CHANGED
|
@@ -5,6 +5,7 @@ import DockLocation from "../DockLocation";
|
|
|
5
5
|
import DropInfo from "../DropInfo";
|
|
6
6
|
import Orientation from "../Orientation";
|
|
7
7
|
import Rect from "../Rect";
|
|
8
|
+
import { CLASSES } from "../Types";
|
|
8
9
|
import BorderNode from "./BorderNode";
|
|
9
10
|
import IDraggable from "./IDraggable";
|
|
10
11
|
import IDropTarget from "./IDropTarget";
|
|
@@ -381,7 +382,9 @@ class RowNode extends Node implements IDropTarget {
|
|
|
381
382
|
// add tabset into empty root
|
|
382
383
|
if (this === this._model.getRoot() && this._children.length === 0) {
|
|
383
384
|
const callback = this._model._getOnCreateTabSet();
|
|
384
|
-
|
|
385
|
+
let attrs = callback ? callback() : {};
|
|
386
|
+
attrs = {...attrs, selected: -1};
|
|
387
|
+
const child = new TabSetNode(this._model, attrs);
|
|
385
388
|
this._model._setActiveTabset(child);
|
|
386
389
|
this._addChild(child);
|
|
387
390
|
}
|
|
@@ -404,24 +407,24 @@ class RowNode extends Node implements IDropTarget {
|
|
|
404
407
|
const dockLocation = DockLocation.LEFT;
|
|
405
408
|
const outlineRect = dockLocation.getDockRect(this._rect);
|
|
406
409
|
outlineRect.width = outlineRect.width / 2;
|
|
407
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1,
|
|
410
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1, CLASSES.FLEXLAYOUT__OUTLINE_RECT_EDGE);
|
|
408
411
|
} else if (x > this._rect.getRight() - margin && yy > h / 2 - half && yy < h / 2 + half) {
|
|
409
412
|
const dockLocation = DockLocation.RIGHT;
|
|
410
413
|
const outlineRect = dockLocation.getDockRect(this._rect);
|
|
411
414
|
outlineRect.width = outlineRect.width / 2;
|
|
412
415
|
outlineRect.x += outlineRect.width;
|
|
413
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1,
|
|
416
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1, CLASSES.FLEXLAYOUT__OUTLINE_RECT_EDGE);
|
|
414
417
|
} else if (y < this._rect.y + margin && xx > w / 2 - half && xx < w / 2 + half) {
|
|
415
418
|
const dockLocation = DockLocation.TOP;
|
|
416
419
|
const outlineRect = dockLocation.getDockRect(this._rect);
|
|
417
420
|
outlineRect.height = outlineRect.height / 2;
|
|
418
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1,
|
|
421
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1, CLASSES.FLEXLAYOUT__OUTLINE_RECT_EDGE);
|
|
419
422
|
} else if (y > this._rect.getBottom() - margin && xx > w / 2 - half && xx < w / 2 + half) {
|
|
420
423
|
const dockLocation = DockLocation.BOTTOM;
|
|
421
424
|
const outlineRect = dockLocation.getDockRect(this._rect);
|
|
422
425
|
outlineRect.height = outlineRect.height / 2;
|
|
423
426
|
outlineRect.y += outlineRect.height;
|
|
424
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1,
|
|
427
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1, CLASSES.FLEXLAYOUT__OUTLINE_RECT_EDGE);
|
|
425
428
|
}
|
|
426
429
|
|
|
427
430
|
if (dropInfo !== undefined) {
|
package/src/model/TabSetNode.ts
CHANGED
|
@@ -4,6 +4,7 @@ import DockLocation from "../DockLocation";
|
|
|
4
4
|
import DropInfo from "../DropInfo";
|
|
5
5
|
import Orientation from "../Orientation";
|
|
6
6
|
import Rect from "../Rect";
|
|
7
|
+
import { CLASSES } from "../Types";
|
|
7
8
|
import BorderNode from "./BorderNode";
|
|
8
9
|
import IDraggable from "./IDraggable";
|
|
9
10
|
import IDropTarget from "./IDropTarget";
|
|
@@ -27,6 +28,9 @@ class TabSetNode extends Node implements IDraggable, IDropTarget {
|
|
|
27
28
|
newLayoutNode._addChild(child);
|
|
28
29
|
});
|
|
29
30
|
}
|
|
31
|
+
if (newLayoutNode._children.length === 0) {
|
|
32
|
+
newLayoutNode._setSelected(-1);
|
|
33
|
+
}
|
|
30
34
|
|
|
31
35
|
if (json.maximized && json.maximized === true) {
|
|
32
36
|
model._setMaximizedTabset(newLayoutNode);
|
|
@@ -268,11 +272,11 @@ class TabSetNode extends Node implements IDraggable, IDropTarget {
|
|
|
268
272
|
if (dragNode === this) {
|
|
269
273
|
const dockLocation = DockLocation.CENTER;
|
|
270
274
|
const outlineRect = this._tabHeaderRect;
|
|
271
|
-
dropInfo = new DropInfo(this, outlineRect!, dockLocation, -1,
|
|
275
|
+
dropInfo = new DropInfo(this, outlineRect!, dockLocation, -1, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
272
276
|
} else if (this._contentRect!.contains(x, y)) {
|
|
273
277
|
const dockLocation = DockLocation.getLocation(this._contentRect!, x, y);
|
|
274
278
|
const outlineRect = dockLocation.getDockRect(this._rect);
|
|
275
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1,
|
|
279
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, -1, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
276
280
|
} else if (this._tabHeaderRect != null && this._tabHeaderRect.contains(x, y)) {
|
|
277
281
|
let r: Rect;
|
|
278
282
|
let yy: number;
|
|
@@ -296,7 +300,7 @@ class TabSetNode extends Node implements IDraggable, IDropTarget {
|
|
|
296
300
|
if (x >= p && x < childCenter) {
|
|
297
301
|
const dockLocation = DockLocation.CENTER;
|
|
298
302
|
const outlineRect = new Rect(r.x - 2, yy, 3, h);
|
|
299
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, i,
|
|
303
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, i, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
300
304
|
break;
|
|
301
305
|
}
|
|
302
306
|
p = childCenter;
|
|
@@ -305,7 +309,7 @@ class TabSetNode extends Node implements IDraggable, IDropTarget {
|
|
|
305
309
|
if (dropInfo == null) {
|
|
306
310
|
const dockLocation = DockLocation.CENTER;
|
|
307
311
|
const outlineRect = new Rect(r.getRight() - 2, yy, 3, h);
|
|
308
|
-
dropInfo = new DropInfo(this, outlineRect, dockLocation, this._children.length,
|
|
312
|
+
dropInfo = new DropInfo(this, outlineRect, dockLocation, this._children.length, CLASSES.FLEXLAYOUT__OUTLINE_RECT);
|
|
309
313
|
}
|
|
310
314
|
}
|
|
311
315
|
|
|
@@ -6,6 +6,7 @@ import Rect from "../Rect";
|
|
|
6
6
|
import { IIcons, ILayoutCallbacks, ITitleObject } from "./Layout";
|
|
7
7
|
import { ICloseType } from "../model/ICloseType";
|
|
8
8
|
import { CLASSES } from "../Types";
|
|
9
|
+
import { isAuxMouseEvent } from "./TabSet";
|
|
9
10
|
|
|
10
11
|
/** @hidden @internal */
|
|
11
12
|
export interface IBorderButtonProps {
|
|
@@ -24,8 +25,20 @@ export const BorderButton = (props: IBorderButtonProps) => {
|
|
|
24
25
|
const selfRef = React.useRef<HTMLDivElement | null>(null);
|
|
25
26
|
|
|
26
27
|
const onMouseDown = (event: React.MouseEvent<HTMLDivElement, MouseEvent> | React.TouchEvent<HTMLDivElement>) => {
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
if (!isAuxMouseEvent(event)) {
|
|
29
|
+
const message = layout.i18nName(I18nLabel.Move_Tab, node.getName());
|
|
30
|
+
props.layout.dragStart(event, message, node, node.isEnableDrag(), onClick, (event2: Event) => undefined);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const onAuxMouseClick = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
|
|
35
|
+
if (isAuxMouseEvent(event)) {
|
|
36
|
+
layout.auxMouseClick(node, event);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const onContextMenu = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
|
|
41
|
+
layout.showContextMenu(node, event);
|
|
29
42
|
};
|
|
30
43
|
|
|
31
44
|
const onClick = () => {
|
|
@@ -129,7 +142,13 @@ export const BorderButton = (props: IBorderButtonProps) => {
|
|
|
129
142
|
}
|
|
130
143
|
|
|
131
144
|
return (
|
|
132
|
-
<div ref={selfRef} style={{}} className={classNames}
|
|
145
|
+
<div ref={selfRef} style={{}} className={classNames}
|
|
146
|
+
onMouseDown={onMouseDown}
|
|
147
|
+
onClick={onAuxMouseClick}
|
|
148
|
+
onAuxClick={onAuxMouseClick}
|
|
149
|
+
onContextMenu={onContextMenu}
|
|
150
|
+
onTouchStart={onMouseDown}
|
|
151
|
+
title={node.getHelpText()}>
|
|
133
152
|
{leading}
|
|
134
153
|
{content}
|
|
135
154
|
{buttons}
|