dock-spawn-ts 3.1.0 → 3.2.1

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/src/TabHandle.ts CHANGED
@@ -96,10 +96,12 @@ export class TabHandle {
96
96
  this.undockInitiator.enabled = state;
97
97
  }
98
98
 
99
- static createContextMenuContentCallback = (tabHandle: TabHandle, contextMenuContainer: HTMLDivElement, documentMangerNodes: DockNode[]) => {
99
+ static createContextMenuContentCallback = (tabHandle: TabHandle, documentMangerNodes: DockNode[]): Node[] => {
100
+ const result = [];
101
+
100
102
  let btnCloseAll = document.createElement('div');
101
103
  btnCloseAll.innerText = Localizer.getString('CloseAll');
102
- contextMenuContainer.append(btnCloseAll);
104
+ result.push(btnCloseAll);
103
105
 
104
106
  btnCloseAll.onclick = () => {
105
107
  let length = documentMangerNodes.length;
@@ -113,7 +115,7 @@ export class TabHandle {
113
115
 
114
116
  let btnCloseAllButThis = document.createElement('div');
115
117
  btnCloseAllButThis.innerText = Localizer.getString('CloseAllButThis');
116
- contextMenuContainer.append(btnCloseAllButThis);
118
+ result.push(btnCloseAllButThis);
117
119
 
118
120
  btnCloseAllButThis.onclick = () => {
119
121
  let length = documentMangerNodes.length;
@@ -125,25 +127,36 @@ export class TabHandle {
125
127
  tabHandle.closeContextMenu();
126
128
  };
127
129
 
128
- let btnNewBrowserWindow = document.createElement('div');
129
- btnNewBrowserWindow.innerText = Localizer.getString('NewBrowserWindow');
130
- contextMenuContainer.append(btnNewBrowserWindow);
130
+ if (tabHandle.parent.container.dockManager.config.enableBrowserWindows) {
131
+ let btnNewBrowserWindow = document.createElement('div');
132
+ btnNewBrowserWindow.innerText = Localizer.getString('NewBrowserWindow');
133
+ result.push(btnNewBrowserWindow);
134
+
135
+ btnNewBrowserWindow.onclick = () => {
136
+ (<PanelContainer>tabHandle.parent.container).undockToBrowserDialog();
137
+ tabHandle.closeContextMenu();
138
+ };
139
+ }
131
140
 
132
- btnNewBrowserWindow.onclick = () => {
133
- (<PanelContainer>tabHandle.parent.container).undockToBrowserDialog();
134
- tabHandle.closeContextMenu();
135
- };
141
+ return result;
136
142
  }
137
143
 
138
144
  oncontextMenuClicked(e: MouseEvent) {
139
145
  e.preventDefault();
140
146
 
141
147
  if (!this._ctxMenu && TabHandle.createContextMenuContentCallback) {
148
+ const menuItems = TabHandle.createContextMenuContentCallback(
149
+ this,
150
+ this.parent.container.dockManager.context.model.documentManagerNode.children
151
+ );
152
+
153
+ if (menuItems.length == 0) {
154
+ return;
155
+ }
156
+
142
157
  this._ctxMenu = document.createElement('div');
143
158
  this._ctxMenu.className = 'dockspab-tab-handle-context-menu';
144
-
145
- TabHandle.createContextMenuContentCallback(this, this._ctxMenu, this.parent.container.dockManager.context.model.documentManagerNode.children);
146
-
159
+ this._ctxMenu.append(...menuItems);
147
160
  this._ctxMenu.style.left = e.pageX + "px";
148
161
  this._ctxMenu.style.top = e.pageY + "px";
149
162
  document.body.appendChild(this._ctxMenu);