@ojiepermana/angular 0.1.0 → 0.1.1
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.
- package/README.md +8 -5
- package/fesm2022/ojiepermana-angular-internal.mjs +16 -0
- package/fesm2022/ojiepermana-angular-internal.mjs.map +1 -1
- package/fesm2022/ojiepermana-angular-layout.mjs +44 -41
- package/fesm2022/ojiepermana-angular-layout.mjs.map +1 -1
- package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs +198 -262
- package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs.map +1 -1
- package/fesm2022/ojiepermana-angular-navigation-vertical.mjs +123 -44
- package/fesm2022/ojiepermana-angular-navigation-vertical.mjs.map +1 -1
- package/fesm2022/ojiepermana-angular-navigation.mjs +326 -30
- package/fesm2022/ojiepermana-angular-navigation.mjs.map +1 -1
- package/fesm2022/ojiepermana-angular-shell.mjs +6 -1
- package/fesm2022/ojiepermana-angular-shell.mjs.map +1 -1
- package/layout/README.md +3 -3
- package/{theme/styles/layout → layout/src/component/horizontal}/horizontal.css +38 -17
- package/{theme/styles/layout → layout/src/component/vertical}/vertical.css +7 -7
- package/{theme/styles/layout/index.css → layout/src/layout.css} +0 -3
- package/navigation/README.md +91 -5
- package/navigation/horizontal/README.md +49 -0
- package/navigation/vertical/README.md +0 -0
- package/package.json +1 -1
- package/shell/README.md +5 -1
- package/styles/index.css +1 -1
- package/theme/README.md +2 -2
- package/types/ojiepermana-angular-internal.d.ts +1 -0
- package/types/ojiepermana-angular-layout.d.ts +1 -1
- package/types/ojiepermana-angular-navigation-horizontal.d.ts +26 -22
- package/types/ojiepermana-angular-navigation-vertical.d.ts +24 -22
- package/types/ojiepermana-angular-navigation.d.ts +55 -9
- package/types/ojiepermana-angular-shell.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ojiepermana-angular-navigation-horizontal.mjs","sources":["../../../projects/library/navigation/horizontal/types/branch.ts","../../../projects/library/navigation/horizontal/horizontal.ts","../../../projects/library/navigation/horizontal/ojiepermana-angular-navigation-horizontal.ts"],"sourcesContent":["import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { RouterLink } from '@angular/router';\nimport { NavigationItem, hasNavigationChildren, shouldRenderNavigationItem } from '@ojiepermana/angular/navigation';\nimport {\n NavigationItemContent,\n NavigationTreeOutlet,\n getNavigationTreePathKey,\n isNavigationTreeItemExpanded,\n toggleNavigationTreeItemExpanded,\n trackNavigationTreeItem,\n} from '@ojiepermana/angular/internal';\n\n@Component({\n selector: 'horizontal-navigation-branch-item',\n template: `\n @if (menuItem()) {\n <button\n type=\"button\"\n mat-menu-item\n class=\"horizontal-navigation-menu-entry horizontal-navigation-menu-entry--branch\"\n [class.horizontal-navigation-menu-entry--nested]=\"nested()\"\n [class.horizontal-navigation-menu-entry--open]=\"isMenuOpen()\"\n [matMenuTriggerFor]=\"matMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (click)=\"onMenuItemTriggerClick($event)\"\n (menuOpened)=\"handleMenuOpened()\"\n (menuClosed)=\"handleMenuClosed()\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item(), level: nested() ? 1 : 0 }\"></ng-container>\n <span class=\"horizontal-navigation-item-dot\" aria-hidden=\"true\"></span>\n </button>\n } @else {\n <button\n type=\"button\"\n #rootTrigger\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--open]=\"isMenuOpen()\"\n [matMenuTriggerFor]=\"matMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"handleMenuOpened()\"\n (menuClosed)=\"handleMenuClosed()\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item(), level: 0 }\"></ng-container>\n <span class=\"horizontal-navigation-item-dot\" aria-hidden=\"true\"></span>\n </button>\n }\n\n <mat-menu\n #matMenu=\"matMenu\"\n [class]=\"menuPanelClass()\"\n [hasBackdrop]=\"!menuItem()\"\n [overlapTrigger]=\"false\"\n xPosition=\"after\"\n yPosition=\"below\">\n <navigation-tree-outlet\n [items]=\"itemChildren()\"\n [level]=\"0\"\n [parentKey]=\"getPathKey('root', item())\"\n [data]=\"treeTemplateData()\"\n [branchTemplate]=\"branchItem\"\n [leafTemplate]=\"leafItem\"\n [groupTemplate]=\"groupItem\"\n [dividerTemplate]=\"dividerItem\"\n [spacerTemplate]=\"spacerItem\"\n [trackByFn]=\"treeTrackByFn\"\n [shouldRenderItemFn]=\"treeShouldRenderItemFn\"\n [hasChildrenFn]=\"treeHasChildrenFn\"\n [resolveParentKeyFn]=\"treeResolveParentKeyFn\" />\n </mat-menu>\n\n <ng-template #branchItem let-child let-level=\"level\" let-parentKey=\"parentKey\" let-isLast=\"isLast\" let-data=\"data\">\n @if (data?.['inlineBranch']) {\n <ng-container\n [ngTemplateOutlet]=\"inlineBranchItem\"\n [ngTemplateOutletContext]=\"{\n $implicit: child,\n level: level,\n parentKey: parentKey,\n isLast: isLast,\n }\"></ng-container>\n } @else {\n <horizontal-navigation-branch-item\n [item]=\"child\"\n [menuItem]=\"true\"\n [nested]=\"level > 0\"\n (itemClicked)=\"onChildItemClicked($event)\"\n (branchOpened)=\"onChildBranchOpened($event)\"\n (branchClosed)=\"onChildBranchClosed($event)\" />\n }\n </ng-template>\n\n <ng-template #groupItem let-child let-level=\"level\" let-isLast=\"isLast\">\n <div\n class=\"horizontal-navigation-group-label\"\n [class.horizontal-navigation-group-label--nested]=\"level > 0\"\n [class.horizontal-navigation-group-label--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\">\n {{ child.title }}\n </div>\n </ng-template>\n\n <ng-template #dividerItem>\n <mat-divider class=\"horizontal-navigation-divider\"></mat-divider>\n </ng-template>\n\n <ng-template #spacerItem></ng-template>\n\n <ng-template #inlineBranchItem let-child let-level=\"level\" let-parentKey=\"parentKey\" let-isLast=\"isLast\">\n <div\n class=\"horizontal-navigation-inline-branch\"\n [class.horizontal-navigation-inline-branch--nested]=\"level > 0\"\n [class.horizontal-navigation-inline-branch--expanded]=\"isInlineBranchExpanded(child, parentKey)\"\n [class.horizontal-navigation-inline-branch--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\">\n <button\n type=\"button\"\n class=\"horizontal-navigation-inline-branch-header\"\n [title]=\"child.tooltip\"\n [attr.aria-expanded]=\"isInlineBranchExpanded(child, parentKey)\"\n (click)=\"onInlineBranchHeaderClick($event, child, parentKey)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level }\"></ng-container>\n <span class=\"horizontal-navigation-inline-branch-dot\" aria-hidden=\"true\"></span>\n </button>\n\n @if (isInlineBranchExpanded(child, parentKey)) {\n <div\n class=\"horizontal-navigation-inline-branch-children\"\n [style.--horizontal-navigation-child-level]=\"level + 1\">\n <navigation-tree-outlet\n [items]=\"child.children || []\"\n [level]=\"level + 1\"\n [parentKey]=\"getPathKey(parentKey, child)\"\n [data]=\"treeTemplateData()\"\n [branchTemplate]=\"branchItem\"\n [leafTemplate]=\"leafItem\"\n [groupTemplate]=\"groupItem\"\n [dividerTemplate]=\"dividerItem\"\n [spacerTemplate]=\"spacerItem\"\n [trackByFn]=\"treeTrackByFn\"\n [shouldRenderItemFn]=\"treeShouldRenderItemFn\"\n [hasChildrenFn]=\"treeHasChildrenFn\"\n [resolveParentKeyFn]=\"treeResolveParentKeyFn\" />\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #leafItem let-child let-level=\"level\" let-isLast=\"isLast\">\n @if (child.link && !child.externalLink) {\n <a\n mat-menu-item\n [routerLink]=\"child.link\"\n [title]=\"child.tooltip\"\n class=\"horizontal-navigation-menu-entry\"\n [class.horizontal-navigation-menu-entry--nested]=\"level > 0\"\n [class.horizontal-navigation-menu-entry--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\"\n (click)=\"onChildItemClicked(child)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level }\"></ng-container>\n </a>\n } @else if (child.link && child.externalLink) {\n <a\n mat-menu-item\n [href]=\"child.link\"\n [target]=\"child.target || '_blank'\"\n [title]=\"child.tooltip\"\n class=\"horizontal-navigation-menu-entry\"\n [class.horizontal-navigation-menu-entry--nested]=\"level > 0\"\n [class.horizontal-navigation-menu-entry--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\"\n (click)=\"onChildItemClicked(child)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n mat-menu-item\n class=\"horizontal-navigation-menu-entry\"\n [class.horizontal-navigation-menu-entry--nested]=\"level > 0\"\n [class.horizontal-navigation-menu-entry--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\"\n [title]=\"child.tooltip\"\n (click)=\"onChildItemClicked(child)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level }\"></ng-container>\n </button>\n }\n </ng-template>\n\n <ng-template #itemBody let-currentItem let-level=\"level\">\n <navigation-item-content [item]=\"currentItem\" [level]=\"level\" variant=\"horizontal\"></navigation-item-content>\n </ng-template>\n `,\n styles: `\n .horizontal-navigation-menu.mat-mdc-menu-panel {\n min-width: 280px;\n max-width: 360px;\n overflow: hidden;\n border: 1px solid var(--border);\n border-radius: 1rem;\n background: var(--popover);\n color: var(--popover-foreground);\n font-family: var(--nav-font-family);\n box-shadow:\n 0 18px 48px rgba(15, 23, 42, 0.16),\n 0 6px 18px rgba(15, 23, 42, 0.1);\n }\n\n .horizontal-navigation-menu--root.mat-mdc-menu-panel {\n margin-top: 0.5rem;\n position: relative;\n border-radius: 1rem;\n overflow: hidden;\n }\n\n .horizontal-navigation-menu--root.mat-mdc-menu-panel::before {\n display: none;\n }\n\n .horizontal-navigation-menu--nested.mat-mdc-menu-panel {\n margin-left: 0.5rem;\n }\n\n .horizontal-navigation-menu .mat-mdc-menu-content {\n padding: 0.5rem 0;\n background: var(--popover);\n }\n\n .horizontal-navigation-menu .mat-mdc-menu-item {\n min-height: 3rem;\n line-height: normal;\n color: inherit;\n background: transparent;\n }\n\n .horizontal-navigation-menu .mat-mdc-menu-item .mat-mdc-menu-item-text {\n display: flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n gap: 0.75rem;\n }\n\n .horizontal-navigation-menu\n .horizontal-navigation-menu-entry.mat-mdc-menu-item-submenu-trigger\n .mat-mdc-menu-submenu-icon {\n display: none;\n }\n\n .horizontal-navigation-root-trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.75rem;\n width: auto;\n border: 0;\n border-radius: 0;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n color: inherit;\n background: transparent;\n transition:\n background-color 150ms ease,\n color 150ms ease;\n }\n\n .horizontal-navigation-menu-entry {\n display: flex;\n align-items: center;\n width: 100%;\n gap: 0.875rem;\n border-radius: 0.75rem;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n color: inherit;\n background: transparent;\n transition:\n background-color 150ms ease,\n color 150ms ease;\n }\n\n .horizontal-navigation-root-trigger {\n position: relative;\n padding: 0 0.875rem 0 0;\n white-space: nowrap;\n }\n\n .horizontal-navigation-menu-entry {\n box-sizing: border-box;\n padding: 0.75rem 0.75rem;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n }\n\n .horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested {\n position: relative;\n padding-left: calc(1rem + (var(--horizontal-navigation-item-level, 1) * 0.5rem));\n }\n\n .horizontal-navigation-root-trigger:hover,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry:hover,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-program-focused,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-keyboard-focused,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-highlighted {\n background: var(--accent);\n color: var(--accent-foreground);\n }\n\n .horizontal-navigation-root-trigger:hover,\n .horizontal-navigation-root-trigger:focus-visible {\n background: transparent;\n color: inherit;\n }\n\n .horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open {\n z-index: 1101;\n border-color: transparent;\n padding-bottom: 0;\n background: transparent;\n color: inherit;\n box-shadow: none;\n }\n\n .horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:hover,\n .horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:focus-visible {\n background: transparent;\n color: inherit;\n }\n\n .horizontal-navigation-item-body {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n gap: 0.875rem;\n }\n\n .horizontal-navigation-item-leading {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n gap: 0.75rem;\n }\n\n .horizontal-navigation-item-leading--nested::before {\n content: '';\n width: 0.875rem;\n min-width: 0.875rem;\n border-top: 1px dashed var(--border);\n opacity: 0.9;\n }\n\n .horizontal-navigation-item-icon {\n width: 1.125rem;\n height: 1.125rem;\n flex-shrink: 0;\n }\n\n .horizontal-navigation-item-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: normal;\n word-break: break-word;\n }\n\n .horizontal-navigation-item-badge {\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n padding: 0.1875rem 0.5rem;\n border-radius: 9999px;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n flex-shrink: 0;\n }\n\n .horizontal-navigation-item-dot,\n .horizontal-navigation-inline-branch-dot {\n margin-left: auto;\n width: 0.5rem;\n height: 0.5rem;\n flex-shrink: 0;\n border-radius: 9999px;\n background: #9ca3af;\n opacity: 0.85;\n transition:\n background-color 180ms ease,\n opacity 180ms ease,\n transform 180ms ease;\n }\n\n .horizontal-navigation-inline-branch {\n padding: 0.125rem 0;\n }\n\n .horizontal-navigation-inline-branch-header {\n display: flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n padding: 0.875rem 0.75rem 0.375rem;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n color: var(--foreground);\n background: transparent;\n transition:\n background-color 150ms ease,\n color 150ms ease;\n }\n\n .horizontal-navigation-inline-branch-header:hover,\n .horizontal-navigation-inline-branch-header:focus-visible {\n background: var(--accent);\n color: var(--accent-foreground);\n }\n\n .horizontal-navigation-inline-branch--nested .horizontal-navigation-inline-branch-header {\n position: relative;\n padding-left: calc(1rem + (var(--horizontal-navigation-item-level, 1) * 0.5rem));\n }\n\n .horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open .horizontal-navigation-item-dot,\n .horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--open .horizontal-navigation-item-dot,\n .horizontal-navigation-inline-branch--expanded\n > .horizontal-navigation-inline-branch-header\n .horizontal-navigation-inline-branch-dot {\n background: #16a34a;\n opacity: 1;\n transform: scale(1.1);\n }\n\n .horizontal-navigation-inline-branch-header:hover .horizontal-navigation-inline-branch-dot,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry--branch:hover .horizontal-navigation-item-dot,\n .horizontal-navigation-root-trigger:hover .horizontal-navigation-item-dot {\n opacity: 1;\n }\n\n .horizontal-navigation-inline-branch-children {\n position: relative;\n display: block;\n overflow: hidden;\n padding-left: 0;\n padding-bottom: 0.25rem;\n }\n\n .horizontal-navigation-inline-branch-children::before {\n content: '';\n position: absolute;\n left: calc(0.875rem + ((var(--horizontal-navigation-child-level, 1) - 1) * 1rem));\n top: -0.25rem;\n bottom: 0;\n border-left: 1px dashed color-mix(in srgb, var(--border) 82%, transparent);\n pointer-events: none;\n }\n\n .horizontal-navigation-group-label {\n padding: 0.875rem 0.75rem 0.375rem;\n font-size: var(--nav-group-title-font-size);\n line-height: var(--nav-group-title-line-height);\n font-weight: var(--nav-group-title-font-weight);\n text-transform: uppercase;\n letter-spacing: var(--nav-group-title-letter-spacing);\n color: var(--muted-foreground);\n }\n\n .horizontal-navigation-group-label--nested {\n position: relative;\n padding-left: calc(1rem + (var(--horizontal-navigation-item-level, 1) * 0.5rem));\n }\n\n .horizontal-navigation-group-label--nested::before {\n content: '';\n position: absolute;\n left: calc(0.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));\n top: calc(50% + 0.375rem);\n width: 0.875rem;\n border-top: 1px dashed var(--border);\n transform: translateY(-50%);\n pointer-events: none;\n }\n\n .horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested.horizontal-navigation-menu-entry--last::after,\n .horizontal-navigation-group-label--nested.horizontal-navigation-group-label--last::after,\n .horizontal-navigation-inline-branch--nested.horizontal-navigation-inline-branch--last:not(\n .horizontal-navigation-inline-branch--expanded\n )\n .horizontal-navigation-inline-branch-header::after {\n content: '';\n position: absolute;\n left: calc(0.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));\n top: calc(50% + 0.375rem);\n bottom: -0.5rem;\n width: 2px;\n background: var(--popover);\n transform: translateX(-50%);\n pointer-events: none;\n }\n\n .horizontal-navigation-menu .horizontal-navigation-divider {\n margin: 0.375rem 0;\n border-top-color: var(--border);\n }\n\n .cdk-overlay-pane .horizontal-navigation-menu.mat-mdc-menu-panel {\n z-index: 1000;\n }\n `,\n imports: [\n MatMenuModule,\n MatDividerModule,\n RouterLink,\n NgTemplateOutlet,\n NavigationItemContent,\n NavigationTreeOutlet,\n forwardRef(() => HorizontalNavigationBranchItem),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class HorizontalNavigationBranchItem {\n @ViewChild(MatMenuTrigger) private _menuTrigger?: MatMenuTrigger;\n @ViewChild('rootTrigger') private _rootTrigger?: ElementRef<HTMLElement>;\n\n private _activeChildBranch: HorizontalNavigationBranchItem | null = null;\n private readonly _document = inject(DOCUMENT);\n\n readonly isMenuOpen = signal(false);\n readonly expandedInlineBranchByParent = signal<Record<string, string>>({});\n\n item = input.required<NavigationItem>();\n menuItem = input(false);\n nested = input(false);\n itemClicked = output<NavigationItem>();\n branchOpened = output<HorizontalNavigationBranchItem>();\n branchClosed = output<HorizontalNavigationBranchItem>();\n\n readonly itemChildren = computed(() => this.item().children ?? []);\n readonly treeTemplateData = computed(() => ({ inlineBranch: !this.menuItem() }));\n readonly treeTrackByFn = trackNavigationTreeItem;\n readonly treeShouldRenderItemFn = shouldRenderNavigationItem;\n readonly treeHasChildrenFn = hasNavigationChildren;\n readonly treeResolveParentKeyFn = getNavigationTreePathKey;\n readonly menuPanelClass = computed(() =>\n this.menuItem()\n ? 'horizontal-navigation-menu horizontal-navigation-menu--nested'\n : 'horizontal-navigation-menu horizontal-navigation-menu--root',\n );\n\n hasChildren(item: NavigationItem): boolean {\n return hasNavigationChildren(item);\n }\n\n shouldRenderItem(item: NavigationItem): boolean {\n return shouldRenderNavigationItem(item);\n }\n\n trackByFn(index: number, item: NavigationItem): string | number {\n return trackNavigationTreeItem(index, item) ?? index;\n }\n\n onMenuItemTriggerClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n onChildItemClicked(child: NavigationItem): void {\n this.itemClicked.emit(child);\n }\n\n isInlineBranchExpanded(item: NavigationItem, parentKey: string): boolean {\n return isNavigationTreeItemExpanded(this.expandedInlineBranchByParent(), parentKey, item);\n }\n\n toggleInlineBranch(item: NavigationItem, parentKey: string): void {\n this.expandedInlineBranchByParent.update((current) => toggleNavigationTreeItemExpanded(current, parentKey, item));\n }\n\n onInlineBranchHeaderClick(event: MouseEvent, item: NavigationItem, parentKey: string): void {\n event.preventDefault();\n event.stopPropagation();\n this.toggleInlineBranch(item, parentKey);\n }\n\n getPathKey(parentKey: string, item: NavigationItem): string {\n return getNavigationTreePathKey(parentKey, item);\n }\n\n onChildBranchOpened(branch: HorizontalNavigationBranchItem): void {\n if (this._activeChildBranch && this._activeChildBranch !== branch) {\n this._activeChildBranch.closeMenu();\n }\n\n this._activeChildBranch = branch;\n }\n\n onChildBranchClosed(branch: HorizontalNavigationBranchItem): void {\n if (this._activeChildBranch === branch) {\n this._activeChildBranch = null;\n }\n }\n\n handleMenuOpened(): void {\n this.isMenuOpen.set(true);\n this._syncRootTriggerWidth();\n this.branchOpened.emit(this);\n }\n\n handleMenuClosed(): void {\n this.isMenuOpen.set(false);\n this._activeChildBranch?.closeMenu();\n this._activeChildBranch = null;\n this.branchClosed.emit(this);\n }\n\n closeMenu(): void {\n this.isMenuOpen.set(false);\n this._activeChildBranch?.closeMenu();\n this._activeChildBranch = null;\n this._menuTrigger?.closeMenu();\n }\n\n private _syncRootTriggerWidth(): void {\n if (this.menuItem()) {\n return;\n }\n\n const width = this._rootTrigger?.nativeElement.offsetWidth;\n if (!width) {\n return;\n }\n\n this._document.documentElement.style.setProperty('--horizontal-navigation-root-trigger-width', `${width}px`);\n }\n}\n","import { Component, input, output, inject, computed } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n NavigationItem,\n NavigationService,\n getNavigationItemAction,\n hasNavigationChildren,\n shouldRenderNavigationItem,\n} from '@ojiepermana/angular/navigation';\nimport { NavigationItemContent } from '@ojiepermana/angular/internal';\nimport { HorizontalNavigationBranchItem } from './types/branch';\n\n@Component({\n selector: 'horizontal-navigation',\n template: `\n <nav class=\"horizontal-navigation\">\n @if (navigationData()) {\n <div class=\"horizontal-navigation-items\">\n @for (item of navigationData(); track item.id || item.title) {\n @if (shouldRenderItem(item)) {\n @switch (item.type) {\n @case ('basic') {\n @if (item.link) {\n <a\n [routerLink]=\"item.link\"\n [title]=\"item.tooltip\"\n class=\"horizontal-navigation-root-trigger\"\n (click)=\"onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('collapsable') {\n @if (hasChildren(item)) {\n <horizontal-navigation-branch-item\n [item]=\"item\"\n (itemClicked)=\"onItemClicked($event)\"\n (branchOpened)=\"onRootBranchOpened($event)\"\n (branchClosed)=\"onRootBranchClosed($event)\" />\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('group') {\n @if (hasChildren(item)) {\n <horizontal-navigation-branch-item\n [item]=\"item\"\n (itemClicked)=\"onItemClicked($event)\"\n (branchOpened)=\"onRootBranchOpened($event)\"\n (branchClosed)=\"onRootBranchClosed($event)\" />\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('divider') {\n <div class=\"w-px h-6 bg-border mx-2\"></div>\n }\n\n @case ('spacer') {\n <div class=\"flex-1\"></div>\n }\n\n @default {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n }\n }\n </div>\n }\n\n <ng-template #itemBody let-currentItem>\n <navigation-item-content [item]=\"currentItem\" variant=\"horizontal\"></navigation-item-content>\n </ng-template>\n </nav>\n `,\n styles: `\n .horizontal-navigation {\n @apply w-full;\n font-family: var(--nav-font-family);\n }\n\n .horizontal-navigation-items {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n overflow-x: auto;\n scrollbar-width: thin;\n scrollbar-color: rgba(156, 163, 175, 0.5) transparent;\n }\n\n .horizontal-navigation-items::-webkit-scrollbar {\n height: 4px;\n }\n\n .horizontal-navigation-items::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .horizontal-navigation-items::-webkit-scrollbar-thumb {\n background: rgba(156, 163, 175, 0.5);\n border-radius: 2px;\n }\n\n .horizontal-navigation-items::-webkit-scrollbar-thumb:hover {\n background: rgba(156, 163, 175, 0.8);\n }\n\n .horizontal-navigation-root-trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.75rem;\n width: auto;\n padding: 0.5rem 1rem 0.5rem 0.75rem;\n border-radius: 0.5rem;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n color: inherit;\n background: transparent;\n white-space: nowrap;\n transition:\n background-color 150ms ease,\n color 150ms ease;\n }\n\n .horizontal-navigation-root-trigger:hover,\n .horizontal-navigation-root-trigger:focus-visible {\n background: var(--accent);\n color: var(--accent-foreground);\n }\n\n .horizontal-navigation-item-body {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n gap: 0.75rem;\n }\n\n .horizontal-navigation-item-leading {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n gap: 0.625rem;\n }\n\n .horizontal-navigation-item-icon {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n }\n\n .horizontal-navigation-item-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .horizontal-navigation-item-badge {\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n padding: 0.125rem 0.375rem;\n border-radius: 9999px;\n font-size: var(--nav-badge-font-size);\n line-height: var(--nav-badge-line-height);\n font-weight: var(--nav-badge-font-weight);\n flex-shrink: 0;\n }\n `,\n imports: [RouterLink, NgTemplateOutlet, NavigationItemContent, HorizontalNavigationBranchItem],\n})\nexport class HorizontalNavigation {\n private _navigationService = inject(NavigationService);\n private _activeRootBranch: HorizontalNavigationBranchItem | null = null;\n\n // Navigation name identifier\n name = input<string>('');\n\n // Input for navigation data\n navigation = input<NavigationItem[]>([]);\n\n // Output for item clicks\n itemClicked = output<NavigationItem>();\n\n // Computed navigation data (from input or service)\n navigationData = computed(() => {\n const inputData = this.navigation();\n if (inputData.length > 0) {\n return inputData;\n }\n return this._navigationService.getNavigation();\n });\n\n /**\n * Handle item click\n */\n onItemClicked(item: NavigationItem): void {\n getNavigationItemAction(item)?.(item);\n this.itemClicked.emit(item);\n }\n\n onRootBranchOpened(branch: HorizontalNavigationBranchItem): void {\n if (this._activeRootBranch && this._activeRootBranch !== branch) {\n this._activeRootBranch.closeMenu();\n }\n\n this._activeRootBranch = branch;\n }\n\n onRootBranchClosed(branch: HorizontalNavigationBranchItem): void {\n if (this._activeRootBranch === branch) {\n this._activeRootBranch = null;\n }\n }\n\n shouldRenderItem(item: NavigationItem): boolean {\n return shouldRenderNavigationItem(item);\n }\n\n hasChildren(item: NavigationItem): boolean {\n return hasNavigationChildren(item);\n }\n\n /**\n * Get flat navigation for utility purposes\n */\n getFlatNavigation(): NavigationItem[] {\n return this._navigationService.getFlatNavigation(this.navigationData());\n }\n\n /**\n * Get navigation item by ID\n */\n getItem(id: string): NavigationItem | null {\n return this._navigationService.getItem(id, this.navigationData());\n }\n\n /**\n * Get navigation item parent by ID\n */\n getItemParent(id: string): NavigationItem[] | NavigationItem | null {\n return this._navigationService.getItemParent(id, this.navigationData(), this.navigationData());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ojiepermana-angular-navigation-horizontal.mjs","sources":["../../../projects/library/navigation/horizontal/core/horizontal-navigation.base.ts","../../../projects/library/navigation/horizontal/types/branch/branch.ts","../../../projects/library/navigation/horizontal/core/horizontal-navigation.shared.ts","../../../projects/library/navigation/horizontal/default/default.ts","../../../projects/library/navigation/horizontal/mega/mega.ts","../../../projects/library/navigation/horizontal/ojiepermana-angular-navigation-horizontal.ts"],"sourcesContent":["import { Directive, computed, inject, input, output } from '@angular/core';\nimport {\n NavigationItem,\n NavigationService,\n getNavigationItemAction,\n hasNavigationChildren,\n shouldRenderNavigationItem,\n} from '@ojiepermana/angular/navigation';\nimport { HorizontalNavigationBranchItem } from '../types';\n\nexport type HorizontalNavigationVariant = 'default' | 'mega';\n\n@Directive()\nexport abstract class HorizontalNavigationBaseComponent {\n abstract readonly variant: HorizontalNavigationVariant;\n\n private readonly _navigationService = inject(NavigationService);\n private _activeRootBranch: HorizontalNavigationBranchItem | null = null;\n\n readonly name = input<string>('');\n readonly navigation = input<NavigationItem[]>([]);\n readonly itemClicked = output<NavigationItem>();\n\n readonly navigationData = computed(() => {\n const inputData = this.navigation();\n if (inputData.length > 0) {\n return inputData;\n }\n\n return this._navigationService.getNavigation();\n });\n\n isMegaVariant(): boolean {\n return this.variant === 'mega';\n }\n\n onItemClicked(item: NavigationItem): void {\n if (item.id) {\n this._navigationService.setActiveItem(item.id);\n }\n\n getNavigationItemAction(item)?.(item);\n this.itemClicked.emit(item);\n }\n\n onRootBranchOpened(branch: HorizontalNavigationBranchItem): void {\n if (this._activeRootBranch && this._activeRootBranch !== branch) {\n this._activeRootBranch.closeMenu();\n }\n\n this._activeRootBranch = branch;\n }\n\n onRootBranchClosed(branch: HorizontalNavigationBranchItem): void {\n if (this._activeRootBranch === branch) {\n this._activeRootBranch = null;\n }\n }\n\n shouldRenderItem(item: NavigationItem): boolean {\n return shouldRenderNavigationItem(item);\n }\n\n hasChildren(item: NavigationItem): boolean {\n return hasNavigationChildren(item);\n }\n\n getFlatNavigation(): NavigationItem[] {\n return this._navigationService.getFlatNavigation(this.navigationData());\n }\n\n getItem(id: string): NavigationItem | null {\n return this._navigationService.getItem(id, this.navigationData());\n }\n\n getItemParent(id: string): NavigationItem[] | NavigationItem | null {\n return this._navigationService.getItemParent(id, this.navigationData(), this.navigationData());\n }\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewChild,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { RouterLink } from '@angular/router';\nimport { NavigationItem, hasNavigationChildren, shouldRenderNavigationItem } from '@ojiepermana/angular/navigation';\nimport {\n NavigationItemContent,\n NavigationTreeOutlet,\n getNavigationTreePathKey,\n isNavigationTreeItemExpanded,\n toggleNavigationTreeItemExpanded,\n trackNavigationTreeItem,\n} from '@ojiepermana/angular/internal';\nimport { HorizontalNavigationVariant } from '../../core/horizontal-navigation.base';\n\n@Component({\n selector: 'horizontal-navigation-branch-item',\n template: `\n @if (menuItem()) {\n <button\n type=\"button\"\n mat-menu-item\n class=\"horizontal-navigation-menu-entry horizontal-navigation-menu-entry--branch\"\n [class.horizontal-navigation-menu-entry--nested]=\"nested()\"\n [class.horizontal-navigation-menu-entry--mega]=\"variant() === 'mega'\"\n [class.horizontal-navigation-menu-entry--open]=\"isMenuOpen()\"\n [matMenuTriggerFor]=\"matMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (click)=\"onMenuItemTriggerClick($event)\"\n (menuOpened)=\"handleMenuOpened()\"\n (menuClosed)=\"handleMenuClosed()\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item(), level: nested() ? 1 : 0 }\"></ng-container>\n <span class=\"horizontal-navigation-item-dot\" aria-hidden=\"true\"></span>\n </button>\n } @else {\n <button\n type=\"button\"\n #rootTrigger\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"variant() === 'mega'\"\n [class.horizontal-navigation-root-trigger--open]=\"isMenuOpen()\"\n [matMenuTriggerFor]=\"matMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"handleMenuOpened()\"\n (menuClosed)=\"handleMenuClosed()\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item(), level: 0 }\"></ng-container>\n <span class=\"horizontal-navigation-item-dot\" aria-hidden=\"true\"></span>\n </button>\n }\n\n <mat-menu\n #matMenu=\"matMenu\"\n [class]=\"menuPanelClass()\"\n [hasBackdrop]=\"!menuItem()\"\n [overlapTrigger]=\"false\"\n xPosition=\"after\"\n yPosition=\"below\">\n <navigation-tree-outlet\n [items]=\"itemChildren()\"\n [level]=\"0\"\n [parentKey]=\"getPathKey('root', item())\"\n [data]=\"treeTemplateData()\"\n [branchTemplate]=\"branchItem\"\n [leafTemplate]=\"leafItem\"\n [groupTemplate]=\"groupItem\"\n [dividerTemplate]=\"dividerItem\"\n [spacerTemplate]=\"spacerItem\"\n [trackByFn]=\"treeTrackByFn\"\n [shouldRenderItemFn]=\"treeShouldRenderItemFn\"\n [hasChildrenFn]=\"treeHasChildrenFn\"\n [resolveParentKeyFn]=\"treeResolveParentKeyFn\" />\n </mat-menu>\n\n <ng-template #branchItem let-child let-level=\"level\" let-parentKey=\"parentKey\" let-isLast=\"isLast\" let-data=\"data\">\n @if (data?.['inlineBranch']) {\n <ng-container\n [ngTemplateOutlet]=\"inlineBranchItem\"\n [ngTemplateOutletContext]=\"{\n $implicit: child,\n level: level,\n parentKey: parentKey,\n isLast: isLast,\n }\"></ng-container>\n } @else {\n <horizontal-navigation-branch-item\n [item]=\"child\"\n [menuItem]=\"true\"\n [nested]=\"level > 0\"\n [variant]=\"variant()\"\n (itemClicked)=\"onChildItemClicked($event)\"\n (branchOpened)=\"onChildBranchOpened($event)\"\n (branchClosed)=\"onChildBranchClosed($event)\" />\n }\n </ng-template>\n\n <ng-template #groupItem let-child let-level=\"level\" let-isLast=\"isLast\">\n <div\n class=\"horizontal-navigation-group-label\"\n [class.horizontal-navigation-group-label--nested]=\"level > 0\"\n [class.horizontal-navigation-group-label--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\">\n {{ child.title }}\n </div>\n </ng-template>\n\n <ng-template #dividerItem>\n <mat-divider class=\"horizontal-navigation-divider\"></mat-divider>\n </ng-template>\n\n <ng-template #spacerItem></ng-template>\n\n <ng-template #inlineBranchItem let-child let-level=\"level\" let-parentKey=\"parentKey\" let-isLast=\"isLast\">\n <div\n class=\"horizontal-navigation-inline-branch\"\n [class.horizontal-navigation-inline-branch--nested]=\"level > 0\"\n [class.horizontal-navigation-inline-branch--expanded]=\"isInlineBranchExpanded(child, parentKey)\"\n [class.horizontal-navigation-inline-branch--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\">\n <button\n type=\"button\"\n class=\"horizontal-navigation-inline-branch-header\"\n [class.horizontal-navigation-inline-branch-header--mega]=\"variant() === 'mega'\"\n [title]=\"child.tooltip\"\n [attr.aria-expanded]=\"isInlineBranchExpanded(child, parentKey)\"\n (click)=\"onInlineBranchHeaderClick($event, child, parentKey)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level }\"></ng-container>\n <span class=\"horizontal-navigation-inline-branch-dot\" aria-hidden=\"true\"></span>\n </button>\n\n @if (isInlineBranchExpanded(child, parentKey)) {\n <div\n class=\"horizontal-navigation-inline-branch-children\"\n [style.--horizontal-navigation-child-level]=\"level + 1\">\n <navigation-tree-outlet\n [items]=\"child.children || []\"\n [level]=\"level + 1\"\n [parentKey]=\"getPathKey(parentKey, child)\"\n [data]=\"treeTemplateData()\"\n [branchTemplate]=\"branchItem\"\n [leafTemplate]=\"leafItem\"\n [groupTemplate]=\"groupItem\"\n [dividerTemplate]=\"dividerItem\"\n [spacerTemplate]=\"spacerItem\"\n [trackByFn]=\"treeTrackByFn\"\n [shouldRenderItemFn]=\"treeShouldRenderItemFn\"\n [hasChildrenFn]=\"treeHasChildrenFn\"\n [resolveParentKeyFn]=\"treeResolveParentKeyFn\" />\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #leafItem let-child let-level=\"level\" let-isLast=\"isLast\">\n @if (child.link && !child.externalLink) {\n <a\n mat-menu-item\n [routerLink]=\"child.link\"\n [title]=\"child.tooltip\"\n class=\"horizontal-navigation-menu-entry\"\n [class.horizontal-navigation-menu-entry--nested]=\"level > 0\"\n [class.horizontal-navigation-menu-entry--mega]=\"variant() === 'mega'\"\n [class.horizontal-navigation-menu-entry--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\"\n (click)=\"onChildItemClicked(child)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level }\"></ng-container>\n </a>\n } @else if (child.link && child.externalLink) {\n <a\n mat-menu-item\n [href]=\"child.link\"\n [target]=\"child.target || '_blank'\"\n [title]=\"child.tooltip\"\n class=\"horizontal-navigation-menu-entry\"\n [class.horizontal-navigation-menu-entry--nested]=\"level > 0\"\n [class.horizontal-navigation-menu-entry--mega]=\"variant() === 'mega'\"\n [class.horizontal-navigation-menu-entry--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\"\n (click)=\"onChildItemClicked(child)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n mat-menu-item\n class=\"horizontal-navigation-menu-entry\"\n [class.horizontal-navigation-menu-entry--nested]=\"level > 0\"\n [class.horizontal-navigation-menu-entry--mega]=\"variant() === 'mega'\"\n [class.horizontal-navigation-menu-entry--last]=\"isLast\"\n [style.--horizontal-navigation-item-level]=\"level\"\n [title]=\"child.tooltip\"\n (click)=\"onChildItemClicked(child)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level }\"></ng-container>\n </button>\n }\n </ng-template>\n\n <ng-template #itemBody let-currentItem let-level=\"level\">\n <navigation-item-content [item]=\"currentItem\" [level]=\"level\" variant=\"horizontal\"></navigation-item-content>\n </ng-template>\n `,\n styles: `\n .horizontal-navigation-menu.mat-mdc-menu-panel {\n min-width: 280px;\n max-width: 360px;\n overflow: hidden;\n border: 1px solid var(--border);\n border-radius: 1rem;\n background: var(--popover);\n color: var(--popover-foreground);\n font-family: var(--nav-font-family);\n box-shadow:\n 0 18px 48px rgba(15, 23, 42, 0.16),\n 0 6px 18px rgba(15, 23, 42, 0.1);\n }\n\n .horizontal-navigation-menu--root.mat-mdc-menu-panel {\n margin-top: 0.5rem;\n position: relative;\n border-radius: 1rem;\n overflow: hidden;\n }\n\n .horizontal-navigation-menu--root.mat-mdc-menu-panel::before {\n display: none;\n }\n\n .horizontal-navigation-menu--nested.mat-mdc-menu-panel {\n margin-left: 0.5rem;\n }\n\n .horizontal-navigation-menu--mega.mat-mdc-menu-panel {\n min-width: 22rem;\n max-width: min(42rem, calc(100vw - 2rem));\n border-radius: 1.25rem;\n }\n\n .horizontal-navigation-menu .mat-mdc-menu-content {\n padding: 0.5rem 0;\n background: var(--popover);\n }\n\n .horizontal-navigation-menu--mega .mat-mdc-menu-content {\n padding: 0.75rem;\n }\n\n .horizontal-navigation-menu .mat-mdc-menu-item {\n min-height: 3rem;\n line-height: normal;\n color: inherit;\n background: transparent;\n }\n\n .horizontal-navigation-menu .mat-mdc-menu-item .mat-mdc-menu-item-text {\n display: flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n gap: 0.75rem;\n }\n\n .horizontal-navigation-menu\n .horizontal-navigation-menu-entry.mat-mdc-menu-item-submenu-trigger\n .mat-mdc-menu-submenu-icon {\n display: none;\n }\n\n .horizontal-navigation-root-trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.75rem;\n width: auto;\n border: 0;\n border-radius: 0;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n color: inherit;\n background: transparent;\n transition:\n background-color 150ms ease,\n color 150ms ease;\n }\n\n .horizontal-navigation-menu-entry {\n display: flex;\n align-items: center;\n width: 100%;\n gap: 0.875rem;\n border-radius: 0.75rem;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n color: inherit;\n background: transparent;\n transition:\n background-color 150ms ease,\n color 150ms ease;\n }\n\n .horizontal-navigation-root-trigger {\n position: relative;\n padding: 0 0.875rem 0 0;\n white-space: nowrap;\n }\n\n .horizontal-navigation-menu-entry {\n box-sizing: border-box;\n padding: 0.75rem 0.75rem;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n }\n\n .horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested {\n position: relative;\n padding-left: calc(1rem + (var(--horizontal-navigation-item-level, 1) * 0.5rem));\n }\n\n .horizontal-navigation-root-trigger--mega {\n min-height: 3rem;\n padding-right: 1rem;\n }\n\n .horizontal-navigation-menu-entry--mega {\n min-height: 3.25rem;\n padding: 0.875rem;\n border-radius: 0.875rem;\n }\n\n .horizontal-navigation-root-trigger:hover,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry:hover,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-program-focused,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-keyboard-focused,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-highlighted {\n background: var(--accent);\n color: var(--accent-foreground);\n }\n\n .horizontal-navigation-root-trigger:hover,\n .horizontal-navigation-root-trigger:focus-visible {\n background: transparent;\n color: inherit;\n }\n\n .horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open {\n z-index: 1101;\n border-color: transparent;\n padding-bottom: 0;\n background: transparent;\n color: inherit;\n box-shadow: none;\n }\n\n .horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:hover,\n .horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:focus-visible {\n background: transparent;\n color: inherit;\n }\n\n .horizontal-navigation-item-body {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n gap: 0.875rem;\n }\n\n .horizontal-navigation-item-leading {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n gap: 0.75rem;\n }\n\n .horizontal-navigation-item-leading--nested::before {\n content: '';\n width: 0.875rem;\n min-width: 0.875rem;\n border-top: 1px dashed var(--border);\n opacity: 0.9;\n }\n\n .horizontal-navigation-item-icon {\n width: 1.125rem;\n height: 1.125rem;\n flex-shrink: 0;\n }\n\n .horizontal-navigation-item-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: normal;\n word-break: break-word;\n }\n\n .horizontal-navigation-item-badge {\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n padding: 0.1875rem 0.5rem;\n border-radius: 9999px;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n flex-shrink: 0;\n }\n\n .horizontal-navigation-item-dot,\n .horizontal-navigation-inline-branch-dot {\n margin-left: auto;\n width: 0.5rem;\n height: 0.5rem;\n flex-shrink: 0;\n border-radius: 9999px;\n background: #9ca3af;\n opacity: 0.85;\n transition:\n background-color 180ms ease,\n opacity 180ms ease,\n transform 180ms ease;\n }\n\n .horizontal-navigation-inline-branch {\n padding: 0.125rem 0;\n }\n\n .horizontal-navigation-inline-branch-header {\n display: flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n padding: 0.875rem 0.75rem 0.375rem;\n font-size: var(--nav-item-font-size);\n line-height: var(--nav-item-line-height);\n font-weight: var(--nav-item-font-weight);\n color: var(--foreground);\n background: transparent;\n transition:\n background-color 150ms ease,\n color 150ms ease;\n }\n\n .horizontal-navigation-inline-branch-header:hover,\n .horizontal-navigation-inline-branch-header:focus-visible {\n background: var(--accent);\n color: var(--accent-foreground);\n }\n\n .horizontal-navigation-inline-branch-header--mega {\n padding-top: 1rem;\n padding-bottom: 0.5rem;\n border-radius: 0.875rem;\n }\n\n .horizontal-navigation-inline-branch--nested .horizontal-navigation-inline-branch-header {\n position: relative;\n padding-left: calc(1rem + (var(--horizontal-navigation-item-level, 1) * 0.5rem));\n }\n\n .horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open .horizontal-navigation-item-dot,\n .horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--open .horizontal-navigation-item-dot,\n .horizontal-navigation-inline-branch--expanded\n > .horizontal-navigation-inline-branch-header\n .horizontal-navigation-inline-branch-dot {\n background: #16a34a;\n opacity: 1;\n transform: scale(1.1);\n }\n\n .horizontal-navigation-inline-branch-header:hover .horizontal-navigation-inline-branch-dot,\n .horizontal-navigation-menu .horizontal-navigation-menu-entry--branch:hover .horizontal-navigation-item-dot,\n .horizontal-navigation-root-trigger:hover .horizontal-navigation-item-dot {\n opacity: 1;\n }\n\n .horizontal-navigation-inline-branch-children {\n position: relative;\n display: block;\n overflow: hidden;\n padding-left: 0;\n padding-bottom: 0.25rem;\n }\n\n .horizontal-navigation-inline-branch-children::before {\n content: '';\n position: absolute;\n left: calc(0.875rem + ((var(--horizontal-navigation-child-level, 1) - 1) * 1rem));\n top: -0.25rem;\n bottom: 0;\n border-left: 1px dashed color-mix(in srgb, var(--border) 82%, transparent);\n pointer-events: none;\n }\n\n .horizontal-navigation-group-label {\n padding: 0.875rem 0.75rem 0.375rem;\n font-size: var(--nav-group-title-font-size);\n line-height: var(--nav-group-title-line-height);\n font-weight: var(--nav-group-title-font-weight);\n text-transform: uppercase;\n letter-spacing: var(--nav-group-title-letter-spacing);\n color: var(--muted-foreground);\n }\n\n .horizontal-navigation-group-label--nested {\n position: relative;\n padding-left: calc(1rem + (var(--horizontal-navigation-item-level, 1) * 0.5rem));\n }\n\n .horizontal-navigation-group-label--nested::before {\n content: '';\n position: absolute;\n left: calc(0.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));\n top: calc(50% + 0.375rem);\n width: 0.875rem;\n border-top: 1px dashed var(--border);\n transform: translateY(-50%);\n pointer-events: none;\n }\n\n .horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested.horizontal-navigation-menu-entry--last::after,\n .horizontal-navigation-group-label--nested.horizontal-navigation-group-label--last::after,\n .horizontal-navigation-inline-branch--nested.horizontal-navigation-inline-branch--last:not(\n .horizontal-navigation-inline-branch--expanded\n )\n .horizontal-navigation-inline-branch-header::after {\n content: '';\n position: absolute;\n left: calc(0.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));\n top: calc(50% + 0.375rem);\n bottom: -0.5rem;\n width: 2px;\n background: var(--popover);\n transform: translateX(-50%);\n pointer-events: none;\n }\n\n .horizontal-navigation-menu .horizontal-navigation-divider {\n margin: 0.375rem 0;\n border-top-color: var(--border);\n }\n\n .cdk-overlay-pane .horizontal-navigation-menu.mat-mdc-menu-panel {\n z-index: 1000;\n }\n `,\n imports: [\n MatMenuModule,\n MatDividerModule,\n RouterLink,\n NgTemplateOutlet,\n NavigationItemContent,\n NavigationTreeOutlet,\n forwardRef(() => HorizontalNavigationBranchItem),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class HorizontalNavigationBranchItem {\n @ViewChild(MatMenuTrigger) private _menuTrigger?: MatMenuTrigger;\n @ViewChild('rootTrigger') private _rootTrigger?: ElementRef<HTMLElement>;\n\n private _activeChildBranch: HorizontalNavigationBranchItem | null = null;\n private readonly _document = inject(DOCUMENT);\n\n readonly isMenuOpen = signal(false);\n readonly expandedInlineBranchByParent = signal<Record<string, string>>({});\n\n item = input.required<NavigationItem>();\n menuItem = input(false);\n nested = input(false);\n variant = input<HorizontalNavigationVariant>('default');\n itemClicked = output<NavigationItem>();\n branchOpened = output<HorizontalNavigationBranchItem>();\n branchClosed = output<HorizontalNavigationBranchItem>();\n\n readonly itemChildren = computed(() => this.item().children ?? []);\n readonly treeTemplateData = computed(() => ({ inlineBranch: !this.menuItem() }));\n readonly treeTrackByFn = trackNavigationTreeItem;\n readonly treeShouldRenderItemFn = shouldRenderNavigationItem;\n readonly treeHasChildrenFn = hasNavigationChildren;\n readonly treeResolveParentKeyFn = getNavigationTreePathKey;\n readonly menuPanelClass = computed(() => {\n const nestingClass = this.menuItem() ? 'horizontal-navigation-menu--nested' : 'horizontal-navigation-menu--root';\n const variantClass =\n this.variant() === 'mega' ? 'horizontal-navigation-menu--mega' : 'horizontal-navigation-menu--default';\n\n return `horizontal-navigation-menu ${nestingClass} ${variantClass}`;\n });\n\n hasChildren(item: NavigationItem): boolean {\n return hasNavigationChildren(item);\n }\n\n shouldRenderItem(item: NavigationItem): boolean {\n return shouldRenderNavigationItem(item);\n }\n\n trackByFn(index: number, item: NavigationItem): string | number {\n return trackNavigationTreeItem(index, item) ?? index;\n }\n\n onMenuItemTriggerClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n onChildItemClicked(child: NavigationItem): void {\n this.itemClicked.emit(child);\n }\n\n isInlineBranchExpanded(item: NavigationItem, parentKey: string): boolean {\n return isNavigationTreeItemExpanded(this.expandedInlineBranchByParent(), parentKey, item);\n }\n\n toggleInlineBranch(item: NavigationItem, parentKey: string): void {\n this.expandedInlineBranchByParent.update((current) => toggleNavigationTreeItemExpanded(current, parentKey, item));\n }\n\n onInlineBranchHeaderClick(event: MouseEvent, item: NavigationItem, parentKey: string): void {\n event.preventDefault();\n event.stopPropagation();\n this.toggleInlineBranch(item, parentKey);\n }\n\n getPathKey(parentKey: string, item: NavigationItem): string {\n return getNavigationTreePathKey(parentKey, item);\n }\n\n onChildBranchOpened(branch: HorizontalNavigationBranchItem): void {\n if (this._activeChildBranch && this._activeChildBranch !== branch) {\n this._activeChildBranch.closeMenu();\n }\n\n this._activeChildBranch = branch;\n }\n\n onChildBranchClosed(branch: HorizontalNavigationBranchItem): void {\n if (this._activeChildBranch === branch) {\n this._activeChildBranch = null;\n }\n }\n\n handleMenuOpened(): void {\n this.isMenuOpen.set(true);\n this._syncRootTriggerWidth();\n this.branchOpened.emit(this);\n }\n\n handleMenuClosed(): void {\n this.isMenuOpen.set(false);\n this._activeChildBranch?.closeMenu();\n this._activeChildBranch = null;\n this.branchClosed.emit(this);\n }\n\n closeMenu(): void {\n this.isMenuOpen.set(false);\n this._activeChildBranch?.closeMenu();\n this._activeChildBranch = null;\n this._menuTrigger?.closeMenu();\n }\n\n private _syncRootTriggerWidth(): void {\n if (this.menuItem()) {\n return;\n }\n\n const width = this._rootTrigger?.nativeElement.offsetWidth;\n if (!width) {\n return;\n }\n\n this._document.documentElement.style.setProperty('--horizontal-navigation-root-trigger-width', `${width}px`);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { NavigationItemContent } from '@ojiepermana/angular/internal';\nimport { HorizontalNavigationBranchItem } from '../types';\n\nexport const HORIZONTAL_NAVIGATION_TEMPLATE = `\n <nav class=\"horizontal-navigation\" [class.horizontal-navigation--mega]=\"isMegaVariant()\">\n @if (navigationData()) {\n <div class=\"horizontal-navigation-items\" [class.horizontal-navigation-items--mega]=\"isMegaVariant()\">\n @for (item of navigationData(); track item.id || item.title) {\n @if (shouldRenderItem(item)) {\n @switch (item.type) {\n @case ('basic') {\n @if (item.link) {\n <a\n [routerLink]=\"item.link\"\n [title]=\"item.tooltip\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n (click)=\"onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('collapsable') {\n @if (hasChildren(item)) {\n <horizontal-navigation-branch-item\n [item]=\"item\"\n [variant]=\"variant\"\n (itemClicked)=\"onItemClicked($event)\"\n (branchOpened)=\"onRootBranchOpened($event)\"\n (branchClosed)=\"onRootBranchClosed($event)\" />\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('group') {\n @if (hasChildren(item)) {\n <horizontal-navigation-branch-item\n [item]=\"item\"\n [variant]=\"variant\"\n (itemClicked)=\"onItemClicked($event)\"\n (branchOpened)=\"onRootBranchOpened($event)\"\n (branchClosed)=\"onRootBranchClosed($event)\" />\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('divider') {\n <div class=\"h-6 w-px bg-border mx-2\"></div>\n }\n\n @case ('spacer') {\n <div class=\"flex-1\"></div>\n }\n\n @default {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n }\n }\n </div>\n }\n\n <ng-template #itemBody let-currentItem>\n <navigation-item-content [item]=\"currentItem\" variant=\"horizontal\"></navigation-item-content>\n </ng-template>\n </nav>\n`;\n\nexport const HORIZONTAL_NAVIGATION_IMPORTS = [\n RouterLink,\n NgTemplateOutlet,\n NavigationItemContent,\n HorizontalNavigationBranchItem,\n];\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HorizontalNavigationBaseComponent } from '../core/horizontal-navigation.base';\nimport { HORIZONTAL_NAVIGATION_IMPORTS, HORIZONTAL_NAVIGATION_TEMPLATE } from '../core/horizontal-navigation.shared';\n\n@Component({\n selector: 'horizontal-navigation',\n template: HORIZONTAL_NAVIGATION_TEMPLATE,\n styleUrls: ['./default.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: HORIZONTAL_NAVIGATION_IMPORTS,\n})\nexport class HorizontalNavigation extends HorizontalNavigationBaseComponent {\n readonly variant = 'default' as const;\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HorizontalNavigationBaseComponent } from '../core/horizontal-navigation.base';\nimport { HORIZONTAL_NAVIGATION_IMPORTS, HORIZONTAL_NAVIGATION_TEMPLATE } from '../core/horizontal-navigation.shared';\n\n@Component({\n selector: 'horizontal-navigation-mega',\n template: HORIZONTAL_NAVIGATION_TEMPLATE,\n styleUrls: ['../default/default.css', './mega.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: HORIZONTAL_NAVIGATION_IMPORTS,\n})\nexport class HorizontalNavigationMegaComponent extends HorizontalNavigationBaseComponent {\n readonly variant = 'mega' as const;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4.HorizontalNavigationBranchItem"],"mappings":"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"}
|