dock-spawn-ts 2.402.0 → 2.500.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.
@@ -1 +1 @@
1
- {"version":3,"file":"TabPage.js","sourceRoot":"","sources":["../../src/TabPage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TabPage.js","sourceRoot":"","sources":["../../src/TabPage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dock-spawn-ts",
3
- "version": "2.402.0",
3
+ "version": "2.500.0",
4
4
  "description": "DockSpawn Typescript Version",
5
5
  "license": "MIT",
6
6
  "author": "jochen.kuehner@gmx.de",
@@ -10,15 +10,15 @@
10
10
  "start": "http-server"
11
11
  },
12
12
  "devDependencies": {
13
- "@babel/cli": "^7.16.8",
14
- "@babel/core": "^7.16.12",
15
- "@babel/preset-env": "^7.16.11",
16
- "@types/node": "^17.0.10",
17
- "http-server": "^14.1.0",
18
- "typescript": "^4.5.5",
19
- "uglify-js": "^3.14.5",
20
- "webpack": "^5.67.0",
21
- "webpack-cli": "^4.9.2"
13
+ "@babel/cli": "^7.19.3",
14
+ "@babel/core": "^7.19.3",
15
+ "@babel/preset-env": "^7.19.4",
16
+ "@types/node": "^18.8.4",
17
+ "http-server": "^14.1.1",
18
+ "typescript": "^4.8.4",
19
+ "uglify-js": "^3.17.3",
20
+ "webpack": "^5.74.0",
21
+ "webpack-cli": "^4.10.0"
22
22
  },
23
23
  "main": "/lib/js/Exports.js",
24
24
  "files": [
package/src/Dialog.ts CHANGED
@@ -73,6 +73,7 @@ export class Dialog {
73
73
  this.position = new Point(x - rect.left, y - rect.top);
74
74
  this.elementDialog.style.left = (x - rect.left) + 'px';
75
75
  this.elementDialog.style.top = (y - rect.top) + 'px';
76
+ this.panel.setDialogPosition(x, y);
76
77
  this.dockManager.notifyOnChangeDialogPosition(this, x, y);
77
78
  }
78
79
 
@@ -91,7 +92,7 @@ export class Dialog {
91
92
 
92
93
  destroy() {
93
94
  this.panel.lastDialogSize = { width: this.resizable.width, height: this.resizable.height };
94
-
95
+
95
96
  if (this.focusHandler) {
96
97
  this.focusHandler.cancel();
97
98
  delete this.focusHandler;
@@ -132,12 +133,15 @@ export class Dialog {
132
133
  }
133
134
 
134
135
  bringToFront() {
135
- this.elementDialog.style.zIndex = <any>this.dockManager.zIndexDialogCounter++;
136
+ this._increaseZIndex();
137
+ this.elementDialog.style.zIndex = <any>this.dockManager.zIndexDialogCounter;
138
+ this.panel.elementContentContainer.style.zIndex = (parseInt(this.elementDialog.style.zIndex) + 1).toString();
136
139
  this.dockManager.activePanel = this.panel;
137
140
  }
138
141
 
139
142
  hide() {
140
143
  this.elementDialog.style.zIndex = '0';
144
+ this.panel.elementContentContainer.style.zIndex = this.elementDialog.style.zIndex;
141
145
  this.elementDialog.style.display = 'none';
142
146
  if (!this.isHidden) {
143
147
  this.isHidden = true;
@@ -160,11 +164,18 @@ export class Dialog {
160
164
  }
161
165
 
162
166
  show() {
163
- this.elementDialog.style.zIndex = <any>this.dockManager.zIndexDialogCounter++;
167
+ this._increaseZIndex();
168
+ this.elementDialog.style.zIndex = <any>this.dockManager.zIndexDialogCounter;
169
+ this.panel.elementContentContainer.style.zIndex = (parseInt(this.elementDialog.style.zIndex) + 1).toString();
164
170
  this.elementDialog.style.display = 'block';
165
171
  if (this.isHidden) {
166
172
  this.isHidden = false;
167
173
  this.dockManager.notifyOnShowDialog(this);
168
174
  }
169
175
  }
176
+
177
+ private _increaseZIndex(){
178
+ // Increase by two, so the content can lay on top of the dialog
179
+ this.dockManager.zIndexDialogCounter += 2;
180
+ }
170
181
  }
@@ -201,6 +201,17 @@ export class DockManager {
201
201
  this.element.style.width = width + 'px';
202
202
  this.element.style.height = height + 'px';
203
203
  this.context.model.rootNode.container.resize(width, height);
204
+
205
+ let offsetX = 0, offsetY = 0;
206
+ for (let dialog of this.context.model.dialogs){
207
+ if(dialog.position.x > this.element.clientWidth || dialog.position.y > this.element.clientHeight){
208
+ if(offsetX > this.element.clientWidth || offsetY > this.element.clientHeight)
209
+ offsetX = 0, offsetY = 0;
210
+ dialog.setPosition(100 + offsetX, 100 + offsetY);
211
+ offsetX += 100;
212
+ offsetY += 100;
213
+ }
214
+ }
204
215
  }
205
216
 
206
217
  /**
@@ -388,6 +399,7 @@ export class DockManager {
388
399
  let panel = dialog.panel;
389
400
  let newNode = new DockNode(panel);
390
401
  panel.prepareForDocking();
402
+ panel.elementContentContainer.style.zIndex = '';
391
403
  dialog.destroy();
392
404
  layoutDockFunction(referenceNode, newNode);
393
405
  // this.invalidate();
@@ -612,6 +624,7 @@ export class DockManager {
612
624
  this.layoutEventListeners.forEach((listener) => {
613
625
  if (listener.onDock) {
614
626
  listener.onDock(this, dockNode);
627
+ dockNode.container.resize(dockNode.container.width, dockNode.container.height);
615
628
  }
616
629
  });
617
630
  }
@@ -7,11 +7,12 @@ import { IDockContainer } from "./interfaces/IDockContainer.js";
7
7
  import { ContainerType } from "./ContainerType.js";
8
8
  import { IState } from "./interfaces/IState.js";
9
9
  import { DockWheelItem } from "./DockWheelItem.js";
10
+ import { PanelContainer } from "./PanelContainer.js";
10
11
 
11
12
  export class DraggableContainer implements IDockContainer {
12
13
 
13
14
  dialog: Dialog;
14
- delegate: IDockContainer;
15
+ delegate: PanelContainer;
15
16
  containerElement: HTMLElement;
16
17
  dockManager: DockManager;
17
18
  topLevelElement: HTMLElement;
@@ -26,7 +27,7 @@ export class DraggableContainer implements IDockContainer {
26
27
  touchUpHandler: EventHandler;
27
28
  private iframeEventHandlers: EventHandler[];
28
29
 
29
- constructor(dialog: Dialog, delegate: IDockContainer, topLevelElement: HTMLElement, dragHandle: HTMLElement) {
30
+ constructor(dialog: Dialog, delegate: PanelContainer, topLevelElement: HTMLElement, dragHandle: HTMLElement) {
30
31
  this.dialog = dialog;
31
32
  this.delegate = delegate;
32
33
  this.containerElement = delegate.containerElement;
@@ -35,8 +36,8 @@ export class DraggableContainer implements IDockContainer {
35
36
  this.containerType = delegate.containerType;
36
37
  this.mouseDownHandler = new EventHandler(dragHandle, 'mousedown', this.onMouseDown.bind(this));
37
38
  this.touchDownHandler = new EventHandler(dragHandle, 'touchstart', this.onMouseDown.bind(this));
38
- this.topLevelElement.style.marginLeft = topLevelElement.offsetLeft + 'px';
39
- this.topLevelElement.style.marginTop = topLevelElement.offsetTop + 'px';
39
+ this.topLevelElement.style.left = topLevelElement.offsetLeft + 'px';
40
+ this.topLevelElement.style.top = topLevelElement.offsetTop + 'px';
40
41
  this.minimumAllowedChildNodes = delegate.minimumAllowedChildNodes;
41
42
  this.iframeEventHandlers = [];
42
43
  }
@@ -158,6 +159,7 @@ export class DraggableContainer implements IDockContainer {
158
159
 
159
160
  _startDragging(event: { clientX: number, clientY: number }) {
160
161
  this.containerElement.classList.add("draggable-dragging-active");
162
+ this.delegate.elementContentContainer.classList.add("draggable-dragging-active");
161
163
  if (this.dialog.eventListener)
162
164
  this.dialog.eventListener._onDialogDragStarted(this.dialog, event);
163
165
  Utils.disableGlobalTextSelection(this.dockManager.config.dialogRootElement);
@@ -165,6 +167,7 @@ export class DraggableContainer implements IDockContainer {
165
167
 
166
168
  _stopDragging(event) {
167
169
  this.containerElement.classList.remove("draggable-dragging-active");
170
+ this.delegate.elementContentContainer.classList.remove("draggable-dragging-active");
168
171
  if (this.dialog.eventListener)
169
172
  this.dialog.eventListener._onDialogDragEnded(this.dialog, event);
170
173
  Utils.enableGlobalTextSelection(this.dockManager.config.dialogRootElement);
@@ -219,9 +222,11 @@ export class DraggableContainer implements IDockContainer {
219
222
  }
220
223
 
221
224
  _performDrag(dx: number, dy: number) {
222
- let left = dx + Utils.getPixels(this.topLevelElement.style.marginLeft);
223
- let top = dy + Utils.getPixels(this.topLevelElement.style.marginTop);
224
- this.topLevelElement.style.marginLeft = left + 'px';
225
- this.topLevelElement.style.marginTop = top + 'px';
225
+ let left = dx + Utils.getPixels(this.topLevelElement.style.left);
226
+ let top = dy + Utils.getPixels(this.topLevelElement.style.top);
227
+ this.topLevelElement.style.left = left + 'px';
228
+ this.topLevelElement.style.top = top + 'px';
229
+
230
+ this.dialog.panel.setDialogPosition(left,top);
226
231
  }
227
232
  }
@@ -27,6 +27,7 @@ export class PanelContainer implements IDockContainerWithSize {
27
27
  name: string;
28
28
  state: ISize;
29
29
  elementContent: HTMLElement & { resizeHandler?: any, _dockSpawnPanelContainer: PanelContainer };
30
+ elementContentContainer: HTMLElement;
30
31
  elementContentWrapper: HTMLElement;
31
32
  dockManager: DockManager;
32
33
  title: string;
@@ -61,7 +62,23 @@ export class PanelContainer implements IDockContainerWithSize {
61
62
  panelType = PanelType.panel;
62
63
  this.panelType = panelType;
63
64
 
64
- this.elementContent = Object.assign(elementContent, { _dockSpawnPanelContainer: this });
65
+ (<any>elementContent)._dockSpawnPanelContainer = this;
66
+ this.elementContent = <any>elementContent;
67
+ elementContent.style.position = 'absolute'
68
+ elementContent.style.width = '100%'
69
+ elementContent.style.height = '100%'
70
+ elementContent.style.top = '0'
71
+ elementContent.style.bottom = '0'
72
+ elementContent.hidden = false;
73
+ this.elementContentContainer = document.createElement('div');
74
+ this.elementContentContainer.className = 'panel-element-content-container';
75
+ this.elementContentContainer.style.position = 'absolute';
76
+ this.elementContentContainer.addEventListener('pointerdown', () => {
77
+ if(this.isDialog) this._floatingDialog.bringToFront();
78
+ });
79
+ this.elementContentContainer.appendChild(elementContent);
80
+ dockManager.config.dialogRootElement.appendChild(this.elementContentContainer);
81
+
65
82
  this.dockManager = dockManager;
66
83
  this.title = title;
67
84
  this.containerType = ContainerType.panel;
@@ -187,9 +204,13 @@ export class PanelContainer implements IDockContainerWithSize {
187
204
  this.elementContentHost.classList.add('panel-content');
188
205
 
189
206
  // set the size of the dialog elements based on the panel's size
190
- let panelWidth = this.elementContent.clientWidth;
191
- let panelHeight = this.elementContent.clientHeight;
207
+ let panelWidth = this.elementContentContainer.clientWidth;
208
+ let panelHeight = this.elementContentContainer.clientHeight;
192
209
  let titleHeight = this.elementTitle.clientHeight;
210
+
211
+ this.elementContentWrapper = document.createElement("div");
212
+ this.elementContentWrapper.classList.add('panel-content-wrapper');
213
+
193
214
  this._setPanelDimensions(panelWidth, panelHeight + titleHeight);
194
215
 
195
216
  if (!this._hideCloseButton) {
@@ -199,10 +220,6 @@ export class PanelContainer implements IDockContainerWithSize {
199
220
  new EventHandler(this.elementButtonClose, 'touchstart', this.onCloseButtonClicked.bind(this));
200
221
  }
201
222
 
202
- this.elementContentWrapper = document.createElement("div");
203
- this.elementContentWrapper.classList.add('panel-content-wrapper');
204
- this.elementContentWrapper.appendChild(this.elementContent);
205
-
206
223
  Utils.removeNode(this.elementContentWrapper);
207
224
  this.elementContentHost.appendChild(this.elementContentWrapper);
208
225
 
@@ -333,14 +350,32 @@ export class PanelContainer implements IDockContainerWithSize {
333
350
  _setPanelDimensions(width: number, height: number) {
334
351
  this.elementTitle.style.width = width + 'px';
335
352
  this.elementContentHost.style.width = width + 'px';
336
- this.elementContent.style.width = width + 'px';
353
+ this.elementContentContainer.style.width = width + 'px';
337
354
  this.elementPanel.style.width = width + 'px';
338
355
 
339
356
  let titleBarHeight = this.elementTitle.clientHeight;
340
357
  let contentHeight = height - titleBarHeight;
341
358
  this.elementContentHost.style.height = contentHeight + 'px';
342
- this.elementContent.style.height = contentHeight + 'px';
359
+ this.elementContentContainer.style.height = contentHeight + 'px';
343
360
  this.elementPanel.style.height = height + 'px';
361
+
362
+ if (this.elementContentContainer.parentElement != this.dockManager.config.dialogRootElement)
363
+ this.dockManager.config.dialogRootElement.appendChild(this.elementContentContainer);
364
+ const rect = this.elementContentWrapper.getBoundingClientRect();
365
+ this.elementContentContainer.style.left = rect.x + 'px';
366
+ this.elementContentContainer.style.top = rect.y + 'px';
367
+ this.elementContentContainer.style.width = rect.width + 'px';
368
+ this.elementContentContainer.style.height = rect.height + 'px';
369
+ }
370
+
371
+ setDialogPosition(x: number, y: number) {
372
+ this.elementContentContainer.style.left = x + 'px';
373
+ //todo, 25px if it is a dialog, is it always 25px? where do we know...
374
+ this.elementContentContainer.style.top = (y + this.elementTitle.clientHeight) + 'px';
375
+ }
376
+
377
+ setVisible(isVisible: boolean) {
378
+ this.elementContentContainer.style.display = isVisible ? 'block' : 'none';
344
379
  }
345
380
 
346
381
  setTitle(title: string) {
@@ -397,6 +432,8 @@ export class PanelContainer implements IDockContainerWithSize {
397
432
  async close() {
398
433
  let close = true;
399
434
 
435
+ this.dockManager.config.dialogRootElement.removeChild(this.elementContentContainer);
436
+
400
437
  if (this.closePanelContainerCallback)
401
438
  close = await this.closePanelContainerCallback(this);
402
439
  else if (this.dockManager.closePanelContainerCallback)
@@ -35,8 +35,8 @@ export class ResizableContainer implements IDockContainer {
35
35
  this.dockManager = delegate.dockManager;
36
36
  this.topLevelElement = topLevelElement;
37
37
  this.containerType = delegate.containerType;
38
- this.topLevelElement.style.marginLeft = this.topLevelElement.offsetLeft + 'px';
39
- this.topLevelElement.style.marginTop = this.topLevelElement.offsetTop + 'px';
38
+ this.topLevelElement.style.left = this.topLevelElement.offsetLeft + 'px';
39
+ this.topLevelElement.style.top = this.topLevelElement.offsetTop + 'px';
40
40
  this.minimumAllowedChildNodes = delegate.minimumAllowedChildNodes;
41
41
  this._buildResizeHandles();
42
42
  this.readyToProcessNextResize = true;
@@ -243,8 +243,8 @@ export class ResizableContainer implements IDockContainer {
243
243
 
244
244
  _performDrag(handle, dx: number, dy: number) {
245
245
  let bounds: IThickness = {};
246
- bounds.left = Utils.getPixels(this.topLevelElement.style.marginLeft);
247
- bounds.top = Utils.getPixels(this.topLevelElement.style.marginTop);
246
+ bounds.left = Utils.getPixels(this.topLevelElement.style.left);
247
+ bounds.top = Utils.getPixels(this.topLevelElement.style.top);
248
248
  bounds.width = this.topLevelElement.clientWidth;
249
249
  bounds.height = this.topLevelElement.clientHeight;
250
250
 
@@ -281,8 +281,8 @@ export class ResizableContainer implements IDockContainer {
281
281
  bounds.width = Math.max(bounds.width, minWidth);
282
282
  bounds.height = Math.max(bounds.height, minHeight);
283
283
 
284
- this.topLevelElement.style.marginLeft = bounds.left + 'px';
285
- this.topLevelElement.style.marginTop = bounds.top + 'px';
284
+ this.topLevelElement.style.left = bounds.left + 'px';
285
+ this.topLevelElement.style.top = bounds.top + 'px';
286
286
 
287
287
  this.resize(bounds.width, bounds.height);
288
288
  }
package/src/TabPage.ts CHANGED
@@ -78,6 +78,7 @@ export class TabPage {
78
78
  this._initContent = true;
79
79
  if (this.selected) {
80
80
  this.containerElement.style.display = 'block';
81
+ this.panel.setVisible(true);
81
82
  // force a resize again
82
83
  let width = this.host.contentElement.clientWidth;
83
84
  let height = this.host.contentElement.clientHeight;
@@ -86,6 +87,7 @@ export class TabPage {
86
87
  }
87
88
  else {
88
89
  this.containerElement.style.display = 'none';
90
+ this.panel.setVisible(false);
89
91
  }
90
92
  }
91
93