Skip to content

feat(dockview-core): pinnable overlay panels for edge groups (#1283)#1295

Open
0211Abhay wants to merge 1 commit into
mathuo:masterfrom
0211Abhay:feat/1283-pinnable-overlay-panels-vs-style
Open

feat(dockview-core): pinnable overlay panels for edge groups (#1283)#1295
0211Abhay wants to merge 1 commit into
mathuo:masterfrom
0211Abhay:feat/1283-pinnable-overlay-panels-vs-style

Conversation

@0211Abhay
Copy link
Copy Markdown

@0211Abhay 0211Abhay commented May 21, 2026

Description

Closes #1283, relates to #664

Edge groups could be collapsed to their tab strip but had no way to expand as a floating overlay without pushing the layout.

This PR adds a pinnable/auto-hide mode for edge groups, matching the Visual Studio tool-window pattern.

Pinned (default): edge groups push the layout when expanded — existing behaviour is unchanged.

Unpinned: the group collapses to its tab strip only in the layout. Clicking a tab opens the panel as an absolutely-positioned overlay over the content area. Clicking outside dismisses it.

Screen.Recording.2026-05-22.021332.mp4

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Refactor / cleanup
  • Build / CI / tooling

Affected packages

  • dockview-core
  • dockview (vanilla JS)
  • dockview-react
  • dockview-vue
  • dockview-angular
  • docs

How to test

  • yarn jest --selectProjects dockview-core
  • Manual behaviour is demonstrated in the screen recording above

Checklist

  • yarn lint:fix passes
  • yarn format passes
  • npm run gen has been run and generated files are up to date
  • yarn test passes
  • I have added or updated tests where applicable
  • Breaking changes are documented

…1283)

Adds a pinnable/auto-hide overlay mode for edge groups, matching the
Visual Studio tool-window pattern (closes mathuo#1283, relates to mathuo#664).

Pinned (default): edge groups push the layout when expanded — existing
behaviour is unchanged.

Unpinned: the group collapses to its tab strip only in the layout.
Clicking a tab opens the panel as an absolutely-positioned overlay over
the content area; clicking outside dismisses it.

- EdgeGroupOptions.pinned?: boolean — opt-in at construction time
- DockviewGroupPanelApi: setPinned() / isPinned() / onDidPinnedChange
- ShellManager: setEdgeGroupPinned / isEdgeGroupPinned with full overlay
  lifecycle (_showOverlay / _hideOverlay)
- Overlay removes dv-edge-collapsed on show and restores it on hide,
  fixing invisible content and pointer-event steal in the collapsed slot
- Shell element: overflow:clip + isolation:isolate for stacking context
- dv-content-container: overflow:hidden on edge groups prevents bleed
- pinned state serialised in toJSON and restored in fromJSON
- DockviewGroupPanelPinnedChangeEvent exported from index.ts
- 100 new tests across dockviewShell.spec.ts and dockviewGroupPanelApi.spec.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: pinnable overlay panels for edge groups (VS-style auto-hide)

1 participant