@filip.mazev/blocks 1.2.14 → 1.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -208,5 +208,5 @@ function withNav(route, nav) {
208
208
  * Generated bundle index. Do not edit.
209
209
  */
210
210
 
211
- export { NAVIGATION_CONFIG, NAVIGATION_I18N, NavigationService, provideNavigation, withNav };
211
+ export { NAVIGATION_ACCESS_ADAPTER, NAVIGATION_CONFIG, NAVIGATION_I18N, NavigationService, provideNavigation, withNav };
212
212
  //# sourceMappingURL=filip.mazev-blocks-navigation.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"filip.mazev-blocks-navigation.mjs","sources":["../../../projects/blocks/navigation/tokens/navigation-config.token.ts","../../../projects/blocks/navigation/tokens/navigation-i18n.token.ts","../../../projects/blocks/navigation/tokens/navigation-access-adapter.token.ts","../../../projects/blocks/navigation/services/navigation.service.ts","../../../projects/blocks/navigation/helpers/navigation-functions.ts","../../../projects/blocks/navigation/public-api.ts","../../../projects/blocks/navigation/filip.mazev-blocks-navigation.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\nimport { INavigationConfig } from \"../interfaces/inavigation-config.interface\";\n\nexport const NAVIGATION_CONFIG = new InjectionToken<INavigationConfig>('NAVIGATION_CONFIG');","import { InjectionToken } from \"@angular/core\";\nimport { INavigationI18nAdapter } from \"../interfaces/inavigation-i18n-adapter.interface\";\n\nexport const NAVIGATION_I18N = new InjectionToken<INavigationI18nAdapter>('NAVIGATION_I18N');","import { InjectionToken } from \"@angular/core\";\nimport { INavigationAccessAdapter } from \"../interfaces/inavigation-access-adapter.interface\";\n\nexport const NAVIGATION_ACCESS_ADAPTER = new InjectionToken<INavigationAccessAdapter>('NAVIGATION_ACCESS_ADAPTER');","import { computed, inject, Injectable, Signal, signal } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, NavigationEnd, Router, Routes } from \"@angular/router\";\nimport { NAVIGATION_CONFIG } from \"../tokens/navigation-config.token\";\nimport { IResolvedNavigation } from \"../interfaces/iresolved-navigation.interface\";\nimport { filter } from \"rxjs\";\nimport { IBreadcrumbItem } from \"../interfaces/ibreadcrumb-item.interface\";\nimport { INavMeta } from \"../interfaces/inav-meta.interface\";\nimport { INavigationItem } from \"../interfaces/inavigation-item.interface\";\nimport { NAVIGATION_I18N } from \"../tokens/navigation-i18n.token\";\nimport { NAVIGATION_ACCESS_ADAPTER } from \"../tokens/navigation-access-adapter.token\";\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n private readonly router = inject(Router);\n private readonly config = inject(NAVIGATION_CONFIG, { optional: true });\n private readonly i18n = inject(NAVIGATION_I18N, { optional: true });\n private readonly accessAdapter = inject(NAVIGATION_ACCESS_ADAPTER, { optional: true });\n\n private readonly _current = signal<IResolvedNavigation>({ breadcrumbs: [] });\n public readonly current = this._current.asReadonly();\n\n public readonly routeBase = computed<string | undefined>(() => {\n return this.accessAdapter?.resolveBaseRoute();\n });\n\n public readonly routes: Signal<INavigationItem[]> = computed(() => {\n this.i18n?.version?.();\n return this.extractRoutes(this.router.config);\n });\n\n public readonly menu = computed(() => this.buildMenu(this.routes()));\n\n public readonly sections = computed(() => {\n const sections = this.config?.sections ?? [];\n const menu = this.menu();\n\n if(!sections.length) {\n return [{ id: 'default', items: menu }];\n }\n\n return sections\n .map(section => ({\n ...section,\n items: menu.filter(item => (item.section ?? 'default') === section.id),\n }))\n .filter(section => section.items.length > 0)\n .sort((a, b) => (a.order ?? Number.POSITIVE_INFINITY) - (b.order ?? Number.POSITIVE_INFINITY));\n });\n\n constructor() {\n this.updateCurrent();\n\n this.router.events\n .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n .subscribe(() => this.updateCurrent());\n }\n\n public navigateBack(): void {\n const breadcrumbs = this.current().breadcrumbs;\n \n if (breadcrumbs.length > 1) {\n const previousBreadcrumb = breadcrumbs[breadcrumbs.length - 2];\n this.router.navigateByUrl(previousBreadcrumb.route);\n } else {\n this.router.navigateByUrl(this.routeBase() ?? '/');\n }\n }\n\n //#region Helpers\n\n private updateCurrent(): void {\n this._current.set(\n this.resolveCurrent(this.router.routerState.snapshot.root)\n );\n }\n\n private extractRoutes(routes: Routes, parentSegment: string[] = []): INavigationItem[] {\n const items: INavigationItem[] = [];\n\n for(const route of routes) {\n if(route.redirectTo) continue;\n\n if (this.accessAdapter && !this.accessAdapter.canAccessMenu(route.data ?? {})) {\n continue;\n }\n\n const ownPath = route.path ?? '';\n \n const fullSegments = ownPath \n ? [...parentSegment, ownPath] \n : [...parentSegment];\n\n const fullRoute = '/' + fullSegments.filter(Boolean).join('/');\n\n const children = route.children?.length\n ? this.extractRoutes(route.children, fullSegments)\n : [];\n \n const nav = route.data?.['nav'] as INavMeta | undefined;\n\n if(!nav) {\n items.push(...children);\n continue;\n }\n\n const item = {\n id: fullRoute,\n route: fullRoute,\n label: this.resolveNavText(nav, 'label') ?? '',\n icon: nav.icon,\n section: nav.section,\n visible: nav.visible ? nav.visible() : true,\n data: nav\n };\n\n items.push(item);\n }\n\n return this.sortNavigationItems(items);\n }\n\n private resolveCurrent(root: ActivatedRouteSnapshot): IResolvedNavigation {\n const breadcrumbs: IBreadcrumbItem[] = [];\n let currentNode: ActivatedRouteSnapshot | null = root;\n let current: INavigationItem | undefined;\n\n while (currentNode) {\n const next: ActivatedRouteSnapshot | null = currentNode.children.find(child => child.outlet === 'primary') ?? null;\n if(!next) break;\n\n const nav = next.routeConfig?.data?.['nav'] as INavMeta | undefined;\n const url = this.urlFromSnapshot(next);\n\n if(nav && !nav.hidden) {\n const breadcrumbLabel = this.resolveNavText(nav, 'breadcrumb', next) ?? this.resolveNavText(nav, 'label', next);\n if(breadcrumbLabel) {\n breadcrumbs.push({ label: breadcrumbLabel, route: url });\n }\n\n current = {\n id: url,\n route: url,\n label: this.resolveNavText(nav, 'label', next) ?? '',\n icon: nav.icon,\n section: nav.section,\n visible: nav.visible ? nav.visible() : true,\n data: nav\n }\n }\n\n currentNode = next;\n }\n\n return { current, breadcrumbs };\n }\n\n private buildMenu(items: INavigationItem[]): INavigationItem[] {\n return items\n .map((item): INavigationItem | null => {\n const children = this.buildMenu(item.children ?? []);\n const includeSelf = item.visible && item.data?.menu !== false;\n\n if (!includeSelf && !children.length) {\n return null;\n }\n\n return {\n ...item,\n children\n };\n }) \n .filter((item): item is INavigationItem => item !== null);\n }\n\n private sortNavigationItems(items: INavigationItem[]): INavigationItem[] {\n const customSort = this.config?.sortItems;\n\n return [...items].sort((a, b) => {\n if(customSort) {\n return customSort(a, b);\n }\n\n const orderA = a.data?.order ?? Number.POSITIVE_INFINITY;\n const orderB = b.data?.order ?? Number.POSITIVE_INFINITY;\n\n if(orderA !== orderB) return orderA - orderB;\n return a.label.localeCompare(b.label);\n });\n }\n\n private resolveNavText(\n nav: INavMeta,\n kind: 'label' | 'breadcrumb',\n snapshot?: ActivatedRouteSnapshot\n ): string | undefined {\n const directValue = kind === 'label' ? nav.label : nav.breadcrumb;\n const key = kind === 'label' ? nav.labelKey : nav.breadcrumbKey;\n\n if(directValue) {\n return typeof directValue === 'function'\n ? directValue({ snapshot: snapshot! })\n : directValue;\n }\n\n if(key) {\n return this.i18n?.translate(key, { route: snapshot });\n }\n\n return undefined;\n }\n\n private urlFromSnapshot(snapshot: ActivatedRouteSnapshot): string {\n return (\n '/' +\n snapshot.pathFromRoot\n .flatMap(s => s.url.map(u => u.path))\n .filter(Boolean)\n .join('/')\n );\n }\n\n //#endregion\n}","import { INavMeta } from \"@navigation/interfaces/inav-meta.interface\";\nimport { INavigationConfig } from \"../interfaces/inavigation-config.interface\";\nimport { NAVIGATION_CONFIG } from \"../tokens/navigation-config.token\";\nimport { Route } from \"@angular/router\";\n\nexport function provideNavigation(config: INavigationConfig) {\n return [\n {\n provide: NAVIGATION_CONFIG,\n useValue: config\n }\n ];\n};\n\nexport function withNav(route: Route, nav: INavMeta): Route {\n const existingNav = (route.data?.['nav'] as INavMeta | undefined) ?? {};\n\n return {\n ...route,\n data: {\n ...(route.data ?? {}),\n nav: {\n ...existingNav,\n ...nav\n }\n }\n };\n}","/*\n * Public API Surface of modal\n */\n\nexport * from './services/navigation.service';\n\nexport * from './interfaces/ibreadcrumb-item.interface';\nexport * from './interfaces/inav-context.interface';\nexport * from './interfaces/inav-meta.interface';\nexport * from './interfaces/inav-route-data.interface';\nexport * from './interfaces/inavigation-access-adapter.interface';\nexport * from './interfaces/inavigation-config.interface';\nexport * from './interfaces/inavigation-i18n-adapter.interface';\nexport * from './interfaces/inavigation-item.interface';\nexport * from './interfaces/inavigation-section-config.interface';\nexport * from './interfaces/iresolved-navigation.interface';\n\nexport * from './tokens/navigation-config.token';\nexport * from './tokens/navigation-i18n.token';\n\nexport * from './helpers/navigation-functions';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filip.mazev-blocks-navigation.mjs","sources":["../../../projects/blocks/navigation/tokens/navigation-config.token.ts","../../../projects/blocks/navigation/tokens/navigation-i18n.token.ts","../../../projects/blocks/navigation/tokens/navigation-access-adapter.token.ts","../../../projects/blocks/navigation/services/navigation.service.ts","../../../projects/blocks/navigation/helpers/navigation-functions.ts","../../../projects/blocks/navigation/public-api.ts","../../../projects/blocks/navigation/filip.mazev-blocks-navigation.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\nimport { INavigationConfig } from \"../interfaces/inavigation-config.interface\";\n\nexport const NAVIGATION_CONFIG = new InjectionToken<INavigationConfig>('NAVIGATION_CONFIG');","import { InjectionToken } from \"@angular/core\";\nimport { INavigationI18nAdapter } from \"../interfaces/inavigation-i18n-adapter.interface\";\n\nexport const NAVIGATION_I18N = new InjectionToken<INavigationI18nAdapter>('NAVIGATION_I18N');","import { InjectionToken } from \"@angular/core\";\nimport { INavigationAccessAdapter } from \"../interfaces/inavigation-access-adapter.interface\";\n\nexport const NAVIGATION_ACCESS_ADAPTER = new InjectionToken<INavigationAccessAdapter>('NAVIGATION_ACCESS_ADAPTER');","import { computed, inject, Injectable, Signal, signal } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, NavigationEnd, Router, Routes } from \"@angular/router\";\nimport { NAVIGATION_CONFIG } from \"../tokens/navigation-config.token\";\nimport { IResolvedNavigation } from \"../interfaces/iresolved-navigation.interface\";\nimport { filter } from \"rxjs\";\nimport { IBreadcrumbItem } from \"../interfaces/ibreadcrumb-item.interface\";\nimport { INavMeta } from \"../interfaces/inav-meta.interface\";\nimport { INavigationItem } from \"../interfaces/inavigation-item.interface\";\nimport { NAVIGATION_I18N } from \"../tokens/navigation-i18n.token\";\nimport { NAVIGATION_ACCESS_ADAPTER } from \"../tokens/navigation-access-adapter.token\";\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n private readonly router = inject(Router);\n private readonly config = inject(NAVIGATION_CONFIG, { optional: true });\n private readonly i18n = inject(NAVIGATION_I18N, { optional: true });\n private readonly accessAdapter = inject(NAVIGATION_ACCESS_ADAPTER, { optional: true });\n\n private readonly _current = signal<IResolvedNavigation>({ breadcrumbs: [] });\n public readonly current = this._current.asReadonly();\n\n public readonly routeBase = computed<string | undefined>(() => {\n return this.accessAdapter?.resolveBaseRoute();\n });\n\n public readonly routes: Signal<INavigationItem[]> = computed(() => {\n this.i18n?.version?.();\n return this.extractRoutes(this.router.config);\n });\n\n public readonly menu = computed(() => this.buildMenu(this.routes()));\n\n public readonly sections = computed(() => {\n const sections = this.config?.sections ?? [];\n const menu = this.menu();\n\n if(!sections.length) {\n return [{ id: 'default', items: menu }];\n }\n\n return sections\n .map(section => ({\n ...section,\n items: menu.filter(item => (item.section ?? 'default') === section.id),\n }))\n .filter(section => section.items.length > 0)\n .sort((a, b) => (a.order ?? Number.POSITIVE_INFINITY) - (b.order ?? Number.POSITIVE_INFINITY));\n });\n\n constructor() {\n this.updateCurrent();\n\n this.router.events\n .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n .subscribe(() => this.updateCurrent());\n }\n\n public navigateBack(): void {\n const breadcrumbs = this.current().breadcrumbs;\n \n if (breadcrumbs.length > 1) {\n const previousBreadcrumb = breadcrumbs[breadcrumbs.length - 2];\n this.router.navigateByUrl(previousBreadcrumb.route);\n } else {\n this.router.navigateByUrl(this.routeBase() ?? '/');\n }\n }\n\n //#region Helpers\n\n private updateCurrent(): void {\n this._current.set(\n this.resolveCurrent(this.router.routerState.snapshot.root)\n );\n }\n\n private extractRoutes(routes: Routes, parentSegment: string[] = []): INavigationItem[] {\n const items: INavigationItem[] = [];\n\n for(const route of routes) {\n if(route.redirectTo) continue;\n\n if (this.accessAdapter && !this.accessAdapter.canAccessMenu(route.data ?? {})) {\n continue;\n }\n\n const ownPath = route.path ?? '';\n \n const fullSegments = ownPath \n ? [...parentSegment, ownPath] \n : [...parentSegment];\n\n const fullRoute = '/' + fullSegments.filter(Boolean).join('/');\n\n const children = route.children?.length\n ? this.extractRoutes(route.children, fullSegments)\n : [];\n \n const nav = route.data?.['nav'] as INavMeta | undefined;\n\n if(!nav) {\n items.push(...children);\n continue;\n }\n\n const item = {\n id: fullRoute,\n route: fullRoute,\n label: this.resolveNavText(nav, 'label') ?? '',\n icon: nav.icon,\n section: nav.section,\n visible: nav.visible ? nav.visible() : true,\n data: nav\n };\n\n items.push(item);\n }\n\n return this.sortNavigationItems(items);\n }\n\n private resolveCurrent(root: ActivatedRouteSnapshot): IResolvedNavigation {\n const breadcrumbs: IBreadcrumbItem[] = [];\n let currentNode: ActivatedRouteSnapshot | null = root;\n let current: INavigationItem | undefined;\n\n while (currentNode) {\n const next: ActivatedRouteSnapshot | null = currentNode.children.find(child => child.outlet === 'primary') ?? null;\n if(!next) break;\n\n const nav = next.routeConfig?.data?.['nav'] as INavMeta | undefined;\n const url = this.urlFromSnapshot(next);\n\n if(nav && !nav.hidden) {\n const breadcrumbLabel = this.resolveNavText(nav, 'breadcrumb', next) ?? this.resolveNavText(nav, 'label', next);\n if(breadcrumbLabel) {\n breadcrumbs.push({ label: breadcrumbLabel, route: url });\n }\n\n current = {\n id: url,\n route: url,\n label: this.resolveNavText(nav, 'label', next) ?? '',\n icon: nav.icon,\n section: nav.section,\n visible: nav.visible ? nav.visible() : true,\n data: nav\n }\n }\n\n currentNode = next;\n }\n\n return { current, breadcrumbs };\n }\n\n private buildMenu(items: INavigationItem[]): INavigationItem[] {\n return items\n .map((item): INavigationItem | null => {\n const children = this.buildMenu(item.children ?? []);\n const includeSelf = item.visible && item.data?.menu !== false;\n\n if (!includeSelf && !children.length) {\n return null;\n }\n\n return {\n ...item,\n children\n };\n }) \n .filter((item): item is INavigationItem => item !== null);\n }\n\n private sortNavigationItems(items: INavigationItem[]): INavigationItem[] {\n const customSort = this.config?.sortItems;\n\n return [...items].sort((a, b) => {\n if(customSort) {\n return customSort(a, b);\n }\n\n const orderA = a.data?.order ?? Number.POSITIVE_INFINITY;\n const orderB = b.data?.order ?? Number.POSITIVE_INFINITY;\n\n if(orderA !== orderB) return orderA - orderB;\n return a.label.localeCompare(b.label);\n });\n }\n\n private resolveNavText(\n nav: INavMeta,\n kind: 'label' | 'breadcrumb',\n snapshot?: ActivatedRouteSnapshot\n ): string | undefined {\n const directValue = kind === 'label' ? nav.label : nav.breadcrumb;\n const key = kind === 'label' ? nav.labelKey : nav.breadcrumbKey;\n\n if(directValue) {\n return typeof directValue === 'function'\n ? directValue({ snapshot: snapshot! })\n : directValue;\n }\n\n if(key) {\n return this.i18n?.translate(key, { route: snapshot });\n }\n\n return undefined;\n }\n\n private urlFromSnapshot(snapshot: ActivatedRouteSnapshot): string {\n return (\n '/' +\n snapshot.pathFromRoot\n .flatMap(s => s.url.map(u => u.path))\n .filter(Boolean)\n .join('/')\n );\n }\n\n //#endregion\n}","import { INavMeta } from \"@navigation/interfaces/inav-meta.interface\";\nimport { INavigationConfig } from \"../interfaces/inavigation-config.interface\";\nimport { NAVIGATION_CONFIG } from \"../tokens/navigation-config.token\";\nimport { Route } from \"@angular/router\";\n\nexport function provideNavigation(config: INavigationConfig) {\n return [\n {\n provide: NAVIGATION_CONFIG,\n useValue: config\n }\n ];\n};\n\nexport function withNav(route: Route, nav: INavMeta): Route {\n const existingNav = (route.data?.['nav'] as INavMeta | undefined) ?? {};\n\n return {\n ...route,\n data: {\n ...(route.data ?? {}),\n nav: {\n ...existingNav,\n ...nav\n }\n }\n };\n}","/*\n * Public API Surface of modal\n */\n\nexport * from './services/navigation.service';\n\nexport * from './interfaces/ibreadcrumb-item.interface';\nexport * from './interfaces/inav-context.interface';\nexport * from './interfaces/inav-meta.interface';\nexport * from './interfaces/inav-route-data.interface';\nexport * from './interfaces/inavigation-access-adapter.interface';\nexport * from './interfaces/inavigation-config.interface';\nexport * from './interfaces/inavigation-i18n-adapter.interface';\nexport * from './interfaces/inavigation-item.interface';\nexport * from './interfaces/inavigation-section-config.interface';\nexport * from './interfaces/iresolved-navigation.interface';\n\nexport * from './tokens/navigation-config.token';\nexport * from './tokens/navigation-i18n.token';\nexport * from './tokens/navigation-access-adapter.token';\n\nexport * from './helpers/navigation-functions';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@filip.mazev/blocks",
3
- "version": "1.2.14",
3
+ "version": "1.2.15",
4
4
  "license": "MIT",
5
5
  "schematics": "./schematics/collection.json",
6
6
  "exports": {
@@ -102,11 +102,13 @@ declare const NAVIGATION_CONFIG: InjectionToken<INavigationConfig>;
102
102
 
103
103
  declare const NAVIGATION_I18N: InjectionToken<INavigationI18nAdapter>;
104
104
 
105
+ declare const NAVIGATION_ACCESS_ADAPTER: InjectionToken<INavigationAccessAdapter>;
106
+
105
107
  declare function provideNavigation(config: INavigationConfig): {
106
108
  provide: i0.InjectionToken<INavigationConfig>;
107
109
  useValue: INavigationConfig;
108
110
  }[];
109
111
  declare function withNav(route: Route, nav: INavMeta$1): Route;
110
112
 
111
- export { NAVIGATION_CONFIG, NAVIGATION_I18N, NavigationService, provideNavigation, withNav };
113
+ export { NAVIGATION_ACCESS_ADAPTER, NAVIGATION_CONFIG, NAVIGATION_I18N, NavigationService, provideNavigation, withNav };
112
114
  export type { IBreadcrumbItem, INavContext, INavMeta, INavRouteData, INavigationAccessAdapter, INavigationConfig, INavigationI18nAdapter, INavigationItem, INavigationSectionConfig, IResolvedNavigation };