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.
Files changed (39) hide show
  1. package/lib/css/dock-manager.css +10 -0
  2. package/lib/es5/dock-spawn-ts.js +1 -1
  3. package/lib/js/Dialog.d.ts +2 -1
  4. package/lib/js/Dialog.js +12 -2
  5. package/lib/js/Dialog.js.map +1 -1
  6. package/lib/js/DockManager.d.ts +1 -1
  7. package/lib/js/DockManager.js +4 -4
  8. package/lib/js/DockManager.js.map +1 -1
  9. package/lib/js/DockWheel.js +5 -3
  10. package/lib/js/DockWheel.js.map +1 -1
  11. package/lib/js/PanelContainer.d.ts +2 -0
  12. package/lib/js/PanelContainer.js +11 -0
  13. package/lib/js/PanelContainer.js.map +1 -1
  14. package/lib/js/SplitterPanel.js +2 -2
  15. package/lib/js/SplitterPanel.js.map +1 -1
  16. package/lib/js/TabHandle.js +231 -235
  17. package/lib/js/TabHandle.js.map +1 -1
  18. package/lib/js/Utils.js +58 -62
  19. package/lib/js/Utils.js.map +1 -1
  20. package/lib/js/interfaces/IDockContainer.js +1 -0
  21. package/lib/js/interfaces/IDockContainerWithSize.js +1 -0
  22. package/lib/js/interfaces/ILayoutEventListener.js +1 -0
  23. package/lib/js/interfaces/IMouseOrTouchEvent.js +1 -0
  24. package/lib/js/interfaces/INodeInfo.js +1 -0
  25. package/lib/js/interfaces/IPanelInfo.js +1 -0
  26. package/lib/js/interfaces/IRectangle.js +1 -0
  27. package/lib/js/interfaces/ISize.js +1 -0
  28. package/lib/js/interfaces/IState.js +1 -0
  29. package/lib/js/interfaces/IThickness.js +1 -0
  30. package/lib/js/webcomponent/DockSpawnTsWebcomponent.d.ts +1 -0
  31. package/lib/js/webcomponent/DockSpawnTsWebcomponent.js +142 -144
  32. package/lib/js/webcomponent/DockSpawnTsWebcomponent.js.map +1 -1
  33. package/package.json +10 -10
  34. package/src/Dialog.ts +16 -3
  35. package/src/DockManager.ts +4 -4
  36. package/src/DockWheel.ts +5 -3
  37. package/src/PanelContainer.ts +13 -0
  38. package/src/SplitterPanel.ts +2 -2
  39. package/src/webcomponent/DockSpawnTsWebcomponent.ts +6 -3
@@ -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
- this.elementMainWheel.style.left = baseX + 'px';
79
- this.elementMainWheel.style.top = baseY + 'px';
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);
@@ -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');
@@ -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: Map<HTMLSlotElement, HTMLElement>;
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 Map();
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