diff --git a/src/vs/sessions/contrib/changes/browser/ciStatusWidget.ts b/src/vs/sessions/contrib/changes/browser/ciStatusWidget.ts index 4d21fa58b24..be63202797b 100644 --- a/src/vs/sessions/contrib/changes/browser/ciStatusWidget.ts +++ b/src/vs/sessions/contrib/changes/browser/ciStatusWidget.ts @@ -148,7 +148,7 @@ class CICheckListRenderer implements IListRenderer { // Don't toggle when clicking the action bar if (dom.isAncestor(e.target as HTMLElement, this._headerActionBarContainer)) { @@ -236,6 +240,12 @@ export class CIStatusWidget extends Disposable { } this._toggleCollapsed(); })); + this._register(dom.addDisposableListener(this._headerNode, dom.EventType.KEY_DOWN, e => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + this._toggleCollapsed(); + } + })); // Body (list of checks) this._bodyNode = dom.append(this._domNode, $('.ci-status-widget-body')); @@ -273,6 +283,7 @@ export class CIStatusWidget extends Disposable { this._model = model; if (!model) { this._checkCount = 0; + this._setCollapsed(false); this._renderBody([]); this._renderHeaderActions([]); this._domNode.style.display = 'none'; @@ -376,12 +387,18 @@ export class CIStatusWidget extends Disposable { } private _toggleCollapsed(): void { - this._collapsed = !this._collapsed; - this._updateChevron(); + this._setCollapsed(!this._collapsed); this._onDidToggleCollapsed.fire(this._collapsed); + // Also fires onDidChangeHeight so the SplitView pane updates its min/max constraints this._onDidChangeHeight.fire(); } + private _setCollapsed(collapsed: boolean): void { + this._collapsed = collapsed; + this._updateChevron(); + this._headerNode.setAttribute('aria-expanded', String(!collapsed)); + } + private _updateChevron(): void { this._chevronNode.className = 'group-chevron'; this._chevronNode.classList.add( diff --git a/src/vs/sessions/contrib/changes/browser/media/ciStatusWidget.css b/src/vs/sessions/contrib/changes/browser/media/ciStatusWidget.css index 6a635725289..82a901b5556 100644 --- a/src/vs/sessions/contrib/changes/browser/media/ciStatusWidget.css +++ b/src/vs/sessions/contrib/changes/browser/media/ciStatusWidget.css @@ -19,7 +19,9 @@ display: flex; align-items: center; gap: 6px; - padding: 8px 0; + padding: 6px 2px; + margin-top: 2px; + border-radius: 8px; min-height: 22px; font-weight: 500; cursor: pointer; @@ -70,7 +72,7 @@ .ci-status-widget.has-fix-actions:hover .ci-status-widget-counts, .ci-status-widget.has-fix-actions:focus-within .ci-status-widget-counts { - display: none; + visibility: hidden; } .ci-status-widget-count-badge {