@nanahoshi/mona-ui 0.1.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 (134) hide show
  1. package/README.md +25 -0
  2. package/fesm2022/nanahoshi-mona-ui-auto-complete.mjs +590 -0
  3. package/fesm2022/nanahoshi-mona-ui-avatar.mjs +168 -0
  4. package/fesm2022/nanahoshi-mona-ui-breadcrumb.mjs +220 -0
  5. package/fesm2022/nanahoshi-mona-ui-button-group.mjs +225 -0
  6. package/fesm2022/nanahoshi-mona-ui-button.mjs +497 -0
  7. package/fesm2022/nanahoshi-mona-ui-calendar.mjs +1569 -0
  8. package/fesm2022/nanahoshi-mona-ui-check-box.mjs +339 -0
  9. package/fesm2022/nanahoshi-mona-ui-chip.mjs +453 -0
  10. package/fesm2022/nanahoshi-mona-ui-circular-progress-bar.mjs +200 -0
  11. package/fesm2022/nanahoshi-mona-ui-color-gradient.mjs +853 -0
  12. package/fesm2022/nanahoshi-mona-ui-color-palette.mjs +923 -0
  13. package/fesm2022/nanahoshi-mona-ui-color-picker.mjs +495 -0
  14. package/fesm2022/nanahoshi-mona-ui-combo-box.mjs +686 -0
  15. package/fesm2022/nanahoshi-mona-ui-common.mjs +642 -0
  16. package/fesm2022/nanahoshi-mona-ui-contextmenu.mjs +485 -0
  17. package/fesm2022/nanahoshi-mona-ui-date-input.mjs +132 -0
  18. package/fesm2022/nanahoshi-mona-ui-date-picker.mjs +460 -0
  19. package/fesm2022/nanahoshi-mona-ui-datetime-picker.mjs +659 -0
  20. package/fesm2022/nanahoshi-mona-ui-dialog.mjs +828 -0
  21. package/fesm2022/nanahoshi-mona-ui-dropdown-button.mjs +523 -0
  22. package/fesm2022/nanahoshi-mona-ui-dropdown-list.mjs +615 -0
  23. package/fesm2022/nanahoshi-mona-ui-dropdowns.mjs +701 -0
  24. package/fesm2022/nanahoshi-mona-ui-editor.mjs +1400 -0
  25. package/fesm2022/nanahoshi-mona-ui-expansion-panel.mjs +245 -0
  26. package/fesm2022/nanahoshi-mona-ui-fieldset.mjs +170 -0
  27. package/fesm2022/nanahoshi-mona-ui-filter.mjs +680 -0
  28. package/fesm2022/nanahoshi-mona-ui-grid-grid-footer-cell.component-B9SQH5N-.mjs +105 -0
  29. package/fesm2022/nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DlLwcCFT.mjs +42 -0
  30. package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-Dgea-O0X.mjs +130 -0
  31. package/fesm2022/nanahoshi-mona-ui-grid-grid-toggle.component-DIUutx9s.mjs +773 -0
  32. package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-DRHycGIh.mjs +240 -0
  33. package/fesm2022/nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-C3eZIaJK.mjs +5374 -0
  34. package/fesm2022/nanahoshi-mona-ui-grid.mjs +2 -0
  35. package/fesm2022/nanahoshi-mona-ui-internal-filter-input.mjs +87 -0
  36. package/fesm2022/nanahoshi-mona-ui-internal-indicator-icon.mjs +154 -0
  37. package/fesm2022/nanahoshi-mona-ui-internal-list.mjs +1356 -0
  38. package/fesm2022/nanahoshi-mona-ui-internal-tree.mjs +2263 -0
  39. package/fesm2022/nanahoshi-mona-ui-internal.mjs +379 -0
  40. package/fesm2022/nanahoshi-mona-ui-list-box.mjs +630 -0
  41. package/fesm2022/nanahoshi-mona-ui-list-view.mjs +527 -0
  42. package/fesm2022/nanahoshi-mona-ui-list.mjs +4 -0
  43. package/fesm2022/nanahoshi-mona-ui-menubar.mjs +966 -0
  44. package/fesm2022/nanahoshi-mona-ui-multi-select.mjs +641 -0
  45. package/fesm2022/nanahoshi-mona-ui-notification.mjs +536 -0
  46. package/fesm2022/nanahoshi-mona-ui-numeric-text-box.mjs +597 -0
  47. package/fesm2022/nanahoshi-mona-ui-pager.mjs +790 -0
  48. package/fesm2022/nanahoshi-mona-ui-placeholder.mjs +83 -0
  49. package/fesm2022/nanahoshi-mona-ui-popover.mjs +325 -0
  50. package/fesm2022/nanahoshi-mona-ui-popup-menu.mjs +1559 -0
  51. package/fesm2022/nanahoshi-mona-ui-popup.mjs +1321 -0
  52. package/fesm2022/nanahoshi-mona-ui-progress-bar.mjs +294 -0
  53. package/fesm2022/nanahoshi-mona-ui-query.mjs +175 -0
  54. package/fesm2022/nanahoshi-mona-ui-radio-button.mjs +339 -0
  55. package/fesm2022/nanahoshi-mona-ui-scroll-view.mjs +565 -0
  56. package/fesm2022/nanahoshi-mona-ui-slider.mjs +1049 -0
  57. package/fesm2022/nanahoshi-mona-ui-split-button.mjs +636 -0
  58. package/fesm2022/nanahoshi-mona-ui-splitter.mjs +843 -0
  59. package/fesm2022/nanahoshi-mona-ui-stepper.mjs +537 -0
  60. package/fesm2022/nanahoshi-mona-ui-switch.mjs +308 -0
  61. package/fesm2022/nanahoshi-mona-ui-tabs.mjs +664 -0
  62. package/fesm2022/nanahoshi-mona-ui-text-area.mjs +111 -0
  63. package/fesm2022/nanahoshi-mona-ui-text-box.mjs +369 -0
  64. package/fesm2022/nanahoshi-mona-ui-theme.mjs +314 -0
  65. package/fesm2022/nanahoshi-mona-ui-time-picker.mjs +450 -0
  66. package/fesm2022/nanahoshi-mona-ui-time-selector.mjs +723 -0
  67. package/fesm2022/nanahoshi-mona-ui-tooltip.mjs +716 -0
  68. package/fesm2022/nanahoshi-mona-ui-tree-view.mjs +733 -0
  69. package/fesm2022/nanahoshi-mona-ui-window.mjs +1329 -0
  70. package/fesm2022/nanahoshi-mona-ui.mjs +9 -0
  71. package/package.json +289 -0
  72. package/types/nanahoshi-mona-ui-auto-complete.d.ts +223 -0
  73. package/types/nanahoshi-mona-ui-avatar.d.ts +642 -0
  74. package/types/nanahoshi-mona-ui-breadcrumb.d.ts +70 -0
  75. package/types/nanahoshi-mona-ui-button-group.d.ts +77 -0
  76. package/types/nanahoshi-mona-ui-button.d.ts +111 -0
  77. package/types/nanahoshi-mona-ui-calendar.d.ts +262 -0
  78. package/types/nanahoshi-mona-ui-check-box.d.ts +133 -0
  79. package/types/nanahoshi-mona-ui-chip.d.ts +130 -0
  80. package/types/nanahoshi-mona-ui-circular-progress-bar.d.ts +113 -0
  81. package/types/nanahoshi-mona-ui-color-gradient.d.ts +201 -0
  82. package/types/nanahoshi-mona-ui-color-palette.d.ts +102 -0
  83. package/types/nanahoshi-mona-ui-color-picker.d.ts +156 -0
  84. package/types/nanahoshi-mona-ui-combo-box.d.ts +232 -0
  85. package/types/nanahoshi-mona-ui-common.d.ts +386 -0
  86. package/types/nanahoshi-mona-ui-contextmenu.d.ts +129 -0
  87. package/types/nanahoshi-mona-ui-date-input.d.ts +60 -0
  88. package/types/nanahoshi-mona-ui-date-picker.d.ts +177 -0
  89. package/types/nanahoshi-mona-ui-datetime-picker.d.ts +199 -0
  90. package/types/nanahoshi-mona-ui-dialog.d.ts +261 -0
  91. package/types/nanahoshi-mona-ui-dropdown-button.d.ts +159 -0
  92. package/types/nanahoshi-mona-ui-dropdown-list.d.ts +219 -0
  93. package/types/nanahoshi-mona-ui-dropdowns.d.ts +176 -0
  94. package/types/nanahoshi-mona-ui-editor.d.ts +113 -0
  95. package/types/nanahoshi-mona-ui-expansion-panel.d.ts +87 -0
  96. package/types/nanahoshi-mona-ui-fieldset.d.ts +68 -0
  97. package/types/nanahoshi-mona-ui-filter.d.ts +115 -0
  98. package/types/nanahoshi-mona-ui-grid.d.ts +1114 -0
  99. package/types/nanahoshi-mona-ui-internal-filter-input.d.ts +25 -0
  100. package/types/nanahoshi-mona-ui-internal-indicator-icon.d.ts +28 -0
  101. package/types/nanahoshi-mona-ui-internal-list.d.ts +269 -0
  102. package/types/nanahoshi-mona-ui-internal-tree.d.ts +391 -0
  103. package/types/nanahoshi-mona-ui-internal.d.ts +136 -0
  104. package/types/nanahoshi-mona-ui-list-box.d.ts +225 -0
  105. package/types/nanahoshi-mona-ui-list-view.d.ts +188 -0
  106. package/types/nanahoshi-mona-ui-list.d.ts +1 -0
  107. package/types/nanahoshi-mona-ui-menubar.d.ts +198 -0
  108. package/types/nanahoshi-mona-ui-multi-select.d.ts +247 -0
  109. package/types/nanahoshi-mona-ui-notification.d.ts +106 -0
  110. package/types/nanahoshi-mona-ui-numeric-text-box.d.ts +161 -0
  111. package/types/nanahoshi-mona-ui-pager.d.ts +238 -0
  112. package/types/nanahoshi-mona-ui-placeholder.d.ts +35 -0
  113. package/types/nanahoshi-mona-ui-popover.d.ts +130 -0
  114. package/types/nanahoshi-mona-ui-popup-menu.d.ts +412 -0
  115. package/types/nanahoshi-mona-ui-popup.d.ts +485 -0
  116. package/types/nanahoshi-mona-ui-progress-bar.d.ts +139 -0
  117. package/types/nanahoshi-mona-ui-query.d.ts +89 -0
  118. package/types/nanahoshi-mona-ui-radio-button.d.ts +128 -0
  119. package/types/nanahoshi-mona-ui-scroll-view.d.ts +166 -0
  120. package/types/nanahoshi-mona-ui-slider.d.ts +305 -0
  121. package/types/nanahoshi-mona-ui-split-button.d.ts +182 -0
  122. package/types/nanahoshi-mona-ui-splitter.d.ts +70 -0
  123. package/types/nanahoshi-mona-ui-stepper.d.ts +173 -0
  124. package/types/nanahoshi-mona-ui-switch.d.ts +125 -0
  125. package/types/nanahoshi-mona-ui-tabs.d.ts +158 -0
  126. package/types/nanahoshi-mona-ui-text-area.d.ts +42 -0
  127. package/types/nanahoshi-mona-ui-text-box.d.ts +164 -0
  128. package/types/nanahoshi-mona-ui-theme.d.ts +23 -0
  129. package/types/nanahoshi-mona-ui-time-picker.d.ts +184 -0
  130. package/types/nanahoshi-mona-ui-time-selector.d.ts +143 -0
  131. package/types/nanahoshi-mona-ui-tooltip.d.ts +130 -0
  132. package/types/nanahoshi-mona-ui-tree-view.d.ts +274 -0
  133. package/types/nanahoshi-mona-ui-window.d.ts +295 -0
  134. package/types/nanahoshi-mona-ui.d.ts +2 -0
@@ -0,0 +1,966 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive, contentChildren, input, contentChild, TemplateRef, computed, ChangeDetectionStrategy, Component, effect, forwardRef, inject, DestroyRef, DOCUMENT, ElementRef, signal, viewChildren, output, untracked, afterNextRender } from '@angular/core';
3
+ import { PopupMenuToken, preparePopupMenuItems, PopupMenuItemType, PopupMenuTemplateType, ensurePopupComponentTypes, PopupMenuOrigin, ensurePopupTemplateTypes, PopupMenuTemplateOrigin, PopupMenuCheckboxItemComponent, PopupMenuGroupComponent, PopupMenuItemComponent, PopupMenuRadioGroupComponent, PopupMenuRadioItemComponent, PopupMenuRadioItemToken, PopupMenuSeparatorComponent, PopupMenuGroupTemplateDirective, PopupMenuGroupTemplateToken, PopupMenuIconTemplateDirective, PopupMenuIconTemplateToken, PopupMenuShortcutTemplateDirective, PopupMenuShortcutTemplateToken, PopupMenuTextTemplateDirective, PopupMenuTextTemplateToken, PopupMenuComponent } from '@nanahoshi/mona-ui/popup-menu';
4
+ import { any, zip, rotate } from '@mirei/ts-collections';
5
+ import { v4 } from 'uuid';
6
+ import { NgTemplateOutlet } from '@angular/common';
7
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
+ import { ThemeService } from '@nanahoshi/mona-ui/theme';
9
+ import { Subject, startWith, pairwise, tap } from 'rxjs';
10
+ import { twMerge } from 'tailwind-merge';
11
+ import { cva } from 'class-variance-authority';
12
+
13
+ class MenuIconTemplateDirective {
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuIconTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: MenuIconTemplateDirective, isStandalone: true, selector: "ng-template[monaMenuIconTemplate]", ngImport: i0 }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuIconTemplateDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: "ng-template[monaMenuIconTemplate]"
21
+ }]
22
+ }] });
23
+
24
+ class MenuTextTemplateDirective {
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuTextTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: MenuTextTemplateDirective, isStandalone: true, selector: "ng-template[monaMenuTextTemplate]", ngImport: i0 }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuTextTemplateDirective, decorators: [{
29
+ type: Directive,
30
+ args: [{
31
+ selector: "ng-template[monaMenuTextTemplate]"
32
+ }]
33
+ }] });
34
+
35
+ class MenuComponent {
36
+ constructor() {
37
+ this.menuItemComponents = contentChildren(PopupMenuToken, { ...(ngDevMode ? { debugName: "menuItemComponents" } : /* istanbul ignore next */ {}), descendants: false });
38
+ /**
39
+ * @description Sets the menu as disabled.
40
+ */
41
+ this.disabled = input(false, /* @ts-ignore */
42
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
43
+ this.iconTemplate = contentChild(MenuIconTemplateDirective, { ...(ngDevMode ? { debugName: "iconTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
44
+ /**
45
+ * @description Sets the items of the menu.
46
+ * If provided, it will override the menu items defined by the menu item components.
47
+ */
48
+ this.items = input([], /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
50
+ this.menuItems = computed(() => {
51
+ if (any(this.items())) {
52
+ return preparePopupMenuItems(this.items());
53
+ }
54
+ return this.menuItemComponents()
55
+ .map(item => item.getPopupMenuItem())
56
+ .flatMap(i => i);
57
+ }, /* @ts-ignore */
58
+ ...(ngDevMode ? [{ debugName: "menuItems" }] : /* istanbul ignore next */ []));
59
+ this.textTemplate = contentChild(MenuTextTemplateDirective, { ...(ngDevMode ? { debugName: "textTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
60
+ /**
61
+ * @description The text of the menu.
62
+ */
63
+ this.text = input("", /* @ts-ignore */
64
+ ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
65
+ this.uid = v4();
66
+ this.popupMenu = null;
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.6", type: MenuComponent, isStandalone: true, selector: "mona-menu", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "menuItemComponents", predicate: PopupMenuToken, isSignal: true }, { propertyName: "iconTemplate", first: true, predicate: MenuIconTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "textTemplate", first: true, predicate: MenuTextTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuComponent, decorators: [{
72
+ type: Component,
73
+ args: [{
74
+ selector: "mona-menu",
75
+ template: "",
76
+ changeDetection: ChangeDetectionStrategy.OnPush
77
+ }]
78
+ }], propDecorators: { menuItemComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PopupMenuToken), { ...{ descendants: false }, isSignal: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], iconTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MenuIconTemplateDirective), { ...{
79
+ read: TemplateRef
80
+ }, isSignal: true }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], textTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MenuTextTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }] } });
81
+
82
+ const componentTypeMap = {
83
+ [PopupMenuItemType.CheckboxMenuItem]: "mona-menu-checkbox-item",
84
+ [PopupMenuItemType.MenuGroup]: "mona-menu-group",
85
+ [PopupMenuItemType.MenuItem]: "mona-menu-item",
86
+ [PopupMenuItemType.RadioGroup]: "mona-menu-radio-group",
87
+ [PopupMenuItemType.RadioItem]: "mona-menu-radio-item",
88
+ [PopupMenuItemType.Separator]: "mona-menu-separator"
89
+ };
90
+ const templateTypeMap = {
91
+ [PopupMenuTemplateType.Group]: "monaMenubarMenuGroupTemplate",
92
+ [PopupMenuTemplateType.Icon]: "monaMenubarMenuItemIconTemplate",
93
+ [PopupMenuTemplateType.Shortcut]: "monaMenubarMenuItemShortcutTemplate",
94
+ [PopupMenuTemplateType.Text]: "monaMenubarMenuItemTextTemplate"
95
+ };
96
+ const ensureMenubarComponentTypes = (components) => {
97
+ ensurePopupComponentTypes({
98
+ components,
99
+ componentTypeMap,
100
+ origin: PopupMenuOrigin.MenubarMenu,
101
+ prefix: "mona-menu"
102
+ });
103
+ };
104
+ const ensureMenubarTemplateTypes = (templates) => {
105
+ ensurePopupTemplateTypes({
106
+ templates,
107
+ templateTypeMap,
108
+ origin: PopupMenuTemplateOrigin.MenubarMenu,
109
+ prefix: "mona-menu"
110
+ });
111
+ };
112
+
113
+ class MenuCheckboxItemComponent extends PopupMenuCheckboxItemComponent {
114
+ constructor() {
115
+ super();
116
+ this.origin = PopupMenuOrigin.MenubarMenu;
117
+ effect(() => ensureMenubarTemplateTypes([this.shortcutTemplateConfig(), this.textTemplateConfig()].filter(t => t !== undefined)));
118
+ }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuCheckboxItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: MenuCheckboxItemComponent, isStandalone: true, selector: "mona-menu-checkbox-item", providers: [
121
+ {
122
+ provide: PopupMenuToken,
123
+ useExisting: forwardRef(() => MenuCheckboxItemComponent)
124
+ }
125
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuCheckboxItemComponent, decorators: [{
128
+ type: Component,
129
+ args: [{
130
+ selector: "mona-menu-checkbox-item",
131
+ template: "",
132
+ providers: [
133
+ {
134
+ provide: PopupMenuToken,
135
+ useExisting: forwardRef(() => MenuCheckboxItemComponent)
136
+ }
137
+ ]
138
+ }]
139
+ }], ctorParameters: () => [] });
140
+
141
+ class MenuGroupComponent extends PopupMenuGroupComponent {
142
+ constructor() {
143
+ super();
144
+ this.origin = PopupMenuOrigin.MenubarMenu;
145
+ effect(() => ensureMenubarComponentTypes(this.items()));
146
+ effect(() => ensureMenubarTemplateTypes([this.groupTemplateConfig()].filter(t => t !== undefined)));
147
+ }
148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: MenuGroupComponent, isStandalone: true, selector: "mona-menu-group", providers: [
150
+ {
151
+ provide: PopupMenuToken,
152
+ useExisting: forwardRef(() => MenuGroupComponent)
153
+ }
154
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
155
+ }
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuGroupComponent, decorators: [{
157
+ type: Component,
158
+ args: [{
159
+ selector: "mona-menu-group",
160
+ template: "",
161
+ providers: [
162
+ {
163
+ provide: PopupMenuToken,
164
+ useExisting: forwardRef(() => MenuGroupComponent)
165
+ }
166
+ ]
167
+ }]
168
+ }], ctorParameters: () => [] });
169
+
170
+ class MenuItemComponent extends PopupMenuItemComponent {
171
+ constructor() {
172
+ super();
173
+ this.origin = PopupMenuOrigin.MenubarMenu;
174
+ effect(() => ensureMenubarComponentTypes(this.items()));
175
+ effect(() => ensureMenubarTemplateTypes([this.iconTemplateConfig(), this.shortcutTemplateConfig(), this.textTemplateConfig()].filter(t => t !== undefined)));
176
+ }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
178
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: MenuItemComponent, isStandalone: true, selector: "mona-menu-item", providers: [
179
+ {
180
+ provide: PopupMenuToken,
181
+ useExisting: forwardRef(() => MenuItemComponent)
182
+ }
183
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
184
+ }
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuItemComponent, decorators: [{
186
+ type: Component,
187
+ args: [{
188
+ selector: "mona-menu-item",
189
+ template: "",
190
+ providers: [
191
+ {
192
+ provide: PopupMenuToken,
193
+ useExisting: forwardRef(() => MenuItemComponent)
194
+ }
195
+ ]
196
+ }]
197
+ }], ctorParameters: () => [] });
198
+
199
+ class MenuRadioGroupComponent extends PopupMenuRadioGroupComponent {
200
+ constructor() {
201
+ super();
202
+ this.origin = PopupMenuOrigin.MenubarMenu;
203
+ effect(() => ensureMenubarComponentTypes(this.items()));
204
+ effect(() => ensureMenubarTemplateTypes([this.groupTemplateConfig()].filter(t => t !== undefined)));
205
+ }
206
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuRadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
207
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: MenuRadioGroupComponent, isStandalone: true, selector: "mona-menu-radio-group", providers: [
208
+ {
209
+ provide: PopupMenuToken,
210
+ useExisting: forwardRef(() => MenuRadioGroupComponent)
211
+ }
212
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
213
+ }
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuRadioGroupComponent, decorators: [{
215
+ type: Component,
216
+ args: [{
217
+ selector: "mona-menu-radio-group",
218
+ template: "",
219
+ providers: [
220
+ {
221
+ provide: PopupMenuToken,
222
+ useExisting: forwardRef(() => MenuRadioGroupComponent)
223
+ }
224
+ ]
225
+ }]
226
+ }], ctorParameters: () => [] });
227
+
228
+ class MenuRadioItemComponent extends PopupMenuRadioItemComponent {
229
+ constructor() {
230
+ super();
231
+ this.origin = PopupMenuOrigin.MenubarMenu;
232
+ effect(() => ensureMenubarTemplateTypes([this.shortcutTemplateConfig(), this.textTemplateConfig()].filter(t => t !== undefined)));
233
+ }
234
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuRadioItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
235
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: MenuRadioItemComponent, isStandalone: true, selector: "mona-menu-radio-item", providers: [
236
+ {
237
+ provide: PopupMenuToken,
238
+ useExisting: forwardRef(() => MenuRadioItemComponent)
239
+ },
240
+ {
241
+ provide: PopupMenuRadioItemToken,
242
+ useExisting: forwardRef(() => MenuRadioItemComponent)
243
+ }
244
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
245
+ }
246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuRadioItemComponent, decorators: [{
247
+ type: Component,
248
+ args: [{
249
+ selector: "mona-menu-radio-item",
250
+ template: "",
251
+ providers: [
252
+ {
253
+ provide: PopupMenuToken,
254
+ useExisting: forwardRef(() => MenuRadioItemComponent)
255
+ },
256
+ {
257
+ provide: PopupMenuRadioItemToken,
258
+ useExisting: forwardRef(() => MenuRadioItemComponent)
259
+ }
260
+ ]
261
+ }]
262
+ }], ctorParameters: () => [] });
263
+
264
+ class MenuSeparatorComponent extends PopupMenuSeparatorComponent {
265
+ constructor() {
266
+ super(...arguments);
267
+ this.origin = PopupMenuOrigin.MenubarMenu;
268
+ }
269
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuSeparatorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: MenuSeparatorComponent, isStandalone: true, selector: "mona-menu-separator", providers: [
271
+ {
272
+ provide: PopupMenuToken,
273
+ useExisting: forwardRef(() => MenuSeparatorComponent)
274
+ }
275
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
276
+ }
277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuSeparatorComponent, decorators: [{
278
+ type: Component,
279
+ args: [{
280
+ selector: "mona-menu-separator",
281
+ template: "",
282
+ providers: [
283
+ {
284
+ provide: PopupMenuToken,
285
+ useExisting: forwardRef(() => MenuSeparatorComponent)
286
+ }
287
+ ]
288
+ }]
289
+ }] });
290
+
291
+ class MenuGroupTemplateDirective extends PopupMenuGroupTemplateDirective {
292
+ constructor() {
293
+ super(...arguments);
294
+ this.origin = PopupMenuTemplateOrigin.MenubarMenu;
295
+ }
296
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuGroupTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
297
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: MenuGroupTemplateDirective, isStandalone: true, selector: "ng-template[monaMenuGroupTemplate]", providers: [
298
+ {
299
+ provide: PopupMenuGroupTemplateToken,
300
+ useExisting: forwardRef(() => MenuGroupTemplateDirective)
301
+ }
302
+ ], usesInheritance: true, ngImport: i0 }); }
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuGroupTemplateDirective, decorators: [{
305
+ type: Directive,
306
+ args: [{
307
+ selector: "ng-template[monaMenuGroupTemplate]",
308
+ providers: [
309
+ {
310
+ provide: PopupMenuGroupTemplateToken,
311
+ useExisting: forwardRef(() => MenuGroupTemplateDirective)
312
+ }
313
+ ]
314
+ }]
315
+ }] });
316
+
317
+ class MenuItemIconTemplateDirective extends PopupMenuIconTemplateDirective {
318
+ constructor() {
319
+ super(...arguments);
320
+ this.origin = PopupMenuTemplateOrigin.MenubarMenu;
321
+ }
322
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuItemIconTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
323
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: MenuItemIconTemplateDirective, isStandalone: true, selector: "ng-template[monaMenuItemIconTemplate]", providers: [
324
+ {
325
+ provide: PopupMenuIconTemplateToken,
326
+ useExisting: forwardRef(() => MenuItemIconTemplateDirective)
327
+ }
328
+ ], usesInheritance: true, ngImport: i0 }); }
329
+ }
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuItemIconTemplateDirective, decorators: [{
331
+ type: Directive,
332
+ args: [{
333
+ selector: "ng-template[monaMenuItemIconTemplate]",
334
+ providers: [
335
+ {
336
+ provide: PopupMenuIconTemplateToken,
337
+ useExisting: forwardRef(() => MenuItemIconTemplateDirective)
338
+ }
339
+ ]
340
+ }]
341
+ }] });
342
+
343
+ class MenuItemShortcutTemplateDirective extends PopupMenuShortcutTemplateDirective {
344
+ constructor() {
345
+ super(...arguments);
346
+ this.origin = PopupMenuTemplateOrigin.MenubarMenu;
347
+ }
348
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuItemShortcutTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
349
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: MenuItemShortcutTemplateDirective, isStandalone: true, selector: "ng-template[monaMenuItemShortcutTemplate]", providers: [
350
+ {
351
+ provide: PopupMenuShortcutTemplateToken,
352
+ useExisting: forwardRef(() => MenuItemShortcutTemplateDirective)
353
+ }
354
+ ], usesInheritance: true, ngImport: i0 }); }
355
+ }
356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuItemShortcutTemplateDirective, decorators: [{
357
+ type: Directive,
358
+ args: [{
359
+ selector: "ng-template[monaMenuItemShortcutTemplate]",
360
+ providers: [
361
+ {
362
+ provide: PopupMenuShortcutTemplateToken,
363
+ useExisting: forwardRef(() => MenuItemShortcutTemplateDirective)
364
+ }
365
+ ]
366
+ }]
367
+ }] });
368
+
369
+ class MenuItemTextTemplateDirective extends PopupMenuTextTemplateDirective {
370
+ constructor() {
371
+ super(...arguments);
372
+ this.origin = PopupMenuTemplateOrigin.MenubarMenu;
373
+ }
374
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuItemTextTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
375
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: MenuItemTextTemplateDirective, isStandalone: true, selector: "ng-template[monaMenuItemTextTemplate]", providers: [
376
+ {
377
+ provide: PopupMenuTextTemplateToken,
378
+ useExisting: forwardRef(() => MenuItemTextTemplateDirective)
379
+ }
380
+ ], usesInheritance: true, ngImport: i0 }); }
381
+ }
382
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenuItemTextTemplateDirective, decorators: [{
383
+ type: Directive,
384
+ args: [{
385
+ selector: "ng-template[monaMenuItemTextTemplate]",
386
+ providers: [
387
+ {
388
+ provide: PopupMenuTextTemplateToken,
389
+ useExisting: forwardRef(() => MenuItemTextTemplateDirective)
390
+ }
391
+ ]
392
+ }]
393
+ }] });
394
+
395
+ const contextMenuContentVariants = cva(`
396
+ w-full gap-4 overflow-hidden
397
+ bg-background text-foreground
398
+ shadow-lg border border-border
399
+ `, {
400
+ variants: {
401
+ rounded: {
402
+ small: "rounded-sm",
403
+ medium: "rounded-md",
404
+ large: "rounded-lg",
405
+ none: "rounded-none"
406
+ },
407
+ size: {
408
+ small: "px-1 py-0.5",
409
+ medium: "px-1.5 py-1",
410
+ large: "px-2 py-1.5"
411
+ }
412
+ }
413
+ });
414
+ const contextMenuDividerVariants = cva(`-mx-0.5 my-1 h-px bg-border`);
415
+ const menuItemGroupHeaderVariants = cva(`font-bold inline-flex select-none px-2 py-1 w-full`, {
416
+ variants: {
417
+ size: {
418
+ small: "text-xs",
419
+ medium: "text-sm",
420
+ large: "text-md"
421
+ }
422
+ }
423
+ });
424
+ const menuItemIconVariants = cva(`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`);
425
+ const menuItemLinkVariants = cva(`flex h-3.5 w-3.5 items-center justify-center`);
426
+ const menuItemShortcutVariants = cva(`flex items-center justify-end flex-1 opacity-60 text-xs`);
427
+ const menuItemTextVariants = cva(`flex flex-1 items-center justify-start gap-2`);
428
+ const menuItemVariants = cva(`
429
+ relative flex cursor-default select-none items-center px-2 py-1.5 gap-4
430
+ outline-none
431
+
432
+ hover:bg-hover
433
+ hover:text-hover-foreground
434
+
435
+ focus-within:bg-accent
436
+ focus-within:text-accent-foreground
437
+ focus-within:outline-none
438
+
439
+ data-[disabled='true']:pointer-events-none
440
+ data-[disabled='true']:cursor-not-allowed
441
+ data-[disabled='true']:opacity-50
442
+
443
+ data-[focused]:bg-accent
444
+ data-[focused]:text-accent-foreground
445
+ `, {
446
+ variants: {
447
+ size: {
448
+ small: "px-2 py-1 text-xs",
449
+ medium: "px-2 py-1.5 text-sm",
450
+ large: "px-3 py-2 text-md"
451
+ }
452
+ }
453
+ });
454
+ const menubarBaseVariants = cva(`
455
+ flex items-center justify-center
456
+ gap-1 overflow-hidden
457
+ bg-background text-foreground
458
+ shadow-sm border border-border
459
+
460
+ data-[disabled='true']:pointer-events-none
461
+ data-[disabled='true']:cursor-not-allowed
462
+ data-[disabled='true']:opacity-50
463
+ `, {
464
+ variants: {
465
+ rounded: {
466
+ small: "rounded-sm",
467
+ medium: "rounded-md",
468
+ large: "rounded-lg",
469
+ none: "rounded-none"
470
+ },
471
+ size: {
472
+ small: "h-8 text-xs",
473
+ medium: "h-10 text-sm",
474
+ large: "h-12 text-md"
475
+ }
476
+ }
477
+ });
478
+ const menubarListItemVariants = cva(`
479
+ h-full flex items-center justify-center
480
+ px-2 py-1.5
481
+ cursor-pointer outline-none
482
+
483
+ hover:bg-hover
484
+ hover:text-hover-foreground
485
+ focus-within:bg-accent
486
+ focus-within:text-accent-foreground
487
+ focus-within:outline-none
488
+ data-[disabled='true']:pointer-events-none
489
+ data-[disabled='true']:cursor-not-allowed
490
+ data-[disabled='true']:opacity-50
491
+ data-[active='true']:bg-accent
492
+ data-[active='true']:text-accent-foreground
493
+ `, {
494
+ variants: {
495
+ rounded: {
496
+ small: "rounded-sm",
497
+ medium: "rounded-md",
498
+ large: "rounded-lg",
499
+ none: "rounded-none"
500
+ }
501
+ }
502
+ });
503
+ const menubarListVariants = cva(`
504
+ w-full h-full list-none
505
+ flex items-center select-none
506
+ p-1
507
+ `);
508
+
509
+ const contextMenuContentThemeVariants = (theme) => {
510
+ switch (theme) {
511
+ case "mona":
512
+ return contextMenuContentVariants;
513
+ default:
514
+ return contextMenuContentVariants;
515
+ }
516
+ };
517
+ const contextMenuDividerThemeVariants = (theme) => {
518
+ switch (theme) {
519
+ case "mona":
520
+ return contextMenuDividerVariants;
521
+ default:
522
+ return contextMenuDividerVariants;
523
+ }
524
+ };
525
+ const menuItemGroupHeaderThemeVariants = (theme) => {
526
+ switch (theme) {
527
+ case "mona":
528
+ return menuItemGroupHeaderVariants;
529
+ default:
530
+ return menuItemGroupHeaderVariants;
531
+ }
532
+ };
533
+ const menuItemIconThemeVariants = (theme) => {
534
+ switch (theme) {
535
+ case "mona":
536
+ return menuItemIconVariants;
537
+ default:
538
+ return menuItemIconVariants;
539
+ }
540
+ };
541
+ const menuItemLinkThemeVariants = (theme) => {
542
+ switch (theme) {
543
+ case "mona":
544
+ return menuItemLinkVariants;
545
+ default:
546
+ return menuItemLinkVariants;
547
+ }
548
+ };
549
+ const menuItemShortcutThemeVariants = (theme) => {
550
+ switch (theme) {
551
+ case "mona":
552
+ return menuItemShortcutVariants;
553
+ default:
554
+ return menuItemShortcutVariants;
555
+ }
556
+ };
557
+ const menuItemTextThemeVariants = (theme) => {
558
+ switch (theme) {
559
+ case "mona":
560
+ return menuItemTextVariants;
561
+ default:
562
+ return menuItemTextVariants;
563
+ }
564
+ };
565
+ const menuItemThemeVariants = (theme) => {
566
+ switch (theme) {
567
+ case "mona":
568
+ return menuItemVariants;
569
+ default:
570
+ return menuItemVariants;
571
+ }
572
+ };
573
+ const menubarBaseThemeVariants = (theme) => {
574
+ switch (theme) {
575
+ case "mona":
576
+ return menubarBaseVariants;
577
+ default:
578
+ return menubarBaseVariants;
579
+ }
580
+ };
581
+ const menubarListItemThemeVariants = (theme) => {
582
+ switch (theme) {
583
+ case "mona":
584
+ return menubarListItemVariants;
585
+ default:
586
+ return menubarListItemVariants;
587
+ }
588
+ };
589
+ const menubarListThemeVariants = (theme) => {
590
+ switch (theme) {
591
+ case "mona":
592
+ return menubarListVariants;
593
+ default:
594
+ return menubarListVariants;
595
+ }
596
+ };
597
+
598
+ class MenubarComponent {
599
+ #destroyRef;
600
+ #document;
601
+ #hostElementRef;
602
+ #themeService;
603
+ constructor() {
604
+ this.#destroyRef = inject(DestroyRef);
605
+ this.#document = inject(DOCUMENT);
606
+ this.#hostElementRef = inject((ElementRef));
607
+ this.#themeService = inject(ThemeService);
608
+ this.activeIndex = signal(0, /* @ts-ignore */
609
+ ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
610
+ this.baseClasses = computed(() => {
611
+ const theme = this.#themeService.theme();
612
+ const rounded = this.rounded();
613
+ const size = this.size();
614
+ const userClasses = this.userClasses();
615
+ const variants = menubarBaseThemeVariants(theme)({ rounded, size });
616
+ return twMerge(variants, userClasses);
617
+ }, /* @ts-ignore */
618
+ ...(ngDevMode ? [{ debugName: "baseClasses" }] : /* istanbul ignore next */ []));
619
+ this.currentPopupElement = signal(null, /* @ts-ignore */
620
+ ...(ngDevMode ? [{ debugName: "currentPopupElement" }] : /* istanbul ignore next */ []));
621
+ this.currentPopupMenu = signal(null, /* @ts-ignore */
622
+ ...(ngDevMode ? [{ debugName: "currentPopupMenu" }] : /* istanbul ignore next */ []));
623
+ this.groupTemplate = contentChild(MenuGroupTemplateDirective, { ...(ngDevMode ? { debugName: "groupTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
624
+ descendants: false });
625
+ this.iconTemplate = contentChild(MenuIconTemplateDirective, { ...(ngDevMode ? { debugName: "iconTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
626
+ descendants: false });
627
+ this.listClasses = computed(() => {
628
+ const theme = this.#themeService.theme();
629
+ return menubarListThemeVariants(theme)();
630
+ }, /* @ts-ignore */
631
+ ...(ngDevMode ? [{ debugName: "listClasses" }] : /* istanbul ignore next */ []));
632
+ this.listItemClasses = computed(() => {
633
+ const theme = this.#themeService.theme();
634
+ const rounded = this.rounded();
635
+ return menubarListItemThemeVariants(theme)({ rounded });
636
+ }, /* @ts-ignore */
637
+ ...(ngDevMode ? [{ debugName: "listItemClasses" }] : /* istanbul ignore next */ []));
638
+ this.menuItemIconTemplate = contentChild(MenuItemIconTemplateDirective, { ...(ngDevMode ? { debugName: "menuItemIconTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
639
+ descendants: false });
640
+ this.menuItemShortcutTemplate = contentChild(MenuItemShortcutTemplateDirective, { ...(ngDevMode ? { debugName: "menuItemShortcutTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
641
+ descendants: false });
642
+ this.menuItemTextTemplate = contentChild(MenuItemTextTemplateDirective, { ...(ngDevMode ? { debugName: "menuItemTextTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
643
+ descendants: false });
644
+ this.menuList = contentChildren(MenuComponent, /* @ts-ignore */
645
+ ...(ngDevMode ? [{ debugName: "menuList" }] : /* istanbul ignore next */ []));
646
+ this.navigate$ = new Subject();
647
+ this.popupMenuComponents = viewChildren(PopupMenuComponent, /* @ts-ignore */
648
+ ...(ngDevMode ? [{ debugName: "popupMenuComponents" }] : /* istanbul ignore next */ []));
649
+ this.textTemplate = contentChild(MenuTextTemplateDirective, { ...(ngDevMode ? { debugName: "textTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
650
+ descendants: false });
651
+ /**
652
+ * @description ARIA label for the menubar.
653
+ */
654
+ this.ariaLabel = input("", /* @ts-ignore */
655
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
656
+ /**
657
+ * @description ARIA labelledby for the menubar.
658
+ */
659
+ this.ariaLabelledby = input("", /* @ts-ignore */
660
+ ...(ngDevMode ? [{ debugName: "ariaLabelledby" }] : /* istanbul ignore next */ []));
661
+ /**
662
+ * @description Sets the disabled state of menubar.
663
+ */
664
+ this.disabled = input(false, /* @ts-ignore */
665
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
666
+ /**
667
+ * @description Emits when a menu item is clicked.
668
+ */
669
+ this.menuItemClick = output();
670
+ /**
671
+ * @description Sets the size of the menubar.
672
+ */
673
+ this.size = input("medium", /* @ts-ignore */
674
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
675
+ /**
676
+ * @description Sets the rounded style of the menubar.
677
+ */
678
+ this.rounded = input("medium", /* @ts-ignore */
679
+ ...(ngDevMode ? [{ debugName: "rounded" }] : /* istanbul ignore next */ []));
680
+ /**
681
+ * @description Additional CSS classes to apply to the menubar, merged with the computed theme classes.
682
+ */
683
+ this.userClasses = input("", { ...(ngDevMode ? { debugName: "userClasses" } : /* istanbul ignore next */ {}), alias: "class" });
684
+ effect(() => {
685
+ const popupMenuComponents = this.popupMenuComponents();
686
+ untracked(() => {
687
+ zip(this.menuList(), popupMenuComponents).forEach(([menu, popupMenu]) => {
688
+ menu.popupMenu = popupMenu;
689
+ });
690
+ });
691
+ });
692
+ effect(() => {
693
+ this.menuList();
694
+ untracked(() => {
695
+ this.currentPopupMenu()?.closeMenu();
696
+ this.currentPopupMenu.set(null);
697
+ this.currentPopupElement.set(null);
698
+ });
699
+ });
700
+ effect(() => {
701
+ const menuList = this.menuList();
702
+ untracked(() => {
703
+ const currentItem = menuList[this.activeIndex()];
704
+ if (!currentItem || currentItem.disabled()) {
705
+ const fallbackIndex = menuList.findIndex(m => !m.disabled());
706
+ this.activeIndex.set(fallbackIndex >= 0 ? fallbackIndex : 0);
707
+ }
708
+ });
709
+ });
710
+ afterNextRender({
711
+ read: () => this.setSubscriptions()
712
+ });
713
+ }
714
+ onMenuBlur(event) {
715
+ if (!this.currentPopupMenu()) {
716
+ const relatedTarget = event.relatedTarget;
717
+ const menubarElement = this.#hostElementRef.nativeElement;
718
+ if (!relatedTarget || !menubarElement.contains(relatedTarget)) {
719
+ this.currentPopupElement.set(null);
720
+ }
721
+ }
722
+ }
723
+ onMenuClick(event, item) {
724
+ if (this.disabled() || item.disabled()) {
725
+ event.preventDefault();
726
+ event.stopImmediatePropagation();
727
+ }
728
+ }
729
+ onMenuFocus(index) {
730
+ this.activeIndex.set(index);
731
+ }
732
+ onMenuItemClick(event) {
733
+ this.menuItemClick.emit(event);
734
+ }
735
+ onMenuKeyDown(event, item, popupMenu) {
736
+ if (this.disabled()) {
737
+ return;
738
+ }
739
+ switch (event.key) {
740
+ case "Enter":
741
+ case " ":
742
+ event.preventDefault();
743
+ if (popupMenu && !item.disabled()) {
744
+ popupMenu.openMenuViaKeyboard();
745
+ }
746
+ break;
747
+ case "ArrowRight":
748
+ event.preventDefault();
749
+ this.moveToNextMenu();
750
+ break;
751
+ case "ArrowLeft":
752
+ event.preventDefault();
753
+ this.moveToPreviousMenu();
754
+ break;
755
+ case "ArrowDown":
756
+ event.preventDefault();
757
+ if (popupMenu && !item.disabled() && !this.currentPopupMenu()) {
758
+ popupMenu.openMenuViaKeyboard();
759
+ }
760
+ break;
761
+ case "Home":
762
+ event.preventDefault();
763
+ this.moveToFirstMenu();
764
+ break;
765
+ case "End":
766
+ event.preventDefault();
767
+ this.moveToLastMenu();
768
+ break;
769
+ case "Escape":
770
+ event.preventDefault();
771
+ this.closeCurrentMenu();
772
+ break;
773
+ }
774
+ }
775
+ onMenuPointerEnter(item, element, popupMenu) {
776
+ if (this.disabled() || item.disabled() || this.currentPopupMenu() === popupMenu || !this.currentPopupMenu()) {
777
+ return;
778
+ }
779
+ this.currentPopupMenu()?.clearFocusRestoration();
780
+ this.currentPopupMenu()?.closeMenu();
781
+ this.currentPopupMenu.set(popupMenu);
782
+ this.currentPopupElement.set(element);
783
+ this.currentPopupMenu().openMenu(false);
784
+ }
785
+ onPopupMenuClose() {
786
+ this.currentPopupMenu.set(null);
787
+ this.currentPopupElement.set(null);
788
+ }
789
+ onPopupMenuOpen(popupMenu, element) {
790
+ if (this.currentPopupMenu() === popupMenu) {
791
+ return;
792
+ }
793
+ this.currentPopupMenu.set(popupMenu);
794
+ this.currentPopupElement.set(element);
795
+ }
796
+ closeCurrentMenu() {
797
+ if (this.currentPopupMenu()) {
798
+ this.currentPopupMenu()?.closeMenu();
799
+ }
800
+ }
801
+ findCurrentMenuIndex() {
802
+ let currentIndex = this.menuList().findIndex(n => n.popupMenu === this.currentPopupMenu());
803
+ if (currentIndex < 0) {
804
+ const focusedElement = this.#document.activeElement;
805
+ if (focusedElement && focusedElement.hasAttribute("data-mid")) {
806
+ const uid = focusedElement.getAttribute("data-mid");
807
+ currentIndex = this.menuList().findIndex(m => m.uid === uid);
808
+ }
809
+ }
810
+ return currentIndex >= 0 ? currentIndex : null;
811
+ }
812
+ findMenuElementByUid(uid) {
813
+ const menuList = this.menuList();
814
+ const index = menuList.findIndex(m => m.uid === uid);
815
+ if (index < 0) {
816
+ return null;
817
+ }
818
+ return this.#hostElementRef.nativeElement.querySelector(`li[data-mid="${uid}"]`);
819
+ }
820
+ findNextNonDisabledMenuIndex() {
821
+ const currentIndex = this.findCurrentMenuIndex();
822
+ if (currentIndex == null || currentIndex < 0) {
823
+ return this.menuList().findIndex(m => !m.disabled());
824
+ }
825
+ const next = rotate(this.menuList(), currentIndex)
826
+ .skip(1)
827
+ .firstOrDefault(m => !m.disabled());
828
+ if (next) {
829
+ return this.menuList().findIndex(m => m === next);
830
+ }
831
+ return -1;
832
+ }
833
+ findPreviousNonDisabledMenuIndex() {
834
+ let currentIndex = this.findCurrentMenuIndex();
835
+ if (currentIndex == null || currentIndex < 0) {
836
+ const menuList = this.menuList();
837
+ const lastEnabledIndex = menuList
838
+ .slice()
839
+ .reverse()
840
+ .findIndex(m => !m.disabled());
841
+ return lastEnabledIndex >= 0 ? menuList.length - 1 - lastEnabledIndex : -1;
842
+ }
843
+ const next = rotate(this.menuList(), currentIndex)
844
+ .reverse()
845
+ .firstOrDefault(m => !m.disabled());
846
+ if (next) {
847
+ return this.menuList().findIndex(m => m === next);
848
+ }
849
+ return -1;
850
+ }
851
+ focusMenuAt(index) {
852
+ const menu = this.menuList()[index];
853
+ if (menu && !menu.disabled()) {
854
+ const element = this.findMenuElementByUid(menu.uid);
855
+ if (element) {
856
+ element.focus();
857
+ }
858
+ }
859
+ }
860
+ moveToFirstMenu() {
861
+ const firstEnabledIndex = this.menuList().findIndex(m => !m.disabled());
862
+ if (firstEnabledIndex >= 0) {
863
+ this.focusMenuAt(firstEnabledIndex);
864
+ }
865
+ }
866
+ moveToLastMenu() {
867
+ const menuList = this.menuList();
868
+ const lastEnabledIndex = menuList
869
+ .slice()
870
+ .reverse()
871
+ .findIndex(m => !m.disabled());
872
+ if (lastEnabledIndex >= 0) {
873
+ const actualIndex = menuList.length - 1 - lastEnabledIndex;
874
+ this.focusMenuAt(actualIndex);
875
+ }
876
+ }
877
+ moveToNextMenu() {
878
+ const index = this.findNextNonDisabledMenuIndex();
879
+ if (index >= 0) {
880
+ this.focusMenuAt(index);
881
+ }
882
+ }
883
+ moveToPreviousMenu() {
884
+ const index = this.findPreviousNonDisabledMenuIndex();
885
+ if (index >= 0) {
886
+ this.focusMenuAt(index);
887
+ }
888
+ }
889
+ setNavigationSubscription() {
890
+ this.navigate$
891
+ .pipe(takeUntilDestroyed(this.#destroyRef), startWith(null), pairwise(), tap(([prev, next]) => {
892
+ if (next && next.direction === "right" && (next.level === 0 || (next.level > 0 && !next.item))) {
893
+ const index = this.findNextNonDisabledMenuIndex();
894
+ if (index >= 0) {
895
+ this.updateCurrentMenuData(index);
896
+ }
897
+ }
898
+ else if (next && prev && next.direction === "left" && prev.level === 0 && next.level === 0) {
899
+ const index = this.findPreviousNonDisabledMenuIndex();
900
+ if (index >= 0) {
901
+ this.updateCurrentMenuData(index);
902
+ }
903
+ }
904
+ if (next && this.currentPopupMenu()) {
905
+ this.currentPopupMenu()?.setRestoreFocusForKeyboard();
906
+ }
907
+ }))
908
+ .subscribe();
909
+ }
910
+ setSubscriptions() {
911
+ this.setNavigationSubscription();
912
+ }
913
+ updateCurrentMenuData(index) {
914
+ this.currentPopupMenu()?.clearFocusRestoration();
915
+ this.currentPopupMenu()?.closeMenu();
916
+ this.currentPopupMenu.set(this.menuList()[index].popupMenu);
917
+ const element = this.findMenuElementByUid(this.menuList()[index].uid);
918
+ this.currentPopupElement.set(element);
919
+ this.currentPopupMenu()?.openMenuViaKeyboard();
920
+ }
921
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenubarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
922
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: MenubarComponent, isStandalone: true, selector: "mona-menubar", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "ariaLabelledby", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, userClasses: { classPropertyName: "userClasses", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { menuItemClick: "menuItemClick" }, host: { properties: { "class": "baseClasses()", "attr.data-disabled": "disabled()" } }, queries: [{ propertyName: "groupTemplate", first: true, predicate: MenuGroupTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "iconTemplate", first: true, predicate: MenuIconTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "menuItemIconTemplate", first: true, predicate: MenuItemIconTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "menuItemShortcutTemplate", first: true, predicate: MenuItemShortcutTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "menuItemTextTemplate", first: true, predicate: MenuItemTextTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "menuList", predicate: MenuComponent, isSignal: true }, { propertyName: "textTemplate", first: true, predicate: MenuTextTemplateDirective, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "popupMenuComponents", predicate: PopupMenuComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ul\n [class]=\"listClasses()\"\n role=\"menubar\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\">\n @for (item of menuList(); track item; let i = $index) {\n @let menuIconTemplate = item.iconTemplate() ?? iconTemplate() ?? null;\n @let menuTextTemplate = item.textTemplate() ?? textTemplate() ?? null;\n @let menuId = item.uid + \"-menu\";\n <li\n [class]=\"listItemClasses()\"\n [attr.data-disabled]=\"item.disabled()\"\n [attr.data-active]=\"currentPopupMenu() != null && currentPopupMenu() === item.popupMenu\"\n [attr.data-mid]=\"item.uid\"\n [attr.tabindex]=\"item.disabled() ? -1 : i === activeIndex() ? 0 : -1\"\n [attr.role]=\"'menuitem'\"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-expanded]=\"\n currentPopupMenu() != null && currentPopupMenu() === item.popupMenu ? 'true' : 'false'\n \"\n [attr.aria-controls]=\"currentPopupMenu() != null && currentPopupMenu() === item.popupMenu ? menuId : null\"\n [attr.aria-disabled]=\"item.disabled()\"\n (pointerenter)=\"onMenuPointerEnter(item, listItemElement, popupMenu)\"\n (keydown)=\"onMenuKeyDown($event, item, popupMenu)\"\n (click)=\"onMenuClick($event, item)\"\n (focus)=\"onMenuFocus(i)\"\n (blur)=\"onMenuBlur($event)\"\n #listItemElement>\n @if (menuIconTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"menuIconTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.text(), items: item.menuItems() }\"></ng-container>\n }\n @if (!menuTextTemplate) {\n <span>{{ item.text() }}</span>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"menuTextTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.text(), items: item.menuItems() }\">\n </ng-container>\n }\n </li>\n <mona-popup-menu\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n [target]=\"listItemElement\"\n [anchorConnectionPoint]=\"'bottomleft'\"\n [popupConnectionPoint]=\"'topleft'\"\n (menuClick)=\"onMenuItemClick($event)\"\n (navigate)=\"navigate$.next($event)\"\n [trigger]=\"'click'\"\n [offset]=\"{ horizontal: 0, vertical: 2 }\"\n (close)=\"onPopupMenuClose()\"\n (open)=\"onPopupMenuOpen(popupMenu, listItemElement)\"\n [items]=\"item.menuItems()\"\n [id]=\"menuId\"\n #popupMenu>\n @if (groupTemplate()) {\n <ng-template monaPopupMenuGroupTemplate let-group>\n <ng-container\n [ngTemplateOutlet]=\"groupTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\n </ng-template>\n }\n @if (menuItemIconTemplate()) {\n <ng-template monaPopupMenuIconTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"menuItemIconTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n @if (menuItemShortcutTemplate()) {\n <ng-template monaPopupMenuShortcutTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"menuItemShortcutTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n @if (menuItemTextTemplate()) {\n <ng-template monaPopupMenuTextTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"menuItemTextTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n </mona-popup-menu>\n }\n</ul>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopupMenuComponent, selector: "mona-popup-menu", inputs: ["anchor", "anchorConnectionPoint", "items", "id", "minWidth", "offset", "popupConnectionPoint", "precise", "rounded", "size", "target", "trigger", "width"], outputs: ["close", "menuClick", "navigate", "open"] }, { kind: "directive", type: PopupMenuTextTemplateDirective, selector: "ng-template[monaPopupMenuTextTemplate]" }, { kind: "directive", type: PopupMenuIconTemplateDirective, selector: "ng-template[monaPopupMenuIconTemplate]" }, { kind: "directive", type: PopupMenuShortcutTemplateDirective, selector: "ng-template[monaPopupMenuShortcutTemplate]" }, { kind: "directive", type: PopupMenuGroupTemplateDirective, selector: "ng-template[monaPopupMenuGroupTemplate]" }] }); }
923
+ }
924
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MenubarComponent, decorators: [{
925
+ type: Component,
926
+ args: [{ selector: "mona-menubar", imports: [
927
+ NgTemplateOutlet,
928
+ PopupMenuComponent,
929
+ PopupMenuTextTemplateDirective,
930
+ PopupMenuIconTemplateDirective,
931
+ PopupMenuShortcutTemplateDirective,
932
+ PopupMenuGroupTemplateDirective
933
+ ], host: {
934
+ "[class]": "baseClasses()",
935
+ "[attr.data-disabled]": "disabled()"
936
+ }, template: "<ul\n [class]=\"listClasses()\"\n role=\"menubar\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\">\n @for (item of menuList(); track item; let i = $index) {\n @let menuIconTemplate = item.iconTemplate() ?? iconTemplate() ?? null;\n @let menuTextTemplate = item.textTemplate() ?? textTemplate() ?? null;\n @let menuId = item.uid + \"-menu\";\n <li\n [class]=\"listItemClasses()\"\n [attr.data-disabled]=\"item.disabled()\"\n [attr.data-active]=\"currentPopupMenu() != null && currentPopupMenu() === item.popupMenu\"\n [attr.data-mid]=\"item.uid\"\n [attr.tabindex]=\"item.disabled() ? -1 : i === activeIndex() ? 0 : -1\"\n [attr.role]=\"'menuitem'\"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-expanded]=\"\n currentPopupMenu() != null && currentPopupMenu() === item.popupMenu ? 'true' : 'false'\n \"\n [attr.aria-controls]=\"currentPopupMenu() != null && currentPopupMenu() === item.popupMenu ? menuId : null\"\n [attr.aria-disabled]=\"item.disabled()\"\n (pointerenter)=\"onMenuPointerEnter(item, listItemElement, popupMenu)\"\n (keydown)=\"onMenuKeyDown($event, item, popupMenu)\"\n (click)=\"onMenuClick($event, item)\"\n (focus)=\"onMenuFocus(i)\"\n (blur)=\"onMenuBlur($event)\"\n #listItemElement>\n @if (menuIconTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"menuIconTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.text(), items: item.menuItems() }\"></ng-container>\n }\n @if (!menuTextTemplate) {\n <span>{{ item.text() }}</span>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"menuTextTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.text(), items: item.menuItems() }\">\n </ng-container>\n }\n </li>\n <mona-popup-menu\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n [target]=\"listItemElement\"\n [anchorConnectionPoint]=\"'bottomleft'\"\n [popupConnectionPoint]=\"'topleft'\"\n (menuClick)=\"onMenuItemClick($event)\"\n (navigate)=\"navigate$.next($event)\"\n [trigger]=\"'click'\"\n [offset]=\"{ horizontal: 0, vertical: 2 }\"\n (close)=\"onPopupMenuClose()\"\n (open)=\"onPopupMenuOpen(popupMenu, listItemElement)\"\n [items]=\"item.menuItems()\"\n [id]=\"menuId\"\n #popupMenu>\n @if (groupTemplate()) {\n <ng-template monaPopupMenuGroupTemplate let-group>\n <ng-container\n [ngTemplateOutlet]=\"groupTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\n </ng-template>\n }\n @if (menuItemIconTemplate()) {\n <ng-template monaPopupMenuIconTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"menuItemIconTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n @if (menuItemShortcutTemplate()) {\n <ng-template monaPopupMenuShortcutTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"menuItemShortcutTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n @if (menuItemTextTemplate()) {\n <ng-template monaPopupMenuTextTemplate let-item>\n <ng-container\n [ngTemplateOutlet]=\"menuItemTextTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-template>\n }\n </mona-popup-menu>\n }\n</ul>\n" }]
937
+ }], ctorParameters: () => [], propDecorators: { groupTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MenuGroupTemplateDirective), { ...{
938
+ read: TemplateRef,
939
+ descendants: false
940
+ }, isSignal: true }] }], iconTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MenuIconTemplateDirective), { ...{
941
+ read: TemplateRef,
942
+ descendants: false
943
+ }, isSignal: true }] }], menuItemIconTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MenuItemIconTemplateDirective), { ...{
944
+ read: TemplateRef,
945
+ descendants: false
946
+ }, isSignal: true }] }], menuItemShortcutTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MenuItemShortcutTemplateDirective), { ...{
947
+ read: TemplateRef,
948
+ descendants: false
949
+ }, isSignal: true }] }], menuItemTextTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MenuItemTextTemplateDirective), { ...{
950
+ read: TemplateRef,
951
+ descendants: false
952
+ }, isSignal: true }] }], menuList: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => MenuComponent), { isSignal: true }] }], popupMenuComponents: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => PopupMenuComponent), { isSignal: true }] }], textTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MenuTextTemplateDirective), { ...{
953
+ read: TemplateRef,
954
+ descendants: false
955
+ }, isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledby", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], menuItemClick: [{ type: i0.Output, args: ["menuItemClick"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], userClasses: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
956
+
957
+ /*
958
+ * Public API Surface of @nanahoshi/mona-ui/menubar
959
+ */
960
+
961
+ /**
962
+ * Generated bundle index. Do not edit.
963
+ */
964
+
965
+ export { MenuCheckboxItemComponent, MenuComponent, MenuGroupComponent, MenuGroupTemplateDirective, MenuIconTemplateDirective, MenuItemComponent, MenuItemIconTemplateDirective, MenuItemShortcutTemplateDirective, MenuItemTextTemplateDirective, MenuRadioGroupComponent, MenuRadioItemComponent, MenuSeparatorComponent, MenuTextTemplateDirective, MenubarComponent };
966
+ //# sourceMappingURL=nanahoshi-mona-ui-menubar.mjs.map