1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

#6797: Fix sidenav jumpy/glitchy behavior on page reload when pinned

This commit is contained in:
checktheroads
2021-08-01 00:27:27 -07:00
parent b86edd4a20
commit 261372289a
6 changed files with 37 additions and 9 deletions

View File

@ -17,7 +17,10 @@ class SideNav {
constructor(base: HTMLDivElement) {
this.base = base;
this.state = new StateManager<NavState>({ pinned: true }, { persist: true });
this.state = new StateManager<NavState>(
{ pinned: true },
{ persist: true, key: 'netbox-sidenav' },
);
this.init();
this.initLinks();

View File

@ -8,6 +8,11 @@ interface StateOptions {
* exists in localStorage, the value will be read and used as the initial value.
*/
persist?: boolean;
/**
* Use a static localStorage key instead of automatically generating one.
*/
key?: string;
}
/**
@ -49,10 +54,15 @@ export class StateManager<T extends Dict, K extends keyof T = keyof T> {
private key: string = '';
constructor(raw: T, options: StateOptions) {
this.key = this.generateStateKey(raw);
this.options = options;
// Use static key if defined.
if (typeof this.options.key === 'string') {
this.key = this.options.key;
} else {
this.key = this.generateStateKey(raw);
}
if (this.options.persist) {
const saved = this.retrieve();
if (saved !== null) {