@ojiepermana/angular-navigation 22.0.27 → 22.0.29
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.
|
@@ -506,5 +506,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
|
|
|
506
506
|
* Generated bundle index. Do not edit.
|
|
507
507
|
*/
|
|
508
508
|
|
|
509
|
-
export { NavigationService };
|
|
510
|
-
//# sourceMappingURL=ojiepermana-angular-navigation-service.mjs.map
|
|
509
|
+
export { NavigationService };
|
|
@@ -3564,5 +3564,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
|
|
|
3564
3564
|
* Generated bundle index. Do not edit.
|
|
3565
3565
|
*/
|
|
3566
3566
|
|
|
3567
|
-
export { NavigationCollapseExpandedDirective, NavigationCollapseRootDirective, NavigationContainerComponent, NavigationContentComponent, NavigationDockbarComponent, NavigationFlyoutComponent, NavigationFooterComponent, NavigationHeaderComponent, NavigationIconDirective, NavigationNavbarComponent, NavigationSidebarComponent, normalizeUiNavItems };
|
|
3568
|
-
//# sourceMappingURL=ojiepermana-angular-navigation.mjs.map
|
|
3567
|
+
export { NavigationCollapseExpandedDirective, NavigationCollapseRootDirective, NavigationContainerComponent, NavigationContentComponent, NavigationDockbarComponent, NavigationFlyoutComponent, NavigationFooterComponent, NavigationHeaderComponent, NavigationIconDirective, NavigationNavbarComponent, NavigationSidebarComponent, normalizeUiNavItems };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ojiepermana/angular-navigation",
|
|
3
|
-
"version": "22.0.
|
|
3
|
+
"version": "22.0.29",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/edsis/angular.git"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"@angular/common": ">=22.0.0",
|
|
14
14
|
"@angular/core": ">=22.0.0",
|
|
15
15
|
"@angular/router": ">=22.0.0",
|
|
16
|
-
"@ojiepermana/angular-component": "^22.0.
|
|
16
|
+
"@ojiepermana/angular-component": "^22.0.29",
|
|
17
17
|
"rxjs": ">=7.8.0"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-navigation-service.mjs","sources":["../../../library/navigation/service/navigation.service.ts","../../../library/navigation/service/ojiepermana-angular-navigation-service.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Service, computed, inject, isDevMode, signal, type Signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, type IsActiveMatchOptions } from '@angular/router';\nimport type {\n NavigationType,\n NavigationDockbarMode,\n NavigationIconContext,\n NavigationNormalizedItem,\n NavigationOrientation,\n NavigationPosition,\n NavigationRegisterInput,\n NavigationState,\n} from './navigation.service.types';\n\nconst DEFAULT_NAV_ID = 'default';\nconst PERSISTED_NAV_ID = 'main';\nconst DEFAULT_VERTICAL_TYPE: NavigationType = 'sidebar';\nconst DEFAULT_HORIZONTAL_TYPE: NavigationType = 'navbar';\nconst DEFAULT_VERTICAL_POSITION: NavigationPosition = 'left';\nconst DEFAULT_HORIZONTAL_POSITION: NavigationPosition = 'top';\nconst DEFAULT_DOCKBAR_MODE: NavigationDockbarMode = 'sticky';\n/** Nama properti per-instance generasi lama (`nav:<id>:<properti>`) yang dibersihkan saat migrasi. */\nconst INSTANCE_STORAGE_PROPERTIES = ['orientation', 'appearance', 'position', 'collapsed', 'dockbar-mode'] as const;\nconst PERSISTED_STORAGE_PROPERTIES = ['orientation', 'type', 'position'] as const;\ntype PersistedStorageProperty = (typeof PERSISTED_STORAGE_PROPERTIES)[number];\ntype NavigationPersistedTypeMode = 'default' | 'collapsed' | NavigationDockbarMode;\nconst TYPE_MODE_STORAGE_KEY = 'nav-type-mode';\n/** Nama properti legacy untuk tiap properti persisted saat membaca key `nav:<id>:*` generasi lama. */\nconst LEGACY_PROPERTY_NAMES: Record<PersistedStorageProperty, string> = {\n orientation: 'orientation',\n type: 'appearance',\n position: 'position',\n};\nconst LEGACY_NAV_STORAGE_KEYS = ['nav-appearance', 'nav-vertical-appearance', 'nav-horizontal-appearance'] as const;\nconst LEGACY_TYPE_MODE_STORAGE_KEYS = ['nav-appearance-mode', 'nav-collapsed', 'nav-dockbar-mode'] as const;\n\n@Service()\nexport class NavigationService {\n private readonly documentRef = inject(DOCUMENT, { optional: true });\n private readonly router = inject(Router, { optional: true });\n private readonly routerUrl = signal(this.router?.url ?? '/');\n private readonly states = signal<Record<string, NavigationState>>({});\n private readonly openPanelKeys = signal<Record<string, string | null>>({});\n private readonly drawerOpenState = signal<Record<string, boolean>>({});\n /** id navigasi → token owner instance, untuk menjaga setiap id hanya dipakai satu <Navigation> hidup. */\n private readonly idOwners = new Map<string, object>();\n\n readonly openPanelKey = computed(() => this.openPanelKeys()[DEFAULT_NAV_ID] ?? null);\n\n readonly exactMatchOptions: IsActiveMatchOptions = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'exact',\n matrixParams: 'exact',\n };\n\n readonly subsetMatchOptions: IsActiveMatchOptions = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n };\n\n constructor() {\n this.cleanupLegacyStorage();\n\n this.router?.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.routerUrl.set(event.urlAfterRedirects);\n }\n });\n }\n\n register(input: NavigationRegisterInput, owner?: object): NavigationState {\n const state = this.resolveState(input);\n this.claimId(state.id, owner);\n this.states.update((states) => ({ ...states, [state.id]: state }));\n this.persistState(state);\n\n return state;\n }\n\n unregister(id: string, owner?: object): void {\n const navId = this.normalizeId(id);\n this.releaseId(navId, owner);\n this.states.update((states) => this.withoutKey(states, navId));\n this.openPanelKeys.update((state) => this.withoutKey(state, navId));\n this.drawerOpenState.update((state) => this.withoutKey(state, navId));\n }\n\n /**\n * Validasi keunikan id navigasi: setiap instance `<Navigation>` wajib memakai id unik.\n * `owner` adalah token unik per instance — klaim ulang oleh owner yang sama (mis. perubahan\n * input) diizinkan, tetapi dua instance hidup dengan id sama dianggap salah konfigurasi dan\n * melempar error di mode dev. Pemanggil tanpa owner (akses langsung service) dilewati.\n */\n private claimId(id: string, owner: object | undefined): void {\n if (owner === undefined) {\n return;\n }\n\n const currentOwner = this.idOwners.get(id);\n\n if (currentOwner !== undefined && currentOwner !== owner && isDevMode()) {\n throw new Error(\n `[Navigation] Duplikasi id navigasi \"${id}\". Setiap <Navigation> wajib memakai id unik. ` +\n `Id \"main\" dikhususkan untuk navigasi utama pada layout/shell (block-shell).`,\n );\n }\n\n this.idOwners.set(id, owner);\n }\n\n private releaseId(id: string, owner: object | undefined): void {\n if (owner === undefined || this.idOwners.get(id) === owner) {\n this.idOwners.delete(id);\n }\n }\n\n state(id: string): Signal<NavigationState | null> {\n const navId = this.normalizeId(id);\n return computed(() => this.states()[navId] ?? null);\n }\n\n currentState(id: string): NavigationState | null {\n return this.states()[this.normalizeId(id)] ?? null;\n }\n\n currentPanelKey(id: string): string | null {\n return this.openPanelKeys()[this.normalizeId(id)] ?? null;\n }\n\n update(id: string, patch: Partial<NavigationRegisterInput>): NavigationState {\n const navId = this.normalizeId(id);\n const current =\n this.states()[navId] ?? this.resolveState({ id: navId, orientation: patch.orientation ?? 'vertical' });\n\n return this.register({\n id: navId,\n orientation: patch.orientation ?? current.orientation,\n type: patch.type ?? current.type,\n position: patch.position ?? current.position,\n collapsed: patch.collapsed ?? current.collapsed,\n dockbarMode: patch.dockbarMode ?? current.dockbarMode,\n });\n }\n\n setType(id: string, type: NavigationType): NavigationState {\n return this.update(id, { type });\n }\n\n setPosition(id: string, position: NavigationPosition): NavigationState {\n return this.update(id, { position });\n }\n\n setCollapsed(id: string, collapsed: boolean): NavigationState {\n return this.update(id, { collapsed });\n }\n\n toggleCollapsed(id: string): NavigationState {\n const navId = this.normalizeId(id);\n const current = this.states()[navId] ?? this.resolveState({ id: navId, orientation: 'vertical' });\n\n return this.setCollapsed(navId, !current.collapsed);\n }\n\n setDockbarMode(id: string, mode: NavigationDockbarMode): NavigationState {\n return this.update(id, { dockbarMode: mode });\n }\n\n isRouterItem(item: NavigationNormalizedItem): boolean {\n return !!item.link && !item.externalLink;\n }\n\n hrefFor(item: NavigationNormalizedItem): string | null {\n if (item.href) {\n return item.href;\n }\n\n if (item.externalLink && typeof item.link === 'string') {\n return item.link;\n }\n\n return null;\n }\n\n relFor(item: NavigationNormalizedItem): string | null {\n if (item.rel) {\n return item.rel;\n }\n\n return item.target === '_blank' || item.externalLink ? 'noopener noreferrer' : null;\n }\n\n routerLinkActiveOptions(item: NavigationNormalizedItem): IsActiveMatchOptions {\n return item.isActiveMatchOptions ?? (item.exactMatch ? this.exactMatchOptions : this.subsetMatchOptions);\n }\n\n itemRole(orientation: NavigationOrientation, level: number): 'menuitem' | null {\n return orientation === 'horizontal' || level > 0 ? 'menuitem' : null;\n }\n\n compactLabel(item: NavigationNormalizedItem, compact: boolean): string | null {\n return compact ? (item.tooltip ?? item.title ?? null) : null;\n }\n\n titleFor(item: NavigationNormalizedItem, compact: boolean): string | null {\n return item.tooltip ?? (compact ? (item.title ?? null) : null);\n }\n\n compactFallback(item: NavigationNormalizedItem): string {\n return (item.title ?? item.id ?? '?').trim().slice(0, 2);\n }\n\n iconContext(\n item: NavigationNormalizedItem,\n active: boolean,\n level: number,\n orientation: NavigationOrientation,\n ): NavigationIconContext {\n return {\n $implicit: item.icon ?? '',\n icon: item.icon ?? '',\n item: item.source,\n active,\n orientation,\n level,\n };\n }\n\n isItemActive(\n item: NavigationNormalizedItem,\n activeIds: ReadonlySet<string>,\n explicitActiveUrl: string | null,\n ): boolean {\n if (item.active || activeIds.has(item.stateId) || activeIds.has(item.key)) {\n return true;\n }\n\n if (this.matchesActiveUrl(item, explicitActiveUrl)) {\n return true;\n }\n\n return item.children.some((child) => this.isItemActive(child, activeIds, explicitActiveUrl));\n }\n\n isPanelOpen(navIdOrItem: string | NavigationNormalizedItem, item?: NavigationNormalizedItem): boolean {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n return this.openPanelKeys()[navId] === navItem.key;\n }\n\n openPanel(navIdOrItem: string | NavigationNormalizedItem, item?: NavigationNormalizedItem): void {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n if (navItem.disabled) {\n return;\n }\n\n this.openPanelKeys.update((state) => ({ ...state, [navId]: navItem.key }));\n }\n\n togglePanel(navIdOrItem: string | NavigationNormalizedItem, item?: NavigationNormalizedItem): void {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n if (navItem.disabled) {\n return;\n }\n\n this.openPanelKeys.update((state) => ({\n ...state,\n [navId]: state[navId] === navItem.key ? null : navItem.key,\n }));\n }\n\n closePanel(id = DEFAULT_NAV_ID): void {\n const navId = this.normalizeId(id);\n this.openPanelKeys.update((state) => ({ ...state, [navId]: null }));\n }\n\n dockbarGroups(items: readonly NavigationNormalizedItem[]): readonly NavigationNormalizedItem[] {\n return items.filter((item) => item.children.length > 0);\n }\n\n resolveDockbarGroup(\n id: string,\n items: readonly NavigationNormalizedItem[],\n mode: NavigationDockbarMode,\n activeIds: ReadonlySet<string>,\n activeUrl: string | null,\n ): NavigationNormalizedItem | null {\n const groups = this.dockbarGroups(items);\n const panelKey = this.openPanelKeys()[this.normalizeId(id)] ?? null;\n\n if (panelKey !== null) {\n const explicit = groups.find((group) => group.key === panelKey);\n\n if (explicit) {\n return explicit;\n }\n }\n\n if (mode !== 'sticky') {\n return null;\n }\n\n return groups.find((group) => this.isItemActive(group, activeIds, activeUrl)) ?? null;\n }\n\n isDrawerOpen(id: string): boolean {\n return this.drawerOpenState()[this.normalizeId(id)] ?? false;\n }\n\n openDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: true }));\n }\n\n toggleDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: !(state[navId] ?? false) }));\n }\n\n closeDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: false }));\n }\n\n private matchesActiveUrl(item: NavigationNormalizedItem, explicitActiveUrl: string | null): boolean {\n if (!item.link || item.externalLink || typeof item.link !== 'string') {\n return false;\n }\n\n const activeUrl = explicitActiveUrl ?? this.routerUrl();\n const link = item.link;\n\n if (link === '/') {\n return activeUrl === '/';\n }\n\n if (item.exactMatch || item.isActiveMatchOptions?.paths === 'exact') {\n return activeUrl === link;\n }\n\n return activeUrl === link || activeUrl.startsWith(`${link}/`) || activeUrl.startsWith(`${link}?`);\n }\n\n private resolveState(input: NavigationRegisterInput): NavigationState {\n const id = this.normalizeId(input.id);\n const orientation = input.orientation;\n const type = this.resolveType(id, orientation, input.type);\n\n return {\n id,\n orientation,\n type,\n position: this.resolvePosition(id, orientation, input.position),\n collapsed: this.resolveCollapsed(id, type, input.collapsed),\n dockbarMode: this.resolveDockbarMode(id, type, input.dockbarMode),\n };\n }\n\n private resolveType(\n id: string,\n orientation: NavigationOrientation,\n type: NavigationType | null | undefined,\n ): NavigationType {\n if (this.isTypeForOrientation(type, orientation)) {\n return type;\n }\n\n const stored = this.readInstanceStorage(id, 'type');\n if (this.isTypeForOrientation(stored, orientation)) {\n return stored;\n }\n\n return this.defaultType(orientation);\n }\n\n private resolvePosition(\n id: string,\n orientation: NavigationOrientation,\n position: NavigationPosition | null | undefined,\n ): NavigationPosition {\n if (this.isPositionForOrientation(position, orientation)) {\n return position;\n }\n\n const stored = this.readInstanceStorage(id, 'position');\n\n if (this.isPositionForOrientation(stored, orientation)) {\n return stored;\n }\n\n return orientation === 'horizontal' ? DEFAULT_HORIZONTAL_POSITION : DEFAULT_VERTICAL_POSITION;\n }\n\n private resolveCollapsed(\n id: string,\n type: NavigationType | null | undefined,\n collapsed: boolean | null | undefined,\n ): boolean {\n if (typeof collapsed === 'boolean') {\n return collapsed;\n }\n\n if (type !== 'sidebar') {\n return false;\n }\n\n return this.readPersistedTypeMode(id) === 'collapsed';\n }\n\n private resolveDockbarMode(\n id: string,\n type: NavigationType | null | undefined,\n mode: NavigationDockbarMode | null | undefined,\n ): NavigationDockbarMode {\n if (this.isDockbarMode(mode)) {\n return mode;\n }\n\n if (type !== 'dockbar') {\n return DEFAULT_DOCKBAR_MODE;\n }\n\n const stored = this.readPersistedTypeMode(id);\n\n return this.isDockbarMode(stored) ? stored : DEFAULT_DOCKBAR_MODE;\n }\n\n private persistState(state: NavigationState): void {\n if (!this.shouldPersistInstanceState(state.id)) {\n this.clearInstanceStorage(state.id);\n return;\n }\n\n this.writeStorage(this.persistedStorageKey('orientation'), state.orientation);\n this.writeStorage(this.persistedStorageKey('type'), state.type);\n this.writeStorage(this.persistedStorageKey('position'), state.position);\n this.writeStorage(TYPE_MODE_STORAGE_KEY, this.persistedTypeMode(state));\n }\n\n private defaultType(orientation: NavigationOrientation): NavigationType {\n return orientation === 'vertical' ? DEFAULT_VERTICAL_TYPE : DEFAULT_HORIZONTAL_TYPE;\n }\n\n private cleanupLegacyStorage(): void {\n this.migrateLegacyPersistedStorage();\n\n for (const key of LEGACY_NAV_STORAGE_KEYS) {\n this.removeStorage(key);\n }\n\n for (const key of LEGACY_TYPE_MODE_STORAGE_KEYS) {\n this.removeStorage(key);\n }\n\n const storage = this.storage();\n const keysToRemove: string[] = [];\n\n for (let index = 0; index < (storage?.length ?? 0); index += 1) {\n const key = storage?.key(index);\n\n if (key && this.isLegacyInstanceStorageKey(key)) {\n keysToRemove.push(key);\n }\n }\n\n for (const key of keysToRemove) {\n this.removeStorage(key);\n }\n }\n\n private storage(): Storage | null {\n try {\n return this.documentRef?.defaultView?.localStorage ?? null;\n } catch {\n return null;\n }\n }\n\n private readStorage(key: string): string | null {\n try {\n return this.storage()?.getItem(key) ?? null;\n } catch {\n return null;\n }\n }\n\n private readInstanceStorage(id: string, property: PersistedStorageProperty): string | null {\n if (!this.shouldPersistInstanceState(id)) {\n return null;\n }\n\n return this.readStorage(this.persistedStorageKey(property));\n }\n\n private readPersistedTypeMode(id: string): NavigationPersistedTypeMode | null {\n if (!this.shouldPersistInstanceState(id)) {\n return null;\n }\n\n const stored = this.readStorage(TYPE_MODE_STORAGE_KEY);\n\n return this.isPersistedTypeMode(stored) ? stored : null;\n }\n\n private writeStorage(key: string, value: string): void {\n try {\n this.storage()?.setItem(key, value);\n } catch {\n return;\n }\n }\n\n private removeStorage(key: string): void {\n try {\n this.storage()?.removeItem(key);\n } catch {\n return;\n }\n }\n\n private clearInstanceStorage(id: string): void {\n for (const property of INSTANCE_STORAGE_PROPERTIES) {\n this.removeStorage(this.instanceStorageKey(id, property));\n }\n }\n\n private migrateLegacyPersistedStorage(): void {\n // Generasi sebelumnya memakai istilah \"appearance\" — salin nilainya ke key \"type\" baru.\n if (this.readStorage(this.persistedStorageKey('type')) === null) {\n const legacyType = this.readStorage('nav-appearance');\n\n if (legacyType !== null) {\n this.writeStorage(this.persistedStorageKey('type'), legacyType);\n }\n }\n\n if (this.readStorage(TYPE_MODE_STORAGE_KEY) === null) {\n const legacyTypeMode = this.readStorage('nav-appearance-mode');\n\n if (legacyTypeMode !== null) {\n this.writeStorage(TYPE_MODE_STORAGE_KEY, legacyTypeMode);\n }\n }\n\n for (const property of PERSISTED_STORAGE_PROPERTIES) {\n const nextKey = this.persistedStorageKey(property);\n const legacyKey = this.instanceStorageKey(PERSISTED_NAV_ID, LEGACY_PROPERTY_NAMES[property]);\n const nextValue = this.readStorage(nextKey);\n const legacyValue = this.readStorage(legacyKey);\n\n if (nextValue === null && legacyValue !== null) {\n this.writeStorage(nextKey, legacyValue);\n }\n }\n\n if (this.readStorage(TYPE_MODE_STORAGE_KEY) !== null) {\n return;\n }\n\n const migratedTypeMode = this.resolveLegacyTypeMode();\n\n if (migratedTypeMode !== null) {\n this.writeStorage(TYPE_MODE_STORAGE_KEY, migratedTypeMode);\n }\n }\n\n private instanceStorageKey(id: string, property: string): string {\n return `nav:${id}:${property}`;\n }\n\n private persistedStorageKey(property: PersistedStorageProperty): string {\n return `nav-${property}`;\n }\n\n private persistedTypeMode(state: NavigationState): NavigationPersistedTypeMode {\n if (state.type === 'dockbar') {\n return state.dockbarMode;\n }\n\n return state.collapsed ? 'collapsed' : 'default';\n }\n\n private resolveLegacyTypeMode(): NavigationPersistedTypeMode | null {\n const type =\n this.readStorage(this.persistedStorageKey('type')) ??\n this.readStorage(this.instanceStorageKey(PERSISTED_NAV_ID, 'appearance'));\n const collapsed =\n this.readStorage('nav-collapsed') ?? this.readStorage(this.instanceStorageKey(PERSISTED_NAV_ID, 'collapsed'));\n const dockbarMode =\n this.readStorage('nav-dockbar-mode') ??\n this.readStorage(this.instanceStorageKey(PERSISTED_NAV_ID, 'dockbar-mode'));\n\n if (type === 'dockbar' && this.isDockbarMode(dockbarMode)) {\n return dockbarMode;\n }\n\n if (type === 'sidebar') {\n return collapsed === 'true' ? 'collapsed' : 'default';\n }\n\n if (this.isDockbarMode(dockbarMode)) {\n return dockbarMode;\n }\n\n if (collapsed === 'true') {\n return 'collapsed';\n }\n\n if (collapsed === 'false') {\n return 'default';\n }\n\n return null;\n }\n\n private shouldPersistInstanceState(id: string): boolean {\n return id === PERSISTED_NAV_ID;\n }\n\n private isLegacyInstanceStorageKey(key: string): boolean {\n return key.startsWith('nav:');\n }\n\n private isPersistedTypeMode(value: string | null | undefined): value is NavigationPersistedTypeMode {\n return value === 'default' || value === 'collapsed' || this.isDockbarMode(value);\n }\n\n private normalizeId(id: string): string {\n return id.trim() || DEFAULT_NAV_ID;\n }\n\n private withoutKey<T>(record: Record<string, T>, key: string): Record<string, T> {\n const next = { ...record };\n delete next[key];\n\n return next;\n }\n\n private resolvePanelArgs(\n navIdOrItem: string | NavigationNormalizedItem,\n item: NavigationNormalizedItem | undefined,\n ): { navId: string; navItem: NavigationNormalizedItem } {\n if (typeof navIdOrItem === 'string') {\n return { navId: this.normalizeId(navIdOrItem), navItem: item as NavigationNormalizedItem };\n }\n\n return { navId: DEFAULT_NAV_ID, navItem: navIdOrItem };\n }\n\n private isTypeForOrientation(\n value: string | null | undefined,\n orientation: NavigationOrientation,\n ): value is NavigationType {\n return orientation === 'vertical' ? this.isVerticalType(value) : this.isHorizontalType(value);\n }\n\n private isVerticalType(value: string | null | undefined): value is 'sidebar' | 'dockbar' {\n return value === 'sidebar' || value === 'dockbar';\n }\n\n private isHorizontalType(value: string | null | undefined): value is 'navbar' | 'flyout' {\n return value === 'navbar' || value === 'flyout';\n }\n\n private isPositionForOrientation(\n value: string | null | undefined,\n orientation: NavigationOrientation,\n ): value is NavigationPosition {\n return orientation === 'vertical' ? value === 'left' || value === 'right' : value === 'top' || value === 'bottom';\n }\n\n private isDockbarMode(value: string | null | undefined): value is NavigationDockbarMode {\n return value === 'drawer' || value === 'sticky';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-navigation.mjs","sources":["../../../library/navigation/icon/navigation-icon.directive.ts","../../../library/navigation/types/navigation.types.ts","../../../library/navigation/internal/navigation.controller.ts","../../../library/navigation/shell/shared/navigation-shell.token.ts","../../../library/navigation/navigation-container.component.ts","../../../library/navigation/item/navigation-item-content.component.ts","../../../library/navigation/item/navigation-item.component.ts","../../../library/navigation/internal/navigation-list.component.ts","../../../library/navigation/internal/navigation-dockbar-menu.component.ts","../../../library/navigation/internal/navigation-entry-grid.component.ts","../../../library/navigation/internal/navigation-flyout-menu.component.ts","../../../library/navigation/internal/navigation-horizontal.component.ts","../../../library/navigation/shell/content/navigation-content.component.ts","../../../library/navigation/shell/footer/navigation-footer.component.ts","../../../library/navigation/shell/header/navigation-header.component.ts","../../../library/navigation/type/sidebar/navigation-sidebar.component.ts","../../../library/navigation/type/dockbar/navigation-dockbar.component.ts","../../../library/navigation/type/navbar/navigation-navbar.component.ts","../../../library/navigation/type/flyout/navigation-flyout.component.ts","../../../library/navigation/shell/collapse/navigation-collapse.directive.ts","../../../library/navigation/ojiepermana-angular-navigation.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { NavigationIconContext } from '../types/navigation.types';\n\n@Directive({\n selector: 'ng-template[NavigationIcon]',\n})\nexport class NavigationIconDirective {\n readonly template = inject<TemplateRef<NavigationIconContext>>(TemplateRef);\n\n static ngTemplateContextGuard(\n _directive: NavigationIconDirective,\n context: unknown,\n ): context is NavigationIconContext {\n return true;\n }\n}\n","import type { IsActiveMatchOptions, Params, QueryParamsHandling, UrlTree } from '@angular/router';\n\nexport type NavigationOrientation = 'vertical' | 'horizontal';\n\nexport type NavigationVerticalType = 'sidebar' | 'dockbar';\nexport type NavigationHorizontalType = 'navbar' | 'flyout';\nexport type NavigationType = NavigationVerticalType | NavigationHorizontalType;\nexport type NavigationCollapseTree = 'stairs' | 'straight';\nexport type NavigationTypeStyle = 'default' | 'border-rail';\nexport type NavigationVerticalPosition = 'left' | 'right';\nexport type NavigationHorizontalPosition = 'top' | 'bottom';\nexport type NavigationPosition = NavigationVerticalPosition | NavigationHorizontalPosition;\nexport type NavigationFlyoutIconPosition = 'start' | 'end';\nexport type NavigationDockbarMode = 'drawer' | 'sticky';\n\nexport interface NavigationRegisterInput {\n readonly id: string;\n readonly orientation: NavigationOrientation;\n readonly type?: NavigationType | null;\n readonly position?: NavigationPosition | null;\n readonly collapsed?: boolean | null;\n readonly dockbarMode?: NavigationDockbarMode | null;\n}\n\nexport interface NavigationState {\n readonly id: string;\n readonly orientation: NavigationOrientation;\n readonly type: NavigationType;\n readonly position: NavigationPosition;\n readonly collapsed: boolean;\n readonly dockbarMode: NavigationDockbarMode;\n}\n\nexport type NavigationItemType =\n | 'item'\n | 'basic'\n | 'aside'\n | 'group'\n | 'collapsible'\n | 'collapsable'\n | 'mega'\n | 'divider'\n | 'spacer';\n\nexport type NavigationNormalizedItemType = 'item' | 'group' | 'collapsible' | 'mega' | 'divider' | 'spacer';\n\nexport type NavigationLink = string | readonly unknown[] | UrlTree;\n\nexport interface NavigationItemClasses {\n readonly title?: string;\n readonly subtitle?: string;\n readonly icon?: string;\n /** Kelas untuk elemen klik (tombol/anchor) item. */\n readonly wrapper?: string;\n /** Kelas untuk container `<li>` group horizontal (flyout tab / navbar group). Per-group. */\n readonly container?: string;\n}\n\nexport interface NavigationItemBadge {\n readonly title?: string;\n readonly classes?: string;\n}\n\nexport type NavigationVisibilityHandler = (item: NavigationItem) => boolean;\nexport type NavigationActionHandler = (item: NavigationItem) => void;\n\nexport interface NavigationItem {\n readonly id?: string;\n readonly type?: NavigationItemType;\n readonly title?: string;\n readonly subtitle?: string;\n readonly active?: boolean;\n readonly disabled?: boolean;\n readonly tooltip?: string;\n readonly classes?: NavigationItemClasses;\n readonly icon?: string;\n readonly badge?: NavigationItemBadge;\n readonly meta?: Record<string, unknown>;\n readonly isHidden?: NavigationVisibilityHandler;\n readonly link?: NavigationLink;\n readonly href?: string;\n readonly fragment?: string;\n readonly preserveFragment?: boolean;\n readonly queryParams?: Params | null;\n readonly queryParamsHandling?: QueryParamsHandling | null;\n readonly externalLink?: boolean;\n readonly target?: '_blank' | '_self' | '_parent' | '_top' | string;\n readonly rel?: string;\n readonly exactMatch?: boolean;\n readonly isActiveMatchOptions?: IsActiveMatchOptions;\n readonly action?: NavigationActionHandler;\n readonly columns?: number;\n readonly children?: readonly NavigationItem[];\n}\n\nexport interface NavigationNormalizedItem extends Omit<NavigationItem, 'children' | 'type'> {\n readonly key: string;\n readonly stateId: string;\n readonly panelId: string;\n readonly type: NavigationNormalizedItemType;\n readonly source: NavigationItem;\n readonly children: readonly NavigationNormalizedItem[];\n}\n\nexport interface NavigationSelection {\n readonly item: NavigationItem;\n readonly key: string;\n readonly type: NavigationNormalizedItemType;\n readonly link?: NavigationLink;\n readonly external: boolean;\n}\n\nexport interface NavigationIconContext {\n readonly $implicit: string;\n readonly icon: string;\n readonly item: NavigationItem;\n readonly active: boolean;\n readonly orientation: NavigationOrientation;\n readonly level: number;\n}\n\nfunction normalizeType(type: NavigationItemType | undefined, hasChildren: boolean): NavigationNormalizedItemType {\n if (type === 'divider' || type === 'spacer' || type === 'group' || type === 'mega') {\n return type;\n }\n\n if (type === 'collapsible' || type === 'collapsable') {\n return 'collapsible';\n }\n\n if (type === 'aside' && hasChildren) {\n return 'collapsible';\n }\n\n if (!type && hasChildren) {\n return 'collapsible';\n }\n\n return 'item';\n}\n\nfunction toKeyPart(value: string): string {\n return value\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nfunction itemFallbackKey(item: NavigationItem, index: number): string {\n return toKeyPart(item.title ?? item.link?.toString() ?? item.href ?? `item-${index}`) || `item-${index}`;\n}\n\nfunction normalizeItem(item: NavigationItem, index: number, path: string): NavigationNormalizedItem | null {\n if (item.isHidden?.(item)) {\n return null;\n }\n\n const children = (item.children ?? [])\n .map((child, childIndex) => normalizeItem(child, childIndex, `${path}-${childIndex}`))\n .filter((child): child is NavigationNormalizedItem => child !== null);\n\n const hasChildren = children.length > 0;\n const key = item.id ?? `${path}-${itemFallbackKey(item, index)}`;\n\n return {\n ...item,\n key,\n stateId: item.id ?? key,\n panelId: `nav-panel-${toKeyPart(key) || index}`,\n type: normalizeType(item.type, hasChildren),\n source: item,\n children,\n };\n}\n\nexport function normalizeUiNavItems(items: readonly NavigationItem[]): readonly NavigationNormalizedItem[] {\n return items\n .map((item, index) => normalizeItem(item, index, `nav-${index}`))\n .filter((item): item is NavigationNormalizedItem => item !== null);\n}\n","import { DestroyRef, computed, effect, inject, signal, type Signal } from '@angular/core';\nimport { NavigationService } from '@ojiepermana/angular-navigation/service';\nimport {\n normalizeUiNavItems,\n type NavigationType,\n type NavigationDockbarMode,\n type NavigationItem,\n type NavigationNormalizedItem,\n type NavigationOrientation,\n type NavigationPosition,\n type NavigationState,\n} from '../types/navigation.types';\n\ninterface NavigationControllerInputs {\n readonly navId: Signal<string>;\n readonly data: Signal<readonly NavigationItem[]>;\n readonly items: Signal<readonly NavigationItem[]>;\n readonly orientation: Signal<NavigationOrientation>;\n readonly type: Signal<NavigationType | null>;\n readonly position: Signal<NavigationPosition | null>;\n readonly collapsed: Signal<boolean | null>;\n readonly dockbarMode: Signal<NavigationDockbarMode | null>;\n readonly compact: Signal<boolean>;\n readonly activeIds: Signal<ReadonlySet<string> | readonly string[] | null>;\n /**\n * Registrasi ke NavigationService ditunda sampai `enabled` true — yaitu saat\n * type (<NavigationSidebar> dst.) sudah terdaftar — agar state default\n * yang salah tidak sempat dipersist untuk id \"main\".\n */\n readonly enabled: Signal<boolean>;\n}\n\nexport interface NavigationController {\n readonly normalizedNavId: Signal<string>;\n readonly normalizedItems: Signal<readonly NavigationNormalizedItem[]>;\n readonly resolvedState: Signal<NavigationState>;\n readonly activeIdSet: Signal<ReadonlySet<string>>;\n toggleCollapsed(): void;\n}\n\nexport function injectNavigationController(inputs: NavigationControllerInputs): NavigationController {\n const nav = inject(NavigationService);\n const destroyRef = inject(DestroyRef);\n // Token unik per instance <Navigation> untuk validasi keunikan id di NavigationService.\n const owner = {};\n const registeredState = signal<NavigationState | null>(null);\n let previousRegisteredId: string | null = null;\n\n const normalizedNavId = computed(() => normalizeId(inputs.navId()));\n const collapsedPreference = computed(() => inputs.collapsed() ?? (inputs.compact() ? true : null));\n const normalizedItems = computed(() => {\n const data = inputs.data();\n return normalizeUiNavItems(data.length > 0 ? data : inputs.items());\n });\n const fallbackState = computed<NavigationState>(() => ({\n id: normalizedNavId(),\n orientation: inputs.orientation(),\n type: fallbackType(inputs.orientation(), inputs.type()),\n position: inputs.position() ?? (inputs.orientation() === 'horizontal' ? 'top' : 'left'),\n collapsed: collapsedPreference() ?? false,\n dockbarMode: inputs.dockbarMode() ?? 'sticky',\n }));\n const resolvedState = computed(() => nav.currentState(normalizedNavId()) ?? registeredState() ?? fallbackState());\n const activeIdSet = computed(() => {\n const ids = inputs.activeIds();\n if (!ids) {\n return new Set<string>();\n }\n\n return ids instanceof Set ? new Set(ids) : new Set(ids);\n });\n\n effect(() => {\n if (!inputs.enabled()) {\n return;\n }\n\n const nextState = nav.register(\n {\n id: normalizedNavId(),\n orientation: inputs.orientation(),\n type: inputs.type(),\n position: inputs.position(),\n collapsed: collapsedPreference(),\n dockbarMode: inputs.dockbarMode(),\n },\n owner,\n );\n\n if (previousRegisteredId && previousRegisteredId !== nextState.id) {\n nav.unregister(previousRegisteredId, owner);\n }\n\n previousRegisteredId = nextState.id;\n registeredState.set(nextState);\n });\n\n destroyRef.onDestroy(() => {\n if (previousRegisteredId) {\n nav.unregister(previousRegisteredId, owner);\n }\n });\n\n return {\n normalizedNavId,\n normalizedItems,\n resolvedState,\n activeIdSet,\n toggleCollapsed: () => nav.toggleCollapsed(normalizedNavId()),\n };\n}\n\nfunction normalizeId(value: string): string {\n return value.trim() || 'default';\n}\n\nfunction fallbackType(orientation: NavigationOrientation, type: NavigationType | null): NavigationType {\n if (orientation === 'vertical' && (type === 'sidebar' || type === 'dockbar')) {\n return type;\n }\n\n if (orientation === 'horizontal' && (type === 'navbar' || type === 'flyout')) {\n return type;\n }\n\n return orientation === 'horizontal' ? 'navbar' : 'sidebar';\n}\n","import { InjectionToken, type Signal } from '@angular/core';\nimport type { NavigationState } from '../../types/navigation.types';\n\nexport interface NavigationShellContext {\n readonly state: Signal<NavigationState>;\n readonly displayState: Signal<NavigationState>;\n readonly collapseEnabled: Signal<boolean>;\n toggleCollapsed(): void;\n}\n\nexport const NAVIGATION_SHELL = new InjectionToken<NavigationShellContext>('NAVIGATION_SHELL');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n forwardRef,\n inject,\n input,\n isDevMode,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationIconDirective } from './icon/navigation-icon.directive';\nimport { NavigationService } from '@ojiepermana/angular-navigation/service';\nimport { injectNavigationController } from './internal/navigation.controller';\nimport { type NavigationTypeConfig } from './type/shared/navigation-type-config';\nimport { NAVIGATION_SHELL, type NavigationShellContext } from './shell/shared/navigation-shell.token';\nimport { type NavigationCollapseTree, type NavigationItem, type NavigationSelection } from './types/navigation.types';\n\n/**\n * Container navigasi deklaratif. Type ditentukan oleh komponen anak:\n *\n * ```html\n * <Navigation id=\"main\" [data]=\"items\">\n * <NavigationSidebar>\n * <NavigationHeader>…</NavigationHeader>\n * <NavigationContent />\n * <NavigationFooter>…</NavigationFooter>\n * </NavigationSidebar>\n * </Navigation>\n * ```\n *\n * Header dan footer opsional; `NavigationContent` selalu dirender oleh\n * type (default otomatis bila tidak diproyeksikan).\n */\n@Component({\n selector: 'Navigation',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NAVIGATION_SHELL, useExisting: forwardRef(() => NavigationContainerComponent) }],\n host: {\n '[class]': 'hostClasses()',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.data-navigation-id]': 'resolvedState().id',\n '[attr.data-orientation]': 'resolvedState().orientation',\n '[attr.data-type]': 'resolvedState().type',\n '[attr.data-type-style]': 'typeStyle()',\n '[attr.data-position]': 'resolvedState().position',\n '[attr.data-collapse-tree]': 'collapseTree()',\n '[attr.data-preview-expanded]': 'previewRailExpanded() ? \"true\" : null',\n '(mouseenter)': 'setHoverPreview(true)',\n '(mouseleave)': 'setHoverPreview(false)',\n },\n template: ` <ng-content /> `,\n})\nexport class NavigationContainerComponent implements NavigationShellContext {\n readonly navId = input<string>('default', { alias: 'id' });\n readonly data = input<readonly NavigationItem[]>([]);\n readonly items = input<readonly NavigationItem[]>([]);\n readonly ariaLabel = input<string>('Primary navigation');\n readonly compact = input<boolean>(false);\n readonly collapseTree = input<NavigationCollapseTree>('stairs', { alias: 'collapse-tree' });\n readonly class = input<string>('');\n readonly itemClass = input<string>('');\n /** Kelas Tailwind untuk container `<li>` group horizontal (flyout tab / navbar group). */\n readonly groupClass = input<string>('', { alias: 'nav-group-class' });\n readonly activeIds = input<ReadonlySet<string> | readonly string[] | null>(null);\n readonly activeUrl = input<string | null>(null);\n readonly openedIds = model<readonly string[]>([]);\n readonly itemSelected = output<NavigationSelection>();\n\n private readonly nav = inject(NavigationService);\n private readonly hoverPreviewExpanded = signal(false);\n /** Konfigurasi type aktif yang didaftarkan wrapper anak (sidebar/dockbar/navbar/flyout). */\n private readonly typeConfig = signal<NavigationTypeConfig | null>(null);\n\n private readonly orientationPreference = computed(() => this.typeConfig()?.orientation ?? 'vertical');\n private readonly typePreference = computed(() => this.typeConfig()?.type ?? null);\n private readonly positionPreference = computed(() => this.typeConfig()?.position?.() ?? null);\n private readonly collapsedPreference = computed(() => this.typeConfig()?.collapsed?.() ?? null);\n private readonly dockbarModePreference = computed(() => this.typeConfig()?.dockbarMode?.() ?? null);\n private readonly sidebarCollapse = computed(() => this.typeConfig()?.sidebarCollapse?.() ?? false);\n private readonly previewExpanded = computed(() => this.typeConfig()?.previewExpanded?.() ?? false);\n readonly typeStyle = computed(() => this.typeConfig()?.typeStyle?.() ?? 'default');\n readonly flyoutLabel = computed(() => this.typeConfig()?.flyoutLabel?.() ?? 'Menu');\n readonly flyoutIcon = computed(() => this.typeConfig()?.flyoutIcon?.() ?? null);\n readonly flyoutIconOnly = computed(() => this.typeConfig()?.flyoutIconOnly?.() ?? false);\n readonly flyoutIconPosition = computed(() => this.typeConfig()?.flyoutIconPosition?.() ?? 'start');\n\n private readonly controller = injectNavigationController({\n navId: this.navId,\n data: this.data,\n items: this.items,\n orientation: this.orientationPreference,\n type: this.typePreference,\n position: this.positionPreference,\n collapsed: this.collapsedPreference,\n dockbarMode: this.dockbarModePreference,\n compact: this.compact,\n activeIds: this.activeIds,\n enabled: computed(() => this.typeConfig() !== null),\n });\n\n readonly iconTemplate = contentChild(NavigationIconDirective);\n readonly normalizedItems = this.controller.normalizedItems;\n readonly resolvedState = this.controller.resolvedState;\n readonly activeIdSet = this.controller.activeIdSet;\n readonly previewRailExpanded = computed(() => {\n const state = this.resolvedState();\n\n if (state.orientation !== 'vertical' || state.type !== 'sidebar' || !state.collapsed) {\n return false;\n }\n\n return this.previewExpanded() || (this.sidebarCollapse() && this.hoverPreviewExpanded());\n });\n readonly previewRailOffset = computed(() => (this.previewRailExpanded() ? '15rem' : '0px'));\n readonly displayState = computed(() => {\n const state = this.resolvedState();\n\n if (state.type === 'dockbar') {\n return { ...state, collapsed: true };\n }\n\n return this.previewRailExpanded() ? { ...state, collapsed: false } : state;\n });\n readonly dockbarAsideOpen = computed(() => {\n const state = this.resolvedState();\n\n if (state.type !== 'dockbar' || state.dockbarMode !== 'sticky') {\n return false;\n }\n\n return (\n this.nav.resolveDockbarGroup(\n state.id,\n this.normalizedItems(),\n state.dockbarMode,\n this.activeIdSet(),\n this.activeUrl(),\n ) !== null\n );\n });\n readonly collapseEnabled = computed(() => {\n const state = this.resolvedState();\n return this.sidebarCollapse() && state.orientation === 'vertical' && state.type === 'sidebar';\n });\n /** Kelas shell yang dipakai host komponen type (eks `div` shell internal). */\n readonly shellClasses = computed(() =>\n cn(\n 'flex h-full min-h-0 transition-[width,box-shadow,transform] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n this.resolvedState().orientation === 'horizontal'\n ? 'flex-row items-stretch overflow-visible'\n : this.resolvedState().type === 'dockbar'\n ? 'flex-col overflow-visible'\n : 'flex-col overflow-hidden',\n this.resolvedState().type === 'dockbar' && [\n 'w-16 shrink-0',\n this.resolvedState().position === 'right' && 'ml-auto',\n ],\n this.resolvedState().position === 'right' ? 'origin-right' : 'origin-left',\n this.previewRailExpanded() && [\n 'absolute inset-y-0 z-20 w-76 overflow-hidden bg-background shadow-xl',\n this.resolvedState().position === 'right'\n ? 'right-0 border-l border-[hsl(var(--border)/var(--opacity-70))]'\n : 'left-0 border-r border-[hsl(var(--border)/var(--opacity-70))]',\n ],\n ),\n );\n readonly state = this.resolvedState;\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'relative block min-h-0 text-foreground transition-[width] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n this.resolvedState().orientation === 'horizontal'\n ? 'w-full'\n : this.resolvedState().type === 'dockbar'\n ? this.dockbarAsideOpen()\n ? 'w-76'\n : 'w-16'\n : this.resolvedState().collapsed\n ? 'w-16'\n : 'w-76',\n this.resolvedState().orientation === 'horizontal' ||\n this.resolvedState().type === 'dockbar' ||\n this.previewRailExpanded()\n ? 'overflow-visible'\n : 'overflow-hidden',\n this.class(),\n ),\n );\n\n /**\n * Dipanggil komponen type saat dibuat. Satu `<Navigation>` hanya boleh\n * memuat satu type hidup — pendaftaran ganda dianggap salah konfigurasi.\n */\n registerType(config: NavigationTypeConfig): void {\n if (this.typeConfig() !== null && isDevMode()) {\n throw new Error(\n '[Navigation] Hanya satu type (<NavigationSidebar>/<NavigationDockbar>/<NavigationNavbar>/<NavigationFlyout>) yang boleh hidup dalam satu <Navigation>.',\n );\n }\n\n this.typeConfig.set(config);\n }\n\n unregisterType(config: NavigationTypeConfig): void {\n if (this.typeConfig() === config) {\n this.typeConfig.set(null);\n }\n }\n\n toggleCollapsed(): void {\n this.controller.toggleCollapsed();\n }\n\n protected setHoverPreview(value: boolean): void {\n this.hoverPreviewExpanded.set(this.sidebarCollapse() ? value : false);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { IconComponent } from '@ojiepermana/angular-component/icon';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationIconDirective } from '../icon/navigation-icon.directive';\nimport { NavigationService } from '@ojiepermana/angular-navigation/service';\nimport type {\n NavigationCollapseTree,\n NavigationNormalizedItem,\n NavigationOrientation,\n} from '../types/navigation.types';\n\n@Component({\n selector: 'NavigationItemContent',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, IconComponent],\n host: {\n class: 'contents',\n },\n template: `\n @if (item().icon; as iconName) {\n <span data-navigation-icon-slot=\"true\" [class]=\"iconSlotClasses()\">\n @if (iconTemplate(); as customIcon) {\n <ng-container [ngTemplateOutlet]=\"customIcon.template\" [ngTemplateOutletContext]=\"iconContext()\" />\n } @else {\n <Icon [name]=\"iconName\" [class]=\"defaultIconClasses()\" [size]=\"defaultIconSize()\" />\n }\n </span>\n }\n\n @if (!compact()) {\n <span class=\"min-w-0 flex-1\">\n <span [class]=\"titleClasses()\">{{ item().title }}</span>\n @if (showSubtitle()) {\n <span [class]=\"subtitleClasses()\">{{ item().subtitle }}</span>\n }\n </span>\n\n @if (item().badge; as badge) {\n <span [class]=\"badge.classes ?? defaultBadgeClasses()\">{{ badge.title }}</span>\n }\n }\n\n @if (compact() && !item().icon) {\n <span aria-hidden=\"true\" [class]=\"compactFallbackClasses()\">{{ compactFallback() }}</span>\n }\n `,\n})\nexport class NavigationItemContentComponent {\n private readonly nav = inject(NavigationService);\n\n readonly item = input.required<NavigationNormalizedItem>();\n readonly active = input<boolean>(false);\n readonly compact = input<boolean>(false);\n readonly orientation = input<NavigationOrientation>('vertical');\n readonly level = input<number>(0);\n readonly collapseTree = input<NavigationCollapseTree>('stairs');\n readonly iconTemplate = input<NavigationIconDirective | undefined>(undefined);\n\n protected readonly iconSlotClasses = computed(() =>\n cn(\n 'relative z-10 inline-flex shrink-0 items-center justify-center transition-[border-color,background-color,color,box-shadow] duration-200',\n this.orientation() === 'vertical'\n ? this.compact()\n ? 'h-8 w-8 rounded-full border'\n : 'h-7 w-7 rounded-full border'\n : 'h-5 w-5 rounded-full border border-transparent',\n this.usesStraightVerticalSurface() && 'overflow-hidden bg-background/85 backdrop-blur-sm border-transparent',\n this.active() && !this.usesStraightVerticalSurface() ? 'border-primary text-current' : 'border-transparent',\n this.active() && this.usesStraightVerticalSurface() && 'text-current',\n this.compact() && 'mx-auto',\n ),\n );\n protected readonly titleClasses = computed(() =>\n cn('block truncate', this.active() && 'font-semibold text-foreground', this.item().classes?.title),\n );\n protected readonly showSubtitle = computed(\n () => !!this.item().subtitle && !(this.orientation() === 'horizontal' && this.level() === 0),\n );\n protected readonly subtitleClasses = computed(() =>\n cn('block truncate text-xs font-normal text-muted-foreground', this.item().classes?.subtitle),\n );\n protected readonly compactFallbackClasses = computed(() =>\n cn('inline-flex h-5 min-w-5 items-center justify-center text-xs font-semibold uppercase'),\n );\n\n protected readonly defaultBadgeClasses = computed(() =>\n cn(\n 'ml-auto inline-flex h-5 shrink-0 items-center rounded-full px-2 text-xs font-medium',\n this.active() ? 'bg-background text-foreground' : 'bg-muted text-muted-foreground',\n ),\n );\n protected readonly defaultIconSize = computed(() => (this.usesStraightVerticalSurface() ? 18 : 16));\n\n protected readonly defaultIconClasses = computed(() => cn('text-current', this.item().classes?.icon));\n\n protected readonly iconContext = computed(() =>\n this.nav.iconContext(this.item(), this.active(), this.level(), this.orientation()),\n );\n\n protected compactFallback(): string {\n return this.nav.compactFallback(this.item());\n }\n\n private usesStraightVerticalSurface(): boolean {\n return this.orientation() === 'vertical' && !this.compact() && this.collapseTree() === 'straight';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { IconComponent } from '@ojiepermana/angular-component/icon';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationIconDirective } from '../icon/navigation-icon.directive';\nimport { NavigationService } from '@ojiepermana/angular-navigation/service';\nimport { NavigationItemContentComponent } from './navigation-item-content.component';\nimport type {\n NavigationCollapseTree,\n NavigationNormalizedItem,\n NavigationOrientation,\n NavigationSelection,\n} from '../types/navigation.types';\n\n@Component({\n selector: 'li[NavigationItem]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive, IconComponent, NavigationItemContentComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'hostRole()',\n '[attr.data-navigation-item-key]': 'item().key',\n '[attr.aria-hidden]': 'item().type === \"spacer\" ? \"true\" : null',\n },\n template: `\n @switch (item().type) {\n @case ('divider') {\n <span class=\"block h-px w-full bg-border\"></span>\n }\n\n @case ('spacer') {}\n\n @case ('group') {\n @if (!compact() && item().title) {\n <div [id]=\"headingId()\" [class]=\"groupHeadingClasses()\">{{ item().title }}</div>\n }\n\n <ul [class]=\"childListClasses()\" role=\"group\" [attr.aria-labelledby]=\"item().title ? headingId() : null\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n\n @case ('collapsible') {\n <button\n type=\"button\"\n [class]=\"triggerClasses(isActive())\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"item().panelId\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [disabled]=\"item().disabled || null\"\n (click)=\"toggleOpen()\">\n <NavigationItemContent\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n\n @if (!compact()) {\n <Icon name=\"chevron_right\" [size]=\"16\" [class]=\"chevronClasses()\" />\n }\n </button>\n\n @if (showChildren()) {\n <ul [id]=\"item().panelId\" [class]=\"childListClasses()\" role=\"group\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"false\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n }\n\n @case ('mega') {\n @if (!compact() && item().title) {\n <div [id]=\"headingId()\" [class]=\"groupHeadingClasses()\">{{ item().title }}</div>\n }\n\n <ul [class]=\"childListClasses()\" role=\"group\" [attr.aria-labelledby]=\"item().title ? headingId() : null\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n\n @default {\n @if (isRouterItem()) {\n <a\n [class]=\"leafClasses(routerActive.isActive || isActive())\"\n [routerLink]=\"item().link ?? null\"\n [queryParams]=\"item().queryParams ?? null\"\n [queryParamsHandling]=\"item().queryParamsHandling ?? null\"\n [fragment]=\"item().fragment ?? undefined\"\n [preserveFragment]=\"item().preserveFragment ?? false\"\n [target]=\"item().target ?? undefined\"\n routerLinkActive\n #routerActive=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n [attr.aria-current]=\"routerActive.isActive || isActive() ? 'page' : null\"\n [attr.aria-disabled]=\"item().disabled || null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-navigation-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <NavigationItemContent\n [item]=\"item()\"\n [active]=\"routerActive.isActive || isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </a>\n } @else if (hrefFor()) {\n <a\n [class]=\"leafClasses(isActive())\"\n [attr.href]=\"hrefFor()\"\n [attr.target]=\"item().target ?? (item().externalLink ? '_blank' : null)\"\n [attr.rel]=\"relFor()\"\n [attr.aria-current]=\"isActive() ? 'page' : null\"\n [attr.aria-disabled]=\"item().disabled || null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-navigation-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <NavigationItemContent\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"leafClasses(isActive())\"\n [disabled]=\"item().disabled || null\"\n [attr.aria-current]=\"isActive() ? 'page' : null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-navigation-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <NavigationItemContent\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </button>\n }\n }\n }\n `,\n})\nexport class NavigationItemComponent {\n private readonly nav = inject(NavigationService);\n\n readonly navId = input<string>('default');\n readonly item = input.required<NavigationNormalizedItem>();\n readonly level = input<number>(0);\n readonly orientation = input<NavigationOrientation>('vertical');\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavigationIconDirective | undefined>(undefined);\n readonly collapseTree = input<NavigationCollapseTree>('stairs');\n readonly straightRail = input<boolean>(false);\n readonly straightRailActive = input<boolean>(false);\n readonly firstInBranch = input<boolean>(false);\n readonly lastInBranch = input<boolean>(false);\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<NavigationSelection>();\n\n private readonly openedIdSet = computed(() => new Set(this.openedIds()));\n\n protected readonly isHorizontalRoot = computed(() => this.orientation() === 'horizontal' && this.level() === 0);\n protected readonly isActive = computed(() => this.nav.isItemActive(this.item(), this.activeIds(), this.activeUrl()));\n protected readonly showChildren = computed(() => !this.compact() && this.isOpen());\n\n protected readonly hostClasses = computed(() => {\n if (this.item().type === 'divider') {\n return this.dividerClasses();\n }\n\n if (this.item().type === 'spacer') {\n return 'flex-1';\n }\n\n if (this.item().type === 'group' || this.item().type === 'mega') {\n return this.groupContainerClasses();\n }\n\n return this.itemContainerClasses();\n });\n\n protected readonly hostRole = computed(() => {\n if (this.item().type === 'divider') {\n return 'separator';\n }\n\n return this.orientation() === 'horizontal' ? 'none' : null;\n });\n\n protected readonly headingId = computed(() => `${this.item().panelId}-heading`);\n\n protected isRouterItem(): boolean {\n return this.nav.isRouterItem(this.item());\n }\n\n protected hrefFor(): string | null {\n return this.nav.hrefFor(this.item());\n }\n\n protected relFor(): string | null {\n return this.nav.relFor(this.item());\n }\n\n protected routerLinkActiveOptions() {\n return this.nav.routerLinkActiveOptions(this.item());\n }\n\n protected itemRole(): 'menuitem' | null {\n return this.nav.itemRole(this.orientation(), this.level());\n }\n\n protected compactLabel(): string | null {\n return this.nav.compactLabel(this.item(), this.compact());\n }\n\n protected titleFor(): string | null {\n return this.nav.titleFor(this.item(), this.compact());\n }\n\n protected isOpen(): boolean {\n return this.openedIdSet().has(this.item().stateId) || this.openedIdSet().has(this.item().key) || this.isActive();\n }\n\n protected toggleOpen(): void {\n if (this.item().disabled) {\n return;\n }\n\n const next = new Set(this.openedIds());\n if (next.has(this.item().stateId)) {\n next.delete(this.item().stateId);\n } else {\n next.add(this.item().stateId);\n }\n\n this.openedIdsChange.emit([...next]);\n }\n\n protected selectItem(event: MouseEvent): void {\n if (this.item().disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.item().action?.(this.item().source);\n this.itemSelected.emit({\n item: this.item().source,\n key: this.item().key,\n type: this.item().type,\n link: this.item().link,\n external: !!this.hrefFor(),\n });\n this.nav.closePanel(this.navId());\n this.nav.closeDrawer(this.navId());\n }\n\n protected leafClasses(active: boolean): string {\n return cn(\n 'NavigationItem group/nav inline-flex min-w-0 items-center rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'h-9 px-3 py-2' : 'w-full px-3 py-1.5 text-left',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'gap-3' : 'gap-1.5',\n this.compact() && 'h-10 w-10 justify-center gap-0 px-0 text-center',\n this.interactiveStateClasses(active),\n this.item().disabled && 'pointer-events-none opacity-50',\n this.item().classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected triggerClasses(active: boolean): string {\n return cn(\n 'nav-trigger group/nav inline-flex min-w-0 items-center rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'h-9 px-3 py-2' : 'w-full px-3 py-1.5 text-left',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'gap-3' : 'gap-1.5',\n this.compact() && 'h-10 w-10 justify-center gap-0 px-0 text-center',\n this.interactiveStateClasses(active),\n this.item().classes?.wrapper,\n this.itemClass(),\n );\n }\n\n private interactiveStateClasses(active: boolean): string {\n const showsNestedActiveConnector =\n active &&\n this.orientation() === 'vertical' &&\n !this.compact() &&\n this.level() > 1 &&\n this.collapseTree() === 'stairs';\n\n if (this.orientation() === 'vertical' && !this.compact()) {\n return cn(\n 'relative isolate',\n \"before:pointer-events-none before:absolute before:inset-y-0 before:left-2 before:right-2 before:-z-10 before:rounded-md before:border before:border-transparent before:bg-transparent before:transition-colors before:duration-200 before:content-['']\",\n showsNestedActiveConnector &&\n \"after:pointer-events-none after:absolute after:-left-2 after:top-1/2 after:-z-10 after:h-px after:w-5 after:-translate-y-1/2 after:rounded-full after:bg-current/25 after:content-['']\",\n active\n ? 'font-semibold text-foreground hover:before:border-primary'\n : 'text-foreground/80 hover:text-accent-foreground hover:before:border-primary hover:before:bg-accent',\n );\n }\n\n return active ? 'font-semibold text-foreground' : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground';\n }\n\n protected chevronClasses(): string {\n return cn('ml-auto shrink-0 self-center transition-transform duration-200', this.isOpen() && 'rotate-90');\n }\n\n protected itemContainerClasses(): string {\n return cn(\n this.orientation() === 'horizontal' && this.level() === 0 ? 'relative' : 'w-full',\n this.compact() && 'flex justify-center',\n this.straightRailClasses(),\n );\n }\n\n protected groupContainerClasses(): string {\n return cn('w-full', this.level() > 0 && 'pt-2');\n }\n\n protected dividerClasses(): string {\n return cn(this.orientation() === 'horizontal' && this.level() === 0 ? 'mx-1 h-5 w-px' : 'my-2 w-full px-2');\n }\n\n protected groupHeadingClasses(): string {\n return cn(\n 'px-3 py-2 text-xs font-medium uppercase tracking-wide text-muted-foreground',\n this.item().classes?.title,\n );\n }\n\n protected childListClasses(): string {\n const isGroupedBranch = this.item().type === 'group' || this.item().type === 'mega';\n const usesStairsTree = this.collapseTree() === 'stairs';\n\n return cn(\n 'flex list-none flex-col gap-0.5 p-0',\n !this.compact() && 'mt-0.5',\n this.level() >= 0 &&\n !this.compact() &&\n !isGroupedBranch &&\n usesStairsTree &&\n cn(\n \"relative ml-[1.625rem] pl-2 before:absolute before:-top-2 before:bottom-0 before:left-0 before:w-px before:-translate-x-1/2 before:rounded-full before:content-['']\",\n this.isActive() ? 'before:bg-current/25' : 'before:bg-border',\n ),\n );\n }\n\n protected showStraightRailForChildren(): boolean {\n return (\n !this.compact() &&\n this.collapseTree() === 'straight' &&\n this.item().type !== 'group' &&\n this.item().type !== 'mega'\n );\n }\n\n private straightRailClasses(): string {\n if (!this.straightRail() || this.orientation() !== 'vertical' || this.compact()) {\n return '';\n }\n\n return cn(\n 'relative',\n \"before:pointer-events-none before:absolute before:left-[1.625rem] before:w-0 before:-z-10 before:border-l before:border-dotted before:content-['']\",\n this.straightRailActive() ? 'before:border-primary/50' : 'before:border-border/50',\n this.firstInBranch() ? 'before:-top-9' : 'before:-top-0.5',\n this.lastInBranch() ? 'before:bottom-[calc(100%-1.25rem)]' : 'before:-bottom-0.5',\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationIconDirective } from '../icon/navigation-icon.directive';\nimport { NavigationItemComponent } from '../item/navigation-item.component';\nimport type {\n NavigationCollapseTree,\n NavigationNormalizedItem,\n NavigationPosition,\n NavigationSelection,\n} from '../types/navigation.types';\n\n@Component({\n selector: 'NavigationList',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavigationItemComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-position]': 'position()',\n },\n template: `\n <ul [class]=\"listClasses()\" role=\"list\">\n @for (item of items(); track item.key) {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'vertical'\"\n [compact]=\"isCollapsed()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n `,\n})\nexport class NavigationListComponent {\n readonly navId = input<string>('default');\n readonly items = input<readonly NavigationNormalizedItem[]>([]);\n readonly collapsed = input<boolean>(false);\n readonly compact = input<boolean>(false);\n readonly position = input<NavigationPosition>('left');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavigationIconDirective | undefined>(undefined);\n readonly collapseTree = input<NavigationCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<NavigationSelection>();\n\n protected readonly isCollapsed = computed(() => this.collapsed() || this.compact());\n\n protected readonly hostClasses = computed(() => cn('block', this.position() === 'right' && 'items-end text-right'));\n\n protected readonly listClasses = computed(() =>\n this.isCollapsed()\n ? cn('flex list-none flex-col items-center gap-0.5 p-0')\n : cn('flex list-none flex-col gap-0.5 p-0', this.position() === 'right' && 'items-end'),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { IconComponent } from '@ojiepermana/angular-component/icon';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationIconDirective } from '../icon/navigation-icon.directive';\nimport { NavigationItemComponent } from '../item/navigation-item.component';\nimport { NavigationItemContentComponent } from '../item/navigation-item-content.component';\nimport { NavigationService } from '@ojiepermana/angular-navigation/service';\nimport type {\n NavigationCollapseTree,\n NavigationDockbarMode,\n NavigationNormalizedItem,\n NavigationPosition,\n NavigationSelection,\n} from '../types/navigation.types';\nimport { NavigationListComponent } from './navigation-list.component';\n\n@Component({\n selector: 'NavigationDockbarMenu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent, NavigationItemComponent, NavigationItemContentComponent, NavigationListComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-mode]': 'mode()',\n '[attr.data-position]': 'position()',\n '(keydown.escape)': 'onEscape($event)',\n '(window:resize)': 'onWindowResize()',\n },\n template: `\n <ul [class]=\"railClasses()\" role=\"list\">\n @for (entry of items(); track entry.key) {\n @if (entry.children.length > 0) {\n <li class=\"flex w-full justify-center\">\n <button\n type=\"button\"\n data-navigation-dockbar-trigger=\"true\"\n [class]=\"triggerClasses(entry)\"\n [attr.aria-expanded]=\"isGroupOpen(entry)\"\n [attr.aria-controls]=\"asideId()\"\n [attr.aria-label]=\"entry.tooltip ?? entry.title ?? null\"\n [attr.title]=\"entry.tooltip ?? entry.title ?? null\"\n [attr.data-navigation-item-key]=\"entry.key\"\n [disabled]=\"entry.disabled || null\"\n (click)=\"toggleGroup(entry)\">\n <NavigationItemContent\n [item]=\"entry\"\n [active]=\"isGroupActive(entry)\"\n [compact]=\"true\"\n orientation=\"vertical\"\n [level]=\"0\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </button>\n </li>\n } @else {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"entry\"\n [level]=\"0\"\n orientation=\"vertical\"\n [compact]=\"true\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n }\n </ul>\n\n @if (openGroup(); as group) {\n @if (isDrawerMode()) {\n <div\n class=\"fixed inset-0 z-40 bg-[hsl(var(--overlay-backdrop-strong))]\"\n data-navigation-dockbar-backdrop=\"true\"\n aria-hidden=\"true\"\n [style.left.px]=\"backdropInset().left\"\n [style.right.px]=\"backdropInset().right\"\n (click)=\"closeAside()\"></div>\n }\n\n <!-- Drawer non-modal: rail tetap interaktif di atas backdrop, jadi tanpa aria-modal. -->\n <aside\n [id]=\"asideId()\"\n [class]=\"asideClasses()\"\n data-navigation-dockbar-aside=\"true\"\n [attr.role]=\"isDrawerMode() ? 'dialog' : null\"\n [attr.aria-labelledby]=\"asideHeadingId()\">\n <header\n class=\"flex h-12 shrink-0 items-center gap-2 border-b border-[hsl(var(--border)/var(--opacity-70))] px-4\">\n <div class=\"min-w-0 flex-1\">\n <h2 [id]=\"asideHeadingId()\" class=\"truncate text-sm font-semibold leading-tight text-foreground\">\n {{ group.title }}\n </h2>\n @if (group.subtitle) {\n <p class=\"truncate text-xs leading-tight text-muted-foreground\">{{ group.subtitle }}</p>\n }\n </div>\n\n @if (isDrawerMode()) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-foreground/80 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-navigation-dockbar-close=\"true\"\n aria-label=\"Close navigation panel\"\n (click)=\"closeAside()\">\n <Icon name=\"close\" [size]=\"16\" />\n </button>\n }\n </header>\n\n <div class=\"min-h-0 flex-1 overflow-y-auto px-2 py-3\" data-navigation-dockbar-aside-scroll=\"true\">\n <NavigationList\n [navId]=\"navId()\"\n [items]=\"group.children\"\n [collapsed]=\"false\"\n position=\"left\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n </div>\n </aside>\n }\n `,\n})\nexport class NavigationDockbarMenuComponent {\n private readonly nav = inject(NavigationService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n\n readonly navId = input<string>('default');\n readonly items = input<readonly NavigationNormalizedItem[]>([]);\n readonly mode = input<NavigationDockbarMode>('sticky');\n readonly position = input<NavigationPosition>('left');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavigationIconDirective | undefined>(undefined);\n readonly collapseTree = input<NavigationCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<NavigationSelection>();\n\n protected readonly isDrawerMode = computed(() => this.mode() === 'drawer');\n protected readonly asideId = computed(() => `nav-dockbar-${this.safeId(this.navId())}`);\n protected readonly asideHeadingId = computed(() => `${this.asideId()}-heading`);\n\n protected readonly openGroup = computed(() =>\n this.nav.resolveDockbarGroup(this.navId(), this.items(), this.mode(), this.activeIds(), this.activeUrl()),\n );\n\n protected readonly hostClasses = computed(() => cn('block w-16'));\n\n protected readonly railClasses = computed(() =>\n cn(\n 'flex w-full list-none flex-col items-center gap-0.5 p-2',\n // Mode drawer: rail tetap di atas backdrop (z-40) agar user bisa langsung\n // berpindah group lain tanpa menutup drawer lebih dulu.\n this.isDrawerMode() && this.openGroup() !== null && 'relative z-50',\n ),\n );\n\n protected readonly asideClasses = computed(() =>\n cn(\n 'absolute inset-y-0 flex w-60 flex-col bg-background',\n this.position() === 'right'\n ? 'right-16 border-r border-[hsl(var(--border)/var(--opacity-70))]'\n : 'left-16 border-l border-[hsl(var(--border)/var(--opacity-70))]',\n this.isDrawerMode() &&\n cn(\n 'z-50 shadow-xl',\n this.position() === 'right'\n ? 'border-l border-l-[hsl(var(--border)/var(--opacity-70))]'\n : 'border-r border-r-[hsl(var(--border)/var(--opacity-70))]',\n ),\n ),\n );\n\n /**\n * Offset backdrop agar kolom navigasi (rail + header/footer) benar-benar bebas\n * overlay — dockbar dan aside drawer berada di level yang sama di atas backdrop.\n * `null` berarti pengukuran tidak tersedia (mis. jsdom) dan backdrop jatuh ke\n * `inset-0` penuh seperti sebelumnya.\n */\n protected readonly backdropInset = signal<{ left: number | null; right: number | null }>({\n left: null,\n right: null,\n });\n\n protected onWindowResize(): void {\n if (this.isDrawerMode() && this.openGroup() !== null) {\n this.measureBackdropInset();\n }\n }\n\n private measureBackdropInset(): void {\n const navEl =\n (this.host.nativeElement.closest('[data-navigation-id]') as HTMLElement | null) ?? this.host.nativeElement;\n const rect = navEl.getBoundingClientRect();\n const viewportWidth = this.host.nativeElement.ownerDocument?.defaultView?.innerWidth ?? 0;\n\n if (rect.width <= 0 || viewportWidth <= 0) {\n this.backdropInset.set({ left: null, right: null });\n return;\n }\n\n // Containing block backdrop `fixed` bisa bergeser dari viewport (ancestor dengan\n // filter/contain). Koreksi origin dihitung dari posisi aktual backdrop terhadap\n // style left/right yang sedang berlaku — konvergen dalam satu langkah re-measure.\n const backdrop = this.host.nativeElement.querySelector<HTMLElement>('[data-navigation-dockbar-backdrop=\"true\"]');\n const backdropRect = backdrop?.getBoundingClientRect() ?? null;\n let originLeft = 0;\n let originRight = viewportWidth;\n\n if (backdrop && backdropRect && backdropRect.width > 0) {\n originLeft = backdropRect.left - this.parsePx(backdrop.style.left);\n originRight = backdropRect.right + this.parsePx(backdrop.style.right);\n }\n\n if (this.position() === 'right') {\n this.backdropInset.set({ left: null, right: Math.max(originRight - rect.left, 0) });\n return;\n }\n\n this.backdropInset.set({ left: Math.max(rect.right - originLeft, 0), right: null });\n }\n\n private parsePx(value: string): number {\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : 0;\n }\n\n protected isGroupOpen(entry: NavigationNormalizedItem): boolean {\n return this.openGroup()?.key === entry.key;\n }\n\n protected isGroupActive(entry: NavigationNormalizedItem): boolean {\n return this.nav.isItemActive(entry, this.activeIds(), this.activeUrl());\n }\n\n protected triggerClasses(entry: NavigationNormalizedItem): string {\n return cn(\n 'group/nav inline-flex h-10 w-10 items-center justify-center rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n this.isGroupOpen(entry)\n ? 'bg-accent text-accent-foreground'\n : this.isGroupActive(entry)\n ? 'font-semibold text-foreground'\n : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground',\n entry.classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected toggleGroup(entry: NavigationNormalizedItem): void {\n const wasOpen = this.isGroupOpen(entry);\n\n if (!wasOpen && this.isDrawerMode()) {\n this.measureBackdropInset();\n }\n\n this.nav.togglePanel(this.navId(), entry);\n\n if (!this.isDrawerMode()) {\n return;\n }\n\n if (wasOpen) {\n this.afterRender(() => this.focusTrigger(entry.key));\n return;\n }\n\n this.afterRender(() => {\n // Ukur ulang setelah render: geometri kolom bisa bergeser saat panel terbuka.\n this.measureBackdropInset();\n this.focusFirstAsideItem();\n });\n }\n\n protected closeAside(): void {\n const openKey = this.openGroup()?.key ?? null;\n this.nav.closePanel(this.navId());\n\n if (openKey !== null) {\n this.afterRender(() => this.focusTrigger(openKey));\n }\n }\n\n protected onEscape(event: Event): void {\n if (!this.isDrawerMode() || this.openGroup() === null) {\n return;\n }\n\n event.preventDefault();\n this.closeAside();\n }\n\n private afterRender(callback: () => void): void {\n afterNextRender({ read: callback }, { injector: this.injector });\n }\n\n private focusFirstAsideItem(): void {\n const aside = this.host.nativeElement.querySelector<HTMLElement>(`#${this.asideId()}`);\n const focusable = aside?.querySelector<HTMLElement>(\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n );\n focusable?.focus();\n }\n\n private focusTrigger(key: string): void {\n const trigger = this.host.nativeElement.querySelector<HTMLElement>(\n `[data-navigation-dockbar-trigger=\"true\"][data-navigation-item-key=\"${key}\"]`,\n );\n trigger?.focus();\n }\n\n private safeId(value: string): string {\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-');\n return normalized || 'default';\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { IconComponent } from '@ojiepermana/angular-component/icon';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationIconDirective } from '../icon/navigation-icon.directive';\nimport { NavigationItemComponent } from '../item/navigation-item.component';\nimport { NavigationService } from '@ojiepermana/angular-navigation/service';\nimport type {\n NavigationTypeStyle,\n NavigationCollapseTree,\n NavigationIconContext,\n NavigationNormalizedItem,\n NavigationSelection,\n} from '../types/navigation.types';\n\n/**\n * Grid entry ala flyout: children sebuah branch dirender sebagai entry\n * icon-box + title/subtitle dalam grid responsif (1/sm:2/md:3/lg:4, dibatasi\n * `columns`); entry ber-children tampil terbuka secara default dengan collapse\n * vertical yang icon-nya sejajar satu garis dengan icon induk. Dipakai oleh\n * flyout dan panel mega navbar.\n */\n@Component({\n selector: 'NavigationEntryGrid',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, RouterLink, RouterLinkActive, IconComponent, NavigationItemComponent],\n host: {\n class: 'contents',\n },\n template: `\n @let branchItem = branch();\n\n <div\n role=\"group\"\n [id]=\"branchItem.panelId\"\n [attr.aria-label]=\"branchItem.title || null\"\n [attr.data-navigation-flyout-content]=\"branchItem.key\"\n class=\"p-2 md:p-3\">\n <ul role=\"none\" [class]=\"contentGridClasses(branchItem)\">\n @for (child of branchItem.children; track child.key) {\n @switch (child.type) {\n @case ('divider') {\n <li role=\"separator\" class=\"col-span-full my-1 h-px bg-border\"></li>\n }\n @case ('spacer') {}\n @default {\n @if (child.children.length > 0) {\n <li role=\"none\" class=\"min-w-0\" [attr.data-navigation-item-key]=\"child.key\">\n <button\n type=\"button\"\n role=\"menuitem\"\n data-navigation-flyout-entry=\"true\"\n [class]=\"entryClasses(child, isItemActive(child))\"\n [attr.aria-expanded]=\"isEntryOpen(child)\"\n [attr.aria-controls]=\"child.panelId\"\n [disabled]=\"child.disabled || null\"\n (click)=\"toggleEntry(child)\">\n <ng-container\n [ngTemplateOutlet]=\"entryContent\"\n [ngTemplateOutletContext]=\"{ $implicit: child, active: isItemActive(child) }\" />\n <Icon name=\"chevron_right\" [size]=\"16\" [class]=\"entryChevronClasses(child)\" />\n </button>\n\n @if (isEntryOpen(child)) {\n <ul [id]=\"child.panelId\" role=\"none\" [class]=\"nestedListClasses()\">\n @for (nested of child.children; track nested.key) {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"nested\"\n [level]=\"2\"\n [orientation]=\"'horizontal'\"\n [compact]=\"false\"\n [itemClass]=\"navItemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n </li>\n } @else {\n <li role=\"none\" class=\"min-w-0\" [attr.data-navigation-item-key]=\"child.key\">\n @if (isRouterItem(child)) {\n <a\n role=\"menuitem\"\n data-navigation-flyout-entry=\"true\"\n [class]=\"entryClasses(child, routerActive.isActive || isItemActive(child))\"\n [routerLink]=\"child.link ?? null\"\n [queryParams]=\"child.queryParams ?? null\"\n [queryParamsHandling]=\"child.queryParamsHandling ?? null\"\n [fragment]=\"child.fragment ?? undefined\"\n [preserveFragment]=\"child.preserveFragment ?? false\"\n [target]=\"child.target ?? undefined\"\n routerLinkActive\n #routerActive=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions(child)\"\n [attr.aria-current]=\"routerActive.isActive || isItemActive(child) ? 'page' : null\"\n [attr.aria-disabled]=\"child.disabled || null\"\n (click)=\"selectEntry(child, $event)\">\n <ng-container\n [ngTemplateOutlet]=\"entryContent\"\n [ngTemplateOutletContext]=\"{\n $implicit: child,\n active: routerActive.isActive || isItemActive(child),\n }\" />\n </a>\n } @else if (hrefFor(child)) {\n <a\n role=\"menuitem\"\n data-navigation-flyout-entry=\"true\"\n [class]=\"entryClasses(child, isItemActive(child))\"\n [attr.href]=\"hrefFor(child)\"\n [attr.target]=\"child.target ?? (child.externalLink ? '_blank' : null)\"\n [attr.rel]=\"relFor(child)\"\n [attr.aria-current]=\"isItemActive(child) ? 'page' : null\"\n [attr.aria-disabled]=\"child.disabled || null\"\n (click)=\"selectEntry(child, $event)\">\n <ng-container\n [ngTemplateOutlet]=\"entryContent\"\n [ngTemplateOutletContext]=\"{ $implicit: child, active: isItemActive(child) }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n data-navigation-flyout-entry=\"true\"\n [class]=\"entryClasses(child, isItemActive(child))\"\n [disabled]=\"child.disabled || null\"\n [attr.aria-current]=\"isItemActive(child) ? 'page' : null\"\n (click)=\"selectEntry(child, $event)\">\n <ng-container\n [ngTemplateOutlet]=\"entryContent\"\n [ngTemplateOutletContext]=\"{ $implicit: child, active: isItemActive(child) }\" />\n </button>\n }\n </li>\n }\n }\n }\n }\n </ul>\n </div>\n\n <ng-template #entryContent let-child let-active=\"active\">\n <span [class]=\"entryIconClasses(active)\">\n @if (isBorderRail()) {\n <span\n aria-hidden=\"true\"\n data-navigation-icon-rail=\"top\"\n class=\"pointer-events-none absolute -inset-x-1.5 top-0 h-px bg-border/50\"></span>\n <span\n aria-hidden=\"true\"\n data-navigation-icon-rail=\"bottom\"\n class=\"pointer-events-none absolute -inset-x-1.5 bottom-0 h-px bg-border/50\"></span>\n <span\n aria-hidden=\"true\"\n data-navigation-icon-rail=\"left\"\n class=\"pointer-events-none absolute -inset-y-1.5 left-0 w-px bg-border/50\"></span>\n <span\n aria-hidden=\"true\"\n data-navigation-icon-rail=\"right\"\n class=\"pointer-events-none absolute -inset-y-1.5 right-0 w-px bg-border/50\"></span>\n <span\n aria-hidden=\"true\"\n data-navigation-icon-rail=\"center-horizontal\"\n class=\"pointer-events-none absolute -inset-x-1.5 top-1/2 border-t border-dashed border-border/40\"></span>\n <span\n aria-hidden=\"true\"\n data-navigation-icon-rail=\"center-vertical\"\n class=\"pointer-events-none absolute -inset-y-1.5 left-1/2 border-l border-dashed border-border/40\"></span>\n }\n\n @if (child.icon) {\n @if (iconTemplate(); as customIcon) {\n <ng-container\n [ngTemplateOutlet]=\"customIcon.template\"\n [ngTemplateOutletContext]=\"iconContext(child, active)\" />\n } @else {\n <Icon [name]=\"child.icon\" [size]=\"18\" [class]=\"entryIconGlyphClasses(child)\" />\n }\n } @else {\n <span aria-hidden=\"true\" class=\"text-xs font-semibold uppercase\">{{ fallbackInitials(child) }}</span>\n }\n </span>\n\n <span class=\"min-w-0 flex-1\">\n <span [class]=\"entryTitleClasses(child, active)\">{{ child.title }}</span>\n @if (child.subtitle) {\n <span [class]=\"entrySubtitleClasses(child)\">{{ child.subtitle }}</span>\n }\n </span>\n\n @if (child.badge; as badge) {\n <span\n [class]=\"\n badge.classes ??\n 'inline-flex h-5 shrink-0 items-center self-center rounded-full bg-muted px-2 text-xs font-medium text-muted-foreground'\n \"\n >{{ badge.title }}</span\n >\n }\n </ng-template>\n `,\n})\nexport class NavigationEntryGridComponent {\n private readonly nav = inject(NavigationService);\n\n readonly navId = input<string>('default');\n readonly branch = input.required<NavigationNormalizedItem>();\n readonly typeStyle = input<NavigationTypeStyle>('default');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavigationIconDirective | undefined>(undefined);\n readonly collapseTree = input<NavigationCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<NavigationSelection>();\n\n protected readonly isBorderRail = computed(() => this.typeStyle() === 'border-rail');\n\n /** Kelas tambahan untuk NavigationItem bersarang saat style border-rail aktif. */\n protected readonly navItemClass = computed(() =>\n cn(this.itemClass(), this.isBorderRail() && 'rounded-none hover:bg-transparent hover:text-primary'),\n );\n\n /**\n * Entry ber-children tampil TERBUKA secara default; set ini hanya menyimpan\n * entry yang sengaja di-collapse pengguna. Instance grid dibuat ulang setiap\n * panel dibuka sehingga state kembali terbuka semua.\n */\n private readonly collapsedEntryKeys = signal<ReadonlySet<string>>(new Set<string>());\n\n protected isItemActive(item: NavigationNormalizedItem): boolean {\n return this.nav.isItemActive(item, this.activeIds(), this.activeUrl());\n }\n\n protected isEntryOpen(item: NavigationNormalizedItem): boolean {\n return !this.collapsedEntryKeys().has(item.stateId);\n }\n\n protected toggleEntry(item: NavigationNormalizedItem): void {\n if (item.disabled) {\n return;\n }\n\n const next = new Set(this.collapsedEntryKeys());\n if (next.has(item.stateId)) {\n next.delete(item.stateId);\n } else {\n next.add(item.stateId);\n }\n\n this.collapsedEntryKeys.set(next);\n }\n\n protected selectEntry(item: NavigationNormalizedItem, event: Event): void {\n if (item.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n item.action?.(item.source);\n this.itemSelected.emit({\n item: item.source,\n key: item.key,\n type: item.type,\n link: item.link,\n external: !!this.nav.hrefFor(item),\n });\n this.nav.closePanel(this.navId());\n this.nav.closeDrawer(this.navId());\n }\n\n protected isRouterItem(item: NavigationNormalizedItem): boolean {\n return this.nav.isRouterItem(item);\n }\n\n protected hrefFor(item: NavigationNormalizedItem): string | null {\n return this.nav.hrefFor(item);\n }\n\n protected relFor(item: NavigationNormalizedItem): string | null {\n return this.nav.relFor(item);\n }\n\n protected routerLinkActiveOptions(item: NavigationNormalizedItem) {\n return this.nav.routerLinkActiveOptions(item);\n }\n\n protected iconContext(item: NavigationNormalizedItem, active: boolean): NavigationIconContext {\n return this.nav.iconContext(item, active, 1, 'horizontal');\n }\n\n protected fallbackInitials(item: NavigationNormalizedItem): string {\n return this.nav.compactFallback(item);\n }\n\n protected contentGridClasses(branch: NavigationNormalizedItem): string {\n // Skala responsif: mobile 1, sm 2, md 3, lg ke atas 4; `columns` membatasi maksimumnya.\n const columns = Math.min(Math.max(branch.columns ?? 4, 1), 4);\n\n return cn(\n 'm-0 grid list-none grid-cols-1 gap-1 p-0',\n columns >= 2 && 'sm:grid-cols-2',\n columns >= 3 && 'md:grid-cols-3',\n columns >= 4 && 'lg:grid-cols-4',\n );\n }\n\n protected entryClasses(item: NavigationNormalizedItem, active: boolean): string {\n return cn(\n 'group/nav flex w-full items-center gap-3 px-3 py-2.5 text-left text-sm transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n this.isBorderRail()\n ? cn('rounded-none', active ? 'text-primary' : 'text-foreground hover:text-primary')\n : cn(\n 'rounded-lg',\n active\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground hover:bg-accent hover:text-accent-foreground',\n ),\n item.disabled && 'pointer-events-none opacity-50',\n item.classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected entryIconClasses(active: boolean): string {\n if (this.isBorderRail()) {\n // Kotak icon polos; bingkai digambar oleh rail line yang menjorok melewati sudut.\n return cn(\n 'relative flex h-10 w-10 shrink-0 items-center justify-center self-center text-foreground transition-colors group-hover/nav:text-primary',\n active && 'text-primary',\n );\n }\n\n return cn(\n 'relative flex h-10 w-10 shrink-0 items-center justify-center self-center rounded-lg border bg-background text-foreground shadow-sm transition-colors',\n active ? 'border-primary text-primary' : 'border-[hsl(var(--border)/var(--opacity-70))]',\n );\n }\n\n protected entryIconGlyphClasses(item: NavigationNormalizedItem): string {\n return cn('text-current', item.classes?.icon);\n }\n\n protected entryTitleClasses(item: NavigationNormalizedItem, active: boolean): string {\n return cn(\n 'block truncate text-sm font-medium',\n this.isBorderRail() ? 'text-current' : 'text-foreground',\n active && 'font-semibold',\n item.classes?.title,\n );\n }\n\n protected entrySubtitleClasses(item: NavigationNormalizedItem): string {\n return cn('mt-0.5 block truncate text-xs text-muted-foreground', item.classes?.subtitle);\n }\n\n protected entryChevronClasses(item: NavigationNormalizedItem): string {\n return cn(\n 'shrink-0 self-center text-muted-foreground transition-transform duration-200',\n this.isEntryOpen(item) && 'rotate-90',\n );\n }\n\n protected nestedListClasses(): string {\n // Children sejajar satu garis vertical dengan icon induk: rail digambar lewat pseudo-element\n // di x = 32px (px-3 entry + setengah icon box w-10); pl-2.5 membuat icon child (px-3 + slot\n // w-5) ber-center tepat di garis yang sama.\n return cn(\n \"relative mt-1 flex list-none flex-col gap-0.5 p-0 pl-2.5 before:pointer-events-none before:absolute before:inset-y-0 before:left-8 before:w-0 before:border-l before:content-['']\",\n this.isBorderRail()\n ? 'before:border-dashed before:border-border/40'\n : 'before:border-[hsl(var(--border)/var(--opacity-60))]',\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input, output, signal } from '@angular/core';\nimport { IconComponent } from '@ojiepermana/angular-component/icon';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationIconDirective } from '../icon/navigation-icon.directive';\nimport { NavigationEntryGridComponent } from './navigation-entry-grid.component';\nimport { NavigationItemComponent } from '../item/navigation-item.component';\nimport { NavigationItemContentComponent } from '../item/navigation-item-content.component';\nimport { NavigationService } from '@ojiepermana/angular-navigation/service';\nimport type {\n NavigationTypeStyle,\n NavigationCollapseTree,\n NavigationFlyoutIconPosition,\n NavigationNormalizedItem,\n NavigationPosition,\n NavigationSelection,\n} from '../types/navigation.types';\n\n@Component({\n selector: 'NavigationFlyoutMenu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent, NavigationEntryGridComponent, NavigationItemComponent, NavigationItemContentComponent],\n host: {\n class: 'relative block w-full',\n '(keydown.escape)': 'onEscape($event)',\n '(document:click)': 'onDocumentClick($event)',\n '(window:resize)': 'onWindowResize()',\n },\n template: `\n <button\n type=\"button\"\n data-navigation-flyout-trigger=\"true\"\n [class]=\"triggerClasses()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? panelId() : null\"\n [attr.aria-label]=\"showIconOnly() ? label() : null\"\n [attr.title]=\"showIconOnly() ? label() : null\"\n (click)=\"toggleFlyout()\">\n @if (showIconOnly()) {\n <Icon [name]=\"triggerIcon() ?? 'menu'\" [size]=\"18\" class=\"text-current\" />\n } @else {\n @if (iconPosition() === 'start' && triggerIcon(); as iconName) {\n <Icon [name]=\"iconName\" [size]=\"18\" class=\"shrink-0 text-current\" />\n }\n\n <span class=\"truncate\">{{ label() }}</span>\n\n @if (iconPosition() === 'end' && triggerIcon(); as iconName) {\n <Icon [name]=\"iconName\" [size]=\"18\" class=\"shrink-0 text-current\" />\n }\n }\n </button>\n\n @if (isOpen()) {\n <div\n [id]=\"panelId()\"\n data-navigation-flyout-panel=\"true\"\n [class]=\"panelWrapperClasses()\"\n [style.left.px]=\"panelPlacement()?.left\"\n [style.top.px]=\"isBottom() ? null : panelPlacement()?.top\"\n [style.bottom.px]=\"isBottom() ? panelPlacement()?.bottom : null\"\n [style.width.px]=\"panelPlacement()?.width\">\n <div [class]=\"panelCardClasses()\">\n <button\n type=\"button\"\n data-navigation-flyout-close=\"true\"\n [class]=\"closeButtonClasses()\"\n aria-label=\"Close menu\"\n (click)=\"closeFlyout(true)\">\n <span aria-hidden=\"true\" class=\"text-base leading-none\">✕</span>\n </button>\n\n <div role=\"menu\" [class]=\"menuClasses()\" [attr.aria-label]=\"label()\">\n <ul role=\"none\" data-navigation-flyout-row=\"true\" [class]=\"rowClasses()\" (keydown)=\"onRowKeydown($event)\">\n @for (item of items(); track item.key) {\n @switch (item.type) {\n @case ('divider') {\n <li role=\"separator\" class=\"mx-1 h-5 w-px bg-border\"></li>\n }\n @case ('spacer') {\n <li role=\"none\" aria-hidden=\"true\" class=\"flex-1\"></li>\n }\n @default {\n @if (item.children.length > 0) {\n <li role=\"none\" [class]=\"groupContainerClasses(item)\" [attr.data-navigation-item-key]=\"item.key\">\n <button\n type=\"button\"\n role=\"menuitem\"\n data-navigation-flyout-tab=\"true\"\n [class]=\"tabClasses(item)\"\n [attr.aria-expanded]=\"isBranchOpen(item)\"\n [attr.aria-controls]=\"item.panelId\"\n [disabled]=\"item.disabled || null\"\n (click)=\"openBranch(item)\">\n <NavigationItemContent\n [item]=\"item\"\n [active]=\"isItemActive(item)\"\n [compact]=\"false\"\n [orientation]=\"'horizontal'\"\n [level]=\"0\"\n [iconTemplate]=\"iconTemplate()\" />\n <Icon name=\"chevron_right\" [size]=\"16\" [class]=\"tabChevronClasses(item)\" />\n </button>\n </li>\n } @else {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'horizontal'\"\n [compact]=\"false\"\n [itemClass]=\"navItemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n }\n }\n }\n </ul>\n\n @if (activeBranch(); as branch) {\n <NavigationEntryGrid\n [navId]=\"navId()\"\n [branch]=\"branch\"\n [typeStyle]=\"typeStyle()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n }\n </div>\n </div>\n </div>\n }\n `,\n})\nexport class NavigationFlyoutMenuComponent {\n private readonly nav = inject(NavigationService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly navId = input<string>('default');\n readonly items = input<readonly NavigationNormalizedItem[]>([]);\n readonly label = input<string>('Menu');\n /** Nama Material Symbols untuk trigger; `null` = label saja (mode normal). */\n readonly icon = input<string | null>(null);\n /** Trigger hanya ikon — label tetap diumumkan via aria-label/title. */\n readonly iconOnly = input<boolean>(false);\n /** Penempatan ikon relatif label: `start` (default) atau `end`. */\n readonly iconPosition = input<NavigationFlyoutIconPosition>('start');\n /** `bottom` = bar berada di bawah konten; panel menempel sisi bawah container dan tumbuh ke atas. */\n readonly position = input<NavigationPosition>('top');\n readonly typeStyle = input<NavigationTypeStyle>('default');\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n /** Kelas Tailwind untuk container `<li>` tiap tab group (mengatur tinggi/border/padding container). */\n readonly groupClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavigationIconDirective | undefined>(undefined);\n readonly collapseTree = input<NavigationCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<NavigationSelection>();\n\n protected readonly panelId = computed(() => `nav-flyout-${this.navId()}`);\n\n protected readonly isBorderRail = computed(() => this.typeStyle() === 'border-rail');\n protected readonly isBottom = computed(() => this.position() === 'bottom');\n /** Compact (mobile) selalu icon-only; selain itu mengikuti input `iconOnly`. */\n protected readonly showIconOnly = computed(() => this.compact() || this.iconOnly());\n protected readonly triggerIcon = computed(() => this.icon() ?? (this.showIconOnly() ? 'menu' : null));\n\n /** Kelas tambahan untuk NavigationItem di dalam flyout saat style border-rail aktif. */\n protected readonly navItemClass = computed(() =>\n // h-8 menjaga leaf di row tetap muat dalam tinggi 48px (py-2 + 32px) agar\n // border bawah row tidak terdorong melewati posisi rail layout.\n cn(this.itemClass(), this.isBorderRail() && 'h-8 rounded-none hover:bg-transparent hover:text-primary'),\n );\n\n private readonly branches = computed(() => this.items().filter((item) => item.children.length > 0));\n\n protected readonly activeBranch = computed(() => {\n const key = this.nav.currentPanelKey(this.navId());\n return this.branches().find((branch) => branch.key === key) ?? null;\n });\n\n /**\n * Offset panel terhadap host agar panel menimpa penuh container parent dari\n * `Navigation` (lebar sama persis; posisi atas di mode top, posisi bawah di\n * mode bottom). `null` berarti pengukuran tidak tersedia (mis. SSR/jsdom)\n * dan panel jatuh ke lebar host sendiri.\n */\n protected readonly panelPlacement = signal<{ left: number; top: number; bottom: number; width: number } | null>(null);\n\n protected readonly panelWrapperClasses = computed(() =>\n cn('absolute z-50', !this.panelPlacement() && cn('inset-x-0', this.isBottom() ? 'bottom-0' : 'top-0')),\n );\n\n /** Mode bottom membalik urutan visual: grid entri di atas, row tab di bawah (dekat bar). */\n protected readonly menuClasses = computed(() => cn('flex', this.isBottom() ? 'flex-col-reverse' : 'flex-col'));\n\n protected closeButtonClasses(): string {\n return cn(\n 'absolute right-2.5 z-10 inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n this.isBottom() ? 'bottom-2' : 'top-2',\n );\n }\n\n protected isOpen(): boolean {\n return this.nav.isDrawerOpen(this.navId());\n }\n\n protected onWindowResize(): void {\n if (this.isOpen()) {\n this.measurePanelPlacement();\n }\n }\n\n private measurePanelPlacement(): void {\n const hostEl = this.host.nativeElement;\n const navEl = hostEl.closest('[data-navigation-id]');\n let container: HTMLElement | null = navEl?.parentElement ?? hostEl.parentElement;\n\n // Wrapper display:contents punya rect kosong — naik terus sampai container yang punya box visual.\n while (container && container.getBoundingClientRect().width <= 0 && container.parentElement) {\n container = container.parentElement;\n }\n\n const containerRect = (container ?? hostEl).getBoundingClientRect();\n const hostRect = hostEl.getBoundingClientRect();\n\n if (containerRect.width <= 0) {\n this.panelPlacement.set(null);\n return;\n }\n\n this.panelPlacement.set({\n left: containerRect.left - hostRect.left,\n top: containerRect.top - hostRect.top,\n bottom: hostRect.bottom - containerRect.bottom,\n width: containerRect.width,\n });\n }\n\n protected toggleFlyout(): void {\n if (this.isOpen()) {\n this.closeFlyout(false);\n return;\n }\n\n this.measurePanelPlacement();\n this.nav.openDrawer(this.navId());\n\n const current = this.nav.currentPanelKey(this.navId());\n const branches = this.branches();\n if (!branches.some((branch) => branch.key === current)) {\n const first = branches.find((branch) => !branch.disabled) ?? branches[0];\n if (first) {\n this.nav.openPanel(this.navId(), first);\n }\n }\n\n queueMicrotask(() => this.focusFirstPanelItem());\n }\n\n protected closeFlyout(restoreFocus: boolean): void {\n this.nav.closeDrawer(this.navId());\n\n if (restoreFocus) {\n queueMicrotask(() => this.focusTrigger());\n }\n }\n\n protected onEscape(event: Event): void {\n if (!this.isOpen()) {\n return;\n }\n\n event.preventDefault();\n this.closeFlyout(true);\n }\n\n protected onDocumentClick(event: Event): void {\n if (!this.isOpen()) {\n return;\n }\n\n const target = event.target as Node | null;\n if (target && !this.host.nativeElement.contains(target)) {\n this.closeFlyout(false);\n }\n }\n\n protected isItemActive(item: NavigationNormalizedItem): boolean {\n return this.nav.isItemActive(item, this.activeIds(), this.activeUrl());\n }\n\n protected isBranchOpen(item: NavigationNormalizedItem): boolean {\n return this.nav.isPanelOpen(this.navId(), item);\n }\n\n protected openBranch(item: NavigationNormalizedItem): void {\n this.nav.openPanel(this.navId(), item);\n }\n\n protected triggerClasses(): string {\n return cn(\n 'nav-trigger group/nav inline-flex h-10 min-w-0 items-center gap-2 rounded-full border border-[hsl(var(--border)/var(--opacity-60))] bg-background px-4 py-2 text-sm font-medium shadow-sm transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n this.showIconOnly() && 'w-10 justify-center gap-0 px-0',\n this.isBorderRail()\n ? this.isOpen()\n ? 'text-primary'\n : 'text-foreground/80 hover:text-primary'\n : this.isOpen()\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground',\n this.itemClass(),\n );\n }\n\n protected panelCardClasses(): string {\n // Border-rail: panel menutup tepat content-box frame layout, jadi garis\n // sisi bar memakai border frame (rail) itu sendiri — panel cukup menggambar\n // border 1.5px senada rail pada sisi yang menjauh dari bar agar sambungan\n // tetap lurus (bawah di mode top, atas di mode bottom).\n return cn(\n 'relative overflow-hidden bg-popover text-popover-foreground shadow-2xl',\n this.isBorderRail()\n ? cn('rounded-none border-border', this.isBottom() ? 'border-t-[1.5px]' : 'border-b-[1.5px]')\n : 'rounded-xl border border-[hsl(var(--border)/var(--opacity-70))]',\n );\n }\n\n protected rowClasses(): string {\n // `min-h` menjaga tinggi row stabil meski hanya berisi tab group yang memakai\n // `-my-2`. Border pemisah row↔grid selalu di sisi yang menjauh dari bar:\n // border-b di mode top, border-t di mode bottom (row berada di bawah grid).\n // Border-rail: total tinggi row 48px (min-h-12) + border 1.5px sehingga garis\n // row jatuh persis di posisi rail horizontal layout dan menyambung lurus.\n return cn(\n 'm-0 flex min-w-0 list-none flex-wrap items-center gap-1 px-2 py-2 pr-12 md:px-3 md:pr-14',\n this.isBorderRail()\n ? cn('min-h-12 border-border', this.isBottom() ? 'border-t-[1.5px]' : 'border-b-[1.5px]')\n : cn(\n 'min-h-[3.25rem] border-[hsl(var(--border)/var(--opacity-60))]',\n this.isBottom() ? 'border-t' : 'border-b',\n ),\n );\n }\n\n /**\n * Container `<li>` tab group. Basis `flex -my-2 self-stretch` membuat tab setinggi\n * penuh row (lihat tabClasses); consumer dapat menimpa/menambah lewat `nav-group-class`\n * (global) atau `item.classes.container` (per-group) untuk fleksibilitas.\n */\n protected groupContainerClasses(item: NavigationNormalizedItem): string {\n return cn('flex -my-2 self-stretch', this.groupClass(), item.classes?.container);\n }\n\n protected tabClasses(item: NavigationNormalizedItem): string {\n return cn(\n // Tinggi tab group mengikuti tinggi penuh row (parent). Wrapper <li> memakai\n // `-my-2 self-stretch` untuk membatalkan `py-2` row; tombol `h-full` mengisi penuh\n // sehingga sisinya rata dengan border row — sudut pada sisi border dibuat siku\n // agar menyambung (bawah di mode top, atas di mode bottom).\n 'nav-trigger group/nav inline-flex h-full min-h-9 min-w-0 items-center gap-2 rounded-md px-3 text-sm font-medium transition-colors',\n this.isBottom() ? 'rounded-t-none' : 'rounded-b-none',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n this.isBorderRail()\n ? this.isBranchOpen(item) || this.isItemActive(item)\n ? 'rounded-none text-primary'\n : 'rounded-none text-foreground/80 hover:text-primary'\n : this.isBranchOpen(item)\n ? 'bg-accent text-accent-foreground'\n : this.isItemActive(item)\n ? 'font-semibold text-foreground hover:bg-accent hover:text-accent-foreground'\n : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground',\n item.classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected tabChevronClasses(item: NavigationNormalizedItem): string {\n return cn(\n 'shrink-0 self-center text-current transition-transform duration-200',\n this.isBranchOpen(item) && 'rotate-90',\n );\n }\n\n protected onRowKeydown(event: KeyboardEvent): void {\n if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft' && event.key !== 'ArrowDown') {\n return;\n }\n\n const rowItems = Array.from(\n this.host.nativeElement.querySelectorAll<HTMLElement>('[data-navigation-flyout-row=\"true\"] [role=\"menuitem\"]'),\n );\n const currentIndex = rowItems.indexOf(document.activeElement as HTMLElement);\n if (currentIndex === -1) {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'ArrowDown') {\n const entry = this.host.nativeElement.querySelector<HTMLElement>(\n '[data-navigation-flyout-content] [role=\"menuitem\"]',\n );\n entry?.focus();\n return;\n }\n\n const direction = event.key === 'ArrowRight' ? 1 : -1;\n rowItems[(currentIndex + direction + rowItems.length) % rowItems.length]?.focus();\n }\n\n private focusFirstPanelItem(): void {\n const panel = this.host.nativeElement.querySelector<HTMLElement>('[data-navigation-flyout-panel=\"true\"]');\n const target = panel?.querySelector<HTMLElement>('[role=\"menuitem\"], a[href], button:not([disabled])');\n target?.focus();\n }\n\n private focusTrigger(): void {\n this.host.nativeElement.querySelector<HTMLElement>('[data-navigation-flyout-trigger=\"true\"]')?.focus();\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input, output, signal } from '@angular/core';\nimport { IconComponent } from '@ojiepermana/angular-component/icon';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationIconDirective } from '../icon/navigation-icon.directive';\nimport { NavigationEntryGridComponent } from './navigation-entry-grid.component';\nimport { NavigationItemComponent } from '../item/navigation-item.component';\nimport { NavigationItemContentComponent } from '../item/navigation-item-content.component';\nimport { NavigationService } from '@ojiepermana/angular-navigation/service';\nimport type {\n NavigationTypeStyle,\n NavigationCollapseTree,\n NavigationNormalizedItem,\n NavigationPosition,\n NavigationSelection,\n} from '../types/navigation.types';\n\n@Component({\n selector: 'NavigationHorizontal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n IconComponent,\n NavigationEntryGridComponent,\n NavigationItemComponent,\n NavigationItemContentComponent,\n ],\n host: {\n class: 'relative block w-full',\n '(window:resize)': 'onWindowResize()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <ul [class]=\"listClasses()\" role=\"menubar\" (keydown)=\"onKeydown($event)\">\n @for (item of items(); track item.key) {\n @switch (item.type) {\n @case ('group') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @case ('collapsible') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @case ('mega') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @default {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'horizontal'\"\n [compact]=\"compact()\"\n [itemClass]=\"navItemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n }\n }\n </ul>\n\n <ng-template #branchTemplate let-item>\n <li role=\"none\" [class]=\"groupContainerClasses(item)\" [attr.data-navigation-item-key]=\"item.key\">\n <button\n type=\"button\"\n role=\"menuitem\"\n data-navigation-root-item=\"true\"\n [class]=\"triggerClasses(item)\"\n [attr.aria-expanded]=\"isPanelOpen(item)\"\n [attr.aria-controls]=\"item.panelId\"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-label]=\"compactLabel(item)\"\n [attr.title]=\"titleFor(item)\"\n [disabled]=\"item.disabled || null\"\n (click)=\"togglePanel(item)\">\n <NavigationItemContent\n [item]=\"item\"\n [active]=\"isItemActive(item)\"\n [compact]=\"compact()\"\n [orientation]=\"'horizontal'\"\n [level]=\"0\"\n [iconTemplate]=\"iconTemplate()\" />\n <Icon name=\"chevron_right\" [size]=\"16\" [class]=\"chevronClasses(item)\" />\n </button>\n\n @if (isPanelOpen(item)) {\n <div\n [id]=\"item.panelId\"\n role=\"menu\"\n [class]=\"panelClasses()\"\n [style.left.px]=\"panelPlacement()?.left\"\n [style.width.px]=\"panelPlacement()?.width\"\n [attr.data-navigation-panel]=\"item.key\"\n (keydown)=\"onPanelKeydown($event)\">\n <NavigationEntryGrid\n [navId]=\"navId()\"\n [branch]=\"item\"\n [typeStyle]=\"typeStyle()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n </div>\n }\n </li>\n </ng-template>\n `,\n})\nexport class NavigationHorizontalComponent {\n private readonly nav = inject(NavigationService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly navId = input<string>('default');\n readonly items = input<readonly NavigationNormalizedItem[]>([]);\n /** Posisi bar terhadap konten: `bottom` membuka panel ke atas; selain itu ke bawah. */\n readonly position = input<NavigationPosition>('top');\n readonly typeStyle = input<NavigationTypeStyle>('default');\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n /** Kelas Tailwind untuk container `<li>` group navbar. */\n readonly groupClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavigationIconDirective | undefined>(undefined);\n readonly collapseTree = input<NavigationCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<NavigationSelection>();\n\n protected readonly isBorderRail = computed(() => this.typeStyle() === 'border-rail');\n protected readonly isBottom = computed(() => this.position() === 'bottom');\n\n /** Kelas tambahan untuk NavigationItem leaf di row saat style border-rail aktif. */\n protected readonly navItemClass = computed(() =>\n cn(this.itemClass(), this.isBorderRail() && 'rounded-none hover:bg-transparent hover:text-primary'),\n );\n\n protected readonly listClasses = computed(() =>\n cn('flex min-w-0 list-none p-0', this.compact() ? 'justify-center gap-1' : 'items-center justify-center gap-1'),\n );\n\n protected isItemActive(item: NavigationNormalizedItem): boolean {\n return this.nav.isItemActive(item, this.activeIds(), this.activeUrl());\n }\n\n protected isPanelOpen(item: NavigationNormalizedItem): boolean {\n return this.nav.isPanelOpen(this.navId(), item);\n }\n\n protected togglePanel(item: NavigationNormalizedItem): void {\n if (!this.isPanelOpen(item)) {\n this.measurePanelPlacement();\n }\n\n this.nav.togglePanel(this.navId(), item);\n }\n\n protected onWindowResize(): void {\n if (this.nav.currentPanelKey(this.navId())) {\n this.measurePanelPlacement();\n }\n }\n\n /** Klik di luar menubar/panel menutup panel mega yang sedang terbuka. */\n protected onDocumentClick(event: Event): void {\n if (!this.nav.currentPanelKey(this.navId())) {\n return;\n }\n\n const target = event.target as Node | null;\n if (target && !this.host.nativeElement.contains(target)) {\n this.nav.closePanel(this.navId());\n }\n }\n\n /**\n * Lebar & posisi kiri panel mengikuti container parent dari `Navigation`\n * (wrapper display:contents dilewati). `null` = pengukuran tak tersedia dan\n * panel jatuh ke lebar host (inset-x-0).\n */\n protected readonly panelPlacement = signal<{ left: number; width: number } | null>(null);\n\n private measurePanelPlacement(): void {\n const hostEl = this.host.nativeElement;\n const navEl = hostEl.closest('[data-navigation-id]');\n let container: HTMLElement | null = navEl?.parentElement ?? hostEl.parentElement;\n\n while (container && container.getBoundingClientRect().width <= 0 && container.parentElement) {\n container = container.parentElement;\n }\n\n const containerRect = (container ?? hostEl).getBoundingClientRect();\n const hostRect = hostEl.getBoundingClientRect();\n\n if (containerRect.width <= 0) {\n this.panelPlacement.set(null);\n return;\n }\n\n this.panelPlacement.set({\n left: containerRect.left - hostRect.left,\n width: containerRect.width,\n });\n }\n\n protected compactLabel(item: NavigationNormalizedItem): string | null {\n return this.nav.compactLabel(item, this.compact());\n }\n\n protected titleFor(item: NavigationNormalizedItem): string | null {\n return this.nav.titleFor(item, this.compact());\n }\n\n /** Container `<li>` group navbar; consumer atur lewat `nav-group-class` atau `item.classes.container`. */\n protected groupContainerClasses(item: NavigationNormalizedItem): string {\n return cn(this.groupClass(), item.classes?.container);\n }\n\n protected triggerClasses(item: NavigationNormalizedItem): string {\n return cn(\n 'nav-trigger group/nav inline-flex min-w-0 items-center gap-3 rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n 'h-9 px-3 py-2',\n this.compact() && 'w-10 justify-center px-0',\n this.isBorderRail()\n ? this.isPanelOpen(item) || this.isItemActive(item)\n ? 'rounded-none text-primary'\n : 'rounded-none text-foreground/80 hover:text-primary'\n : this.isItemActive(item)\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground',\n item.classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected chevronClasses(item: NavigationNormalizedItem): string {\n return cn('ml-auto shrink-0 self-center transition-transform duration-200', this.isPanelOpen(item) && 'rotate-90');\n }\n\n protected panelClasses(): string {\n // Panel mega selebar container parent, menempel rapat tanpa gap pada sisi bar:\n // nav-position top membuka ke bawah (sisi atas siku), bottom membuka ke atas\n // (sisi bawah siku) sehingga sambungan border selalu menyatu dengan bar.\n // Border-rail: rail horizontal layout menjadi garis sisi-bar panel — panel\n // cukup menggambar border 1.5px senada rail pada sisi yang menjauh dari bar.\n return cn(\n 'absolute z-50 overflow-hidden bg-popover text-popover-foreground shadow-lg',\n this.isBottom() ? 'bottom-full' : 'top-full',\n !this.panelPlacement() && 'inset-x-0',\n this.isBorderRail()\n ? cn('rounded-none border-border', this.isBottom() ? 'border-t-[1.5px]' : 'border-b-[1.5px]')\n : cn(\n 'rounded-xl border border-[hsl(var(--border)/var(--opacity-70))]',\n this.isBottom() ? 'rounded-b-none' : 'rounded-t-none',\n ),\n );\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n const panelKey = this.nav.currentPanelKey(this.navId());\n this.nav.closePanel(this.navId());\n this.focusOpenPanelTrigger(panelKey);\n return;\n }\n\n const rootItems = this.rootFocusItems();\n if (rootItems.length === 0) {\n return;\n }\n\n const currentIndex = rootItems.indexOf(document.activeElement as HTMLElement);\n if (currentIndex === -1) {\n return;\n }\n\n // ArrowDown membuka panel di posisi top; ArrowUp di posisi bottom (panel di atas bar).\n if (event.key === (this.isBottom() ? 'ArrowUp' : 'ArrowDown')) {\n const currentItem = rootItems[currentIndex];\n if (currentItem.getAttribute('aria-haspopup') === 'menu') {\n event.preventDefault();\n currentItem.click();\n queueMicrotask(() => this.focusFirstPanelItem(this.nav.currentPanelKey(this.navId())));\n }\n return;\n }\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const direction = event.key === 'ArrowRight' ? 1 : -1;\n const nextIndex = (currentIndex + direction + rootItems.length) % rootItems.length;\n rootItems[nextIndex]?.focus();\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape') {\n return;\n }\n\n event.preventDefault();\n const panelKey = this.nav.currentPanelKey(this.navId());\n this.nav.closePanel(this.navId());\n this.focusOpenPanelTrigger(panelKey);\n }\n\n private rootFocusItems(): HTMLElement[] {\n return Array.from(this.host.nativeElement.querySelectorAll<HTMLElement>('[data-navigation-root-item=\"true\"]'));\n }\n\n private focusOpenPanelTrigger(panelKey: string | null): void {\n if (!panelKey) {\n return;\n }\n\n const trigger = this.host.nativeElement.querySelector<HTMLElement>(\n `[data-navigation-item-key=\"${panelKey}\"] [data-navigation-root-item=\"true\"]`,\n );\n trigger?.focus();\n }\n\n private focusFirstPanelItem(panelKey: string | null): void {\n if (!panelKey) {\n return;\n }\n\n const panel = this.host.nativeElement.querySelector<HTMLElement>(`[data-navigation-panel=\"${panelKey}\"]`);\n const item = panel?.querySelector<HTMLElement>('a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])');\n item?.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationContainerComponent } from '../../navigation-container.component';\nimport { NavigationDockbarMenuComponent } from '../../internal/navigation-dockbar-menu.component';\nimport { NavigationFlyoutMenuComponent } from '../../internal/navigation-flyout-menu.component';\nimport { NavigationHorizontalComponent } from '../../internal/navigation-horizontal.component';\nimport { NavigationListComponent } from '../../internal/navigation-list.component';\n\n/**\n * Area konten navigasi: merender daftar item sesuai type aktif dari\n * `<Navigation>` induk. Selalu hadir di setiap type — komponen type\n * merender default-nya bila consumer tidak memproyeksikan `<NavigationContent />`.\n */\n@Component({\n selector: 'NavigationContent',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NavigationDockbarMenuComponent,\n NavigationFlyoutMenuComponent,\n NavigationHorizontalComponent,\n NavigationListComponent,\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n @let navState = container.displayState();\n\n @if (navState.orientation === 'horizontal' && navState.type === 'flyout') {\n <NavigationFlyoutMenu\n [navId]=\"navState.id\"\n [items]=\"container.normalizedItems()\"\n [label]=\"container.flyoutLabel()\"\n [icon]=\"container.flyoutIcon()\"\n [iconOnly]=\"container.flyoutIconOnly()\"\n [iconPosition]=\"container.flyoutIconPosition()\"\n [position]=\"navState.position\"\n [typeStyle]=\"container.typeStyle()\"\n [compact]=\"container.compact()\"\n [itemClass]=\"container.itemClass()\"\n [groupClass]=\"container.groupClass()\"\n [activeIds]=\"container.activeIdSet()\"\n [activeUrl]=\"container.activeUrl()\"\n [iconTemplate]=\"container.iconTemplate()\"\n [collapseTree]=\"container.collapseTree()\"\n [openedIds]=\"container.openedIds()\"\n (openedIdsChange)=\"container.openedIds.set($event)\"\n (itemSelected)=\"container.itemSelected.emit($event)\" />\n } @else if (navState.orientation === 'horizontal') {\n <NavigationHorizontal\n [navId]=\"navState.id\"\n [items]=\"container.normalizedItems()\"\n [position]=\"navState.position\"\n [typeStyle]=\"container.typeStyle()\"\n [compact]=\"container.compact()\"\n [itemClass]=\"container.itemClass()\"\n [groupClass]=\"container.groupClass()\"\n [activeIds]=\"container.activeIdSet()\"\n [activeUrl]=\"container.activeUrl()\"\n [iconTemplate]=\"container.iconTemplate()\"\n [collapseTree]=\"container.collapseTree()\"\n [openedIds]=\"container.openedIds()\"\n (openedIdsChange)=\"container.openedIds.set($event)\"\n (itemSelected)=\"container.itemSelected.emit($event)\" />\n } @else if (navState.type === 'dockbar') {\n <NavigationDockbarMenu\n [navId]=\"navState.id\"\n [items]=\"container.normalizedItems()\"\n [mode]=\"navState.dockbarMode\"\n [position]=\"navState.position\"\n [itemClass]=\"container.itemClass()\"\n [activeIds]=\"container.activeIdSet()\"\n [activeUrl]=\"container.activeUrl()\"\n [iconTemplate]=\"container.iconTemplate()\"\n [collapseTree]=\"container.collapseTree()\"\n [openedIds]=\"container.openedIds()\"\n (openedIdsChange)=\"container.openedIds.set($event)\"\n (itemSelected)=\"container.itemSelected.emit($event)\" />\n } @else {\n <NavigationList\n [navId]=\"navState.id\"\n [items]=\"container.normalizedItems()\"\n [collapsed]=\"navState.collapsed\"\n [position]=\"navState.position\"\n [itemClass]=\"container.itemClass()\"\n [activeIds]=\"container.activeIdSet()\"\n [activeUrl]=\"container.activeUrl()\"\n [iconTemplate]=\"container.iconTemplate()\"\n [collapseTree]=\"container.collapseTree()\"\n [openedIds]=\"container.openedIds()\"\n (openedIdsChange)=\"container.openedIds.set($event)\"\n (itemSelected)=\"container.itemSelected.emit($event)\" />\n }\n `,\n})\nexport class NavigationContentComponent {\n protected readonly container = inject(NavigationContainerComponent);\n\n readonly class = input('', { alias: 'class' });\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'min-h-0 flex-1',\n this.container.displayState().orientation === 'horizontal'\n ? 'flex h-full min-w-0 items-stretch justify-center overflow-visible'\n : 'block overflow-y-auto overflow-x-hidden',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NAVIGATION_SHELL } from '../shared/navigation-shell.token';\n\n@Component({\n selector: 'NavigationFooter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <div class=\"flex h-full items-center\">\n <ng-content />\n </div>\n `,\n})\nexport class NavigationFooterComponent {\n private readonly shell = inject(NAVIGATION_SHELL, { optional: true });\n\n readonly class = input('', { alias: 'class' });\n\n protected readonly isHorizontal = computed(() => this.shell?.displayState().orientation === 'horizontal');\n\n protected readonly hostClasses = computed(() =>\n cn(\n this.isHorizontal()\n ? 'relative z-10 block h-full w-auto shrink-0'\n : 'sticky bottom-0 z-10 block h-12 shrink-0 border-t border-[hsl(var(--border)/var(--opacity-70))]',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { IconComponent } from '@ojiepermana/angular-component/icon';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NAVIGATION_SHELL } from '../shared/navigation-shell.token';\n\n@Component({\n selector: 'NavigationHeader',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-collapsed]': 'displayCollapsed()',\n },\n template: `\n <div class=\"flex h-full items-center gap-3 px-3\">\n <div [class]=\"contentClasses()\">\n <ng-content />\n </div>\n\n @if (showToggle()) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 shrink-0 items-center justify-center bg-transparent text-foreground/80 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n [attr.aria-label]=\"toggleAriaLabel()\"\n [attr.title]=\"toggleAriaLabel()\"\n data-navigation-header-toggle=\"true\"\n (click)=\"toggleCollapsed()\">\n <Icon data-navigation-header-toggle-icon=\"true\" [name]=\"toggleIconName()\" [size]=\"18\" />\n </button>\n }\n </div>\n `,\n})\nexport class NavigationHeaderComponent {\n private readonly shell = inject(NAVIGATION_SHELL);\n\n readonly toggle = input(false);\n readonly class = input('', { alias: 'class' });\n\n protected readonly collapsed = computed(() => this.shell.state().collapsed);\n protected readonly displayCollapsed = computed(() => this.shell.displayState().collapsed);\n protected readonly isHorizontal = computed(() => this.shell.displayState().orientation === 'horizontal');\n protected readonly showToggle = computed(() => {\n if (this.isHorizontal()) {\n return false;\n }\n\n return this.toggle() || (this.shell.collapseEnabled() && !this.displayCollapsed());\n });\n protected readonly toggleAriaLabel = computed(() => (this.collapsed() ? 'Expand navigation' : 'Collapse navigation'));\n protected readonly toggleIconName = computed(() => (this.collapsed() ? 'left_panel_open' : 'left_panel_close'));\n protected readonly contentClasses = computed(() => (this.isHorizontal() ? 'min-w-0' : 'min-w-0 flex-1'));\n protected readonly hostClasses = computed(() =>\n cn(\n this.isHorizontal()\n ? 'relative z-10 block h-full w-auto shrink-0'\n : 'sticky top-0 z-10 block h-12 shrink-0 border-b border-[hsl(var(--border)/var(--opacity-70))]',\n this.class(),\n ),\n );\n\n protected toggleCollapsed(): void {\n this.shell.toggleCollapsed();\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n inject,\n input,\n} from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationContainerComponent } from '../../navigation-container.component';\nimport { NavigationContentComponent } from '../../shell/content/navigation-content.component';\nimport { NavigationFooterComponent } from '../../shell/footer/navigation-footer.component';\nimport { NavigationHeaderComponent } from '../../shell/header/navigation-header.component';\nimport type { NavigationTypeConfig } from '../shared/navigation-type-config';\nimport type { NavigationVerticalPosition } from '../../types/navigation.types';\n\n/**\n * Type sidebar vertikal untuk `<Navigation>`. Slot `NavigationHeader` dan\n * `NavigationFooter` opsional; `NavigationContent` selalu dirender (default\n * otomatis bila tidak diproyeksikan).\n */\n@Component({\n selector: 'NavigationSidebar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavigationContentComponent],\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n @if (headerSlot()) {\n <ng-content select=\"NavigationHeader\" />\n }\n\n @if (contentSlot()) {\n <ng-content select=\"NavigationContent\" />\n } @else {\n <NavigationContent />\n }\n\n @if (footerSlot()) {\n <ng-content select=\"NavigationFooter\" />\n }\n `,\n})\nexport class NavigationSidebarComponent {\n private readonly container = inject(NavigationContainerComponent);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly position = input<NavigationVerticalPosition | null>(null);\n readonly collapsed = input<boolean | null>(null);\n readonly collapse = input(false, { alias: 'nav-sidebar-collapse', transform: booleanAttribute });\n readonly previewExpanded = input<boolean>(false);\n readonly class = input('', { alias: 'class' });\n\n protected readonly headerSlot = contentChild(NavigationHeaderComponent);\n protected readonly contentSlot = contentChild(NavigationContentComponent);\n protected readonly footerSlot = contentChild(NavigationFooterComponent);\n\n protected readonly hostClasses = computed(() => cn(this.container.shellClasses(), this.class()));\n\n constructor() {\n const config: NavigationTypeConfig = {\n orientation: 'vertical',\n type: 'sidebar',\n position: this.position,\n collapsed: this.collapsed,\n sidebarCollapse: this.collapse,\n previewExpanded: this.previewExpanded,\n };\n\n this.container.registerType(config);\n this.destroyRef.onDestroy(() => this.container.unregisterType(config));\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChild, DestroyRef, inject, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationContainerComponent } from '../../navigation-container.component';\nimport { NavigationContentComponent } from '../../shell/content/navigation-content.component';\nimport { NavigationFooterComponent } from '../../shell/footer/navigation-footer.component';\nimport { NavigationHeaderComponent } from '../../shell/header/navigation-header.component';\nimport type { NavigationTypeConfig } from '../shared/navigation-type-config';\nimport type { NavigationDockbarMode, NavigationVerticalPosition } from '../../types/navigation.types';\n\n/**\n * Type dockbar vertikal (rail ikon + aside) untuk `<Navigation>`. Slot\n * `NavigationHeader` dan `NavigationFooter` opsional; `NavigationContent`\n * selalu dirender (default otomatis bila tidak diproyeksikan).\n */\n@Component({\n selector: 'NavigationDockbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavigationContentComponent],\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n @if (headerSlot()) {\n <ng-content select=\"NavigationHeader\" />\n }\n\n @if (contentSlot()) {\n <ng-content select=\"NavigationContent\" />\n } @else {\n <NavigationContent />\n }\n\n @if (footerSlot()) {\n <ng-content select=\"NavigationFooter\" />\n }\n `,\n})\nexport class NavigationDockbarComponent {\n private readonly container = inject(NavigationContainerComponent);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly mode = input<NavigationDockbarMode | null>(null);\n readonly position = input<NavigationVerticalPosition | null>(null);\n readonly class = input('', { alias: 'class' });\n\n protected readonly headerSlot = contentChild(NavigationHeaderComponent);\n protected readonly contentSlot = contentChild(NavigationContentComponent);\n protected readonly footerSlot = contentChild(NavigationFooterComponent);\n\n protected readonly hostClasses = computed(() => cn(this.container.shellClasses(), this.class()));\n\n constructor() {\n const config: NavigationTypeConfig = {\n orientation: 'vertical',\n type: 'dockbar',\n position: this.position,\n dockbarMode: this.mode,\n };\n\n this.container.registerType(config);\n this.destroyRef.onDestroy(() => this.container.unregisterType(config));\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChild, DestroyRef, inject, input } from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationContainerComponent } from '../../navigation-container.component';\nimport { NavigationContentComponent } from '../../shell/content/navigation-content.component';\nimport { NavigationFooterComponent } from '../../shell/footer/navigation-footer.component';\nimport { NavigationHeaderComponent } from '../../shell/header/navigation-header.component';\nimport type { NavigationTypeConfig } from '../shared/navigation-type-config';\nimport type { NavigationTypeStyle, NavigationHorizontalPosition } from '../../types/navigation.types';\n\n/**\n * Type navbar horizontal untuk `<Navigation>`. Slot `NavigationHeader`\n * dan `NavigationFooter` opsional; `NavigationContent` selalu dirender\n * (default otomatis bila tidak diproyeksikan).\n */\n@Component({\n selector: 'NavigationNavbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavigationContentComponent],\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n @if (headerSlot()) {\n <ng-content select=\"NavigationHeader\" />\n }\n\n @if (contentSlot()) {\n <ng-content select=\"NavigationContent\" />\n } @else {\n <NavigationContent />\n }\n\n @if (footerSlot()) {\n <ng-content select=\"NavigationFooter\" />\n }\n `,\n})\nexport class NavigationNavbarComponent {\n private readonly container = inject(NavigationContainerComponent);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Posisi bar terhadap konten layout: `top` (default) atau `bottom` — panel grid membuka ke arah sebaliknya. */\n readonly position = input<NavigationHorizontalPosition | null>(null, { alias: 'nav-position' });\n readonly typeStyle = input<NavigationTypeStyle>('default', { alias: 'nav-type-style' });\n readonly class = input('', { alias: 'class' });\n\n protected readonly headerSlot = contentChild(NavigationHeaderComponent);\n protected readonly contentSlot = contentChild(NavigationContentComponent);\n protected readonly footerSlot = contentChild(NavigationFooterComponent);\n\n protected readonly hostClasses = computed(() => cn(this.container.shellClasses(), this.class()));\n\n constructor() {\n const config: NavigationTypeConfig = {\n orientation: 'horizontal',\n type: 'navbar',\n position: this.position,\n typeStyle: this.typeStyle,\n };\n\n this.container.registerType(config);\n this.destroyRef.onDestroy(() => this.container.unregisterType(config));\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n inject,\n input,\n} from '@angular/core';\nimport { cn } from '@ojiepermana/angular-component/utils';\nimport { NavigationContainerComponent } from '../../navigation-container.component';\nimport { NavigationContentComponent } from '../../shell/content/navigation-content.component';\nimport { NavigationFooterComponent } from '../../shell/footer/navigation-footer.component';\nimport { NavigationHeaderComponent } from '../../shell/header/navigation-header.component';\nimport type { NavigationTypeConfig } from '../shared/navigation-type-config';\nimport type {\n NavigationTypeStyle,\n NavigationFlyoutIconPosition,\n NavigationHorizontalPosition,\n} from '../../types/navigation.types';\n\n/**\n * Type flyout horizontal (trigger + panel menu) untuk `<Navigation>`.\n * Slot `NavigationHeader` dan `NavigationFooter` opsional; `NavigationContent`\n * selalu dirender (default otomatis bila tidak diproyeksikan).\n */\n@Component({\n selector: 'NavigationFlyout',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavigationContentComponent],\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n @if (headerSlot()) {\n <ng-content select=\"NavigationHeader\" />\n }\n\n @if (contentSlot()) {\n <ng-content select=\"NavigationContent\" />\n } @else {\n <NavigationContent />\n }\n\n @if (footerSlot()) {\n <ng-content select=\"NavigationFooter\" />\n }\n `,\n})\nexport class NavigationFlyoutComponent {\n private readonly container = inject(NavigationContainerComponent);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly label = input<string>('Menu');\n /** Nama Material Symbols untuk trigger (mis. `apps`, `menu`); `null` = label saja. */\n readonly icon = input<string | null>(null);\n /** Trigger hanya menampilkan ikon; label tetap dipakai sebagai aria-label/title. */\n readonly iconOnly = input(false, { alias: 'icon-only', transform: booleanAttribute });\n /** Penempatan ikon relatif terhadap label: `start` (default) atau `end`. */\n readonly iconPosition = input<NavigationFlyoutIconPosition>('start', { alias: 'icon-position' });\n /** Posisi bar terhadap konten layout: `top` (default) atau `bottom` — panel membuka ke arah sebaliknya. */\n readonly position = input<NavigationHorizontalPosition | null>(null, { alias: 'nav-position' });\n readonly typeStyle = input<NavigationTypeStyle>('default', { alias: 'nav-type-style' });\n readonly class = input('', { alias: 'class' });\n\n protected readonly headerSlot = contentChild(NavigationHeaderComponent);\n protected readonly contentSlot = contentChild(NavigationContentComponent);\n protected readonly footerSlot = contentChild(NavigationFooterComponent);\n\n protected readonly hostClasses = computed(() => cn(this.container.shellClasses(), this.class()));\n\n constructor() {\n const config: NavigationTypeConfig = {\n orientation: 'horizontal',\n type: 'flyout',\n position: this.position,\n flyoutLabel: this.label,\n flyoutIcon: this.icon,\n flyoutIconOnly: this.iconOnly,\n flyoutIconPosition: this.iconPosition,\n typeStyle: this.typeStyle,\n };\n\n this.container.registerType(config);\n this.destroyRef.onDestroy(() => this.container.unregisterType(config));\n }\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { NAVIGATION_SHELL, type NavigationShellContext } from '../shared/navigation-shell.token';\n\n/**\n * Tampilan compact aktif saat sidebar collapsible sedang collapsed, atau saat\n * type dockbar aktif — rail dockbar selalu selebar ikon (`w-16`) sehingga\n * konten expanded tidak pernah muat.\n */\nfunction isCompactDisplay(shell: NavigationShellContext): boolean {\n const state = shell.displayState();\n\n if (state.orientation !== 'vertical') {\n return false;\n }\n\n if (state.type === 'dockbar') {\n return true;\n }\n\n return shell.collapseEnabled() && state.collapsed;\n}\n\n@Directive({\n selector: '[NavigationCollapseRoot]',\n host: {\n '[class.w-full]': 'collapseEnabled()',\n '[class.justify-center]': 'displayCollapsed()',\n },\n})\nexport class NavigationCollapseRootDirective {\n private readonly shell = inject(NAVIGATION_SHELL);\n\n protected readonly collapseEnabled = computed(() => {\n const state = this.shell.displayState();\n\n return state.orientation === 'vertical' && (this.shell.collapseEnabled() || state.type === 'dockbar');\n });\n protected readonly displayCollapsed = computed(() => isCompactDisplay(this.shell));\n}\n\n@Directive({\n selector: '[NavigationCollapseExpanded]',\n})\nexport class NavigationCollapseExpandedDirective {\n private readonly shell = inject(NAVIGATION_SHELL);\n private readonly templateRef = inject(TemplateRef<unknown>);\n private readonly viewContainer = inject(ViewContainerRef);\n\n private hasView = false;\n private readonly shouldRender = computed(() => !isCompactDisplay(this.shell));\n\n constructor() {\n effect(() => {\n if (this.shouldRender()) {\n if (!this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n }\n return;\n }\n\n if (this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|