dock-spawn-ts 2.200.0 → 2.240.0
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/lib/css/dock-manager.css +10 -0
- package/lib/es5/dock-spawn-ts.js +1 -1
- package/lib/js/Dialog.d.ts +2 -1
- package/lib/js/Dialog.js +12 -2
- package/lib/js/Dialog.js.map +1 -1
- package/lib/js/DockManager.d.ts +1 -1
- package/lib/js/DockManager.js +4 -4
- package/lib/js/DockManager.js.map +1 -1
- package/lib/js/DockWheel.js +5 -3
- package/lib/js/DockWheel.js.map +1 -1
- package/lib/js/PanelContainer.d.ts +2 -0
- package/lib/js/PanelContainer.js +11 -0
- package/lib/js/PanelContainer.js.map +1 -1
- package/lib/js/SplitterPanel.js +2 -2
- package/lib/js/SplitterPanel.js.map +1 -1
- package/lib/js/TabHandle.js +231 -235
- package/lib/js/TabHandle.js.map +1 -1
- package/lib/js/Utils.js +58 -62
- package/lib/js/Utils.js.map +1 -1
- package/lib/js/interfaces/IDockContainer.js +1 -0
- package/lib/js/interfaces/IDockContainerWithSize.js +1 -0
- package/lib/js/interfaces/ILayoutEventListener.js +1 -0
- package/lib/js/interfaces/IMouseOrTouchEvent.js +1 -0
- package/lib/js/interfaces/INodeInfo.js +1 -0
- package/lib/js/interfaces/IPanelInfo.js +1 -0
- package/lib/js/interfaces/IRectangle.js +1 -0
- package/lib/js/interfaces/ISize.js +1 -0
- package/lib/js/interfaces/IState.js +1 -0
- package/lib/js/interfaces/IThickness.js +1 -0
- package/lib/js/webcomponent/DockSpawnTsWebcomponent.d.ts +1 -0
- package/lib/js/webcomponent/DockSpawnTsWebcomponent.js +142 -144
- package/lib/js/webcomponent/DockSpawnTsWebcomponent.js.map +1 -1
- package/package.json +10 -10
- package/src/Dialog.ts +16 -3
- package/src/DockManager.ts +4 -4
- package/src/DockWheel.ts +5 -3
- package/src/PanelContainer.ts +13 -0
- package/src/SplitterPanel.ts +2 -2
- package/src/webcomponent/DockSpawnTsWebcomponent.ts +6 -3
package/src/DockManager.ts
CHANGED
|
@@ -355,7 +355,7 @@ export class DockManager {
|
|
|
355
355
|
return this._requestDockContainer(referenceNode, container, this.layoutEngine.dockFill.bind(this.layoutEngine), false);
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
floatDialog(container: PanelContainer, x: number, y: number) {
|
|
358
|
+
floatDialog(container: PanelContainer, x: number, y: number, grayoutParent: PanelContainer) {
|
|
359
359
|
let retdiag = undefined;
|
|
360
360
|
|
|
361
361
|
//check the dialog do not already exist
|
|
@@ -377,7 +377,7 @@ export class DockManager {
|
|
|
377
377
|
let panel = container;
|
|
378
378
|
Utils.removeNode(panel.elementPanel);
|
|
379
379
|
panel.isDialog = true;
|
|
380
|
-
let dialog = new Dialog(panel, this);
|
|
380
|
+
let dialog = new Dialog(panel, this, grayoutParent);
|
|
381
381
|
dialog.setPosition(x, y);
|
|
382
382
|
return dialog;
|
|
383
383
|
}
|
|
@@ -463,7 +463,7 @@ export class DockManager {
|
|
|
463
463
|
panelContainer.elementPanel.style.display = 'block';
|
|
464
464
|
|
|
465
465
|
// Create a new dialog window for the undocked panel
|
|
466
|
-
let dialog = new Dialog(panelContainer, this);
|
|
466
|
+
let dialog = new Dialog(panelContainer, this, null);
|
|
467
467
|
|
|
468
468
|
if (event !== undefined) {
|
|
469
469
|
// Adjust the relative position
|
|
@@ -496,7 +496,7 @@ export class DockManager {
|
|
|
496
496
|
*/
|
|
497
497
|
openInDialog(container: PanelContainer, event, dragOffset: Point) {
|
|
498
498
|
// Create a new dialog window for the undocked panel
|
|
499
|
-
let dialog = new Dialog(container, this);
|
|
499
|
+
let dialog = new Dialog(container, this, null);
|
|
500
500
|
|
|
501
501
|
if (event !== undefined) {
|
|
502
502
|
// Adjust the relative position
|
package/src/DockWheel.ts
CHANGED
|
@@ -75,8 +75,10 @@ export class DockWheel {
|
|
|
75
75
|
let containerHeight = element.clientHeight;
|
|
76
76
|
let baseX = Math.floor(containerWidth / 2); // + element.offsetLeft;
|
|
77
77
|
let baseY = Math.floor(containerHeight / 2); // + element.offsetTop;
|
|
78
|
-
|
|
79
|
-
this.
|
|
78
|
+
let bcElement = element.getBoundingClientRect();
|
|
79
|
+
let bcdockManagerElement = this.dockManager.element.getBoundingClientRect()
|
|
80
|
+
this.elementMainWheel.style.left = (bcElement.left - bcdockManagerElement.left + baseX) + 'px';
|
|
81
|
+
this.elementMainWheel.style.top = (bcElement.top - bcdockManagerElement.top + baseY) + 'px';
|
|
80
82
|
|
|
81
83
|
// The positioning of the main dock wheel buttons is done automatically through CSS
|
|
82
84
|
// Dynamically calculate the positions of the buttons on the extreme sides of the dock manager
|
|
@@ -86,7 +88,7 @@ export class DockWheel {
|
|
|
86
88
|
|
|
87
89
|
Utils.removeNode(this.elementMainWheel);
|
|
88
90
|
Utils.removeNode(this.elementSideWheel);
|
|
89
|
-
element.appendChild(this.elementMainWheel);
|
|
91
|
+
this.dockManager.element.appendChild(this.elementMainWheel);
|
|
90
92
|
this.dockManager.element.appendChild(this.elementSideWheel);
|
|
91
93
|
|
|
92
94
|
this._setWheelButtonPosition(WheelTypes["left-s"], sideMargin, -dockManagerHeight / 2);
|
package/src/PanelContainer.ts
CHANGED
|
@@ -46,6 +46,7 @@ export class PanelContainer implements IDockContainerWithSize {
|
|
|
46
46
|
_cachedWidth: number;
|
|
47
47
|
_cachedHeight: number;
|
|
48
48
|
_hideCloseButton: boolean;
|
|
49
|
+
_grayOut: HTMLDivElement;
|
|
49
50
|
|
|
50
51
|
constructor(elementContent: HTMLElement, dockManager: DockManager, title?: string, panelType?: PanelType, hideCloseButton?: boolean) {
|
|
51
52
|
if (!title)
|
|
@@ -130,6 +131,18 @@ export class PanelContainer implements IDockContainerWithSize {
|
|
|
130
131
|
return this.elementPanel;
|
|
131
132
|
}
|
|
132
133
|
|
|
134
|
+
grayOut(show: boolean) {
|
|
135
|
+
if (!show && this._grayOut) {
|
|
136
|
+
this.elementPanel.removeChild(this._grayOut);
|
|
137
|
+
this._grayOut = null;
|
|
138
|
+
}
|
|
139
|
+
else if (show && !this._grayOut) {
|
|
140
|
+
this._grayOut = document.createElement('div');
|
|
141
|
+
this._grayOut.className = 'panel-grayout';
|
|
142
|
+
this.elementPanel.appendChild(this._grayOut);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
133
146
|
_initialize() {
|
|
134
147
|
this.name = Utils.getNextId('panel_');
|
|
135
148
|
this.elementPanel = document.createElement('div');
|
package/src/SplitterPanel.ts
CHANGED
|
@@ -188,9 +188,9 @@ export class SplitterPanel {
|
|
|
188
188
|
totalChildPanelSize += size;
|
|
189
189
|
});
|
|
190
190
|
|
|
191
|
+
const barRect = this.spiltterBars[0].barElement.getBoundingClientRect();
|
|
191
192
|
// Get the thickness of the bar
|
|
192
|
-
let barSize = this.stackedVertical ?
|
|
193
|
-
this.spiltterBars[0].barElement.clientHeight : this.spiltterBars[0].barElement.clientWidth;
|
|
193
|
+
let barSize = this.stackedVertical ? barRect.height : barRect.width;
|
|
194
194
|
|
|
195
195
|
// Find out how much space existing child containers will take after being resized (excluding the splitter bars)
|
|
196
196
|
let targetTotalChildPanelSize = this.stackedVertical ? height : width;
|
|
@@ -9,7 +9,7 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
9
9
|
public dockManager: DockManager;
|
|
10
10
|
private slotId: number = 0;
|
|
11
11
|
private windowResizedBound;
|
|
12
|
-
private slotElementMap:
|
|
12
|
+
private slotElementMap: WeakMap<HTMLSlotElement, HTMLElement>;
|
|
13
13
|
private observer: MutationObserver;
|
|
14
14
|
private initialized = false;
|
|
15
15
|
private elementContainerMap: Map<HTMLElement, PanelContainer> = new Map();
|
|
@@ -18,7 +18,7 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
18
18
|
super();
|
|
19
19
|
|
|
20
20
|
this.windowResizedBound = this.windowResized.bind(this);
|
|
21
|
-
this.slotElementMap = new
|
|
21
|
+
this.slotElementMap = new WeakMap();
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
private initDockspawn() {
|
|
@@ -45,6 +45,10 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
45
45
|
this.dockManager.config.dialogRootElement = dockSpawnDiv;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
public getElementInSlot(slot: HTMLSlotElement): HTMLElement {
|
|
49
|
+
return this.slotElementMap.get(slot);
|
|
50
|
+
}
|
|
51
|
+
|
|
48
52
|
private cssLoaded() {
|
|
49
53
|
setTimeout(() => {
|
|
50
54
|
this.dockManager.initialize();
|
|
@@ -54,7 +58,6 @@ export class DockSpawnTsWebcomponent extends HTMLElement {
|
|
|
54
58
|
let slot = dockNode.elementContent as any as HTMLSlotElement;
|
|
55
59
|
let element = this.slotElementMap.get(slot);
|
|
56
60
|
this.removeChild(element);
|
|
57
|
-
this.slotElementMap.delete(slot);
|
|
58
61
|
}
|
|
59
62
|
});
|
|
60
63
|
|