From b3e195b875ee97988972e90196620f723af1e9cc Mon Sep 17 00:00:00 2001 From: tada5hi Date: Thu, 17 Oct 2024 15:08:51 +0200 Subject: [PATCH] feat: introduce buildOnce method for navigation manager --- examples/nuxt/middleware/layout.global.ts | 2 +- packages/navigation/src/manager/module.ts | 8 ++++++-- packages/navigation/src/manager/types.ts | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/nuxt/middleware/layout.global.ts b/examples/nuxt/middleware/layout.global.ts index 34cd4ee8..d323ef44 100644 --- a/examples/nuxt/middleware/layout.global.ts +++ b/examples/nuxt/middleware/layout.global.ts @@ -9,5 +9,5 @@ import { injectNavigationManager } from '@vuecs/navigation'; export default defineNuxtRouteMiddleware(async (route) => { const manager = injectNavigationManager(); - await manager.build({ path: route.fullPath }); + await manager.buildOnce({ path: route.fullPath }); }); diff --git a/packages/navigation/src/manager/module.ts b/packages/navigation/src/manager/module.ts index b137eb42..1506986c 100644 --- a/packages/navigation/src/manager/module.ts +++ b/packages/navigation/src/manager/module.ts @@ -63,11 +63,15 @@ export class NavigationManager extends EventEmitter<{ return this.items.filter((item) => item.level === tier); } - async build(options: NavigationManagerBuildOptions) : Promise { - if (this.built) { + async buildOnce(options: NavigationManagerBuildOptions) : Promise { + if (this.built && !options.reset) { return this.items; } + return this.build(options); + } + + async build(options: NavigationManagerBuildOptions) : Promise { this.built = true; this.items = []; diff --git a/packages/navigation/src/manager/types.ts b/packages/navigation/src/manager/types.ts index e348d846..0aea021a 100644 --- a/packages/navigation/src/manager/types.ts +++ b/packages/navigation/src/manager/types.ts @@ -8,7 +8,8 @@ import type { NavigationItem, NavigationItemsFn } from '../types'; export type NavigationManagerBuildOptions = { - path: string + path: string, + reset?: boolean }; export type NavigationManagerOptions = {