dockview-core 4.2.1 → 4.2.4
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/dist/cjs/dockview/components/popupService.d.ts +1 -0
- package/dist/cjs/dockview/components/popupService.js +6 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +5 -1
- package/dist/cjs/dockview/dockviewComponent.js +19 -17
- package/dist/cjs/dom.d.ts +4 -0
- package/dist/cjs/dom.js +42 -1
- package/dist/dockview-core.amd.js +68 -20
- package/dist/dockview-core.amd.js.map +1 -1
- package/dist/dockview-core.amd.min.js +2 -2
- package/dist/dockview-core.amd.min.js.map +1 -1
- package/dist/dockview-core.amd.min.noStyle.js +2 -2
- package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
- package/dist/dockview-core.amd.noStyle.js +68 -20
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +68 -20
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +68 -20
- package/dist/dockview-core.esm.js.map +1 -1
- package/dist/dockview-core.esm.min.js +2 -2
- package/dist/dockview-core.esm.min.js.map +1 -1
- package/dist/dockview-core.js +68 -20
- package/dist/dockview-core.js.map +1 -1
- 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 +68 -20
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/dockview/components/popupService.d.ts +1 -0
- package/dist/esm/dockview/components/popupService.js +6 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +6 -2
- package/dist/esm/dockview/dockviewComponent.js +19 -17
- package/dist/esm/dom.d.ts +4 -0
- package/dist/esm/dom.js +38 -0
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { shiftAbsoluteElementIntoView } from '../../dom';
|
|
1
2
|
import { addDisposableListener } from '../../events';
|
|
2
3
|
import { CompositeDisposable, Disposable, MutableDisposable, } from '../../lifecycle';
|
|
3
4
|
export class PopupService extends CompositeDisposable {
|
|
@@ -15,10 +16,11 @@ export class PopupService extends CompositeDisposable {
|
|
|
15
16
|
}), this._activeDisposable);
|
|
16
17
|
}
|
|
17
18
|
openPopover(element, position) {
|
|
19
|
+
var _a;
|
|
18
20
|
this.close();
|
|
19
21
|
const wrapper = document.createElement('div');
|
|
20
22
|
wrapper.style.position = 'absolute';
|
|
21
|
-
wrapper.style.zIndex = '
|
|
23
|
+
wrapper.style.zIndex = (_a = position.zIndex) !== null && _a !== void 0 ? _a : 'var(--dv-overlay-z-index)';
|
|
22
24
|
wrapper.appendChild(element);
|
|
23
25
|
const anchorBox = this._element.getBoundingClientRect();
|
|
24
26
|
const offsetX = anchorBox.left;
|
|
@@ -42,6 +44,9 @@ export class PopupService extends CompositeDisposable {
|
|
|
42
44
|
}
|
|
43
45
|
this.close();
|
|
44
46
|
}));
|
|
47
|
+
requestAnimationFrame(() => {
|
|
48
|
+
shiftAbsoluteElementIntoView(wrapper, this.root);
|
|
49
|
+
});
|
|
45
50
|
}
|
|
46
51
|
close() {
|
|
47
52
|
if (this._active) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';
|
|
2
2
|
import { addDisposableListener, Emitter } from '../../../events';
|
|
3
3
|
import { VoidContainer } from './voidContainer';
|
|
4
|
-
import { toggleClass } from '../../../dom';
|
|
4
|
+
import { findRelativeZIndexParent, toggleClass } from '../../../dom';
|
|
5
5
|
import { WillShowOverlayLocationEvent } from '../../dockviewGroupPanelModel';
|
|
6
6
|
import { getPanelData } from '../../../dnd/dataTransfer';
|
|
7
7
|
import { Tabs } from './tabs';
|
|
@@ -210,7 +210,7 @@ export class TabsContainer extends CompositeDisposable {
|
|
|
210
210
|
toggleClass(wrapper, 'dv-tab', true);
|
|
211
211
|
toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);
|
|
212
212
|
toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);
|
|
213
|
-
wrapper.addEventListener('
|
|
213
|
+
wrapper.addEventListener('pointerdown', () => {
|
|
214
214
|
this.accessor.popupService.close();
|
|
215
215
|
tab.element.scrollIntoView();
|
|
216
216
|
tab.panel.api.setActive();
|
|
@@ -218,9 +218,13 @@ export class TabsContainer extends CompositeDisposable {
|
|
|
218
218
|
wrapper.appendChild(child);
|
|
219
219
|
el.appendChild(wrapper);
|
|
220
220
|
}
|
|
221
|
+
const relativeParent = findRelativeZIndexParent(root);
|
|
221
222
|
this.accessor.popupService.openPopover(el, {
|
|
222
223
|
x: event.clientX,
|
|
223
224
|
y: event.clientY,
|
|
225
|
+
zIndex: (relativeParent === null || relativeParent === void 0 ? void 0 : relativeParent.style.zIndex)
|
|
226
|
+
? `calc(${relativeParent.style.zIndex} * 2)`
|
|
227
|
+
: undefined,
|
|
224
228
|
});
|
|
225
229
|
}));
|
|
226
230
|
}
|
|
@@ -1476,24 +1476,26 @@ export class DockviewComponent extends BaseGrid {
|
|
|
1476
1476
|
selectedPopoutGroup.disposable.dispose();
|
|
1477
1477
|
}
|
|
1478
1478
|
}
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1479
|
+
if (from.api.location.type !== 'popout') {
|
|
1480
|
+
const referenceLocation = getGridLocation(to.element);
|
|
1481
|
+
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
1482
|
+
let size;
|
|
1483
|
+
switch (this.gridview.orientation) {
|
|
1484
|
+
case Orientation.VERTICAL:
|
|
1485
|
+
size =
|
|
1486
|
+
referenceLocation.length % 2 == 0
|
|
1487
|
+
? from.api.width
|
|
1488
|
+
: from.api.height;
|
|
1489
|
+
break;
|
|
1490
|
+
case Orientation.HORIZONTAL:
|
|
1491
|
+
size =
|
|
1492
|
+
referenceLocation.length % 2 == 0
|
|
1493
|
+
? from.api.height
|
|
1494
|
+
: from.api.width;
|
|
1495
|
+
break;
|
|
1496
|
+
}
|
|
1497
|
+
this.gridview.addView(from, size, dropLocation);
|
|
1495
1498
|
}
|
|
1496
|
-
this.gridview.addView(from, size, dropLocation);
|
|
1497
1499
|
}
|
|
1498
1500
|
from.panels.forEach((panel) => {
|
|
1499
1501
|
this._onDidMovePanel.fire({ panel, from });
|
package/dist/esm/dom.d.ts
CHANGED
|
@@ -50,3 +50,7 @@ export declare class Classnames {
|
|
|
50
50
|
export declare function isChildEntirelyVisibleWithinParent(child: HTMLElement, parent: HTMLElement): boolean;
|
|
51
51
|
export declare function onDidWindowMoveEnd(window: Window): Emitter<void>;
|
|
52
52
|
export declare function onDidWindowResizeEnd(element: Window, cb: () => void): CompositeDisposable;
|
|
53
|
+
export declare function shiftAbsoluteElementIntoView(element: HTMLElement, root: HTMLElement, options?: {
|
|
54
|
+
buffer: number;
|
|
55
|
+
}): void;
|
|
56
|
+
export declare function findRelativeZIndexParent(el: HTMLElement): HTMLElement | null;
|
package/dist/esm/dom.js
CHANGED
|
@@ -314,3 +314,41 @@ export function onDidWindowResizeEnd(element, cb) {
|
|
|
314
314
|
}));
|
|
315
315
|
return disposable;
|
|
316
316
|
}
|
|
317
|
+
export function shiftAbsoluteElementIntoView(element, root, options = { buffer: 10 }) {
|
|
318
|
+
const buffer = options.buffer;
|
|
319
|
+
const rect = element.getBoundingClientRect();
|
|
320
|
+
const rootRect = element.getBoundingClientRect();
|
|
321
|
+
const viewportWidth = root.clientWidth;
|
|
322
|
+
const viewportHeight = root.clientHeight;
|
|
323
|
+
let translateX = 0;
|
|
324
|
+
let translateY = 0;
|
|
325
|
+
const left = rect.left - rootRect.left;
|
|
326
|
+
const top = rect.top - rootRect.top;
|
|
327
|
+
const bottom = rect.bottom - rootRect.bottom;
|
|
328
|
+
const right = rect.right - rootRect.right;
|
|
329
|
+
// Check horizontal overflow
|
|
330
|
+
if (left < buffer) {
|
|
331
|
+
translateX = buffer - left;
|
|
332
|
+
}
|
|
333
|
+
else if (right > viewportWidth - buffer) {
|
|
334
|
+
translateX = viewportWidth - right - buffer;
|
|
335
|
+
}
|
|
336
|
+
// Check vertical overflow
|
|
337
|
+
if (top < buffer) {
|
|
338
|
+
translateY = buffer - top;
|
|
339
|
+
}
|
|
340
|
+
else if (bottom > viewportHeight - buffer) {
|
|
341
|
+
translateY = viewportHeight - bottom - buffer;
|
|
342
|
+
}
|
|
343
|
+
// Apply the translation if needed
|
|
344
|
+
if (translateX !== 0 || translateY !== 0) {
|
|
345
|
+
element.style.transform = `translate(${translateX}px, ${translateY}px)`;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
export function findRelativeZIndexParent(el) {
|
|
349
|
+
let tmp = el;
|
|
350
|
+
while (tmp && (tmp.style.zIndex === 'auto' || tmp.style.zIndex === '')) {
|
|
351
|
+
tmp = tmp.parentElement;
|
|
352
|
+
}
|
|
353
|
+
return tmp;
|
|
354
|
+
}
|