@ojiepermana/angular 22.2.0 → 22.2.2

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 (129) hide show
  1. package/README.md +18 -7
  2. package/component/icon/README.md +40 -13
  3. package/fesm2022/ojiepermana-angular-chart-area.mjs +3 -3
  4. package/fesm2022/ojiepermana-angular-chart-bar.mjs +5 -5
  5. package/fesm2022/ojiepermana-angular-chart-core.mjs +33 -33
  6. package/fesm2022/ojiepermana-angular-chart-line.mjs +5 -5
  7. package/fesm2022/ojiepermana-angular-chart-pie.mjs +5 -5
  8. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +33 -33
  9. package/fesm2022/ojiepermana-angular-chart-radar.mjs +5 -5
  10. package/fesm2022/ojiepermana-angular-chart-radial.mjs +5 -5
  11. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +3 -3
  12. package/fesm2022/ojiepermana-angular-component-accordion.mjs +17 -17
  13. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +27 -27
  14. package/fesm2022/ojiepermana-angular-component-alert.mjs +12 -12
  15. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +3 -3
  16. package/fesm2022/ojiepermana-angular-component-avatar.mjs +18 -18
  17. package/fesm2022/ojiepermana-angular-component-badge.mjs +9 -9
  18. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +21 -21
  19. package/fesm2022/ojiepermana-angular-component-button-group.mjs +10 -10
  20. package/fesm2022/ojiepermana-angular-component-button.mjs +4 -4
  21. package/fesm2022/ojiepermana-angular-component-calendar.mjs +5 -5
  22. package/fesm2022/ojiepermana-angular-component-card.mjs +27 -24
  23. package/fesm2022/ojiepermana-angular-component-carousel.mjs +18 -18
  24. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +4 -4
  25. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +12 -12
  26. package/fesm2022/ojiepermana-angular-component-combobox.mjs +3 -3
  27. package/fesm2022/ojiepermana-angular-component-command.mjs +28 -28
  28. package/fesm2022/ojiepermana-angular-component-composer.mjs +22 -22
  29. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +3 -3
  30. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +5 -5
  31. package/fesm2022/ojiepermana-angular-component-dialog.mjs +22 -22
  32. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -2
  33. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +39 -39
  34. package/fesm2022/ojiepermana-angular-component-editor.mjs +21 -21
  35. package/fesm2022/ojiepermana-angular-component-empty.mjs +19 -19
  36. package/fesm2022/ojiepermana-angular-component-form.mjs +36 -36
  37. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +9 -9
  38. package/fesm2022/ojiepermana-angular-component-icon.mjs +114 -105
  39. package/fesm2022/ojiepermana-angular-component-input-group.mjs +19 -19
  40. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +16 -16
  41. package/fesm2022/ojiepermana-angular-component-input.mjs +6 -6
  42. package/fesm2022/ojiepermana-angular-component-item.mjs +31 -31
  43. package/fesm2022/ojiepermana-angular-component-kanban.mjs +29 -29
  44. package/fesm2022/ojiepermana-angular-component-kbd.mjs +7 -7
  45. package/fesm2022/ojiepermana-angular-component-label.mjs +3 -3
  46. package/fesm2022/ojiepermana-angular-component-menubar.mjs +13 -13
  47. package/fesm2022/ojiepermana-angular-component-native-select.mjs +14 -14
  48. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +21 -21
  49. package/fesm2022/ojiepermana-angular-component-pagination.mjs +3 -3
  50. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +16 -16
  51. package/fesm2022/ojiepermana-angular-component-popover.mjs +6 -6
  52. package/fesm2022/ojiepermana-angular-component-progress.mjs +3 -3
  53. package/fesm2022/ojiepermana-angular-component-radio.mjs +7 -7
  54. package/fesm2022/ojiepermana-angular-component-resizable.mjs +12 -12
  55. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +3 -3
  56. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +6 -8
  57. package/fesm2022/ojiepermana-angular-component-select.mjs +8 -8
  58. package/fesm2022/ojiepermana-angular-component-separator.mjs +3 -3
  59. package/fesm2022/ojiepermana-angular-component-sheet.mjs +41 -28
  60. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +3 -3
  61. package/fesm2022/ojiepermana-angular-component-slider.mjs +10 -10
  62. package/fesm2022/ojiepermana-angular-component-spinner.mjs +3 -3
  63. package/fesm2022/ojiepermana-angular-component-switch.mjs +4 -4
  64. package/fesm2022/ojiepermana-angular-component-table.mjs +24 -24
  65. package/fesm2022/ojiepermana-angular-component-tabs.mjs +18 -18
  66. package/fesm2022/ojiepermana-angular-component-textarea.mjs +6 -6
  67. package/fesm2022/ojiepermana-angular-component-timeline.mjs +19 -19
  68. package/fesm2022/ojiepermana-angular-component-toast.mjs +5 -5
  69. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +9 -9
  70. package/fesm2022/ojiepermana-angular-component-toggle.mjs +5 -5
  71. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +15 -15
  72. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +3 -3
  73. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +3 -3
  74. package/fesm2022/{ojiepermana-angular-navigation-navigation-badge-count.component-BKCeWzml.mjs → ojiepermana-angular-navigation-navigation-badge-count.component-4RIokl1C.mjs} +3 -3
  75. package/fesm2022/{ojiepermana-angular-navigation-navigation-dockbar-menu.component-DFEJK2jD.mjs → ojiepermana-angular-navigation-navigation-dockbar-menu.component-CGfu2V6f.mjs} +23 -15
  76. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-mpK9Ar08.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-zBCXDa4c.mjs} +38 -66
  77. package/fesm2022/{ojiepermana-angular-navigation-navigation-flyout-menu.component-BPgH7FJk.mjs → ojiepermana-angular-navigation-navigation-flyout-menu.component-DYkYIIHd.mjs} +14 -13
  78. package/fesm2022/{ojiepermana-angular-navigation-navigation-horizontal.component-DMpYcD9t.mjs → ojiepermana-angular-navigation-navigation-horizontal.component-LNTertHr.mjs} +5 -5
  79. package/fesm2022/{ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs → ojiepermana-angular-navigation-navigation-item.component-DiGOcizS.mjs} +42 -52
  80. package/fesm2022/{ojiepermana-angular-navigation-navigation-list.component-YUzHI9Pj.mjs → ojiepermana-angular-navigation-navigation-list.component-DB22Gl-5.mjs} +22 -6
  81. package/fesm2022/ojiepermana-angular-navigation-service.mjs +16 -6
  82. package/fesm2022/ojiepermana-angular-navigation-types.mjs +113 -1
  83. package/fesm2022/ojiepermana-angular-navigation.mjs +304 -93
  84. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +137 -72
  85. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +6 -6
  86. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +265 -49
  87. package/fesm2022/ojiepermana-angular-theme-layout.mjs +30 -30
  88. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +3 -3
  89. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +7 -7
  90. package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +3 -3
  91. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +8 -6
  92. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +7 -7
  93. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +12 -12
  94. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +3 -3
  95. package/fesm2022/ojiepermana-angular-theme-shell.mjs +16 -12
  96. package/fesm2022/ojiepermana-angular-theme-styles.mjs +17 -33
  97. package/navigation/README.md +70 -19
  98. package/package.json +3 -2
  99. package/theme/README.md +4 -10
  100. package/theme/page/README.md +2 -0
  101. package/theme/shell/README.md +5 -1
  102. package/theme/styles/README.md +32 -8
  103. package/theme/styles/css/base/components.css +13 -9
  104. package/theme/styles/css/base/tailwind.css +43 -0
  105. package/theme/styles/css/base/theme.css +4 -25
  106. package/theme/styles/css/base/tokens.css +21 -0
  107. package/theme/styles/css/fonts.css +85 -0
  108. package/types/ojiepermana-angular-chart-radar.d.ts +2 -1
  109. package/types/ojiepermana-angular-component-avatar.d.ts +2 -1
  110. package/types/ojiepermana-angular-component-calendar.d.ts +2 -1
  111. package/types/ojiepermana-angular-component-card.d.ts +7 -2
  112. package/types/ojiepermana-angular-component-command.d.ts +1 -1
  113. package/types/ojiepermana-angular-component-editor.d.ts +2 -1
  114. package/types/ojiepermana-angular-component-icon.d.ts +64 -79
  115. package/types/ojiepermana-angular-component-input-otp.d.ts +2 -1
  116. package/types/ojiepermana-angular-component-pillbox.d.ts +2 -1
  117. package/types/ojiepermana-angular-component-radio.d.ts +2 -1
  118. package/types/ojiepermana-angular-component-resizable.d.ts +2 -1
  119. package/types/ojiepermana-angular-component-segmented-control.d.ts +1 -1
  120. package/types/ojiepermana-angular-component-select.d.ts +2 -1
  121. package/types/ojiepermana-angular-navigation-service.d.ts +8 -0
  122. package/types/ojiepermana-angular-navigation-types.d.ts +48 -3
  123. package/types/ojiepermana-angular-navigation.d.ts +59 -8
  124. package/types/ojiepermana-angular-theme-component-settings.d.ts +5 -3
  125. package/types/ojiepermana-angular-theme-layout-services.d.ts +2 -1
  126. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +52 -4
  127. package/types/ojiepermana-angular-theme-page-root.d.ts +1 -1
  128. package/types/ojiepermana-angular-theme-shell-services.d.ts +2 -1
  129. package/types/ojiepermana-angular-theme-styles.d.ts +0 -12
@@ -1,13 +1,17 @@
1
- import { n as navigationPanelId, t as NavigationItemComponent } from "./ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs";
1
+ import { n as navigationPanelId, t as NavigationItemComponent } from "./ojiepermana-angular-navigation-navigation-item.component-DiGOcizS.mjs";
2
2
  import * as i0 from "@angular/core";
3
3
  import { Component, computed, inject, input, output, signal } from "@angular/core";
4
- import { RouterLink, RouterLinkActive } from "@angular/router";
4
+ import { ActivatedRoute, Router, RouterLink } from "@angular/router";
5
5
  import { cn } from "@ojiepermana/angular/component/utils/core";
6
- import { NAVIGATION_ADAPTER } from "@ojiepermana/angular/navigation/core";
6
+ import { NAVIGATION_ADAPTER, NAVIGATION_ROUTE_CONTEXT_ADAPTER } from "@ojiepermana/angular/navigation/core";
7
7
  import { NgTemplateOutlet } from "@angular/common";
8
- import { IconComponent } from "@ojiepermana/angular/component/icon";
8
+ import { LucideChevronRight } from "@lucide/angular";
9
+ import { IconComponent, provideIcons } from "@ojiepermana/angular/component/icon";
9
10
  var NavigationEntryGridComponent = class NavigationEntryGridComponent {
10
11
  nav = inject(NAVIGATION_ADAPTER);
12
+ routeContext = inject(NAVIGATION_ROUTE_CONTEXT_ADAPTER);
13
+ router = inject(Router, { optional: true });
14
+ activatedRoute = inject(ActivatedRoute, { optional: true });
11
15
  navId = input("default", ...ngDevMode ? [{ debugName: "navId" }] : /* istanbul ignore next */ []);
12
16
  branch = input.required(...ngDevMode ? [{ debugName: "branch" }] : /* istanbul ignore next */ []);
13
17
  typeStyle = input("flat", ...ngDevMode ? [{ debugName: "typeStyle" }] : /* istanbul ignore next */ []);
@@ -28,12 +32,20 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
28
32
  const navId = this.navId();
29
33
  return new Map(this.branch().children.map((child) => [child, {
30
34
  active: this.nav.isItemActive(child, activeIds, activeUrl),
35
+ routeActive: this.nav.isRouterItem(child) && this.isRouteActive(child),
31
36
  panelId: navigationPanelId(navId, child)
32
37
  }]));
33
38
  }, ...ngDevMode ? [{ debugName: "entryState" }] : /* istanbul ignore next */ []);
34
39
  isItemActive(item) {
35
40
  return this.entryState().get(item)?.active ?? this.nav.isItemActive(item, this.activeIds(), this.activeUrl());
36
41
  }
42
+ isRouterEntryActive(item) {
43
+ return (this.entryState().get(item)?.routeActive ?? this.isRouteActive(item)) || this.isItemActive(item);
44
+ }
45
+ isRouteActive(item) {
46
+ if (item.disabled || !this.router?.lastSuccessfulNavigation()) return false;
47
+ return this.routeContext.isItemRouteActive(item, null, this.activatedRoute);
48
+ }
37
49
  panelIdFor(item) {
38
50
  return this.entryState().get(item)?.panelId ?? navigationPanelId(this.navId(), item);
39
51
  }
@@ -73,9 +85,6 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
73
85
  relFor(item) {
74
86
  return this.nav.relFor(item);
75
87
  }
76
- routerLinkActiveOptions(item) {
77
- return this.nav.routerLinkActiveOptions(item);
78
- }
79
88
  iconContext(item, active) {
80
89
  return this.nav.iconContext(item, active, 1, "horizontal");
81
90
  }
@@ -103,14 +112,14 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
103
112
  return cn("nav-subtitle mt-0.5 block truncate text-muted-foreground", item.classes?.subtitle);
104
113
  }
105
114
  entryChevronClasses(item) {
106
- return cn("shrink-0 self-center text-(length:--nav-icon-size-sub) text-muted-foreground transition-transform duration-200", this.isEntryOpen(item) && "rotate-90");
115
+ return cn("shrink-0 self-center text-(length:--nav-icon-size-sub) text-muted-foreground transition-transform duration-normal", this.isEntryOpen(item) && "rotate-90");
107
116
  }
108
117
  nestedListClasses() {
109
118
  return cn("relative mt-1 flex list-none flex-col gap-0.5 p-0 pl-[calc((var(--nav-entry-box-size)-var(--nav-icon-size))/2)] before:pointer-events-none before:absolute before:inset-y-0 before:left-[calc(var(--nav-item-padding-x)+var(--nav-entry-box-size)/2)] before:w-0 before:border-l before:content-['']", this.isBorderRail() ? "before:border-dashed before:border-border/40" : "before:border-[hsl(var(--border)/var(--section-border-opacity))]");
110
119
  }
111
120
  static ɵfac = i0.ɵɵngDeclareFactory({
112
121
  minVersion: "12.0.0",
113
- version: "22.2.0",
122
+ version: "22.2.3",
114
123
  ngImport: i0,
115
124
  type: NavigationEntryGridComponent,
116
125
  deps: [],
@@ -118,7 +127,7 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
118
127
  });
119
128
  static ɵcmp = i0.ɵɵngDeclareComponent({
120
129
  minVersion: "17.0.0",
121
- version: "22.2.0",
130
+ version: "22.2.3",
122
131
  type: NavigationEntryGridComponent,
123
132
  isStandalone: true,
124
133
  selector: "NavigationEntryGrid",
@@ -192,6 +201,7 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
192
201
  itemSelected: "itemSelected"
193
202
  },
194
203
  host: { classAttribute: "contents" },
204
+ providers: [provideIcons(LucideChevronRight)],
195
205
  ngImport: i0,
196
206
  template: `
197
207
  @let branchItem = branch();
@@ -232,7 +242,7 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
232
242
  [ngTemplateOutletContext]="{ $implicit: child, active: isItemActive(child) }"
233
243
  />
234
244
  <Icon
235
- name="chevron_right"
245
+ name="chevron-right"
236
246
  size="inherit"
237
247
  [class]="entryChevronClasses(child)"
238
248
  />
@@ -264,32 +274,25 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
264
274
  } @else {
265
275
  <li role="none" class="min-w-0" [attr.data-navigation-item-key]="child.key">
266
276
  @if (isRouterItem(child)) {
277
+ @let entryActive = isRouterEntryActive(child);
267
278
  <a
268
279
  role="menuitem"
269
280
  data-navigation-flyout-entry="true"
270
- [class]="entryClasses(child, routerActive.isActive || isItemActive(child))"
271
- [routerLink]="child.link ?? null"
281
+ [class]="entryClasses(child, entryActive)"
282
+ [routerLink]="child.disabled ? null : (child.link ?? null)"
272
283
  [queryParams]="child.queryParams ?? null"
273
284
  [queryParamsHandling]="child.queryParamsHandling ?? null"
274
285
  [fragment]="child.fragment ?? undefined"
275
286
  [preserveFragment]="child.preserveFragment ?? false"
276
287
  [target]="child.target ?? undefined"
277
288
  [attr.rel]="relFor(child)"
278
- routerLinkActive
279
- #routerActive="routerLinkActive"
280
- [routerLinkActiveOptions]="routerLinkActiveOptions(child)"
281
- [attr.aria-current]="
282
- routerActive.isActive || isItemActive(child) ? 'page' : null
283
- "
289
+ [attr.aria-current]="entryActive ? 'page' : null"
284
290
  [attr.aria-disabled]="child.disabled || null"
285
291
  (click)="selectEntry(child, $event)"
286
292
  >
287
293
  <ng-container
288
294
  [ngTemplateOutlet]="entryContent"
289
- [ngTemplateOutletContext]="{
290
- $implicit: child,
291
- active: routerActive.isActive || isItemActive(child),
292
- }"
295
+ [ngTemplateOutletContext]="{ $implicit: child, active: entryActive }"
293
296
  />
294
297
  </a>
295
298
  } @else if (hrefFor(child)) {
@@ -381,12 +384,7 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
381
384
  [ngTemplateOutletContext]="iconContext(child, active)"
382
385
  />
383
386
  } @else {
384
- <Icon
385
- [name]="child.icon"
386
- size="inherit"
387
- [fill]="1"
388
- [class]="entryIconGlyphClasses(child)"
389
- />
387
+ <Icon [name]="child.icon" size="inherit" [class]="entryIconGlyphClasses(child)" />
390
388
  }
391
389
  } @else {
392
390
  <span
@@ -446,18 +444,6 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
446
444
  "routerLink"
447
445
  ]
448
446
  },
449
- {
450
- kind: "directive",
451
- type: RouterLinkActive,
452
- selector: "[routerLinkActive]",
453
- inputs: [
454
- "routerLinkActiveOptions",
455
- "ariaCurrentWhenActive",
456
- "routerLinkActive"
457
- ],
458
- outputs: ["isActiveChange"],
459
- exportAs: ["routerLinkActive"]
460
- },
461
447
  {
462
448
  kind: "component",
463
449
  type: IconComponent,
@@ -466,10 +452,8 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
466
452
  "name",
467
453
  "class",
468
454
  "size",
469
- "fill",
470
- "weight",
471
- "grade",
472
- "opticalSize"
455
+ "strokeWidth",
456
+ "label"
473
457
  ]
474
458
  },
475
459
  {
@@ -502,7 +486,7 @@ var NavigationEntryGridComponent = class NavigationEntryGridComponent {
502
486
  };
503
487
  i0.ɵɵngDeclareClassMetadata({
504
488
  minVersion: "12.0.0",
505
- version: "22.2.0",
489
+ version: "22.2.3",
506
490
  ngImport: i0,
507
491
  type: NavigationEntryGridComponent,
508
492
  decorators: [{
@@ -512,10 +496,10 @@ i0.ɵɵngDeclareClassMetadata({
512
496
  imports: [
513
497
  NgTemplateOutlet,
514
498
  RouterLink,
515
- RouterLinkActive,
516
499
  IconComponent,
517
500
  NavigationItemComponent
518
501
  ],
502
+ providers: [provideIcons(LucideChevronRight)],
519
503
  host: { class: "contents" },
520
504
  template: `
521
505
  @let branchItem = branch();
@@ -556,7 +540,7 @@ i0.ɵɵngDeclareClassMetadata({
556
540
  [ngTemplateOutletContext]="{ $implicit: child, active: isItemActive(child) }"
557
541
  />
558
542
  <Icon
559
- name="chevron_right"
543
+ name="chevron-right"
560
544
  size="inherit"
561
545
  [class]="entryChevronClasses(child)"
562
546
  />
@@ -588,32 +572,25 @@ i0.ɵɵngDeclareClassMetadata({
588
572
  } @else {
589
573
  <li role="none" class="min-w-0" [attr.data-navigation-item-key]="child.key">
590
574
  @if (isRouterItem(child)) {
575
+ @let entryActive = isRouterEntryActive(child);
591
576
  <a
592
577
  role="menuitem"
593
578
  data-navigation-flyout-entry="true"
594
- [class]="entryClasses(child, routerActive.isActive || isItemActive(child))"
595
- [routerLink]="child.link ?? null"
579
+ [class]="entryClasses(child, entryActive)"
580
+ [routerLink]="child.disabled ? null : (child.link ?? null)"
596
581
  [queryParams]="child.queryParams ?? null"
597
582
  [queryParamsHandling]="child.queryParamsHandling ?? null"
598
583
  [fragment]="child.fragment ?? undefined"
599
584
  [preserveFragment]="child.preserveFragment ?? false"
600
585
  [target]="child.target ?? undefined"
601
586
  [attr.rel]="relFor(child)"
602
- routerLinkActive
603
- #routerActive="routerLinkActive"
604
- [routerLinkActiveOptions]="routerLinkActiveOptions(child)"
605
- [attr.aria-current]="
606
- routerActive.isActive || isItemActive(child) ? 'page' : null
607
- "
587
+ [attr.aria-current]="entryActive ? 'page' : null"
608
588
  [attr.aria-disabled]="child.disabled || null"
609
589
  (click)="selectEntry(child, $event)"
610
590
  >
611
591
  <ng-container
612
592
  [ngTemplateOutlet]="entryContent"
613
- [ngTemplateOutletContext]="{
614
- $implicit: child,
615
- active: routerActive.isActive || isItemActive(child),
616
- }"
593
+ [ngTemplateOutletContext]="{ $implicit: child, active: entryActive }"
617
594
  />
618
595
  </a>
619
596
  } @else if (hrefFor(child)) {
@@ -705,12 +682,7 @@ i0.ɵɵngDeclareClassMetadata({
705
682
  [ngTemplateOutletContext]="iconContext(child, active)"
706
683
  />
707
684
  } @else {
708
- <Icon
709
- [name]="child.icon"
710
- size="inherit"
711
- [fill]="1"
712
- [class]="entryIconGlyphClasses(child)"
713
- />
685
+ <Icon [name]="child.icon" size="inherit" [class]="entryIconGlyphClasses(child)" />
714
686
  }
715
687
  } @else {
716
688
  <span
@@ -1,11 +1,12 @@
1
- import { r as NavigationItemContentComponent, t as NavigationItemComponent } from "./ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs";
2
- import { t as NavigationEntryGridComponent } from "./ojiepermana-angular-navigation-navigation-entry-grid.component-mpK9Ar08.mjs";
1
+ import { r as NavigationItemContentComponent, t as NavigationItemComponent } from "./ojiepermana-angular-navigation-navigation-item.component-DiGOcizS.mjs";
2
+ import { t as NavigationEntryGridComponent } from "./ojiepermana-angular-navigation-navigation-entry-grid.component-zBCXDa4c.mjs";
3
3
  import * as i0 from "@angular/core";
4
4
  import { Component, ElementRef, Injector, afterNextRender, computed, effect, inject, input, output, signal } from "@angular/core";
5
5
  import { cn } from "@ojiepermana/angular/component/utils/core";
6
6
  import { NAVIGATION_ADAPTER } from "@ojiepermana/angular/navigation/core";
7
7
  import { DOCUMENT } from "@angular/common";
8
- import { IconComponent } from "@ojiepermana/angular/component/icon";
8
+ import { LucideChevronRight, LucideMenu } from "@lucide/angular";
9
+ import { IconComponent, provideIcons } from "@ojiepermana/angular/component/icon";
9
10
  var NavigationFlyoutMenuComponent = class NavigationFlyoutMenuComponent {
10
11
  nav = inject(NAVIGATION_ADAPTER);
11
12
  host = inject(ElementRef);
@@ -175,7 +176,7 @@ var NavigationFlyoutMenuComponent = class NavigationFlyoutMenuComponent {
175
176
  return cn("nav-trigger nav-text group/nav inline-flex h-full min-h-(--nav-item-height) min-w-0 items-center gap-(--nav-item-gap) rounded-md px-(--nav-item-padding-x) transition-colors", this.isBottom() ? "rounded-t-none" : "rounded-b-none", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", this.isBorderRail() ? open || active ? "rounded-none text-primary" : "rounded-none text-foreground/80 hover:text-primary" : open ? "bg-accent text-foreground" : active ? "text-foreground hover:bg-accent hover:text-accent-foreground" : "text-foreground/80 hover:bg-accent hover:text-accent-foreground", item.classes?.wrapper, this.itemClass());
176
177
  }
177
178
  tabChevronClasses(item) {
178
- return cn("shrink-0 self-center text-(length:--nav-icon-size-sub) text-current transition-transform duration-200", this.isBranchOpen(item) && "rotate-90");
179
+ return cn("shrink-0 self-center text-(length:--nav-icon-size-sub) text-current transition-transform duration-normal", this.isBranchOpen(item) && "rotate-90");
179
180
  }
180
181
  onRowKeydown(event) {
181
182
  if (event.key !== "ArrowRight" && event.key !== "ArrowLeft" && event.key !== "ArrowDown") return;
@@ -199,7 +200,7 @@ var NavigationFlyoutMenuComponent = class NavigationFlyoutMenuComponent {
199
200
  }
200
201
  static ɵfac = i0.ɵɵngDeclareFactory({
201
202
  minVersion: "12.0.0",
202
- version: "22.2.0",
203
+ version: "22.2.3",
203
204
  ngImport: i0,
204
205
  type: NavigationFlyoutMenuComponent,
205
206
  deps: [],
@@ -207,7 +208,7 @@ var NavigationFlyoutMenuComponent = class NavigationFlyoutMenuComponent {
207
208
  });
208
209
  static ɵcmp = i0.ɵɵngDeclareComponent({
209
210
  minVersion: "17.0.0",
210
- version: "22.2.0",
211
+ version: "22.2.3",
211
212
  type: NavigationFlyoutMenuComponent,
212
213
  isStandalone: true,
213
214
  selector: "NavigationFlyoutMenu",
@@ -368,8 +369,9 @@ var NavigationFlyoutMenuComponent = class NavigationFlyoutMenuComponent {
368
369
  listeners: { "keydown.escape": "onEscape($event)" },
369
370
  properties: { "class": "hostClasses()" }
370
371
  },
372
+ providers: [provideIcons(LucideChevronRight, LucideMenu)],
371
373
  ngImport: i0,
372
- template: "<button\n type=\"button\"\n data-navigation-flyout-trigger=\"true\"\n [class]=\"triggerClasses()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? panelId() : null\"\n [attr.aria-label]=\"showIconOnly() ? label() : null\"\n [attr.title]=\"showIconOnly() ? label() : null\"\n (click)=\"toggleFlyout()\"\n>\n @if (showIconOnly()) {\n <Icon\n [name]=\"triggerIcon() ?? 'menu'\"\n size=\"inherit\"\n [fill]=\"1\"\n class=\"text-(length:--nav-icon-size) text-current\"\n />\n } @else {\n @if (iconPosition() === 'start' && triggerIcon(); as iconName) {\n <Icon\n [name]=\"iconName\"\n size=\"inherit\"\n [fill]=\"1\"\n class=\"shrink-0 text-(length:--nav-icon-size) text-current\"\n />\n }\n\n <span class=\"truncate\">{{ label() }}</span>\n\n @if (iconPosition() === 'end' && triggerIcon(); as iconName) {\n <Icon\n [name]=\"iconName\"\n size=\"inherit\"\n [fill]=\"1\"\n class=\"shrink-0 text-(length:--nav-icon-size) text-current\"\n />\n }\n }\n</button>\n\n@if (isOpen()) {\n <div\n [id]=\"panelId()\"\n data-navigation-flyout-panel=\"true\"\n [attr.data-navigation-flyout-floating]=\"floating() ? 'true' : null\"\n [class]=\"panelWrapperClasses()\"\n [style.left.px]=\"floating() ? null : panelPlacement()?.left\"\n [style.top.px]=\"floating() || isBottom() ? null : panelPlacement()?.top\"\n [style.bottom.px]=\"!floating() && isBottom() ? panelPlacement()?.bottom : null\"\n [style.width.px]=\"floating() ? null : panelPlacement()?.width\"\n >\n <div\n [attr.data-navigation-flyout-floating-card]=\"floating() ? 'true' : null\"\n [class]=\"panelCardClasses()\"\n >\n <div data-navigation-flyout-menu-layout=\"true\" [class]=\"menuClasses()\">\n <!-- ROW 1 = bar (sticky, menutup bar trigger), struktur seperti bar navbar:\n Header (kiri) | menu item (tengah) | Footer (kanan). Hanya ROW 2 (grid child)\n di bawah bar yang ikut scroll. -->\n <div data-navigation-flyout-bar=\"true\" [class]=\"barRowClasses()\">\n <ng-content select=\"NavigationHeader\" />\n\n <ul\n role=\"menu\"\n tabindex=\"-1\"\n data-navigation-flyout-row=\"true\"\n [class]=\"rowClasses()\"\n [attr.aria-label]=\"label()\"\n (keydown)=\"onRowKeydown($event)\"\n >\n @for (item of items(); track item.key) {\n @switch (item.type) {\n @case ('divider') {\n <li role=\"separator\" class=\"mx-1 h-5 w-px bg-border\"></li>\n }\n @case ('spacer') {\n <li role=\"none\" aria-hidden=\"true\" class=\"flex-1\"></li>\n }\n @default {\n @if (item.children.length > 0) {\n <li\n role=\"none\"\n [class]=\"groupContainerClasses(item)\"\n [attr.data-navigation-item-key]=\"item.key\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n data-navigation-flyout-tab=\"true\"\n [class]=\"tabClasses(item)\"\n [attr.aria-expanded]=\"isBranchOpen(item)\"\n [attr.aria-controls]=\"isBranchOpen(item) ? panelContentId() : null\"\n [disabled]=\"item.disabled || null\"\n (click)=\"openBranch(item)\"\n >\n <NavigationItemContent\n [item]=\"item\"\n [active]=\"isItemActive(item)\"\n [compact]=\"false\"\n [orientation]=\"'horizontal'\"\n [level]=\"0\"\n [iconTemplate]=\"iconTemplate()\"\n />\n <Icon\n name=\"chevron_right\"\n size=\"inherit\"\n [class]=\"tabChevronClasses(item)\"\n />\n </button>\n </li>\n } @else {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'horizontal'\"\n [compact]=\"false\"\n [itemClass]=\"navItemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"\n ></li>\n }\n }\n }\n }\n </ul>\n\n <ng-content select=\"NavigationFooter\" />\n </div>\n\n <!-- ROW 2 = child dari menu item aktif; HANYA area ini yang men-scroll. -->\n <div\n [id]=\"panelContentId()\"\n data-navigation-flyout-scroll=\"true\"\n [attr.role]=\"activeBranch() ? 'menu' : null\"\n [attr.aria-label]=\"activeBranch()?.title || null\"\n [class]=\"scrollRegionClasses()\"\n >\n @if (activeBranch(); as branch) {\n <NavigationEntryGrid\n [navId]=\"navId()\"\n [branch]=\"branch\"\n [typeStyle]=\"typeStyle()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"\n />\n }\n </div>\n </div>\n </div>\n </div>\n}\n",
374
+ template: "<button\n type=\"button\"\n data-navigation-flyout-trigger=\"true\"\n [class]=\"triggerClasses()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? panelId() : null\"\n [attr.aria-label]=\"showIconOnly() ? label() : null\"\n [attr.title]=\"showIconOnly() ? label() : null\"\n (click)=\"toggleFlyout()\"\n>\n @if (showIconOnly()) {\n <Icon\n [name]=\"triggerIcon() ?? 'menu'\"\n size=\"inherit\"\n class=\"text-(length:--nav-icon-size) text-current\"\n />\n } @else {\n @if (iconPosition() === 'start' && triggerIcon(); as iconName) {\n <Icon\n [name]=\"iconName\"\n size=\"inherit\"\n class=\"shrink-0 text-(length:--nav-icon-size) text-current\"\n />\n }\n\n <span class=\"truncate\">{{ label() }}</span>\n\n @if (iconPosition() === 'end' && triggerIcon(); as iconName) {\n <Icon\n [name]=\"iconName\"\n size=\"inherit\"\n class=\"shrink-0 text-(length:--nav-icon-size) text-current\"\n />\n }\n }\n</button>\n\n@if (isOpen()) {\n <div\n [id]=\"panelId()\"\n data-navigation-flyout-panel=\"true\"\n [attr.data-navigation-flyout-floating]=\"floating() ? 'true' : null\"\n [class]=\"panelWrapperClasses()\"\n [style.left.px]=\"floating() ? null : panelPlacement()?.left\"\n [style.top.px]=\"floating() || isBottom() ? null : panelPlacement()?.top\"\n [style.bottom.px]=\"!floating() && isBottom() ? panelPlacement()?.bottom : null\"\n [style.width.px]=\"floating() ? null : panelPlacement()?.width\"\n >\n <div\n [attr.data-navigation-flyout-floating-card]=\"floating() ? 'true' : null\"\n [class]=\"panelCardClasses()\"\n >\n <div data-navigation-flyout-menu-layout=\"true\" [class]=\"menuClasses()\">\n <!-- ROW 1 = bar (sticky, menutup bar trigger), struktur seperti bar navbar:\n Header (kiri) | menu item (tengah) | Footer (kanan). Hanya ROW 2 (grid child)\n di bawah bar yang ikut scroll. -->\n <div data-navigation-flyout-bar=\"true\" [class]=\"barRowClasses()\">\n <ng-content select=\"NavigationHeader\" />\n\n <ul\n role=\"menu\"\n tabindex=\"-1\"\n data-navigation-flyout-row=\"true\"\n [class]=\"rowClasses()\"\n [attr.aria-label]=\"label()\"\n (keydown)=\"onRowKeydown($event)\"\n >\n @for (item of items(); track item.key) {\n @switch (item.type) {\n @case ('divider') {\n <li role=\"separator\" class=\"mx-1 h-5 w-px bg-border\"></li>\n }\n @case ('spacer') {\n <li role=\"none\" aria-hidden=\"true\" class=\"flex-1\"></li>\n }\n @default {\n @if (item.children.length > 0) {\n <li\n role=\"none\"\n [class]=\"groupContainerClasses(item)\"\n [attr.data-navigation-item-key]=\"item.key\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n data-navigation-flyout-tab=\"true\"\n [class]=\"tabClasses(item)\"\n [attr.aria-expanded]=\"isBranchOpen(item)\"\n [attr.aria-controls]=\"isBranchOpen(item) ? panelContentId() : null\"\n [disabled]=\"item.disabled || null\"\n (click)=\"openBranch(item)\"\n >\n <NavigationItemContent\n [item]=\"item\"\n [active]=\"isItemActive(item)\"\n [compact]=\"false\"\n [orientation]=\"'horizontal'\"\n [level]=\"0\"\n [iconTemplate]=\"iconTemplate()\"\n />\n <Icon\n name=\"chevron-right\"\n size=\"inherit\"\n [class]=\"tabChevronClasses(item)\"\n />\n </button>\n </li>\n } @else {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'horizontal'\"\n [compact]=\"false\"\n [itemClass]=\"navItemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"\n ></li>\n }\n }\n }\n }\n </ul>\n\n <ng-content select=\"NavigationFooter\" />\n </div>\n\n <!-- ROW 2 = child dari menu item aktif; HANYA area ini yang men-scroll. -->\n <div\n [id]=\"panelContentId()\"\n data-navigation-flyout-scroll=\"true\"\n [attr.role]=\"activeBranch() ? 'menu' : null\"\n [attr.aria-label]=\"activeBranch()?.title || null\"\n [class]=\"scrollRegionClasses()\"\n >\n @if (activeBranch(); as branch) {\n <NavigationEntryGrid\n [navId]=\"navId()\"\n [branch]=\"branch\"\n [typeStyle]=\"typeStyle()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"\n />\n }\n </div>\n </div>\n </div>\n </div>\n}\n",
373
375
  styles: ["[data-navigation-flyout-floating=true]{width:var(--nav-flyout-floating-width, min(22rem, 85vw));max-width:var(--nav-flyout-floating-max-width, 85vw)}[data-navigation-flyout-floating-card=true]{border-radius:var(--nav-flyout-floating-radius, var(--radius-xl))}[data-navigation-flyout-panel=true]{-webkit-app-region:no-drag;app-region:no-drag}\n"],
374
376
  dependencies: [
375
377
  {
@@ -380,10 +382,8 @@ var NavigationFlyoutMenuComponent = class NavigationFlyoutMenuComponent {
380
382
  "name",
381
383
  "class",
382
384
  "size",
383
- "fill",
384
- "weight",
385
- "grade",
386
- "opticalSize"
385
+ "strokeWidth",
386
+ "label"
387
387
  ]
388
388
  },
389
389
  {
@@ -446,7 +446,7 @@ var NavigationFlyoutMenuComponent = class NavigationFlyoutMenuComponent {
446
446
  };
447
447
  i0.ɵɵngDeclareClassMetadata({
448
448
  minVersion: "12.0.0",
449
- version: "22.2.0",
449
+ version: "22.2.3",
450
450
  ngImport: i0,
451
451
  type: NavigationFlyoutMenuComponent,
452
452
  decorators: [{
@@ -459,11 +459,12 @@ i0.ɵɵngDeclareClassMetadata({
459
459
  NavigationItemComponent,
460
460
  NavigationItemContentComponent
461
461
  ],
462
+ providers: [provideIcons(LucideChevronRight, LucideMenu)],
462
463
  host: {
463
464
  "[class]": "hostClasses()",
464
465
  "(keydown.escape)": "onEscape($event)"
465
466
  },
466
- template: "<button\n type=\"button\"\n data-navigation-flyout-trigger=\"true\"\n [class]=\"triggerClasses()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? panelId() : null\"\n [attr.aria-label]=\"showIconOnly() ? label() : null\"\n [attr.title]=\"showIconOnly() ? label() : null\"\n (click)=\"toggleFlyout()\"\n>\n @if (showIconOnly()) {\n <Icon\n [name]=\"triggerIcon() ?? 'menu'\"\n size=\"inherit\"\n [fill]=\"1\"\n class=\"text-(length:--nav-icon-size) text-current\"\n />\n } @else {\n @if (iconPosition() === 'start' && triggerIcon(); as iconName) {\n <Icon\n [name]=\"iconName\"\n size=\"inherit\"\n [fill]=\"1\"\n class=\"shrink-0 text-(length:--nav-icon-size) text-current\"\n />\n }\n\n <span class=\"truncate\">{{ label() }}</span>\n\n @if (iconPosition() === 'end' && triggerIcon(); as iconName) {\n <Icon\n [name]=\"iconName\"\n size=\"inherit\"\n [fill]=\"1\"\n class=\"shrink-0 text-(length:--nav-icon-size) text-current\"\n />\n }\n }\n</button>\n\n@if (isOpen()) {\n <div\n [id]=\"panelId()\"\n data-navigation-flyout-panel=\"true\"\n [attr.data-navigation-flyout-floating]=\"floating() ? 'true' : null\"\n [class]=\"panelWrapperClasses()\"\n [style.left.px]=\"floating() ? null : panelPlacement()?.left\"\n [style.top.px]=\"floating() || isBottom() ? null : panelPlacement()?.top\"\n [style.bottom.px]=\"!floating() && isBottom() ? panelPlacement()?.bottom : null\"\n [style.width.px]=\"floating() ? null : panelPlacement()?.width\"\n >\n <div\n [attr.data-navigation-flyout-floating-card]=\"floating() ? 'true' : null\"\n [class]=\"panelCardClasses()\"\n >\n <div data-navigation-flyout-menu-layout=\"true\" [class]=\"menuClasses()\">\n <!-- ROW 1 = bar (sticky, menutup bar trigger), struktur seperti bar navbar:\n Header (kiri) | menu item (tengah) | Footer (kanan). Hanya ROW 2 (grid child)\n di bawah bar yang ikut scroll. -->\n <div data-navigation-flyout-bar=\"true\" [class]=\"barRowClasses()\">\n <ng-content select=\"NavigationHeader\" />\n\n <ul\n role=\"menu\"\n tabindex=\"-1\"\n data-navigation-flyout-row=\"true\"\n [class]=\"rowClasses()\"\n [attr.aria-label]=\"label()\"\n (keydown)=\"onRowKeydown($event)\"\n >\n @for (item of items(); track item.key) {\n @switch (item.type) {\n @case ('divider') {\n <li role=\"separator\" class=\"mx-1 h-5 w-px bg-border\"></li>\n }\n @case ('spacer') {\n <li role=\"none\" aria-hidden=\"true\" class=\"flex-1\"></li>\n }\n @default {\n @if (item.children.length > 0) {\n <li\n role=\"none\"\n [class]=\"groupContainerClasses(item)\"\n [attr.data-navigation-item-key]=\"item.key\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n data-navigation-flyout-tab=\"true\"\n [class]=\"tabClasses(item)\"\n [attr.aria-expanded]=\"isBranchOpen(item)\"\n [attr.aria-controls]=\"isBranchOpen(item) ? panelContentId() : null\"\n [disabled]=\"item.disabled || null\"\n (click)=\"openBranch(item)\"\n >\n <NavigationItemContent\n [item]=\"item\"\n [active]=\"isItemActive(item)\"\n [compact]=\"false\"\n [orientation]=\"'horizontal'\"\n [level]=\"0\"\n [iconTemplate]=\"iconTemplate()\"\n />\n <Icon\n name=\"chevron_right\"\n size=\"inherit\"\n [class]=\"tabChevronClasses(item)\"\n />\n </button>\n </li>\n } @else {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'horizontal'\"\n [compact]=\"false\"\n [itemClass]=\"navItemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"\n ></li>\n }\n }\n }\n }\n </ul>\n\n <ng-content select=\"NavigationFooter\" />\n </div>\n\n <!-- ROW 2 = child dari menu item aktif; HANYA area ini yang men-scroll. -->\n <div\n [id]=\"panelContentId()\"\n data-navigation-flyout-scroll=\"true\"\n [attr.role]=\"activeBranch() ? 'menu' : null\"\n [attr.aria-label]=\"activeBranch()?.title || null\"\n [class]=\"scrollRegionClasses()\"\n >\n @if (activeBranch(); as branch) {\n <NavigationEntryGrid\n [navId]=\"navId()\"\n [branch]=\"branch\"\n [typeStyle]=\"typeStyle()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"\n />\n }\n </div>\n </div>\n </div>\n </div>\n}\n",
467
+ template: "<button\n type=\"button\"\n data-navigation-flyout-trigger=\"true\"\n [class]=\"triggerClasses()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? panelId() : null\"\n [attr.aria-label]=\"showIconOnly() ? label() : null\"\n [attr.title]=\"showIconOnly() ? label() : null\"\n (click)=\"toggleFlyout()\"\n>\n @if (showIconOnly()) {\n <Icon\n [name]=\"triggerIcon() ?? 'menu'\"\n size=\"inherit\"\n class=\"text-(length:--nav-icon-size) text-current\"\n />\n } @else {\n @if (iconPosition() === 'start' && triggerIcon(); as iconName) {\n <Icon\n [name]=\"iconName\"\n size=\"inherit\"\n class=\"shrink-0 text-(length:--nav-icon-size) text-current\"\n />\n }\n\n <span class=\"truncate\">{{ label() }}</span>\n\n @if (iconPosition() === 'end' && triggerIcon(); as iconName) {\n <Icon\n [name]=\"iconName\"\n size=\"inherit\"\n class=\"shrink-0 text-(length:--nav-icon-size) text-current\"\n />\n }\n }\n</button>\n\n@if (isOpen()) {\n <div\n [id]=\"panelId()\"\n data-navigation-flyout-panel=\"true\"\n [attr.data-navigation-flyout-floating]=\"floating() ? 'true' : null\"\n [class]=\"panelWrapperClasses()\"\n [style.left.px]=\"floating() ? null : panelPlacement()?.left\"\n [style.top.px]=\"floating() || isBottom() ? null : panelPlacement()?.top\"\n [style.bottom.px]=\"!floating() && isBottom() ? panelPlacement()?.bottom : null\"\n [style.width.px]=\"floating() ? null : panelPlacement()?.width\"\n >\n <div\n [attr.data-navigation-flyout-floating-card]=\"floating() ? 'true' : null\"\n [class]=\"panelCardClasses()\"\n >\n <div data-navigation-flyout-menu-layout=\"true\" [class]=\"menuClasses()\">\n <!-- ROW 1 = bar (sticky, menutup bar trigger), struktur seperti bar navbar:\n Header (kiri) | menu item (tengah) | Footer (kanan). Hanya ROW 2 (grid child)\n di bawah bar yang ikut scroll. -->\n <div data-navigation-flyout-bar=\"true\" [class]=\"barRowClasses()\">\n <ng-content select=\"NavigationHeader\" />\n\n <ul\n role=\"menu\"\n tabindex=\"-1\"\n data-navigation-flyout-row=\"true\"\n [class]=\"rowClasses()\"\n [attr.aria-label]=\"label()\"\n (keydown)=\"onRowKeydown($event)\"\n >\n @for (item of items(); track item.key) {\n @switch (item.type) {\n @case ('divider') {\n <li role=\"separator\" class=\"mx-1 h-5 w-px bg-border\"></li>\n }\n @case ('spacer') {\n <li role=\"none\" aria-hidden=\"true\" class=\"flex-1\"></li>\n }\n @default {\n @if (item.children.length > 0) {\n <li\n role=\"none\"\n [class]=\"groupContainerClasses(item)\"\n [attr.data-navigation-item-key]=\"item.key\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n data-navigation-flyout-tab=\"true\"\n [class]=\"tabClasses(item)\"\n [attr.aria-expanded]=\"isBranchOpen(item)\"\n [attr.aria-controls]=\"isBranchOpen(item) ? panelContentId() : null\"\n [disabled]=\"item.disabled || null\"\n (click)=\"openBranch(item)\"\n >\n <NavigationItemContent\n [item]=\"item\"\n [active]=\"isItemActive(item)\"\n [compact]=\"false\"\n [orientation]=\"'horizontal'\"\n [level]=\"0\"\n [iconTemplate]=\"iconTemplate()\"\n />\n <Icon\n name=\"chevron-right\"\n size=\"inherit\"\n [class]=\"tabChevronClasses(item)\"\n />\n </button>\n </li>\n } @else {\n <li\n NavigationItem\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'horizontal'\"\n [compact]=\"false\"\n [itemClass]=\"navItemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"\n ></li>\n }\n }\n }\n }\n </ul>\n\n <ng-content select=\"NavigationFooter\" />\n </div>\n\n <!-- ROW 2 = child dari menu item aktif; HANYA area ini yang men-scroll. -->\n <div\n [id]=\"panelContentId()\"\n data-navigation-flyout-scroll=\"true\"\n [attr.role]=\"activeBranch() ? 'menu' : null\"\n [attr.aria-label]=\"activeBranch()?.title || null\"\n [class]=\"scrollRegionClasses()\"\n >\n @if (activeBranch(); as branch) {\n <NavigationEntryGrid\n [navId]=\"navId()\"\n [branch]=\"branch\"\n [typeStyle]=\"typeStyle()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"\n />\n }\n </div>\n </div>\n </div>\n </div>\n}\n",
467
468
  styles: ["[data-navigation-flyout-floating=true]{width:var(--nav-flyout-floating-width, min(22rem, 85vw));max-width:var(--nav-flyout-floating-max-width, 85vw)}[data-navigation-flyout-floating-card=true]{border-radius:var(--nav-flyout-floating-radius, var(--radius-xl))}[data-navigation-flyout-panel=true]{-webkit-app-region:no-drag;app-region:no-drag}\n"]
468
469
  }]
469
470
  }],
@@ -1,5 +1,5 @@
1
- import { n as navigationPanelId, r as NavigationItemContentComponent, t as NavigationItemComponent } from "./ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs";
2
- import { t as NavigationEntryGridComponent } from "./ojiepermana-angular-navigation-navigation-entry-grid.component-mpK9Ar08.mjs";
1
+ import { n as navigationPanelId, r as NavigationItemContentComponent, t as NavigationItemComponent } from "./ojiepermana-angular-navigation-navigation-item.component-DiGOcizS.mjs";
2
+ import { t as NavigationEntryGridComponent } from "./ojiepermana-angular-navigation-navigation-entry-grid.component-zBCXDa4c.mjs";
3
3
  import * as i0 from "@angular/core";
4
4
  import { Component, ElementRef, Injector, afterNextRender, computed, effect, inject, input, output, signal } from "@angular/core";
5
5
  import { cn } from "@ojiepermana/angular/component/utils/core";
@@ -155,7 +155,7 @@ var NavigationHorizontalComponent = class NavigationHorizontalComponent {
155
155
  }
156
156
  static ɵfac = i0.ɵɵngDeclareFactory({
157
157
  minVersion: "12.0.0",
158
- version: "22.2.0",
158
+ version: "22.2.3",
159
159
  ngImport: i0,
160
160
  type: NavigationHorizontalComponent,
161
161
  deps: [],
@@ -163,7 +163,7 @@ var NavigationHorizontalComponent = class NavigationHorizontalComponent {
163
163
  });
164
164
  static ɵcmp = i0.ɵɵngDeclareComponent({
165
165
  minVersion: "17.0.0",
166
- version: "22.2.0",
166
+ version: "22.2.3",
167
167
  type: NavigationHorizontalComponent,
168
168
  isStandalone: true,
169
169
  selector: "NavigationHorizontal",
@@ -433,7 +433,7 @@ var NavigationHorizontalComponent = class NavigationHorizontalComponent {
433
433
  };
434
434
  i0.ɵɵngDeclareClassMetadata({
435
435
  minVersion: "12.0.0",
436
- version: "22.2.0",
436
+ version: "22.2.3",
437
437
  ngImport: i0,
438
438
  type: NavigationHorizontalComponent,
439
439
  decorators: [{