Skip to content

chore(DockView): bump version 10.0.3#940

Merged
ArgoZhang merged 5 commits intomasterfrom
dockview-v5.1.0
Mar 13, 2026
Merged

chore(DockView): bump version 10.0.3#940
ArgoZhang merged 5 commits intomasterfrom
dockview-v5.1.0

Conversation

@zhaijunlei955
Copy link
Contributor

@zhaijunlei955 zhaijunlei955 commented Mar 6, 2026

Link issues

fixes #951

Summary By Copilot

Regression?

  • Yes
  • No

Risk

  • High
  • Medium
  • Low

Verification

  • Manual (required)
  • Automated

Packaging changes reviewed?

  • Yes
  • No
  • N/A

☑️ Self Check before Merge

⚠️ Please check all items below before review. ⚠️

  • Doc is updated/provided or not needed
  • Demo is updated/provided or not needed
  • Merge the latest code from the main branch

Summary by Sourcery

Update embedded dockview-core and stylesheet to the 5.1.0 release, adding support for configurable header positions and vertical tab layouts, enhancing scrolling and overlay behavior, and refreshing theme styles.

New Features:

  • Allow groups to configure header position (top, bottom, left, right) and persist it through serialization and APIs.
  • Support vertical tab orientation with a unified, orientation-aware scrollbar for tab containers.
  • Expose default header position and header position control through the Dockview component and group panel APIs.

Bug Fixes:

  • Ensure visibility checks account for both horizontal and vertical bounds when determining if a child is fully visible within a parent.
  • Prevent transient overlay flashes by hiding render overlays until their first layout is applied.
  • Improve bounds-change detection and scrollbar state handling to avoid stale styles and incorrect scroll positions.

Enhancements:

  • Refine disposal management for composite disposables and header actions to avoid leaks and allow removing disposables.
  • Adjust scroll and drag behavior, ARIA stacking, and floating group defaults for smoother interactions and accessibility.
  • Reorganize and extend theme CSS (including dark, light, VS, abyss, dracula, replit, spaced variants) to better isolate theme tokens from layout and add vertical tabs/overflow styling.

Chores:

  • Bump the embedded dockview-core library reference from version 4.13.1 to 5.1.0.

@bb-auto
Copy link

bb-auto bot commented Mar 6, 2026

Thanks for your PR, @zhaijunlei955. Someone from the team will get assigned to your PR shortly and we'll get it reviewed.

@sourcery-ai
Copy link

sourcery-ai bot commented Mar 6, 2026

Reviewer's Guide

Updates the embedded dockview-core library from v4.13.1 to v5.1.0, bringing in upstream behavior changes for disposables, visibility checks, scrollbars, tab/header orientation, overlay rendering, serialization, and themes, along with matching CSS updates for new scrollbar and layout capabilities.

Sequence diagram for changing header position via API

sequenceDiagram
    actor User
    participant Api as DockviewGroupPanelApiImpl
    participant Model as DockviewGroupPanelModel
    participant TabsContainer
    participant Tabs
    participant Scrollbar

    User->>Api: setHeaderPosition(position)
    Api->>Model: set headerPosition(position)

    activate Model
    Model->>Model: store _headerPosition
    Model->>Model: update container CSS classes
    Model->>Model: compute direction = horizontal|vertical

    Model->>TabsContainer: set direction(direction)
    activate TabsContainer
    TabsContainer->>TabsContainer: update CSS classes
    TabsContainer->>Tabs: set direction(direction)
    deactivate TabsContainer

    activate Tabs
    Tabs->>Tabs: update CSS classes
    alt scrollbar exists
        Tabs->>Scrollbar: set orientation(direction)
        activate Scrollbar
        Scrollbar->>Scrollbar: reset _scrollOffset
        Scrollbar->>Scrollbar: update CSS classes
        deactivate Scrollbar
    end
    deactivate Tabs

    Model->>Model: relayout active panel
    Model->>Model: updateHeaderActions()
    deactivate Model

    Api-->>User: header position updated
Loading

Class diagram for updated scrollbar and tab orientation

classDiagram
    class CompositeDisposable {
        - boolean _isDisposed
        - Set~any~ _disposables
        + CompositeDisposable(args)
        + addDisposables(args)
        + removeDisposable(disposable)
        + dispose()
    }

    class Scrollbar {
        - HTMLElement scrollableElement
        - HTMLElement _element
        - HTMLElement _scrollbar
        - number _scrollOffset
        - string _orientation
        + Scrollbar(scrollableElement)
        + HTMLElement get element()
        + string get orientation()
        + void set orientation(value)
        + void calculateScrollbarStyles()
    }

    class Tabs {
        - any group
        - any accessor
        - MutableDisposable _observerDisposable
        - Scrollbar _scrollbar
        - any[] _tabs
        - number selectedIndex
        - boolean _showTabsOverflowControl
        - string _direction
        - HTMLElement _tabsList
        - HTMLElement _element
        + Tabs(group, accessor, options)
        + HTMLElement get element()
        + any[] get tabs()
        + string get direction()
        + void set direction(value)
    }

    class TabsContainer {
        - any accessor
        - any group
        - boolean _hidden
        - string _direction
        - Tabs tabs
        - HTMLElement _element
        - HTMLElement rightActionsContainer
        + TabsContainer(group, accessor)
        + HTMLElement get element()
        + boolean get hidden()
        + void set hidden(value)
        + string get direction()
        + void set direction(value)
        + void setRightActionsElement(element)
        + void setLeftActionsElement(element)
        + void setPrefixActionsElement(element)
    }

    CompositeDisposable <|-- Scrollbar
    CompositeDisposable <|-- Tabs
    CompositeDisposable <|-- TabsContainer

    TabsContainer *-- Tabs
    Tabs *-- Scrollbar
Loading

Class diagram for updated header position and actions APIs

classDiagram
    class DockviewComponent {
        - any options
        - any _api
        - any[] groups
        + string get defaultRenderer()
        + string get defaultHeaderPosition()
        + any get api()
        + void updateOptions(options)
        + any deserialize(json, options)
    }

    class DockviewGroupPanelModel {
        - HTMLElement container
        - any accessor
        - string id
        - any options
        - any groupPanel
        - boolean _isGroupActive
        - boolean _locked
        - any _location
        - any[] mostRecentlyUsed
        - any _overwriteRenderContainer
        - TabsContainer tabsContainer
        - any header
        - any contentContainer
        - string _headerPosition
        - MutableDisposable _rightHeaderActionsDisposable
        - MutableDisposable _leftHeaderActionsDisposable
        - MutableDisposable _prefixHeaderActionsDisposable
        - any _rightHeaderActions
        - any _leftHeaderActions
        - any _prefixHeaderActions
        - any _activePanel
        - number _width
        - number _height
        + DockviewGroupPanelModel(container, accessor, id, options, groupPanel)
        + string get headerPosition()
        + void set headerPosition(value)
        + any serialize()
        + void updateHeaderActions()
        + void rerender(panel)
        + void setActive(isActive, skipFocus)
    }

    class DockviewGroupPanelApiImpl {
        - any _group
        + any get window()
        + void setHeaderPosition(position)
        + string getHeaderPosition()
        + void moveTo(options)
    }

    class TabsContainer {
        - string _direction
        + string get direction()
        + void set direction(value)
        + Tabs tabs
    }

    class Tabs {
        - string _direction
        + string get direction()
        + void set direction(value)
    }

    class Scrollbar {
        - string _orientation
        + string get orientation()
        + void set orientation(value)
    }

    DockviewComponent o-- DockviewGroupPanelModel : creates
    DockviewComponent --> DockviewGroupPanelApiImpl : exposes via api

    DockviewGroupPanelModel o-- TabsContainer
    DockviewGroupPanelModel --> DockviewGroupPanelApiImpl : used by api

    TabsContainer *-- Tabs
    Tabs *-- Scrollbar

    DockviewGroupPanelApiImpl ..> DockviewGroupPanelModel : controls headerPosition

    DockviewGroupPanelModel ..> TabsContainer : sets direction
    DockviewGroupPanelModel ..> Tabs : sets direction
    Tabs ..> Scrollbar : sets orientation
Loading

File-Level Changes

Change Details Files
Update dockview-core JavaScript to v5.1.0 with new APIs and behavior changes.
  • Bump embedded dockview-core version marker from 4.13.1 to 5.1.0 (and introduce a stray console.log that likely should be removed).
  • Change CompositeDisposable to use a Set internally, add removeDisposable, and adjust disposal semantics.
  • Fix isChildEntirelyVisibleWithinParent to also check vertical visibility, and clean up various conditional/parenthesis issues (e.g., checkBoundsChanged, DockviewGroupPanelApiImpl, DefaultDockviewDeserializer, AriaLevelTracker, DockviewComponent floating group bounds).
  • Refactor Scrollbar to support both horizontal and vertical orientation with a single element, generic scroll offset tracking, and orientation-aware wheel/drag/scroll logic.
  • Extend Tabs and TabsContainer to support horizontal/vertical direction, wiring the Scrollbar orientation to tab direction and updating class management for layout.
  • Add defaultHeaderPosition option, headerPosition state and API on DockviewGroupPanelModel/DockviewGroupPanelApiImpl, including layout, serialization, and dynamic header action re-creation via MutableDisposable wrappers.
  • Improve overlay rendering by hiding overlay elements until first RAF‑based layout to avoid a flash at (0,0).
  • Ensure panels with renderer='always' are rendered even when opened with skipSetActive, and add minor refactors to constraints handling and misc conditionals.
src/components/BootstrapBlazor.DockView/wwwroot/js/dockview-core.esm.js
Align dockview CSS with v5.1.0 for new scrollbar, header orientation, and theme behavior.
  • Generalize .dv-scrollbar styles and split into horizontal/vertical variants, including hover/scrolling state updates.
  • Adjust theme blocks (dark, light, vs, abyss, dracula, replit, abyss-spaced, light-spaced) to separate the drop-target transition rule, restructure some theme variables, and move/duplicate settings into dedicated theme root selectors.
  • Introduce .dv-root-wrapper, .dv-grid-view, and .dv-branch-node full-size rules earlier and add new group header position/layout classes (dv-groupview-header-{top,bottom,left,right}) for flex direction changes.
  • Add vertical tab container support (dv-tabs-container-vertical, dv-vertical) including writing-mode changes, divider line orientation, tab padding tweaks, and scrollable overflow styling (including custom scrollbars).
  • Adjust tab and overflow container sizing (e.g., default tab width: 100%, overflow max-height and scrollbars) and update right-actions and header containers for vertical orientation (dv-right-actions-container-vertical, dv-groupview-header-vertical).
src/components/BootstrapBlazor.DockView/wwwroot/css/dockview.css

Possibly linked issues

  • #(not specified): PR upgrades DockView (to 5.1.0 instead of 4.7.1), fulfilling the request to update the DockView package.
  • #UNKNOWN: PR upgrades dockview to v5.1.0, fulfilling the issue’s request to bump the Dock/DockView version.
  • #unknown: They both aim to upgrade DockView; this PR updates dockview-core and CSS to v5.1.0 fulfilling the request.

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@bb-auto bb-auto bot requested a review from ArgoZhang March 6, 2026 01:28
Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue, and left some high level feedback:

  • There is a stray console.log('333'); at the top of dockview-core.esm.js that should be removed to avoid unexpected console noise in production.
  • Since dockview-core.esm.js is a vendored library file, consider ensuring it matches the upstream 5.1.0 build artifact exactly (no local edits beyond the version bump) to make future upgrades and diffing against upstream easier.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- There is a stray `console.log('333');` at the top of `dockview-core.esm.js` that should be removed to avoid unexpected console noise in production.
- Since `dockview-core.esm.js` is a vendored library file, consider ensuring it matches the upstream 5.1.0 build artifact exactly (no local edits beyond the version bump) to make future upgrades and diffing against upstream easier.

## Individual Comments

### Comment 1
<location path="src/components/BootstrapBlazor.DockView/wwwroot/js/dockview-core.esm.js" line_range="7" />
<code_context>
  * @link https://github.com/mathuo/dockview
  * @license MIT
  */
+console.log('333');
 class TransferObject {
 }
</code_context>
<issue_to_address>
**issue:** Remove leftover console.log to avoid noisy production logs.

This appears to be a debug statement; unless it’s intentionally required, please remove it or wrap it behind a debug flag to avoid spamming consumer consoles.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

ArgoZhang
ArgoZhang previously approved these changes Mar 13, 2026
@ArgoZhang ArgoZhang merged commit 7f7374b into master Mar 13, 2026
2 checks passed
@ArgoZhang ArgoZhang deleted the dockview-v5.1.0 branch March 13, 2026 03:10
@ArgoZhang ArgoZhang changed the title chore: update dockview to v5.1.0 chore(DockView): bump version 10.0.3 Mar 13, 2026
@bb-auto bb-auto bot added the enhancement New feature or request label Mar 13, 2026
@bb-auto bb-auto bot added this to the v9.2.0 milestone Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(DockView): bump version 10.0.3

2 participants