dockview-core 6.6.1 → 7.0.3
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/README.md +8 -1
- package/dist/cjs/api/component.api.d.ts +42 -21
- package/dist/cjs/api/component.api.js +111 -20
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts +23 -8
- package/dist/cjs/api/dockviewGroupPanelApi.js +24 -1
- package/dist/cjs/api/dockviewPanelApi.d.ts +4 -3
- package/dist/cjs/api/dockviewPanelApi.js +8 -0
- package/dist/cjs/dnd/dropTargetAnchorContainer.js +1 -2
- package/dist/cjs/dnd/droptarget.d.ts +8 -0
- package/dist/cjs/dnd/droptarget.js +28 -0
- package/dist/cjs/dnd/pointer/longPress.js +1 -1
- package/dist/cjs/dnd/pointer/pointerDragController.js +9 -7
- package/dist/cjs/dnd/pointer/pointerDragSource.js +4 -2
- package/dist/cjs/dockview/accessibilityMessages.d.ts +32 -0
- package/dist/cjs/dockview/accessibilityMessages.js +51 -0
- package/dist/cjs/dockview/allModules.d.ts +8 -0
- package/dist/cjs/dockview/allModules.js +25 -0
- package/dist/cjs/dockview/components/panel/content.d.ts +2 -0
- package/dist/cjs/dockview/components/panel/content.js +41 -10
- package/dist/cjs/dockview/components/popupService.js +1 -1
- package/dist/cjs/dockview/components/tab/tab.js +35 -7
- package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +34 -0
- package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +95 -0
- package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +51 -0
- package/dist/cjs/dockview/components/titlebar/groupDragSource.js +218 -0
- package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +2 -1
- package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +36 -30
- package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +27 -5
- package/dist/cjs/dockview/components/titlebar/tabGroups.js +104 -53
- package/dist/cjs/dockview/components/titlebar/tabs.d.ts +12 -0
- package/dist/cjs/dockview/components/titlebar/tabs.js +121 -25
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +4 -0
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +13 -3
- package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +1 -4
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +32 -156
- package/dist/cjs/dockview/dndCapabilities.js +3 -3
- package/dist/cjs/dockview/dockviewComponent.d.ts +304 -49
- package/dist/cjs/dockview/dockviewComponent.js +1839 -1075
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +33 -2
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +39 -3
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +1 -2
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +36 -14
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +151 -125
- package/dist/cjs/dockview/dockviewPanel.d.ts +2 -2
- package/dist/cjs/dockview/dockviewPanel.js +4 -5
- package/dist/cjs/dockview/dockviewShell.d.ts +29 -7
- package/dist/cjs/dockview/dockviewShell.js +94 -36
- package/dist/cjs/dockview/edgeGroupService.d.ts +38 -0
- package/dist/cjs/dockview/edgeGroupService.js +128 -0
- package/dist/cjs/dockview/floatingGroupService.d.ts +37 -0
- package/dist/cjs/dockview/floatingGroupService.js +231 -0
- package/dist/cjs/dockview/headerActionsService.d.ts +32 -0
- package/dist/cjs/dockview/headerActionsService.js +149 -0
- package/dist/cjs/dockview/liveRegionService.d.ts +53 -0
- package/dist/cjs/dockview/liveRegionService.js +185 -0
- package/dist/cjs/dockview/moduleContracts.d.ts +119 -0
- package/dist/cjs/dockview/moduleContracts.js +2 -0
- package/dist/cjs/dockview/modules.d.ts +110 -0
- package/dist/cjs/dockview/modules.js +304 -0
- package/dist/cjs/dockview/options.d.ts +159 -6
- package/dist/cjs/dockview/options.js +8 -1
- package/dist/cjs/dockview/popoutWindowService.d.ts +95 -0
- package/dist/cjs/dockview/popoutWindowService.js +261 -0
- package/dist/cjs/dockview/rootDropTargetService.d.ts +35 -0
- package/dist/cjs/dockview/rootDropTargetService.js +87 -0
- package/dist/cjs/dockview/strictEventsSequencing.js +6 -6
- package/dist/cjs/dockview/tabGroup.js +3 -3
- package/dist/cjs/dockview/tabGroupAccent.js +1 -3
- package/dist/cjs/dockview/watermarkService.d.ts +30 -0
- package/dist/cjs/dockview/watermarkService.js +61 -0
- package/dist/cjs/dom.js +1 -1
- package/dist/cjs/events.js +1 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +1 -1
- package/dist/cjs/gridview/baseComponentGridview.js +6 -10
- package/dist/cjs/gridview/branchNode.js +13 -17
- package/dist/cjs/gridview/gridview.js +8 -8
- package/dist/cjs/gridview/gridviewComponent.d.ts +3 -3
- package/dist/cjs/gridview/gridviewComponent.js +1 -6
- package/dist/cjs/gridview/gridviewPanel.d.ts +1 -1
- package/dist/cjs/index.d.ts +11 -4
- package/dist/cjs/index.js +14 -1
- package/dist/cjs/overlay/overlay.d.ts +43 -1
- package/dist/cjs/overlay/overlay.js +82 -36
- package/dist/cjs/overlay/overlayRenderContainer.js +3 -4
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +2 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.js +5 -5
- package/dist/cjs/paneview/paneviewComponent.d.ts +3 -3
- package/dist/cjs/paneview/paneviewComponent.js +7 -11
- package/dist/cjs/popoutWindow.js +4 -4
- package/dist/cjs/scrollbar.d.ts +1 -1
- package/dist/cjs/scrollbar.js +7 -6
- package/dist/cjs/splitview/splitview.d.ts +1 -1
- package/dist/cjs/splitview/splitview.js +21 -20
- package/dist/cjs/splitview/viewItem.js +1 -1
- package/dist/dockview-core.js +3548 -1544
- package/dist/dockview-core.min.js +2 -2
- package/dist/dockview-core.min.js.map +1 -1
- package/dist/dockview-core.min.noStyle.js +2 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -1
- package/dist/dockview-core.noStyle.js +3547 -1543
- package/dist/esm/api/component.api.d.ts +42 -21
- package/dist/esm/api/component.api.js +63 -18
- package/dist/esm/api/dockviewGroupPanelApi.d.ts +23 -8
- package/dist/esm/api/dockviewGroupPanelApi.js +20 -1
- package/dist/esm/api/dockviewPanelApi.d.ts +4 -3
- package/dist/esm/api/dockviewPanelApi.js +7 -0
- package/dist/esm/dnd/dropTargetAnchorContainer.js +1 -2
- package/dist/esm/dnd/droptarget.d.ts +8 -0
- package/dist/esm/dnd/droptarget.js +28 -0
- package/dist/esm/dnd/pointer/longPress.js +1 -1
- package/dist/esm/dnd/pointer/pointerDragController.js +9 -7
- package/dist/esm/dnd/pointer/pointerDragSource.js +4 -2
- package/dist/esm/dockview/accessibilityMessages.d.ts +32 -0
- package/dist/esm/dockview/accessibilityMessages.js +30 -0
- package/dist/esm/dockview/allModules.d.ts +8 -0
- package/dist/esm/dockview/allModules.js +22 -0
- package/dist/esm/dockview/components/panel/content.d.ts +2 -0
- package/dist/esm/dockview/components/panel/content.js +42 -11
- package/dist/esm/dockview/components/popupService.js +1 -1
- package/dist/esm/dockview/components/tab/tab.js +35 -7
- package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +34 -0
- package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +65 -0
- package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +51 -0
- package/dist/esm/dockview/components/titlebar/groupDragSource.js +178 -0
- package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +2 -1
- package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +36 -30
- package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +27 -5
- package/dist/esm/dockview/components/titlebar/tabGroups.js +91 -41
- package/dist/esm/dockview/components/titlebar/tabs.d.ts +12 -0
- package/dist/esm/dockview/components/titlebar/tabs.js +119 -26
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +4 -0
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +8 -2
- package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +1 -4
- package/dist/esm/dockview/components/titlebar/voidContainer.js +34 -146
- package/dist/esm/dockview/dndCapabilities.js +3 -3
- package/dist/esm/dockview/dockviewComponent.d.ts +304 -49
- package/dist/esm/dockview/dockviewComponent.js +1459 -772
- package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +33 -2
- package/dist/esm/dockview/dockviewFloatingGroupPanel.js +35 -3
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +1 -2
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +36 -14
- package/dist/esm/dockview/dockviewGroupPanelModel.js +127 -117
- package/dist/esm/dockview/dockviewPanel.d.ts +2 -2
- package/dist/esm/dockview/dockviewPanel.js +1 -2
- package/dist/esm/dockview/dockviewShell.d.ts +29 -7
- package/dist/esm/dockview/dockviewShell.js +89 -37
- package/dist/esm/dockview/edgeGroupService.d.ts +38 -0
- package/dist/esm/dockview/edgeGroupService.js +63 -0
- package/dist/esm/dockview/floatingGroupService.d.ts +37 -0
- package/dist/esm/dockview/floatingGroupService.js +150 -0
- package/dist/esm/dockview/headerActionsService.d.ts +32 -0
- package/dist/esm/dockview/headerActionsService.js +86 -0
- package/dist/esm/dockview/liveRegionService.d.ts +53 -0
- package/dist/esm/dockview/liveRegionService.js +159 -0
- package/dist/esm/dockview/moduleContracts.d.ts +119 -0
- package/dist/esm/dockview/moduleContracts.js +1 -0
- package/dist/esm/dockview/modules.d.ts +110 -0
- package/dist/esm/dockview/modules.js +170 -0
- package/dist/esm/dockview/options.d.ts +159 -6
- package/dist/esm/dockview/options.js +8 -1
- package/dist/esm/dockview/popoutWindowService.d.ts +95 -0
- package/dist/esm/dockview/popoutWindowService.js +175 -0
- package/dist/esm/dockview/rootDropTargetService.d.ts +35 -0
- package/dist/esm/dockview/rootDropTargetService.js +82 -0
- package/dist/esm/dockview/strictEventsSequencing.js +6 -6
- package/dist/esm/dockview/tabGroup.js +3 -3
- package/dist/esm/dockview/tabGroupAccent.js +1 -3
- package/dist/esm/dockview/watermarkService.d.ts +30 -0
- package/dist/esm/dockview/watermarkService.js +56 -0
- package/dist/esm/dom.js +1 -1
- package/dist/esm/events.js +1 -1
- package/dist/esm/gridview/baseComponentGridview.d.ts +1 -1
- package/dist/esm/gridview/baseComponentGridview.js +5 -10
- package/dist/esm/gridview/branchNode.js +13 -15
- package/dist/esm/gridview/gridview.js +8 -8
- package/dist/esm/gridview/gridviewComponent.d.ts +3 -3
- package/dist/esm/gridview/gridviewComponent.js +1 -6
- package/dist/esm/gridview/gridviewPanel.d.ts +1 -1
- package/dist/esm/index.d.ts +11 -4
- package/dist/esm/index.js +4 -0
- package/dist/esm/overlay/overlay.d.ts +43 -1
- package/dist/esm/overlay/overlay.js +78 -36
- package/dist/esm/overlay/overlayRenderContainer.js +3 -4
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +2 -2
- package/dist/esm/paneview/draggablePaneviewPanel.js +5 -5
- package/dist/esm/paneview/paneviewComponent.d.ts +3 -3
- package/dist/esm/paneview/paneviewComponent.js +7 -11
- package/dist/esm/popoutWindow.js +4 -4
- package/dist/esm/scrollbar.d.ts +1 -1
- package/dist/esm/scrollbar.js +7 -6
- package/dist/esm/splitview/splitview.d.ts +1 -1
- package/dist/esm/splitview/splitview.js +21 -20
- package/dist/esm/splitview/viewItem.js +1 -1
- package/dist/package/main.cjs.js +3550 -1546
- package/dist/package/main.cjs.min.js +2 -2
- package/dist/package/main.esm.min.mjs +2 -2
- package/dist/package/main.esm.mjs +3538 -1545
- package/dist/styles/dockview.css +283 -21
- package/package.json +10 -1
- package/dist/cjs/dockview/contextMenu.d.ts +0 -10
- package/dist/cjs/dockview/contextMenu.js +0 -313
- package/dist/esm/dockview/contextMenu.d.ts +0 -10
- package/dist/esm/dockview/contextMenu.js +0 -228
|
@@ -47,7 +47,6 @@ var dndCapabilities_1 = require("../../dndCapabilities");
|
|
|
47
47
|
var tabGroupAccent_1 = require("../../tabGroupAccent");
|
|
48
48
|
var tabGroupChip_1 = require("./tabGroupChip");
|
|
49
49
|
var droptarget_1 = require("../../../dnd/droptarget");
|
|
50
|
-
var dataTransfer_2 = require("../../../dnd/dataTransfer");
|
|
51
50
|
var tabGroupIndicator_1 = require("./tabGroupIndicator");
|
|
52
51
|
var EMPTY_MAP = new Map();
|
|
53
52
|
var TabGroupManager = /** @class */ (function () {
|
|
@@ -90,6 +89,7 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
90
89
|
*/
|
|
91
90
|
TabGroupManager.prototype.update = function () {
|
|
92
91
|
var e_1, _a, e_2, _b;
|
|
92
|
+
var _c;
|
|
93
93
|
var model = this._ctx.group.model;
|
|
94
94
|
var tabGroups = model.getTabGroups();
|
|
95
95
|
// Track which group IDs are still active
|
|
@@ -111,11 +111,12 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
111
111
|
}
|
|
112
112
|
try {
|
|
113
113
|
// Remove chips for dissolved/destroyed groups
|
|
114
|
-
for (var
|
|
115
|
-
var
|
|
114
|
+
for (var _d = __values(this._chipRenderers), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
115
|
+
var _f = __read(_e.value, 2), groupId = _f[0], entry = _f[1];
|
|
116
116
|
if (!activeGroupIds.has(groupId)) {
|
|
117
117
|
entry.chip.element.remove();
|
|
118
118
|
entry.chip.dispose();
|
|
119
|
+
(_c = entry.dragSourcesDisposable) === null || _c === void 0 ? void 0 : _c.dispose();
|
|
119
120
|
entry.disposable.dispose();
|
|
120
121
|
this._chipRenderers.delete(groupId);
|
|
121
122
|
}
|
|
@@ -124,7 +125,7 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
124
125
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
125
126
|
finally {
|
|
126
127
|
try {
|
|
127
|
-
if (
|
|
128
|
+
if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
|
|
128
129
|
}
|
|
129
130
|
finally { if (e_2) throw e_2.error; }
|
|
130
131
|
}
|
|
@@ -297,20 +298,21 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
297
298
|
};
|
|
298
299
|
TabGroupManager.prototype.updateDragAndDropState = function () {
|
|
299
300
|
var e_7, _a;
|
|
301
|
+
var _b, _c, _d;
|
|
300
302
|
var caps = (0, dndCapabilities_1.resolveDndCapabilities)(this._ctx.accessor.options);
|
|
301
303
|
try {
|
|
302
|
-
for (var
|
|
303
|
-
var entry =
|
|
304
|
+
for (var _e = __values(this._chipRenderers.values()), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
305
|
+
var entry = _f.value;
|
|
304
306
|
entry.chip.element.draggable = caps.html5;
|
|
305
|
-
entry.html5DragSource.setDisabled(!caps.html5);
|
|
306
|
-
entry.pointerDragSource.setDisabled(!caps.pointer);
|
|
307
|
-
entry.pointerDragSource.setTouchOnly(!caps.pointerHandlesMouse);
|
|
307
|
+
(_b = entry.html5DragSource) === null || _b === void 0 ? void 0 : _b.setDisabled(!caps.html5);
|
|
308
|
+
(_c = entry.pointerDragSource) === null || _c === void 0 ? void 0 : _c.setDisabled(!caps.pointer);
|
|
309
|
+
(_d = entry.pointerDragSource) === null || _d === void 0 ? void 0 : _d.setTouchOnly(!caps.pointerHandlesMouse);
|
|
308
310
|
}
|
|
309
311
|
}
|
|
310
312
|
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
311
313
|
finally {
|
|
312
314
|
try {
|
|
313
|
-
if (
|
|
315
|
+
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
|
|
314
316
|
}
|
|
315
317
|
finally { if (e_7) throw e_7.error; }
|
|
316
318
|
}
|
|
@@ -321,19 +323,28 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
321
323
|
* iframe shield are released BEFORE the cross-group move detaches
|
|
322
324
|
* the chip (chip dispose is scheduled on a microtask via
|
|
323
325
|
* `_scheduleTabGroupUpdate`, which is too late for callers that read
|
|
324
|
-
* `getPanelData()` synchronously after the move).
|
|
325
|
-
*
|
|
326
|
+
* `getPanelData()` synchronously after the move).
|
|
327
|
+
*
|
|
328
|
+
* A cross-group move dissolves the source chip entirely, but a
|
|
329
|
+
* within-group reorder keeps the same chip element — so the sources are
|
|
330
|
+
* cleared to `undefined` here and the subsequent `update()` re-arms them
|
|
331
|
+
* via `_ensureChipForGroup`. Without that re-arm the chip would fire a
|
|
332
|
+
* native `dragstart` (the element keeps `draggable=true`) but never set
|
|
333
|
+
* a transfer payload, leaving the group permanently undraggable after
|
|
334
|
+
* its first move. (#1410)
|
|
326
335
|
*/
|
|
327
336
|
TabGroupManager.prototype.disposeChipDrag = function (tabGroupId) {
|
|
328
|
-
var _a
|
|
337
|
+
var _a;
|
|
329
338
|
var entry = this._chipRenderers.get(tabGroupId);
|
|
330
339
|
if (!entry) {
|
|
331
340
|
return;
|
|
332
341
|
}
|
|
333
342
|
// Optional-chained because tests may inject minimal entries
|
|
334
343
|
// that skip the manager's normal `_ensureChipForGroup` flow.
|
|
335
|
-
(_a = entry.
|
|
336
|
-
|
|
344
|
+
(_a = entry.dragSourcesDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
345
|
+
entry.html5DragSource = undefined;
|
|
346
|
+
entry.pointerDragSource = undefined;
|
|
347
|
+
entry.dragSourcesDisposable = undefined;
|
|
337
348
|
};
|
|
338
349
|
/** Cloned chip rect used as the pointer follow-finger ghost. */
|
|
339
350
|
TabGroupManager.prototype._buildChipGhostElement = function (chipEl) {
|
|
@@ -347,35 +358,36 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
347
358
|
};
|
|
348
359
|
TabGroupManager.prototype.disposeAll = function () {
|
|
349
360
|
var e_8, _a, e_9, _b;
|
|
350
|
-
var _c;
|
|
361
|
+
var _c, _d;
|
|
351
362
|
(_c = this._indicator) === null || _c === void 0 ? void 0 : _c.dispose();
|
|
352
363
|
this._indicator = null;
|
|
353
364
|
try {
|
|
354
|
-
for (var
|
|
355
|
-
var
|
|
365
|
+
for (var _e = __values(this._pendingTransitionCleanups), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
366
|
+
var _g = __read(_f.value, 2), cleanup = _g[1];
|
|
356
367
|
cleanup();
|
|
357
368
|
}
|
|
358
369
|
}
|
|
359
370
|
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
360
371
|
finally {
|
|
361
372
|
try {
|
|
362
|
-
if (
|
|
373
|
+
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
|
|
363
374
|
}
|
|
364
375
|
finally { if (e_8) throw e_8.error; }
|
|
365
376
|
}
|
|
366
377
|
this._pendingTransitionCleanups.clear();
|
|
367
378
|
try {
|
|
368
|
-
for (var
|
|
369
|
-
var
|
|
379
|
+
for (var _h = __values(this._chipRenderers), _j = _h.next(); !_j.done; _j = _h.next()) {
|
|
380
|
+
var _k = __read(_j.value, 2), entry = _k[1];
|
|
370
381
|
entry.chip.element.remove();
|
|
371
382
|
entry.chip.dispose();
|
|
383
|
+
(_d = entry.dragSourcesDisposable) === null || _d === void 0 ? void 0 : _d.dispose();
|
|
372
384
|
entry.disposable.dispose();
|
|
373
385
|
}
|
|
374
386
|
}
|
|
375
387
|
catch (e_9_1) { e_9 = { error: e_9_1 }; }
|
|
376
388
|
finally {
|
|
377
389
|
try {
|
|
378
|
-
if (
|
|
390
|
+
if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
|
|
379
391
|
}
|
|
380
392
|
finally { if (e_9) throw e_9.error; }
|
|
381
393
|
}
|
|
@@ -383,7 +395,7 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
383
395
|
};
|
|
384
396
|
TabGroupManager.prototype._ensureIndicator = function () {
|
|
385
397
|
var _this = this;
|
|
386
|
-
var _a, _b;
|
|
398
|
+
var _a, _b, _c;
|
|
387
399
|
var mode = (_b = (_a = this._ctx.accessor.options.theme) === null || _a === void 0 ? void 0 : _a.tabGroupIndicator) !== null && _b !== void 0 ? _b : 'wrap';
|
|
388
400
|
var Ctor = mode === 'none' ? tabGroupIndicator_1.NoneTabGroupIndicator : tabGroupIndicator_1.WrapTabGroupIndicator;
|
|
389
401
|
// Re-create if the indicator type changed (e.g. theme switch)
|
|
@@ -391,28 +403,25 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
391
403
|
this._indicator.dispose();
|
|
392
404
|
this._indicator = null;
|
|
393
405
|
}
|
|
394
|
-
|
|
395
|
-
this.
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
}
|
|
406
|
+
(_c = this._indicator) !== null && _c !== void 0 ? _c : (this._indicator = new Ctor({
|
|
407
|
+
tabsList: this._ctx.tabsList,
|
|
408
|
+
getTabGroups: function () { return _this._ctx.group.model.getTabGroups(); },
|
|
409
|
+
getActivePanelId: function () { var _a; return (_a = _this._ctx.group.activePanel) === null || _a === void 0 ? void 0 : _a.id; },
|
|
410
|
+
getTabMap: function () { return _this._ctx.getTabMap(); },
|
|
411
|
+
getChipElement: function (id) { var _a; return (_a = _this._chipRenderers.get(id)) === null || _a === void 0 ? void 0 : _a.chip.element; },
|
|
412
|
+
getDirection: function () { return _this._ctx.getDirection(); },
|
|
413
|
+
getHeaderPosition: function () { return _this._ctx.group.model.headerPosition; },
|
|
414
|
+
getColorPalette: function () { return _this._ctx.accessor.tabGroupColorPalette; },
|
|
415
|
+
}));
|
|
405
416
|
};
|
|
406
|
-
|
|
417
|
+
/**
|
|
418
|
+
* Create the HTML5 + pointer drag sources for a chip (and the direct
|
|
419
|
+
* dragend listener that clears the transfer synchronously). Extracted so
|
|
420
|
+
* both the initial chip build and the post-move re-arm in
|
|
421
|
+
* `_ensureChipForGroup` share one wiring path. (#1410)
|
|
422
|
+
*/
|
|
423
|
+
TabGroupManager.prototype._createChipDragSources = function (chip, tabGroup) {
|
|
407
424
|
var _this = this;
|
|
408
|
-
if (this._chipRenderers.has(tabGroup.id)) {
|
|
409
|
-
return;
|
|
410
|
-
}
|
|
411
|
-
var createChip = this._ctx.accessor.options.createTabGroupChipComponent;
|
|
412
|
-
var chip = createChip
|
|
413
|
-
? createChip(tabGroup)
|
|
414
|
-
: new tabGroupChip_1.TabGroupChip(this._ctx.accessor.tabGroupColorPalette);
|
|
415
|
-
chip.init({ tabGroup: tabGroup, api: this._ctx.accessor.api });
|
|
416
425
|
var caps = (0, dndCapabilities_1.resolveDndCapabilities)(this._ctx.accessor.options);
|
|
417
426
|
chip.element.draggable = caps.html5;
|
|
418
427
|
var panelTransfer = dataTransfer_1.LocalSelectionTransfer.getInstance();
|
|
@@ -466,9 +475,12 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
466
475
|
// the listener survives chip disposal in the detach-then-dragend
|
|
467
476
|
// cross-group path; `once: true` auto-removes after the single
|
|
468
477
|
// dragend that we care about. (#1254)
|
|
469
|
-
|
|
478
|
+
var onDragEndClear = function () {
|
|
470
479
|
panelTransfer.clearData(dataTransfer_1.PanelTransfer.prototype);
|
|
471
|
-
}
|
|
480
|
+
};
|
|
481
|
+
chip.element.addEventListener('dragend', onDragEndClear, {
|
|
482
|
+
once: true,
|
|
483
|
+
});
|
|
472
484
|
var pointerDragSource = backend_1.pointerBackend.createDragSource(chip.element, {
|
|
473
485
|
getData: getData,
|
|
474
486
|
disabled: !caps.pointer,
|
|
@@ -485,6 +497,42 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
485
497
|
_this._callbacks.onChipDragStart(tabGroup, chip, event);
|
|
486
498
|
},
|
|
487
499
|
});
|
|
500
|
+
return {
|
|
501
|
+
html5DragSource: html5DragSource,
|
|
502
|
+
pointerDragSource: pointerDragSource,
|
|
503
|
+
disposable: {
|
|
504
|
+
dispose: function () {
|
|
505
|
+
html5DragSource.dispose();
|
|
506
|
+
pointerDragSource.dispose();
|
|
507
|
+
chip.element.removeEventListener('dragend', onDragEndClear);
|
|
508
|
+
},
|
|
509
|
+
},
|
|
510
|
+
};
|
|
511
|
+
};
|
|
512
|
+
TabGroupManager.prototype._ensureChipForGroup = function (tabGroup) {
|
|
513
|
+
var _this = this;
|
|
514
|
+
var existing = this._chipRenderers.get(tabGroup.id);
|
|
515
|
+
if (existing) {
|
|
516
|
+
// A committed group move tears down the chip's drag sources via
|
|
517
|
+
// `disposeChipDrag`, but a within-group reorder keeps the same
|
|
518
|
+
// chip element alive. Re-arm the sources so the group stays
|
|
519
|
+
// draggable; without this the chip is stuck after its first
|
|
520
|
+
// move — `dragstart` still fires (the element keeps
|
|
521
|
+
// `draggable=true`) but no transfer payload is set. (#1410)
|
|
522
|
+
if (!existing.html5DragSource) {
|
|
523
|
+
var sources = this._createChipDragSources(existing.chip, tabGroup);
|
|
524
|
+
existing.html5DragSource = sources.html5DragSource;
|
|
525
|
+
existing.pointerDragSource = sources.pointerDragSource;
|
|
526
|
+
existing.dragSourcesDisposable = sources.disposable;
|
|
527
|
+
}
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
var createChip = this._ctx.accessor.options.createTabGroupChipComponent;
|
|
531
|
+
var chip = createChip
|
|
532
|
+
? createChip(tabGroup)
|
|
533
|
+
: new tabGroupChip_1.TabGroupChip(this._ctx.accessor.tabGroupColorPalette);
|
|
534
|
+
chip.init({ tabGroup: tabGroup, api: this._ctx.accessor.api });
|
|
535
|
+
var dragSources = this._createChipDragSources(chip, tabGroup);
|
|
488
536
|
var disposables = [
|
|
489
537
|
tabGroup.onDidChange(function () {
|
|
490
538
|
var _a;
|
|
@@ -498,17 +546,19 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
498
546
|
tabGroup.onDidCollapseChange(function () {
|
|
499
547
|
_this._updateTabGroupClasses();
|
|
500
548
|
}),
|
|
501
|
-
html5DragSource,
|
|
502
|
-
pointerDragSource,
|
|
503
549
|
];
|
|
504
550
|
// Context menu: built-in TabGroupChip already aggregates right-click
|
|
505
551
|
// + touch long-press into `onContextMenu`. Custom chip renderers
|
|
506
552
|
// don't, so attach a long-press detector and contextmenu listener
|
|
507
553
|
// directly on their element.
|
|
508
554
|
var onContextMenu = function (event) {
|
|
555
|
+
var _a, _b;
|
|
509
556
|
// A long-press on a chip should preempt the in-flight pointer
|
|
510
|
-
// drag and open the menu instead.
|
|
511
|
-
|
|
557
|
+
// drag and open the menu instead. Resolve the source from the
|
|
558
|
+
// entry so a post-move re-armed source is cancelled, not the
|
|
559
|
+
// stale one captured at build time. (#1410)
|
|
560
|
+
(_b = (_a = _this._chipRenderers
|
|
561
|
+
.get(tabGroup.id)) === null || _a === void 0 ? void 0 : _a.pointerDragSource) === null || _b === void 0 ? void 0 : _b.cancelPending();
|
|
512
562
|
_this._callbacks.onChipContextMenu(tabGroup, event);
|
|
513
563
|
};
|
|
514
564
|
if (chip instanceof tabGroupChip_1.TabGroupChip) {
|
|
@@ -540,8 +590,8 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
540
590
|
if (_this._ctx.accessor.options.disableDnd) {
|
|
541
591
|
return false;
|
|
542
592
|
}
|
|
543
|
-
var data = (0,
|
|
544
|
-
if (
|
|
593
|
+
var data = (0, dataTransfer_1.getPanelData)();
|
|
594
|
+
if (_this._ctx.accessor.id === (data === null || data === void 0 ? void 0 : data.viewId)) {
|
|
545
595
|
if (((_a = _this._ctx.accessor.options.theme) === null || _a === void 0 ? void 0 : _a.tabAnimation) ===
|
|
546
596
|
'smooth') {
|
|
547
597
|
return false;
|
|
@@ -557,8 +607,9 @@ var TabGroupManager = /** @class */ (function () {
|
|
|
557
607
|
var disposable = new (lifecycle_1.CompositeDisposable.bind.apply(lifecycle_1.CompositeDisposable, __spreadArray([void 0], __read(disposables), false)))();
|
|
558
608
|
this._chipRenderers.set(tabGroup.id, {
|
|
559
609
|
chip: chip,
|
|
560
|
-
html5DragSource: html5DragSource,
|
|
561
|
-
pointerDragSource: pointerDragSource,
|
|
610
|
+
html5DragSource: dragSources.html5DragSource,
|
|
611
|
+
pointerDragSource: dragSources.pointerDragSource,
|
|
612
|
+
dragSourcesDisposable: dragSources.disposable,
|
|
562
613
|
disposable: disposable,
|
|
563
614
|
dropTarget: dropTarget,
|
|
564
615
|
});
|
|
@@ -59,7 +59,19 @@ export declare class Tabs extends CompositeDisposable {
|
|
|
59
59
|
showTabsOverflowControl: boolean;
|
|
60
60
|
});
|
|
61
61
|
indexOf(id: string): number;
|
|
62
|
+
/** DOM id of the tab element for a panel — for the tabpanel's `aria-labelledby`. */
|
|
63
|
+
getTabId(panelId: string): string | undefined;
|
|
62
64
|
isActive(tab: Tab): boolean;
|
|
65
|
+
private _onKeyDown;
|
|
66
|
+
/**
|
|
67
|
+
* Close the tab at `index` and move roving focus to a neighbouring tab so
|
|
68
|
+
* keyboard focus stays in the tablist.
|
|
69
|
+
*/
|
|
70
|
+
private _closeTab;
|
|
71
|
+
/** Move the roving focus to the tab at `index` (updates tabindex + DOM focus). */
|
|
72
|
+
private _focusTab;
|
|
73
|
+
/** Move DOM focus to the active tab — the entry point into the tablist. */
|
|
74
|
+
focusActiveTab(): void;
|
|
63
75
|
setActivePanel(panel: IDockviewPanel): void;
|
|
64
76
|
openPanel(panel: IDockviewPanel, index?: number): void;
|
|
65
77
|
delete(id: string): void;
|
|
@@ -92,6 +92,9 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
92
92
|
_this.onOverflowTabsChange = _this._onOverflowTabsChange.event;
|
|
93
93
|
_this._tabsList = document.createElement('div');
|
|
94
94
|
_this._tabsList.className = 'dv-tabs-container';
|
|
95
|
+
// WAI-ARIA Tabs pattern: the strip of tabs is the tablist.
|
|
96
|
+
_this._tabsList.setAttribute('role', 'tablist');
|
|
97
|
+
_this._tabsList.setAttribute('aria-orientation', _this._direction === 'vertical' ? 'vertical' : 'horizontal');
|
|
95
98
|
_this.showTabsOverflowControl = options.showTabsOverflowControl;
|
|
96
99
|
if (accessor.options.scrollbars === 'native') {
|
|
97
100
|
_this._element = _this._tabsList;
|
|
@@ -111,7 +114,8 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
111
114
|
getDirection: function () { return _this._direction; },
|
|
112
115
|
}, {
|
|
113
116
|
onChipContextMenu: function (tabGroup, event) {
|
|
114
|
-
|
|
117
|
+
var _a;
|
|
118
|
+
(_a = _this.accessor.contextMenuService) === null || _a === void 0 ? void 0 : _a.showForChip(tabGroup, _this.group, event);
|
|
115
119
|
},
|
|
116
120
|
onChipDragStart: function (tabGroup, chip, event) {
|
|
117
121
|
_this._handleChipDragStart(tabGroup, chip, event);
|
|
@@ -204,7 +208,14 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
204
208
|
else {
|
|
205
209
|
_this._tabsList.scrollLeft = current + primary;
|
|
206
210
|
}
|
|
207
|
-
}, { passive: false }),
|
|
211
|
+
}, { passive: false }),
|
|
212
|
+
// WAI-ARIA Tabs keyboard pattern: arrow keys move the roving
|
|
213
|
+
// focus along the strip, Home/End jump to the ends, and
|
|
214
|
+
// Enter/Space activate the focused tab (manual activation, so
|
|
215
|
+
// arrowing through tabs doesn't switch panels until committed).
|
|
216
|
+
(0, events_1.addDisposableListener)(_this._tabsList, 'keydown', function (event) {
|
|
217
|
+
_this._onKeyDown(event);
|
|
218
|
+
}), (0, events_1.addDisposableListener)(_this._tabsList, 'dragover', function (event) {
|
|
208
219
|
if (_this._processDragOver(event.clientX)) {
|
|
209
220
|
// Allow `drop` to fire on the tabs list container.
|
|
210
221
|
event.preventDefault();
|
|
@@ -401,6 +412,7 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
401
412
|
return;
|
|
402
413
|
}
|
|
403
414
|
this._direction = value;
|
|
415
|
+
this._tabsList.setAttribute('aria-orientation', value === 'vertical' ? 'vertical' : 'horizontal');
|
|
404
416
|
if (this._scrollbar) {
|
|
405
417
|
this._scrollbar.orientation = value;
|
|
406
418
|
}
|
|
@@ -433,10 +445,101 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
433
445
|
Tabs.prototype.indexOf = function (id) {
|
|
434
446
|
return this._tabs.findIndex(function (tab) { return tab.value.panel.id === id; });
|
|
435
447
|
};
|
|
448
|
+
/** DOM id of the tab element for a panel — for the tabpanel's `aria-labelledby`. */
|
|
449
|
+
Tabs.prototype.getTabId = function (panelId) {
|
|
450
|
+
var _a;
|
|
451
|
+
return (_a = this._tabMap.get(panelId)) === null || _a === void 0 ? void 0 : _a.value.element.id;
|
|
452
|
+
};
|
|
436
453
|
Tabs.prototype.isActive = function (tab) {
|
|
437
454
|
return (this.selectedIndex > -1 &&
|
|
438
455
|
this._tabs[this.selectedIndex].value === tab);
|
|
439
456
|
};
|
|
457
|
+
Tabs.prototype._onKeyDown = function (event) {
|
|
458
|
+
var _this = this;
|
|
459
|
+
// Only handle when a tab element itself is focused — never hijack keys
|
|
460
|
+
// typed inside a custom tab renderer's own controls (inputs etc.).
|
|
461
|
+
var index = this._tabs.findIndex(function (tab) { return tab.value.element === event.target; });
|
|
462
|
+
if (index === -1) {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
var isVertical = this._direction === 'vertical';
|
|
466
|
+
var nextKey = isVertical ? 'ArrowDown' : 'ArrowRight';
|
|
467
|
+
var prevKey = isVertical ? 'ArrowUp' : 'ArrowLeft';
|
|
468
|
+
var last = this._tabs.length - 1;
|
|
469
|
+
switch (event.key) {
|
|
470
|
+
case nextKey:
|
|
471
|
+
event.preventDefault();
|
|
472
|
+
this._focusTab(Math.min(index + 1, last));
|
|
473
|
+
break;
|
|
474
|
+
case prevKey:
|
|
475
|
+
event.preventDefault();
|
|
476
|
+
this._focusTab(Math.max(index - 1, 0));
|
|
477
|
+
break;
|
|
478
|
+
case 'Home':
|
|
479
|
+
event.preventDefault();
|
|
480
|
+
this._focusTab(0);
|
|
481
|
+
break;
|
|
482
|
+
case 'End':
|
|
483
|
+
event.preventDefault();
|
|
484
|
+
this._focusTab(last);
|
|
485
|
+
break;
|
|
486
|
+
case 'Enter':
|
|
487
|
+
case ' ':
|
|
488
|
+
// Manual activation of the focused tab.
|
|
489
|
+
event.preventDefault();
|
|
490
|
+
this.accessor.withOrigin('user', function () {
|
|
491
|
+
return _this._tabs[index].value.panel.api.setActive();
|
|
492
|
+
});
|
|
493
|
+
break;
|
|
494
|
+
case 'Delete':
|
|
495
|
+
case 'Backspace':
|
|
496
|
+
// Close the focused tab (Backspace covers macOS, where the
|
|
497
|
+
// primary delete key reports as Backspace).
|
|
498
|
+
event.preventDefault();
|
|
499
|
+
this._closeTab(index);
|
|
500
|
+
break;
|
|
501
|
+
}
|
|
502
|
+
};
|
|
503
|
+
/**
|
|
504
|
+
* Close the tab at `index` and move roving focus to a neighbouring tab so
|
|
505
|
+
* keyboard focus stays in the tablist.
|
|
506
|
+
*/
|
|
507
|
+
Tabs.prototype._closeTab = function (index) {
|
|
508
|
+
var _a, _b, _c, _d, _e;
|
|
509
|
+
var tab = (_a = this._tabs[index]) === null || _a === void 0 ? void 0 : _a.value;
|
|
510
|
+
if (!tab) {
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
// Resolve the post-close focus target before closing mutates the list:
|
|
514
|
+
// prefer the next tab, otherwise the previous.
|
|
515
|
+
var neighbourId = (_e = ((_c = (_b = this._tabs[index + 1]) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : (_d = this._tabs[index - 1]) === null || _d === void 0 ? void 0 : _d.value)) === null || _e === void 0 ? void 0 : _e.panel.id;
|
|
516
|
+
tab.panel.api.close();
|
|
517
|
+
if (neighbourId !== undefined) {
|
|
518
|
+
var nextIndex = this._tabs.findIndex(function (t) { return t.value.panel.id === neighbourId; });
|
|
519
|
+
if (nextIndex > -1) {
|
|
520
|
+
this._focusTab(nextIndex);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
};
|
|
524
|
+
/** Move the roving focus to the tab at `index` (updates tabindex + DOM focus). */
|
|
525
|
+
Tabs.prototype._focusTab = function (index) {
|
|
526
|
+
for (var i = 0; i < this._tabs.length; i++) {
|
|
527
|
+
this._tabs[i].value.element.tabIndex = i === index ? 0 : -1;
|
|
528
|
+
}
|
|
529
|
+
this._tabs[index].value.element.focus();
|
|
530
|
+
};
|
|
531
|
+
/** Move DOM focus to the active tab — the entry point into the tablist. */
|
|
532
|
+
Tabs.prototype.focusActiveTab = function () {
|
|
533
|
+
var _a;
|
|
534
|
+
if (this._tabs.length === 0) {
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
var activeId = (_a = this.group.activePanel) === null || _a === void 0 ? void 0 : _a.id;
|
|
538
|
+
var activeIndex = activeId
|
|
539
|
+
? this._tabs.findIndex(function (t) { return t.value.panel.id === activeId; })
|
|
540
|
+
: -1;
|
|
541
|
+
this._focusTab(activeIndex > -1 ? activeIndex : 0);
|
|
542
|
+
};
|
|
440
543
|
Tabs.prototype.setActivePanel = function (panel) {
|
|
441
544
|
var e_3, _a;
|
|
442
545
|
var isVertical = this._direction === 'vertical';
|
|
@@ -456,12 +559,10 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
456
559
|
parentElement.scrollTop = running;
|
|
457
560
|
}
|
|
458
561
|
}
|
|
459
|
-
else
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
parentElement.scrollLeft = running;
|
|
464
|
-
}
|
|
562
|
+
else if (running < parentElement.scrollLeft ||
|
|
563
|
+
running + element.clientWidth >
|
|
564
|
+
parentElement.scrollLeft + parentElement.clientWidth) {
|
|
565
|
+
parentElement.scrollLeft = running;
|
|
465
566
|
}
|
|
466
567
|
}
|
|
467
568
|
running += isVertical
|
|
@@ -583,18 +684,13 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
583
684
|
});
|
|
584
685
|
return;
|
|
585
686
|
}
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
if (_this.group.activePanel !== panel) {
|
|
594
|
-
_this.group.model.openPanel(panel);
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
break;
|
|
687
|
+
// Edge groups are skipped here: all their tab interaction
|
|
688
|
+
// is handled by onTabClick to avoid race conditions with
|
|
689
|
+
// active panel state.
|
|
690
|
+
if (event.button === 0 &&
|
|
691
|
+
_this.group.api.location.type !== 'edge' &&
|
|
692
|
+
_this.group.activePanel !== panel) {
|
|
693
|
+
_this.group.model.openPanel(panel);
|
|
598
694
|
}
|
|
599
695
|
}), tab.onDrop(function (event) {
|
|
600
696
|
var _a, _b, _c, _d;
|
|
@@ -617,12 +713,12 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
617
713
|
targetTabGroupId: animState.targetTabGroupId,
|
|
618
714
|
});
|
|
619
715
|
if (((_b = _this.accessor.options.theme) === null || _b === void 0 ? void 0 : _b.tabAnimation) === 'smooth') {
|
|
620
|
-
_this.runFlipAnimation(firstPositions, animState.sourceTabId, animState.sourceIndex === -1, animState.sourceIndex
|
|
621
|
-
?
|
|
716
|
+
_this.runFlipAnimation(firstPositions, animState.sourceTabId, animState.sourceIndex === -1, animState.sourceIndex === -1
|
|
717
|
+
? undefined
|
|
718
|
+
: {
|
|
622
719
|
from: Math.min(animState.sourceIndex, dropIndex),
|
|
623
720
|
to: Math.max(animState.sourceIndex, dropIndex),
|
|
624
|
-
}
|
|
625
|
-
: undefined);
|
|
721
|
+
});
|
|
626
722
|
}
|
|
627
723
|
}
|
|
628
724
|
else {
|
|
@@ -939,7 +1035,7 @@ var Tabs = /** @class */ (function (_super) {
|
|
|
939
1035
|
return;
|
|
940
1036
|
}
|
|
941
1037
|
var data = (0, dataTransfer_1.getPanelData)();
|
|
942
|
-
var sourceIndex = data
|
|
1038
|
+
var sourceIndex = (data === null || data === void 0 ? void 0 : data.groupId) === this.group.id && (data === null || data === void 0 ? void 0 : data.panelId)
|
|
943
1039
|
? this._tabs.findIndex(function (x) { return x.value.panel.id === data.panelId; })
|
|
944
1040
|
: -1;
|
|
945
1041
|
var adjustedIndex = insertionIndex -
|
|
@@ -33,8 +33,10 @@ export interface ITabsContainer extends IDisposable {
|
|
|
33
33
|
direction: DockviewHeaderDirection;
|
|
34
34
|
delete(id: string): void;
|
|
35
35
|
indexOf(id: string): number;
|
|
36
|
+
getTabId(panelId: string): string | undefined;
|
|
36
37
|
setActive(isGroupActive: boolean): void;
|
|
37
38
|
setActivePanel(panel: IDockviewPanel): void;
|
|
39
|
+
focusActiveTab(): void;
|
|
38
40
|
isActive(tab: Tab): boolean;
|
|
39
41
|
closePanel(panel: IDockviewPanel): void;
|
|
40
42
|
openPanel(panel: IDockviewPanel, index?: number): void;
|
|
@@ -87,9 +89,11 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
|
|
|
87
89
|
setPrefixActionsElement(element: HTMLElement | undefined): void;
|
|
88
90
|
isActive(tab: Tab): boolean;
|
|
89
91
|
indexOf(id: string): number;
|
|
92
|
+
getTabId(panelId: string): string | undefined;
|
|
90
93
|
setActive(_isGroupActive: boolean): void;
|
|
91
94
|
delete(id: string): void;
|
|
92
95
|
setActivePanel(panel: IDockviewPanel): void;
|
|
96
|
+
focusActiveTab(): void;
|
|
93
97
|
openPanel(panel: IDockviewPanel, index?: number): void;
|
|
94
98
|
closePanel(panel: IDockviewPanel): void;
|
|
95
99
|
private updateClassnames;
|
|
@@ -253,6 +253,9 @@ var TabsContainer = /** @class */ (function (_super) {
|
|
|
253
253
|
TabsContainer.prototype.indexOf = function (id) {
|
|
254
254
|
return this.tabs.indexOf(id);
|
|
255
255
|
};
|
|
256
|
+
TabsContainer.prototype.getTabId = function (panelId) {
|
|
257
|
+
return this.tabs.getTabId(panelId);
|
|
258
|
+
};
|
|
256
259
|
TabsContainer.prototype.setActive = function (_isGroupActive) {
|
|
257
260
|
// noop
|
|
258
261
|
};
|
|
@@ -263,6 +266,9 @@ var TabsContainer = /** @class */ (function (_super) {
|
|
|
263
266
|
TabsContainer.prototype.setActivePanel = function (panel) {
|
|
264
267
|
this.tabs.setActivePanel(panel);
|
|
265
268
|
};
|
|
269
|
+
TabsContainer.prototype.focusActiveTab = function () {
|
|
270
|
+
this.tabs.focusActiveTab();
|
|
271
|
+
};
|
|
266
272
|
TabsContainer.prototype.openPanel = function (panel, index) {
|
|
267
273
|
if (index === void 0) { index = this.tabs.size; }
|
|
268
274
|
this.tabs.openPanel(panel, index);
|
|
@@ -374,8 +380,10 @@ var TabsContainer = /** @class */ (function (_super) {
|
|
|
374
380
|
// Activate the first panel in the group
|
|
375
381
|
var firstPanelId = tg.panelIds[0];
|
|
376
382
|
if (firstPanelId) {
|
|
377
|
-
var
|
|
378
|
-
|
|
383
|
+
var panel_1 = _this.group.panels.find(function (p) { return p.id === firstPanelId; });
|
|
384
|
+
_this.accessor.withOrigin('user', function () {
|
|
385
|
+
return panel_1 === null || panel_1 === void 0 ? void 0 : panel_1.api.setActive();
|
|
386
|
+
});
|
|
379
387
|
}
|
|
380
388
|
});
|
|
381
389
|
el.appendChild(groupHeader);
|
|
@@ -401,7 +409,9 @@ var TabsContainer = /** @class */ (function (_super) {
|
|
|
401
409
|
tg.expand();
|
|
402
410
|
}
|
|
403
411
|
tab.element.scrollIntoView();
|
|
404
|
-
|
|
412
|
+
_this.accessor.withOrigin('user', function () {
|
|
413
|
+
return tab.panel.api.setActive();
|
|
414
|
+
});
|
|
405
415
|
});
|
|
406
416
|
wrapper.appendChild(child);
|
|
407
417
|
el.appendChild(wrapper);
|
|
@@ -9,9 +9,7 @@ export declare class VoidContainer extends CompositeDisposable {
|
|
|
9
9
|
private readonly _element;
|
|
10
10
|
private readonly dropTarget;
|
|
11
11
|
private readonly pointerDropTarget;
|
|
12
|
-
private readonly
|
|
13
|
-
private readonly pointerDragSource;
|
|
14
|
-
private readonly panelTransfer;
|
|
12
|
+
private readonly dragSource;
|
|
15
13
|
private readonly _onDrop;
|
|
16
14
|
readonly onDrop: Event<DroptargetEvent>;
|
|
17
15
|
private readonly _onDragStart;
|
|
@@ -20,5 +18,4 @@ export declare class VoidContainer extends CompositeDisposable {
|
|
|
20
18
|
get element(): HTMLElement;
|
|
21
19
|
constructor(accessor: DockviewComponent, group: DockviewGroupPanel);
|
|
22
20
|
updateDragAndDropState(): void;
|
|
23
|
-
private getFloatingOverlay;
|
|
24
21
|
}
|