@ojiepermana/angular 0.1.1 → 21.0.0

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.
Files changed (92) hide show
  1. package/README.md +41 -249
  2. package/fesm2022/ojiepermana-angular-chart.mjs +3714 -0
  3. package/fesm2022/ojiepermana-angular-chart.mjs.map +1 -0
  4. package/fesm2022/ojiepermana-angular-component.mjs +3463 -0
  5. package/fesm2022/ojiepermana-angular-component.mjs.map +1 -0
  6. package/fesm2022/ojiepermana-angular-layout.mjs +276 -408
  7. package/fesm2022/ojiepermana-angular-layout.mjs.map +1 -1
  8. package/fesm2022/ojiepermana-angular-navigation.mjs +2198 -404
  9. package/fesm2022/ojiepermana-angular-navigation.mjs.map +1 -1
  10. package/fesm2022/ojiepermana-angular-theme.mjs +381 -1
  11. package/fesm2022/ojiepermana-angular-theme.mjs.map +1 -1
  12. package/fesm2022/ojiepermana-angular.mjs +15 -1
  13. package/fesm2022/ojiepermana-angular.mjs.map +1 -1
  14. package/package.json +49 -36
  15. package/theme/styles/etos.css +38 -0
  16. package/theme/styles/index.css +32 -8
  17. package/theme/styles/themes/brand/etos/color.css +21 -0
  18. package/theme/styles/themes/brand/etos/style.css +50 -0
  19. package/theme/styles/themes/library/_components.css +63 -0
  20. package/theme/styles/themes/library/_layers.css +15 -0
  21. package/theme/styles/themes/library/_material-overrides.css +254 -0
  22. package/theme/styles/themes/library/_tokens.css +54 -0
  23. package/theme/styles/themes/library/color/amber.css +18 -0
  24. package/theme/styles/themes/library/color/blue.css +23 -0
  25. package/theme/styles/themes/library/color/green.css +18 -0
  26. package/theme/styles/themes/library/color/index.css +9 -0
  27. package/theme/styles/themes/library/color/purple.css +18 -0
  28. package/theme/styles/themes/library/color/red.css +18 -0
  29. package/theme/styles/themes/library/style/brutal.css +47 -0
  30. package/theme/styles/themes/library/style/default.css +51 -0
  31. package/theme/styles/themes/library/style/index.css +8 -0
  32. package/theme/styles/themes/library/style/sharp.css +47 -0
  33. package/theme/styles/themes/library/style/soft.css +47 -0
  34. package/theme/styles/themes/mode/dark.css +20 -0
  35. package/theme/styles/themes/mode/index.css +6 -0
  36. package/theme/styles/themes/mode/light.css +24 -0
  37. package/theme/styles/themes/taildwind.css +109 -0
  38. package/types/ojiepermana-angular-chart.d.ts +1094 -0
  39. package/types/ojiepermana-angular-component.d.ts +1174 -0
  40. package/types/ojiepermana-angular-layout.d.ts +123 -76
  41. package/types/ojiepermana-angular-navigation.d.ts +256 -116
  42. package/types/ojiepermana-angular-theme.d.ts +170 -1
  43. package/types/ojiepermana-angular.d.ts +2 -1
  44. package/fesm2022/ojiepermana-angular-internal.mjs +0 -489
  45. package/fesm2022/ojiepermana-angular-internal.mjs.map +0 -1
  46. package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs +0 -721
  47. package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs.map +0 -1
  48. package/fesm2022/ojiepermana-angular-navigation-vertical.mjs +0 -1647
  49. package/fesm2022/ojiepermana-angular-navigation-vertical.mjs.map +0 -1
  50. package/fesm2022/ojiepermana-angular-shell.mjs +0 -19
  51. package/fesm2022/ojiepermana-angular-shell.mjs.map +0 -1
  52. package/fesm2022/ojiepermana-angular-theme-component.mjs +0 -235
  53. package/fesm2022/ojiepermana-angular-theme-component.mjs.map +0 -1
  54. package/fesm2022/ojiepermana-angular-theme-directive.mjs +0 -29
  55. package/fesm2022/ojiepermana-angular-theme-directive.mjs.map +0 -1
  56. package/fesm2022/ojiepermana-angular-theme-service.mjs +0 -241
  57. package/fesm2022/ojiepermana-angular-theme-service.mjs.map +0 -1
  58. package/layout/README.md +0 -144
  59. package/layout/src/component/horizontal/horizontal.css +0 -130
  60. package/layout/src/component/vertical/vertical.css +0 -75
  61. package/layout/src/layout.css +0 -16
  62. package/navigation/README.md +0 -301
  63. package/navigation/horizontal/README.md +0 -49
  64. package/shell/README.md +0 -41
  65. package/styles/index.css +0 -2
  66. package/styles/resets.css +0 -22
  67. package/theme/README.md +0 -379
  68. package/theme/styles/adapters/material-ui/index.css +0 -205
  69. package/theme/styles/modes/dark.css +0 -84
  70. package/theme/styles/presets/colors/blue.css +0 -45
  71. package/theme/styles/presets/colors/brand.css +0 -52
  72. package/theme/styles/presets/colors/cyan.css +0 -45
  73. package/theme/styles/presets/colors/green.css +0 -45
  74. package/theme/styles/presets/colors/index.css +0 -7
  75. package/theme/styles/presets/colors/orange.css +0 -45
  76. package/theme/styles/presets/colors/purple.css +0 -45
  77. package/theme/styles/presets/colors/red.css +0 -45
  78. package/theme/styles/presets/styles/flat.css +0 -61
  79. package/theme/styles/presets/styles/glass.css +0 -28
  80. package/theme/styles/presets/styles/index.css +0 -2
  81. package/theme/styles/roles/index.css +0 -67
  82. package/theme/styles/tokens/foundation.css +0 -136
  83. package/theme/styles/tokens/semantic.css +0 -87
  84. package/theme/styles/utilities/index.css +0 -88
  85. package/types/ojiepermana-angular-internal.d.ts +0 -90
  86. package/types/ojiepermana-angular-navigation-horizontal.d.ts +0 -81
  87. package/types/ojiepermana-angular-navigation-vertical.d.ts +0 -262
  88. package/types/ojiepermana-angular-shell.d.ts +0 -14
  89. package/types/ojiepermana-angular-theme-component.d.ts +0 -46
  90. package/types/ojiepermana-angular-theme-directive.d.ts +0 -10
  91. package/types/ojiepermana-angular-theme-service.d.ts +0 -68
  92. /package/{navigation/vertical → chart}/README.md +0 -0
@@ -1,721 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, input, output, computed, Directive, signal, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';
3
- import { NavigationService, getNavigationItemAction, shouldRenderNavigationItem, hasNavigationChildren } from '@ojiepermana/angular/navigation';
4
- import * as i2$1 from '@angular/common';
5
- import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
6
- import * as i1$1 from '@angular/router';
7
- import { RouterLink } from '@angular/router';
8
- import * as i3 from '@ojiepermana/angular/internal';
9
- import { trackNavigationTreeItem, getNavigationTreePathKey, isNavigationTreeItemExpanded, toggleNavigationTreeItemExpanded, NavigationItemContent, NavigationTreeOutlet } from '@ojiepermana/angular/internal';
10
- import * as i2 from '@angular/material/divider';
11
- import { MatDividerModule } from '@angular/material/divider';
12
- import * as i1 from '@angular/material/menu';
13
- import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
14
-
15
- class HorizontalNavigationBaseComponent {
16
- _navigationService = inject(NavigationService);
17
- _activeRootBranch = null;
18
- name = input('', ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
19
- navigation = input([], ...(ngDevMode ? [{ debugName: "navigation" }] : /* istanbul ignore next */ []));
20
- itemClicked = output();
21
- navigationData = computed(() => {
22
- const inputData = this.navigation();
23
- if (inputData.length > 0) {
24
- return inputData;
25
- }
26
- return this._navigationService.getNavigation();
27
- }, ...(ngDevMode ? [{ debugName: "navigationData" }] : /* istanbul ignore next */ []));
28
- isMegaVariant() {
29
- return this.variant === 'mega';
30
- }
31
- onItemClicked(item) {
32
- if (item.id) {
33
- this._navigationService.setActiveItem(item.id);
34
- }
35
- getNavigationItemAction(item)?.(item);
36
- this.itemClicked.emit(item);
37
- }
38
- onRootBranchOpened(branch) {
39
- if (this._activeRootBranch && this._activeRootBranch !== branch) {
40
- this._activeRootBranch.closeMenu();
41
- }
42
- this._activeRootBranch = branch;
43
- }
44
- onRootBranchClosed(branch) {
45
- if (this._activeRootBranch === branch) {
46
- this._activeRootBranch = null;
47
- }
48
- }
49
- shouldRenderItem(item) {
50
- return shouldRenderNavigationItem(item);
51
- }
52
- hasChildren(item) {
53
- return hasNavigationChildren(item);
54
- }
55
- getFlatNavigation() {
56
- return this._navigationService.getFlatNavigation(this.navigationData());
57
- }
58
- getItem(id) {
59
- return this._navigationService.getItem(id, this.navigationData());
60
- }
61
- getItemParent(id) {
62
- return this._navigationService.getItemParent(id, this.navigationData(), this.navigationData());
63
- }
64
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
65
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.8", type: HorizontalNavigationBaseComponent, isStandalone: true, inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked" }, ngImport: i0 });
66
- }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationBaseComponent, decorators: [{
68
- type: Directive
69
- }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], navigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigation", required: false }] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }] } });
70
-
71
- class HorizontalNavigationBranchItem {
72
- _menuTrigger;
73
- _rootTrigger;
74
- _activeChildBranch = null;
75
- _document = inject(DOCUMENT);
76
- isMenuOpen = signal(false, ...(ngDevMode ? [{ debugName: "isMenuOpen" }] : /* istanbul ignore next */ []));
77
- expandedInlineBranchByParent = signal({}, ...(ngDevMode ? [{ debugName: "expandedInlineBranchByParent" }] : /* istanbul ignore next */ []));
78
- item = input.required(...(ngDevMode ? [{ debugName: "item" }] : /* istanbul ignore next */ []));
79
- menuItem = input(false, ...(ngDevMode ? [{ debugName: "menuItem" }] : /* istanbul ignore next */ []));
80
- nested = input(false, ...(ngDevMode ? [{ debugName: "nested" }] : /* istanbul ignore next */ []));
81
- variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
82
- itemClicked = output();
83
- branchOpened = output();
84
- branchClosed = output();
85
- itemChildren = computed(() => this.item().children ?? [], ...(ngDevMode ? [{ debugName: "itemChildren" }] : /* istanbul ignore next */ []));
86
- treeTemplateData = computed(() => ({ inlineBranch: !this.menuItem() }), ...(ngDevMode ? [{ debugName: "treeTemplateData" }] : /* istanbul ignore next */ []));
87
- treeTrackByFn = trackNavigationTreeItem;
88
- treeShouldRenderItemFn = shouldRenderNavigationItem;
89
- treeHasChildrenFn = hasNavigationChildren;
90
- treeResolveParentKeyFn = getNavigationTreePathKey;
91
- menuPanelClass = computed(() => {
92
- const nestingClass = this.menuItem() ? 'horizontal-navigation-menu--nested' : 'horizontal-navigation-menu--root';
93
- const variantClass = this.variant() === 'mega' ? 'horizontal-navigation-menu--mega' : 'horizontal-navigation-menu--default';
94
- return `horizontal-navigation-menu ${nestingClass} ${variantClass}`;
95
- }, ...(ngDevMode ? [{ debugName: "menuPanelClass" }] : /* istanbul ignore next */ []));
96
- hasChildren(item) {
97
- return hasNavigationChildren(item);
98
- }
99
- shouldRenderItem(item) {
100
- return shouldRenderNavigationItem(item);
101
- }
102
- trackByFn(index, item) {
103
- return trackNavigationTreeItem(index, item) ?? index;
104
- }
105
- onMenuItemTriggerClick(event) {
106
- event.stopPropagation();
107
- }
108
- onChildItemClicked(child) {
109
- this.itemClicked.emit(child);
110
- }
111
- isInlineBranchExpanded(item, parentKey) {
112
- return isNavigationTreeItemExpanded(this.expandedInlineBranchByParent(), parentKey, item);
113
- }
114
- toggleInlineBranch(item, parentKey) {
115
- this.expandedInlineBranchByParent.update((current) => toggleNavigationTreeItemExpanded(current, parentKey, item));
116
- }
117
- onInlineBranchHeaderClick(event, item, parentKey) {
118
- event.preventDefault();
119
- event.stopPropagation();
120
- this.toggleInlineBranch(item, parentKey);
121
- }
122
- getPathKey(parentKey, item) {
123
- return getNavigationTreePathKey(parentKey, item);
124
- }
125
- onChildBranchOpened(branch) {
126
- if (this._activeChildBranch && this._activeChildBranch !== branch) {
127
- this._activeChildBranch.closeMenu();
128
- }
129
- this._activeChildBranch = branch;
130
- }
131
- onChildBranchClosed(branch) {
132
- if (this._activeChildBranch === branch) {
133
- this._activeChildBranch = null;
134
- }
135
- }
136
- handleMenuOpened() {
137
- this.isMenuOpen.set(true);
138
- this._syncRootTriggerWidth();
139
- this.branchOpened.emit(this);
140
- }
141
- handleMenuClosed() {
142
- this.isMenuOpen.set(false);
143
- this._activeChildBranch?.closeMenu();
144
- this._activeChildBranch = null;
145
- this.branchClosed.emit(this);
146
- }
147
- closeMenu() {
148
- this.isMenuOpen.set(false);
149
- this._activeChildBranch?.closeMenu();
150
- this._activeChildBranch = null;
151
- this._menuTrigger?.closeMenu();
152
- }
153
- _syncRootTriggerWidth() {
154
- if (this.menuItem()) {
155
- return;
156
- }
157
- const width = this._rootTrigger?.nativeElement.offsetWidth;
158
- if (!width) {
159
- return;
160
- }
161
- this._document.documentElement.style.setProperty('--horizontal-navigation-root-trigger-width', `${width}px`);
162
- }
163
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationBranchItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
164
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HorizontalNavigationBranchItem, isStandalone: true, selector: "horizontal-navigation-branch-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, menuItem: { classPropertyName: "menuItem", publicName: "menuItem", isSignal: true, isRequired: false, transformFunction: null }, nested: { classPropertyName: "nested", publicName: "nested", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked", branchOpened: "branchOpened", branchClosed: "branchClosed" }, viewQueries: [{ propertyName: "_menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }, { propertyName: "_rootTrigger", first: true, predicate: ["rootTrigger"], descendants: true }], ngImport: i0, template: `
165
- @if (menuItem()) {
166
- <button
167
- type="button"
168
- mat-menu-item
169
- class="horizontal-navigation-menu-entry horizontal-navigation-menu-entry--branch"
170
- [class.horizontal-navigation-menu-entry--nested]="nested()"
171
- [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
172
- [class.horizontal-navigation-menu-entry--open]="isMenuOpen()"
173
- [matMenuTriggerFor]="matMenu"
174
- [matMenuTriggerRestoreFocus]="false"
175
- (click)="onMenuItemTriggerClick($event)"
176
- (menuOpened)="handleMenuOpened()"
177
- (menuClosed)="handleMenuClosed()">
178
- <ng-container
179
- [ngTemplateOutlet]="itemBody"
180
- [ngTemplateOutletContext]="{ $implicit: item(), level: nested() ? 1 : 0 }"></ng-container>
181
- <span class="horizontal-navigation-item-dot" aria-hidden="true"></span>
182
- </button>
183
- } @else {
184
- <button
185
- type="button"
186
- #rootTrigger
187
- class="horizontal-navigation-root-trigger"
188
- [class.horizontal-navigation-root-trigger--mega]="variant() === 'mega'"
189
- [class.horizontal-navigation-root-trigger--open]="isMenuOpen()"
190
- [matMenuTriggerFor]="matMenu"
191
- [matMenuTriggerRestoreFocus]="false"
192
- (menuOpened)="handleMenuOpened()"
193
- (menuClosed)="handleMenuClosed()">
194
- <ng-container
195
- [ngTemplateOutlet]="itemBody"
196
- [ngTemplateOutletContext]="{ $implicit: item(), level: 0 }"></ng-container>
197
- <span class="horizontal-navigation-item-dot" aria-hidden="true"></span>
198
- </button>
199
- }
200
-
201
- <mat-menu
202
- #matMenu="matMenu"
203
- [class]="menuPanelClass()"
204
- [hasBackdrop]="!menuItem()"
205
- [overlapTrigger]="false"
206
- xPosition="after"
207
- yPosition="below">
208
- <navigation-tree-outlet
209
- [items]="itemChildren()"
210
- [level]="0"
211
- [parentKey]="getPathKey('root', item())"
212
- [data]="treeTemplateData()"
213
- [branchTemplate]="branchItem"
214
- [leafTemplate]="leafItem"
215
- [groupTemplate]="groupItem"
216
- [dividerTemplate]="dividerItem"
217
- [spacerTemplate]="spacerItem"
218
- [trackByFn]="treeTrackByFn"
219
- [shouldRenderItemFn]="treeShouldRenderItemFn"
220
- [hasChildrenFn]="treeHasChildrenFn"
221
- [resolveParentKeyFn]="treeResolveParentKeyFn" />
222
- </mat-menu>
223
-
224
- <ng-template #branchItem let-child let-level="level" let-parentKey="parentKey" let-isLast="isLast" let-data="data">
225
- @if (data?.['inlineBranch']) {
226
- <ng-container
227
- [ngTemplateOutlet]="inlineBranchItem"
228
- [ngTemplateOutletContext]="{
229
- $implicit: child,
230
- level: level,
231
- parentKey: parentKey,
232
- isLast: isLast,
233
- }"></ng-container>
234
- } @else {
235
- <horizontal-navigation-branch-item
236
- [item]="child"
237
- [menuItem]="true"
238
- [nested]="level > 0"
239
- [variant]="variant()"
240
- (itemClicked)="onChildItemClicked($event)"
241
- (branchOpened)="onChildBranchOpened($event)"
242
- (branchClosed)="onChildBranchClosed($event)" />
243
- }
244
- </ng-template>
245
-
246
- <ng-template #groupItem let-child let-level="level" let-isLast="isLast">
247
- <div
248
- class="horizontal-navigation-group-label"
249
- [class.horizontal-navigation-group-label--nested]="level > 0"
250
- [class.horizontal-navigation-group-label--last]="isLast"
251
- [style.--horizontal-navigation-item-level]="level">
252
- {{ child.title }}
253
- </div>
254
- </ng-template>
255
-
256
- <ng-template #dividerItem>
257
- <mat-divider class="horizontal-navigation-divider"></mat-divider>
258
- </ng-template>
259
-
260
- <ng-template #spacerItem></ng-template>
261
-
262
- <ng-template #inlineBranchItem let-child let-level="level" let-parentKey="parentKey" let-isLast="isLast">
263
- <div
264
- class="horizontal-navigation-inline-branch"
265
- [class.horizontal-navigation-inline-branch--nested]="level > 0"
266
- [class.horizontal-navigation-inline-branch--expanded]="isInlineBranchExpanded(child, parentKey)"
267
- [class.horizontal-navigation-inline-branch--last]="isLast"
268
- [style.--horizontal-navigation-item-level]="level">
269
- <button
270
- type="button"
271
- class="horizontal-navigation-inline-branch-header"
272
- [class.horizontal-navigation-inline-branch-header--mega]="variant() === 'mega'"
273
- [title]="child.tooltip"
274
- [attr.aria-expanded]="isInlineBranchExpanded(child, parentKey)"
275
- (click)="onInlineBranchHeaderClick($event, child, parentKey)">
276
- <ng-container
277
- [ngTemplateOutlet]="itemBody"
278
- [ngTemplateOutletContext]="{ $implicit: child, level: level }"></ng-container>
279
- <span class="horizontal-navigation-inline-branch-dot" aria-hidden="true"></span>
280
- </button>
281
-
282
- @if (isInlineBranchExpanded(child, parentKey)) {
283
- <div
284
- class="horizontal-navigation-inline-branch-children"
285
- [style.--horizontal-navigation-child-level]="level + 1">
286
- <navigation-tree-outlet
287
- [items]="child.children || []"
288
- [level]="level + 1"
289
- [parentKey]="getPathKey(parentKey, child)"
290
- [data]="treeTemplateData()"
291
- [branchTemplate]="branchItem"
292
- [leafTemplate]="leafItem"
293
- [groupTemplate]="groupItem"
294
- [dividerTemplate]="dividerItem"
295
- [spacerTemplate]="spacerItem"
296
- [trackByFn]="treeTrackByFn"
297
- [shouldRenderItemFn]="treeShouldRenderItemFn"
298
- [hasChildrenFn]="treeHasChildrenFn"
299
- [resolveParentKeyFn]="treeResolveParentKeyFn" />
300
- </div>
301
- }
302
- </div>
303
- </ng-template>
304
-
305
- <ng-template #leafItem let-child let-level="level" let-isLast="isLast">
306
- @if (child.link && !child.externalLink) {
307
- <a
308
- mat-menu-item
309
- [routerLink]="child.link"
310
- [title]="child.tooltip"
311
- class="horizontal-navigation-menu-entry"
312
- [class.horizontal-navigation-menu-entry--nested]="level > 0"
313
- [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
314
- [class.horizontal-navigation-menu-entry--last]="isLast"
315
- [style.--horizontal-navigation-item-level]="level"
316
- (click)="onChildItemClicked(child)">
317
- <ng-container
318
- [ngTemplateOutlet]="itemBody"
319
- [ngTemplateOutletContext]="{ $implicit: child, level: level }"></ng-container>
320
- </a>
321
- } @else if (child.link && child.externalLink) {
322
- <a
323
- mat-menu-item
324
- [href]="child.link"
325
- [target]="child.target || '_blank'"
326
- [title]="child.tooltip"
327
- class="horizontal-navigation-menu-entry"
328
- [class.horizontal-navigation-menu-entry--nested]="level > 0"
329
- [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
330
- [class.horizontal-navigation-menu-entry--last]="isLast"
331
- [style.--horizontal-navigation-item-level]="level"
332
- (click)="onChildItemClicked(child)">
333
- <ng-container
334
- [ngTemplateOutlet]="itemBody"
335
- [ngTemplateOutletContext]="{ $implicit: child, level: level }"></ng-container>
336
- </a>
337
- } @else {
338
- <button
339
- type="button"
340
- mat-menu-item
341
- class="horizontal-navigation-menu-entry"
342
- [class.horizontal-navigation-menu-entry--nested]="level > 0"
343
- [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
344
- [class.horizontal-navigation-menu-entry--last]="isLast"
345
- [style.--horizontal-navigation-item-level]="level"
346
- [title]="child.tooltip"
347
- (click)="onChildItemClicked(child)">
348
- <ng-container
349
- [ngTemplateOutlet]="itemBody"
350
- [ngTemplateOutletContext]="{ $implicit: child, level: level }"></ng-container>
351
- </button>
352
- }
353
- </ng-template>
354
-
355
- <ng-template #itemBody let-currentItem let-level="level">
356
- <navigation-item-content [item]="currentItem" [level]="level" variant="horizontal"></navigation-item-content>
357
- </ng-template>
358
- `, isInline: true, styles: [".horizontal-navigation-menu.mat-mdc-menu-panel{min-width:280px;max-width:360px;overflow:hidden;border:1px solid var(--border);border-radius:1rem;background:var(--popover);color:var(--popover-foreground);font-family:var(--nav-font-family);box-shadow:0 18px 48px #0f172a29,0 6px 18px #0f172a1a}.horizontal-navigation-menu--root.mat-mdc-menu-panel{margin-top:.5rem;position:relative;border-radius:1rem;overflow:hidden}.horizontal-navigation-menu--root.mat-mdc-menu-panel:before{display:none}.horizontal-navigation-menu--nested.mat-mdc-menu-panel{margin-left:.5rem}.horizontal-navigation-menu--mega.mat-mdc-menu-panel{min-width:22rem;max-width:min(42rem,calc(100vw - 2rem));border-radius:1.25rem}.horizontal-navigation-menu .mat-mdc-menu-content{padding:.5rem 0;background:var(--popover)}.horizontal-navigation-menu--mega .mat-mdc-menu-content{padding:.75rem}.horizontal-navigation-menu .mat-mdc-menu-item{min-height:3rem;line-height:normal;color:inherit;background:transparent}.horizontal-navigation-menu .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center;width:100%;min-width:0;gap:.75rem}.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-submenu-trigger .mat-mdc-menu-submenu-icon{display:none}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;border:0;border-radius:0;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-menu-entry{display:flex;align-items:center;width:100%;gap:.875rem;border-radius:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger{position:relative;padding:0 .875rem 0 0;white-space:nowrap}.horizontal-navigation-menu-entry{box-sizing:border-box;padding:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight)}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger--mega{min-height:3rem;padding-right:1rem}.horizontal-navigation-menu-entry--mega{min-height:3.25rem;padding:.875rem;border-radius:.875rem}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-program-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-keyboard-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-highlighted{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:transparent;color:inherit}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open{z-index:1101;border-color:transparent;padding-bottom:0;background:transparent;color:inherit;box-shadow:none}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:hover,.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:focus-visible{background:transparent;color:inherit}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.875rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading--nested:before{content:\"\";width:.875rem;min-width:.875rem;border-top:1px dashed var(--border);opacity:.9}.horizontal-navigation-item-icon{width:1.125rem;height:1.125rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-word}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.1875rem .5rem;border-radius:9999px;font-size:.75rem;line-height:1rem;font-weight:500;flex-shrink:0}.horizontal-navigation-item-dot,.horizontal-navigation-inline-branch-dot{margin-left:auto;width:.5rem;height:.5rem;flex-shrink:0;border-radius:9999px;background:#9ca3af;opacity:.85;transition:background-color .18s ease,opacity .18s ease,transform .18s ease}.horizontal-navigation-inline-branch{padding:.125rem 0}.horizontal-navigation-inline-branch-header{display:flex;align-items:center;width:100%;box-sizing:border-box;padding:.875rem .75rem .375rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:var(--foreground);background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-inline-branch-header:hover,.horizontal-navigation-inline-branch-header:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-inline-branch-header--mega{padding-top:1rem;padding-bottom:.5rem;border-radius:.875rem}.horizontal-navigation-inline-branch--nested .horizontal-navigation-inline-branch-header{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open .horizontal-navigation-item-dot,.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--open .horizontal-navigation-item-dot,.horizontal-navigation-inline-branch--expanded>.horizontal-navigation-inline-branch-header .horizontal-navigation-inline-branch-dot{background:#16a34a;opacity:1;transform:scale(1.1)}.horizontal-navigation-inline-branch-header:hover .horizontal-navigation-inline-branch-dot,.horizontal-navigation-menu .horizontal-navigation-menu-entry--branch:hover .horizontal-navigation-item-dot,.horizontal-navigation-root-trigger:hover .horizontal-navigation-item-dot{opacity:1}.horizontal-navigation-inline-branch-children{position:relative;display:block;overflow:hidden;padding-left:0;padding-bottom:.25rem}.horizontal-navigation-inline-branch-children:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-child-level, 1) - 1) * 1rem));top:-.25rem;bottom:0;border-left:1px dashed color-mix(in srgb,var(--border) 82%,transparent);pointer-events:none}.horizontal-navigation-group-label{padding:.875rem .75rem .375rem;font-size:var(--nav-group-title-font-size);line-height:var(--nav-group-title-line-height);font-weight:var(--nav-group-title-font-weight);text-transform:uppercase;letter-spacing:var(--nav-group-title-letter-spacing);color:var(--muted-foreground)}.horizontal-navigation-group-label--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-group-label--nested:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);width:.875rem;border-top:1px dashed var(--border);transform:translateY(-50%);pointer-events:none}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested.horizontal-navigation-menu-entry--last:after,.horizontal-navigation-group-label--nested.horizontal-navigation-group-label--last:after,.horizontal-navigation-inline-branch--nested.horizontal-navigation-inline-branch--last:not(.horizontal-navigation-inline-branch--expanded) .horizontal-navigation-inline-branch-header:after{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);bottom:-.5rem;width:2px;background:var(--popover);transform:translate(-50%);pointer-events:none}.horizontal-navigation-menu .horizontal-navigation-divider{margin:.375rem 0;border-top-color:var(--border)}.cdk-overlay-pane .horizontal-navigation-menu.mat-mdc-menu-panel{z-index:1000}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => HorizontalNavigationBranchItem), selector: "horizontal-navigation-branch-item", inputs: ["item", "menuItem", "nested", "variant"], outputs: ["itemClicked", "branchOpened", "branchClosed"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatMenuModule) }, { kind: "component", type: i0.forwardRef(() => i1.MatMenu), selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(() => i1.MatMenuItem), selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(() => i1.MatMenuTrigger), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDividerModule) }, { kind: "component", type: i0.forwardRef(() => i2.MatDivider), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i0.forwardRef(() => RouterLink), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => NavigationItemContent), selector: "navigation-item-content", inputs: ["item", "level", "variant"] }, { kind: "component", type: i0.forwardRef(() => NavigationTreeOutlet), selector: "navigation-tree-outlet", inputs: ["items", "level", "parentKey", "data", "branchTemplate", "leafTemplate", "groupTemplate", "dividerTemplate", "spacerTemplate", "trackByFn", "shouldRenderItemFn", "hasChildrenFn", "resolveParentKeyFn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
359
- }
360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationBranchItem, decorators: [{
361
- type: Component,
362
- args: [{ selector: 'horizontal-navigation-branch-item', template: `
363
- @if (menuItem()) {
364
- <button
365
- type="button"
366
- mat-menu-item
367
- class="horizontal-navigation-menu-entry horizontal-navigation-menu-entry--branch"
368
- [class.horizontal-navigation-menu-entry--nested]="nested()"
369
- [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
370
- [class.horizontal-navigation-menu-entry--open]="isMenuOpen()"
371
- [matMenuTriggerFor]="matMenu"
372
- [matMenuTriggerRestoreFocus]="false"
373
- (click)="onMenuItemTriggerClick($event)"
374
- (menuOpened)="handleMenuOpened()"
375
- (menuClosed)="handleMenuClosed()">
376
- <ng-container
377
- [ngTemplateOutlet]="itemBody"
378
- [ngTemplateOutletContext]="{ $implicit: item(), level: nested() ? 1 : 0 }"></ng-container>
379
- <span class="horizontal-navigation-item-dot" aria-hidden="true"></span>
380
- </button>
381
- } @else {
382
- <button
383
- type="button"
384
- #rootTrigger
385
- class="horizontal-navigation-root-trigger"
386
- [class.horizontal-navigation-root-trigger--mega]="variant() === 'mega'"
387
- [class.horizontal-navigation-root-trigger--open]="isMenuOpen()"
388
- [matMenuTriggerFor]="matMenu"
389
- [matMenuTriggerRestoreFocus]="false"
390
- (menuOpened)="handleMenuOpened()"
391
- (menuClosed)="handleMenuClosed()">
392
- <ng-container
393
- [ngTemplateOutlet]="itemBody"
394
- [ngTemplateOutletContext]="{ $implicit: item(), level: 0 }"></ng-container>
395
- <span class="horizontal-navigation-item-dot" aria-hidden="true"></span>
396
- </button>
397
- }
398
-
399
- <mat-menu
400
- #matMenu="matMenu"
401
- [class]="menuPanelClass()"
402
- [hasBackdrop]="!menuItem()"
403
- [overlapTrigger]="false"
404
- xPosition="after"
405
- yPosition="below">
406
- <navigation-tree-outlet
407
- [items]="itemChildren()"
408
- [level]="0"
409
- [parentKey]="getPathKey('root', item())"
410
- [data]="treeTemplateData()"
411
- [branchTemplate]="branchItem"
412
- [leafTemplate]="leafItem"
413
- [groupTemplate]="groupItem"
414
- [dividerTemplate]="dividerItem"
415
- [spacerTemplate]="spacerItem"
416
- [trackByFn]="treeTrackByFn"
417
- [shouldRenderItemFn]="treeShouldRenderItemFn"
418
- [hasChildrenFn]="treeHasChildrenFn"
419
- [resolveParentKeyFn]="treeResolveParentKeyFn" />
420
- </mat-menu>
421
-
422
- <ng-template #branchItem let-child let-level="level" let-parentKey="parentKey" let-isLast="isLast" let-data="data">
423
- @if (data?.['inlineBranch']) {
424
- <ng-container
425
- [ngTemplateOutlet]="inlineBranchItem"
426
- [ngTemplateOutletContext]="{
427
- $implicit: child,
428
- level: level,
429
- parentKey: parentKey,
430
- isLast: isLast,
431
- }"></ng-container>
432
- } @else {
433
- <horizontal-navigation-branch-item
434
- [item]="child"
435
- [menuItem]="true"
436
- [nested]="level > 0"
437
- [variant]="variant()"
438
- (itemClicked)="onChildItemClicked($event)"
439
- (branchOpened)="onChildBranchOpened($event)"
440
- (branchClosed)="onChildBranchClosed($event)" />
441
- }
442
- </ng-template>
443
-
444
- <ng-template #groupItem let-child let-level="level" let-isLast="isLast">
445
- <div
446
- class="horizontal-navigation-group-label"
447
- [class.horizontal-navigation-group-label--nested]="level > 0"
448
- [class.horizontal-navigation-group-label--last]="isLast"
449
- [style.--horizontal-navigation-item-level]="level">
450
- {{ child.title }}
451
- </div>
452
- </ng-template>
453
-
454
- <ng-template #dividerItem>
455
- <mat-divider class="horizontal-navigation-divider"></mat-divider>
456
- </ng-template>
457
-
458
- <ng-template #spacerItem></ng-template>
459
-
460
- <ng-template #inlineBranchItem let-child let-level="level" let-parentKey="parentKey" let-isLast="isLast">
461
- <div
462
- class="horizontal-navigation-inline-branch"
463
- [class.horizontal-navigation-inline-branch--nested]="level > 0"
464
- [class.horizontal-navigation-inline-branch--expanded]="isInlineBranchExpanded(child, parentKey)"
465
- [class.horizontal-navigation-inline-branch--last]="isLast"
466
- [style.--horizontal-navigation-item-level]="level">
467
- <button
468
- type="button"
469
- class="horizontal-navigation-inline-branch-header"
470
- [class.horizontal-navigation-inline-branch-header--mega]="variant() === 'mega'"
471
- [title]="child.tooltip"
472
- [attr.aria-expanded]="isInlineBranchExpanded(child, parentKey)"
473
- (click)="onInlineBranchHeaderClick($event, child, parentKey)">
474
- <ng-container
475
- [ngTemplateOutlet]="itemBody"
476
- [ngTemplateOutletContext]="{ $implicit: child, level: level }"></ng-container>
477
- <span class="horizontal-navigation-inline-branch-dot" aria-hidden="true"></span>
478
- </button>
479
-
480
- @if (isInlineBranchExpanded(child, parentKey)) {
481
- <div
482
- class="horizontal-navigation-inline-branch-children"
483
- [style.--horizontal-navigation-child-level]="level + 1">
484
- <navigation-tree-outlet
485
- [items]="child.children || []"
486
- [level]="level + 1"
487
- [parentKey]="getPathKey(parentKey, child)"
488
- [data]="treeTemplateData()"
489
- [branchTemplate]="branchItem"
490
- [leafTemplate]="leafItem"
491
- [groupTemplate]="groupItem"
492
- [dividerTemplate]="dividerItem"
493
- [spacerTemplate]="spacerItem"
494
- [trackByFn]="treeTrackByFn"
495
- [shouldRenderItemFn]="treeShouldRenderItemFn"
496
- [hasChildrenFn]="treeHasChildrenFn"
497
- [resolveParentKeyFn]="treeResolveParentKeyFn" />
498
- </div>
499
- }
500
- </div>
501
- </ng-template>
502
-
503
- <ng-template #leafItem let-child let-level="level" let-isLast="isLast">
504
- @if (child.link && !child.externalLink) {
505
- <a
506
- mat-menu-item
507
- [routerLink]="child.link"
508
- [title]="child.tooltip"
509
- class="horizontal-navigation-menu-entry"
510
- [class.horizontal-navigation-menu-entry--nested]="level > 0"
511
- [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
512
- [class.horizontal-navigation-menu-entry--last]="isLast"
513
- [style.--horizontal-navigation-item-level]="level"
514
- (click)="onChildItemClicked(child)">
515
- <ng-container
516
- [ngTemplateOutlet]="itemBody"
517
- [ngTemplateOutletContext]="{ $implicit: child, level: level }"></ng-container>
518
- </a>
519
- } @else if (child.link && child.externalLink) {
520
- <a
521
- mat-menu-item
522
- [href]="child.link"
523
- [target]="child.target || '_blank'"
524
- [title]="child.tooltip"
525
- class="horizontal-navigation-menu-entry"
526
- [class.horizontal-navigation-menu-entry--nested]="level > 0"
527
- [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
528
- [class.horizontal-navigation-menu-entry--last]="isLast"
529
- [style.--horizontal-navigation-item-level]="level"
530
- (click)="onChildItemClicked(child)">
531
- <ng-container
532
- [ngTemplateOutlet]="itemBody"
533
- [ngTemplateOutletContext]="{ $implicit: child, level: level }"></ng-container>
534
- </a>
535
- } @else {
536
- <button
537
- type="button"
538
- mat-menu-item
539
- class="horizontal-navigation-menu-entry"
540
- [class.horizontal-navigation-menu-entry--nested]="level > 0"
541
- [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
542
- [class.horizontal-navigation-menu-entry--last]="isLast"
543
- [style.--horizontal-navigation-item-level]="level"
544
- [title]="child.tooltip"
545
- (click)="onChildItemClicked(child)">
546
- <ng-container
547
- [ngTemplateOutlet]="itemBody"
548
- [ngTemplateOutletContext]="{ $implicit: child, level: level }"></ng-container>
549
- </button>
550
- }
551
- </ng-template>
552
-
553
- <ng-template #itemBody let-currentItem let-level="level">
554
- <navigation-item-content [item]="currentItem" [level]="level" variant="horizontal"></navigation-item-content>
555
- </ng-template>
556
- `, imports: [
557
- MatMenuModule,
558
- MatDividerModule,
559
- RouterLink,
560
- NgTemplateOutlet,
561
- NavigationItemContent,
562
- NavigationTreeOutlet,
563
- forwardRef(() => HorizontalNavigationBranchItem),
564
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".horizontal-navigation-menu.mat-mdc-menu-panel{min-width:280px;max-width:360px;overflow:hidden;border:1px solid var(--border);border-radius:1rem;background:var(--popover);color:var(--popover-foreground);font-family:var(--nav-font-family);box-shadow:0 18px 48px #0f172a29,0 6px 18px #0f172a1a}.horizontal-navigation-menu--root.mat-mdc-menu-panel{margin-top:.5rem;position:relative;border-radius:1rem;overflow:hidden}.horizontal-navigation-menu--root.mat-mdc-menu-panel:before{display:none}.horizontal-navigation-menu--nested.mat-mdc-menu-panel{margin-left:.5rem}.horizontal-navigation-menu--mega.mat-mdc-menu-panel{min-width:22rem;max-width:min(42rem,calc(100vw - 2rem));border-radius:1.25rem}.horizontal-navigation-menu .mat-mdc-menu-content{padding:.5rem 0;background:var(--popover)}.horizontal-navigation-menu--mega .mat-mdc-menu-content{padding:.75rem}.horizontal-navigation-menu .mat-mdc-menu-item{min-height:3rem;line-height:normal;color:inherit;background:transparent}.horizontal-navigation-menu .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center;width:100%;min-width:0;gap:.75rem}.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-submenu-trigger .mat-mdc-menu-submenu-icon{display:none}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;border:0;border-radius:0;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-menu-entry{display:flex;align-items:center;width:100%;gap:.875rem;border-radius:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger{position:relative;padding:0 .875rem 0 0;white-space:nowrap}.horizontal-navigation-menu-entry{box-sizing:border-box;padding:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight)}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger--mega{min-height:3rem;padding-right:1rem}.horizontal-navigation-menu-entry--mega{min-height:3.25rem;padding:.875rem;border-radius:.875rem}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-program-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-keyboard-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-highlighted{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:transparent;color:inherit}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open{z-index:1101;border-color:transparent;padding-bottom:0;background:transparent;color:inherit;box-shadow:none}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:hover,.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:focus-visible{background:transparent;color:inherit}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.875rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading--nested:before{content:\"\";width:.875rem;min-width:.875rem;border-top:1px dashed var(--border);opacity:.9}.horizontal-navigation-item-icon{width:1.125rem;height:1.125rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-word}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.1875rem .5rem;border-radius:9999px;font-size:.75rem;line-height:1rem;font-weight:500;flex-shrink:0}.horizontal-navigation-item-dot,.horizontal-navigation-inline-branch-dot{margin-left:auto;width:.5rem;height:.5rem;flex-shrink:0;border-radius:9999px;background:#9ca3af;opacity:.85;transition:background-color .18s ease,opacity .18s ease,transform .18s ease}.horizontal-navigation-inline-branch{padding:.125rem 0}.horizontal-navigation-inline-branch-header{display:flex;align-items:center;width:100%;box-sizing:border-box;padding:.875rem .75rem .375rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:var(--foreground);background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-inline-branch-header:hover,.horizontal-navigation-inline-branch-header:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-inline-branch-header--mega{padding-top:1rem;padding-bottom:.5rem;border-radius:.875rem}.horizontal-navigation-inline-branch--nested .horizontal-navigation-inline-branch-header{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open .horizontal-navigation-item-dot,.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--open .horizontal-navigation-item-dot,.horizontal-navigation-inline-branch--expanded>.horizontal-navigation-inline-branch-header .horizontal-navigation-inline-branch-dot{background:#16a34a;opacity:1;transform:scale(1.1)}.horizontal-navigation-inline-branch-header:hover .horizontal-navigation-inline-branch-dot,.horizontal-navigation-menu .horizontal-navigation-menu-entry--branch:hover .horizontal-navigation-item-dot,.horizontal-navigation-root-trigger:hover .horizontal-navigation-item-dot{opacity:1}.horizontal-navigation-inline-branch-children{position:relative;display:block;overflow:hidden;padding-left:0;padding-bottom:.25rem}.horizontal-navigation-inline-branch-children:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-child-level, 1) - 1) * 1rem));top:-.25rem;bottom:0;border-left:1px dashed color-mix(in srgb,var(--border) 82%,transparent);pointer-events:none}.horizontal-navigation-group-label{padding:.875rem .75rem .375rem;font-size:var(--nav-group-title-font-size);line-height:var(--nav-group-title-line-height);font-weight:var(--nav-group-title-font-weight);text-transform:uppercase;letter-spacing:var(--nav-group-title-letter-spacing);color:var(--muted-foreground)}.horizontal-navigation-group-label--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-group-label--nested:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);width:.875rem;border-top:1px dashed var(--border);transform:translateY(-50%);pointer-events:none}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested.horizontal-navigation-menu-entry--last:after,.horizontal-navigation-group-label--nested.horizontal-navigation-group-label--last:after,.horizontal-navigation-inline-branch--nested.horizontal-navigation-inline-branch--last:not(.horizontal-navigation-inline-branch--expanded) .horizontal-navigation-inline-branch-header:after{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);bottom:-.5rem;width:2px;background:var(--popover);transform:translate(-50%);pointer-events:none}.horizontal-navigation-menu .horizontal-navigation-divider{margin:.375rem 0;border-top-color:var(--border)}.cdk-overlay-pane .horizontal-navigation-menu.mat-mdc-menu-panel{z-index:1000}\n"] }]
565
- }], propDecorators: { _menuTrigger: [{
566
- type: ViewChild,
567
- args: [MatMenuTrigger]
568
- }], _rootTrigger: [{
569
- type: ViewChild,
570
- args: ['rootTrigger']
571
- }], item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], menuItem: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuItem", required: false }] }], nested: [{ type: i0.Input, args: [{ isSignal: true, alias: "nested", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }], branchOpened: [{ type: i0.Output, args: ["branchOpened"] }], branchClosed: [{ type: i0.Output, args: ["branchClosed"] }] } });
572
-
573
- const HORIZONTAL_NAVIGATION_TEMPLATE = `
574
- <nav class="horizontal-navigation" [class.horizontal-navigation--mega]="isMegaVariant()">
575
- @if (navigationData()) {
576
- <div class="horizontal-navigation-items" [class.horizontal-navigation-items--mega]="isMegaVariant()">
577
- @for (item of navigationData(); track item.id || item.title) {
578
- @if (shouldRenderItem(item)) {
579
- @switch (item.type) {
580
- @case ('basic') {
581
- @if (item.link) {
582
- <a
583
- [routerLink]="item.link"
584
- [title]="item.tooltip"
585
- class="horizontal-navigation-root-trigger"
586
- [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
587
- (click)="onItemClicked(item)">
588
- <ng-container
589
- [ngTemplateOutlet]="itemBody"
590
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
591
- </a>
592
- } @else {
593
- <button
594
- type="button"
595
- class="horizontal-navigation-root-trigger"
596
- [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
597
- [title]="item.tooltip"
598
- (click)="onItemClicked(item)"
599
- (keydown.enter)="onItemClicked(item)"
600
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
601
- <ng-container
602
- [ngTemplateOutlet]="itemBody"
603
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
604
- </button>
605
- }
606
- }
607
-
608
- @case ('collapsable') {
609
- @if (hasChildren(item)) {
610
- <horizontal-navigation-branch-item
611
- [item]="item"
612
- [variant]="variant"
613
- (itemClicked)="onItemClicked($event)"
614
- (branchOpened)="onRootBranchOpened($event)"
615
- (branchClosed)="onRootBranchClosed($event)" />
616
- } @else {
617
- <button
618
- type="button"
619
- class="horizontal-navigation-root-trigger"
620
- [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
621
- [title]="item.tooltip"
622
- (click)="onItemClicked(item)"
623
- (keydown.enter)="onItemClicked(item)"
624
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
625
- <ng-container
626
- [ngTemplateOutlet]="itemBody"
627
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
628
- </button>
629
- }
630
- }
631
-
632
- @case ('group') {
633
- @if (hasChildren(item)) {
634
- <horizontal-navigation-branch-item
635
- [item]="item"
636
- [variant]="variant"
637
- (itemClicked)="onItemClicked($event)"
638
- (branchOpened)="onRootBranchOpened($event)"
639
- (branchClosed)="onRootBranchClosed($event)" />
640
- } @else {
641
- <button
642
- type="button"
643
- class="horizontal-navigation-root-trigger"
644
- [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
645
- [title]="item.tooltip"
646
- (click)="onItemClicked(item)"
647
- (keydown.enter)="onItemClicked(item)"
648
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
649
- <ng-container
650
- [ngTemplateOutlet]="itemBody"
651
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
652
- </button>
653
- }
654
- }
655
-
656
- @case ('divider') {
657
- <div class="h-6 w-px bg-border mx-2"></div>
658
- }
659
-
660
- @case ('spacer') {
661
- <div class="flex-1"></div>
662
- }
663
-
664
- @default {
665
- <button
666
- type="button"
667
- class="horizontal-navigation-root-trigger"
668
- [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
669
- [title]="item.tooltip"
670
- (click)="onItemClicked(item)"
671
- (keydown.enter)="onItemClicked(item)"
672
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
673
- <ng-container
674
- [ngTemplateOutlet]="itemBody"
675
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
676
- </button>
677
- }
678
- }
679
- }
680
- }
681
- </div>
682
- }
683
-
684
- <ng-template #itemBody let-currentItem>
685
- <navigation-item-content [item]="currentItem" variant="horizontal"></navigation-item-content>
686
- </ng-template>
687
- </nav>
688
- `;
689
- const HORIZONTAL_NAVIGATION_IMPORTS = [
690
- RouterLink,
691
- NgTemplateOutlet,
692
- NavigationItemContent,
693
- HorizontalNavigationBranchItem,
694
- ];
695
-
696
- class HorizontalNavigation extends HorizontalNavigationBaseComponent {
697
- variant = 'default';
698
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigation, deps: null, target: i0.ɵɵFactoryTarget.Component });
699
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HorizontalNavigation, isStandalone: true, selector: "horizontal-navigation", usesInheritance: true, ngImport: i0, 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", isInline: true, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.NavigationItemContent, selector: "navigation-item-content", inputs: ["item", "level", "variant"] }, { kind: "component", type: HorizontalNavigationBranchItem, selector: "horizontal-navigation-branch-item", inputs: ["item", "menuItem", "nested", "variant"], outputs: ["itemClicked", "branchOpened", "branchClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
700
- }
701
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigation, decorators: [{
702
- type: Component,
703
- args: [{ selector: 'horizontal-navigation', template: HORIZONTAL_NAVIGATION_TEMPLATE, changeDetection: ChangeDetectionStrategy.OnPush, imports: HORIZONTAL_NAVIGATION_IMPORTS, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n"] }]
704
- }] });
705
-
706
- class HorizontalNavigationMegaComponent extends HorizontalNavigationBaseComponent {
707
- variant = 'mega';
708
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationMegaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
709
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HorizontalNavigationMegaComponent, isStandalone: true, selector: "horizontal-navigation-mega", usesInheritance: true, ngImport: i0, 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", isInline: true, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n", ".horizontal-navigation{position:relative;overflow:hidden;padding:.5rem;border:1px solid color-mix(in srgb,var(--border) 80%,transparent);border-radius:1.25rem;background:linear-gradient(180deg,color-mix(in srgb,var(--card) 94%,white 6%),var(--card));box-shadow:0 20px 44px #0f172a1f,inset 0 1px #ffffff2e}.horizontal-navigation-items--mega{gap:.5rem;padding:.25rem}.horizontal-navigation-root-trigger--mega{min-height:3rem;padding:.75rem 1.25rem .75rem 1rem;border:1px solid transparent;border-radius:.875rem;background:color-mix(in srgb,var(--accent) 8%,transparent)}.horizontal-navigation-root-trigger--mega:hover,.horizontal-navigation-root-trigger--mega:focus-visible{border-color:color-mix(in srgb,var(--accent) 24%,transparent);background:color-mix(in srgb,var(--accent) 16%,transparent);color:inherit}.horizontal-navigation-root-trigger--mega .horizontal-navigation-item-label{font-weight:600}.horizontal-navigation-root-trigger--mega .horizontal-navigation-item-badge{padding-inline:.5rem;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 65%,transparent)}\n"], dependencies: [{ kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.NavigationItemContent, selector: "navigation-item-content", inputs: ["item", "level", "variant"] }, { kind: "component", type: HorizontalNavigationBranchItem, selector: "horizontal-navigation-branch-item", inputs: ["item", "menuItem", "nested", "variant"], outputs: ["itemClicked", "branchOpened", "branchClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
710
- }
711
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationMegaComponent, decorators: [{
712
- type: Component,
713
- args: [{ selector: 'horizontal-navigation-mega', template: HORIZONTAL_NAVIGATION_TEMPLATE, changeDetection: ChangeDetectionStrategy.OnPush, imports: HORIZONTAL_NAVIGATION_IMPORTS, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n", ".horizontal-navigation{position:relative;overflow:hidden;padding:.5rem;border:1px solid color-mix(in srgb,var(--border) 80%,transparent);border-radius:1.25rem;background:linear-gradient(180deg,color-mix(in srgb,var(--card) 94%,white 6%),var(--card));box-shadow:0 20px 44px #0f172a1f,inset 0 1px #ffffff2e}.horizontal-navigation-items--mega{gap:.5rem;padding:.25rem}.horizontal-navigation-root-trigger--mega{min-height:3rem;padding:.75rem 1.25rem .75rem 1rem;border:1px solid transparent;border-radius:.875rem;background:color-mix(in srgb,var(--accent) 8%,transparent)}.horizontal-navigation-root-trigger--mega:hover,.horizontal-navigation-root-trigger--mega:focus-visible{border-color:color-mix(in srgb,var(--accent) 24%,transparent);background:color-mix(in srgb,var(--accent) 16%,transparent);color:inherit}.horizontal-navigation-root-trigger--mega .horizontal-navigation-item-label{font-weight:600}.horizontal-navigation-root-trigger--mega .horizontal-navigation-item-badge{padding-inline:.5rem;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 65%,transparent)}\n"] }]
714
- }] });
715
-
716
- /**
717
- * Generated bundle index. Do not edit.
718
- */
719
-
720
- export { HorizontalNavigation, HorizontalNavigationBranchItem, HorizontalNavigationMegaComponent };
721
- //# sourceMappingURL=ojiepermana-angular-navigation-horizontal.mjs.map