[UI] Fixes Overlapping Nav Panels Bug (#14175) (#14210)

* moves and renames cluster sidenav to dashboard

* adds changelog

* reverts cluster to dashboard nav name change

* reverts cluster nav import path change

* reverts cluster nav test name change

* adds nav to cluster error, mfa-setup, not-found, storage-restore and storage routes

* fixes tests

Co-authored-by: Jordan Reimer <zofskeez@gmail.com>
This commit is contained in:
Vault Automation 2026-04-22 18:43:23 -04:00 committed by GitHub
parent 512398206d
commit bd03ef2e0f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 17 additions and 12 deletions

3
changelog/_14175.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
ui: Fixed sidebar navigation animation issues
```

View File

@ -2,7 +2,6 @@
Copyright IBM Corp. 2016, 2025
SPDX-License-Identifier: BUSL-1.1
}}
<Sidebar::Nav::Cluster />
{{#if this.vaultVersion.isEnterprise}}
{{#each this.customMessages.bannerMessages as |bannerMessage|}}
{{#if (get this.customMessages.bannerState bannerMessage.id)}}

View File

@ -3,6 +3,7 @@
SPDX-License-Identifier: BUSL-1.1
}}
<Sidebar::Nav::Cluster />
<Dashboard::Overview
@replication={{this.model.replication}}
@secretsEngines={{this.model.secretsEngines}}

View File

@ -3,4 +3,5 @@
SPDX-License-Identifier: BUSL-1.1
}}
<Sidebar::Nav::Cluster />
<Page::Error @error={{this.model}} @isFullPage={{true}} />

View File

@ -3,6 +3,8 @@
SPDX-License-Identifier: BUSL-1.1
}}
<Sidebar::Nav::Cluster />
{{#if (eq this.onStep 1)}}
<Mfa::MfaSetupStepOne
@header={{this.header}}

View File

@ -3,4 +3,5 @@
SPDX-License-Identifier: BUSL-1.1
}}
<Sidebar::Nav::Cluster />
<Page::Error @error={{hash httpStatus=404 path=this.model.path}} @isFullPage={{true}} />

View File

@ -3,4 +3,5 @@
SPDX-License-Identifier: BUSL-1.1
}}
<Sidebar::Nav::Cluster />
<RaftStorageRestore />

View File

@ -3,4 +3,5 @@
SPDX-License-Identifier: BUSL-1.1
}}
<Sidebar::Nav::Cluster />
<RaftStorageOverview @model={{this.model}} />

View File

@ -574,11 +574,6 @@ module('Acceptance | kv-v2 workflow | edge cases', function (hooks) {
module('Acceptance | Enterprise | kv-v2 workflow | edge cases', function (hooks) {
setupApplicationTest(hooks);
const navToEngine = async (backend) => {
await click(GENERAL.navLink('Secrets'));
return await click(GENERAL.linkTo(`${backend}/`));
};
const assertDeleteActions = (assert, expected = ['delete', 'destroy']) => {
['delete', 'destroy', 'undelete'].forEach((toolbar) => {
if (expected.includes(toolbar)) {
@ -637,7 +632,9 @@ module('Acceptance | Enterprise | kv-v2 workflow | edge cases', function (hooks)
const backend = this.backend;
const ns = this.namespace;
const secret = 'my-create-secret';
await navToEngine(backend);
await click(GENERAL.navLink('Secrets'));
await click(GENERAL.linkTo(`${backend}/`));
assert.strictEqual(
currentURL(),
`/vault/secrets-engines/${backend}/kv/list?namespace=${ns}`,
@ -690,8 +687,8 @@ module('Acceptance | Enterprise | kv-v2 workflow | edge cases', function (hooks)
const ns = this.namespace;
const secret = 'my-delete-secret';
await writeVersionedSecret(backend, secret, 'foo', 'bar', 2, ns);
await navToEngine(backend);
await click(GENERAL.navLink('Secrets engines'));
await click(GENERAL.linkTo(`${backend}/`));
await click(PAGE.list.item(secret));
assert.strictEqual(
currentURL(),

View File

@ -43,12 +43,13 @@ module('Acceptance | sidebar navigation', function (hooks) {
});
test('it should link to correct routes at the cluster level', async function (assert) {
assert.expect(8);
assert.expect(9);
assert.dom(panel('Cluster')).exists('Cluster nav panel renders');
const subNavs = [
{ label: 'Access control', route: 'policies/acl' },
{ label: 'Secrets', route: 'secrets-engines' },
{ label: 'Operational tools', route: 'tools/wrap' },
];
@ -62,10 +63,8 @@ module('Acceptance | sidebar navigation', function (hooks) {
const links = [
{ label: 'Raft storage', route: '/vault/storage/raft' },
{ label: 'Secrets', route: '/vault/secrets-engines' },
{ label: 'Dashboard', route: '/vault/dashboard' },
];
for (const l of links) {
await click(link(l.label));
assert.strictEqual(currentURL(), l.route, `${l.label} route renders`);