@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,636 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { Directive, forwardRef, inject, DestroyRef, contentChildren, viewChild, computed, contentChild, TemplateRef, signal, input, output, afterNextRender, Component, effect } from '@angular/core';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { LucideChevronDown } from '@lucide/angular';
6
+ import { ButtonDirective } from '@nanahoshi/mona-ui/button';
7
+ import { PopupMenuGroupTemplateDirective, PopupMenuTemplateOrigin, PopupMenuGroupTemplateToken, PopupMenuIconTemplateDirective, PopupMenuIconTemplateToken, PopupMenuShortcutTemplateDirective, PopupMenuShortcutTemplateToken, PopupMenuTextTemplateDirective, PopupMenuTextTemplateToken, PopupMenuToken, PopupMenuComponent, PopupMenuItemType, PopupMenuTemplateType, ensurePopupComponentTypes, PopupMenuOrigin, ensurePopupTemplateTypes, PopupMenuCheckboxItemComponent, PopupMenuGroupComponent, PopupMenuItemComponent, PopupMenuRadioGroupComponent, PopupMenuRadioItemComponent, PopupMenuRadioItemToken, PopupMenuSeparatorComponent } from '@nanahoshi/mona-ui/popup-menu';
8
+ import { ThemeService } from '@nanahoshi/mona-ui/theme';
9
+ import { createElementControlId } from '@nanahoshi/mona-ui/internal';
10
+ import { fromEvent } from 'rxjs';
11
+ import { twMerge } from 'tailwind-merge';
12
+ import { cva } from 'class-variance-authority';
13
+
14
+ class SplitButtonMenuButtonTemplateDirective {
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuButtonTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonMenuButtonTemplateDirective, isStandalone: true, selector: "ng-template[monaSplitButtonMenuButtonTemplate]", ngImport: i0 }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuButtonTemplateDirective, decorators: [{
19
+ type: Directive,
20
+ args: [{
21
+ selector: "ng-template[monaSplitButtonMenuButtonTemplate]"
22
+ }]
23
+ }] });
24
+
25
+ class SplitButtonMenuGroupTemplateDirective extends PopupMenuGroupTemplateDirective {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.origin = PopupMenuTemplateOrigin.SplitButton;
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuGroupTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
31
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonMenuGroupTemplateDirective, isStandalone: true, selector: "ng-template[monaSplitButtonMenuGroupTemplate]", providers: [
32
+ {
33
+ provide: PopupMenuGroupTemplateToken,
34
+ useExisting: forwardRef(() => SplitButtonMenuGroupTemplateDirective)
35
+ }
36
+ ], usesInheritance: true, ngImport: i0 }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuGroupTemplateDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: "ng-template[monaSplitButtonMenuGroupTemplate]",
42
+ providers: [
43
+ {
44
+ provide: PopupMenuGroupTemplateToken,
45
+ useExisting: forwardRef(() => SplitButtonMenuGroupTemplateDirective)
46
+ }
47
+ ]
48
+ }]
49
+ }] });
50
+
51
+ class SplitButtonMenuItemIconTemplateDirective extends PopupMenuIconTemplateDirective {
52
+ constructor() {
53
+ super(...arguments);
54
+ this.origin = PopupMenuTemplateOrigin.SplitButton;
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuItemIconTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
57
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonMenuItemIconTemplateDirective, isStandalone: true, selector: "ng-template[monaSplitButtonMenuItemIconTemplate]", providers: [
58
+ {
59
+ provide: PopupMenuIconTemplateToken,
60
+ useExisting: forwardRef(() => SplitButtonMenuItemIconTemplateDirective)
61
+ }
62
+ ], usesInheritance: true, ngImport: i0 }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuItemIconTemplateDirective, decorators: [{
65
+ type: Directive,
66
+ args: [{
67
+ selector: "ng-template[monaSplitButtonMenuItemIconTemplate]",
68
+ providers: [
69
+ {
70
+ provide: PopupMenuIconTemplateToken,
71
+ useExisting: forwardRef(() => SplitButtonMenuItemIconTemplateDirective)
72
+ }
73
+ ]
74
+ }]
75
+ }] });
76
+
77
+ class SplitButtonMenuItemShortcutTemplateDirective extends PopupMenuShortcutTemplateDirective {
78
+ constructor() {
79
+ super(...arguments);
80
+ this.origin = PopupMenuTemplateOrigin.SplitButton;
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuItemShortcutTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
83
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonMenuItemShortcutTemplateDirective, isStandalone: true, selector: "ng-template[monaSplitButtonMenuItemShortcutTemplate]", providers: [
84
+ {
85
+ provide: PopupMenuShortcutTemplateToken,
86
+ useExisting: forwardRef(() => SplitButtonMenuItemShortcutTemplateDirective)
87
+ }
88
+ ], usesInheritance: true, ngImport: i0 }); }
89
+ }
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuItemShortcutTemplateDirective, decorators: [{
91
+ type: Directive,
92
+ args: [{
93
+ selector: "ng-template[monaSplitButtonMenuItemShortcutTemplate]",
94
+ providers: [
95
+ {
96
+ provide: PopupMenuShortcutTemplateToken,
97
+ useExisting: forwardRef(() => SplitButtonMenuItemShortcutTemplateDirective)
98
+ }
99
+ ]
100
+ }]
101
+ }] });
102
+
103
+ class SplitButtonMenuItemTextTemplateDirective extends PopupMenuTextTemplateDirective {
104
+ constructor() {
105
+ super(...arguments);
106
+ this.origin = PopupMenuTemplateOrigin.SplitButton;
107
+ }
108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuItemTextTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
109
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonMenuItemTextTemplateDirective, isStandalone: true, selector: "ng-template[monaSplitButtonMenuItemTextTemplate]", providers: [
110
+ {
111
+ provide: PopupMenuTextTemplateToken,
112
+ useExisting: forwardRef(() => SplitButtonMenuItemTextTemplateDirective)
113
+ }
114
+ ], usesInheritance: true, ngImport: i0 }); }
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonMenuItemTextTemplateDirective, decorators: [{
117
+ type: Directive,
118
+ args: [{
119
+ selector: "ng-template[monaSplitButtonMenuItemTextTemplate]",
120
+ providers: [
121
+ {
122
+ provide: PopupMenuTextTemplateToken,
123
+ useExisting: forwardRef(() => SplitButtonMenuItemTextTemplateDirective)
124
+ }
125
+ ]
126
+ }]
127
+ }] });
128
+
129
+ class SplitButtonTextTemplateDirective {
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonTextTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
131
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonTextTemplateDirective, isStandalone: true, selector: "ng-template[monaSplitButtonTextTemplate]", ngImport: i0 }); }
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonTextTemplateDirective, decorators: [{
134
+ type: Directive,
135
+ args: [{
136
+ selector: "ng-template[monaSplitButtonTextTemplate]"
137
+ }]
138
+ }] });
139
+
140
+ const splitButtonVariants = cva(`
141
+ inline-flex flex-nowrap items-center
142
+ [&>button]:focus-visible:z-10
143
+ [&_svg]:w-5 [&_svg]:h-5
144
+ `, {
145
+ variants: {
146
+ look: {
147
+ default: "",
148
+ error: "",
149
+ ghost: "border-transparent",
150
+ info: "",
151
+ outline: "[&>button:not(:last-child)]:border-r",
152
+ primary: "",
153
+ secondary: "",
154
+ success: "",
155
+ warning: ""
156
+ },
157
+ rounded: {
158
+ full: `
159
+ rounded-full
160
+ [&>button]:first:rounded-tl-full [&>button]:first:rounded-bl-full
161
+ [&>button]:last:rounded-tr-full [&>button]:last:rounded-br-full
162
+ `,
163
+ large: `
164
+ rounded-lg
165
+ [&>button]:first:rounded-tl-lg [&>button]:first:rounded-bl-lg
166
+ [&>button]:last:rounded-tr-lg [&>button]:last:rounded-br-lg
167
+ `,
168
+ medium: `
169
+ rounded-md
170
+ [&>button]:first:rounded-tl-md [&>button]:first:rounded-bl-md
171
+ [&>button]:last:rounded-tr-md [&>button]:last:rounded-br-md
172
+ `,
173
+ none: `
174
+ rounded-none
175
+ `,
176
+ small: `
177
+ rounded-sm
178
+ [&>button]:first:rounded-tl-sm [&>button]:first:rounded-bl-sm
179
+ [&>button]:last:rounded-tr-sm [&>button]:last:rounded-br-sm
180
+ `
181
+ },
182
+ size: {
183
+ large: `
184
+ [&_svg]:w-5 [&_svg]:h-5
185
+ `,
186
+ medium: `
187
+ [&_svg]:w-5 [&_svg]:h-5
188
+ `,
189
+ small: `
190
+ [&_svg]:w-4 [&_svg]:h-4
191
+ `
192
+ }
193
+ },
194
+ defaultVariants: {
195
+ look: "default",
196
+ size: "medium",
197
+ rounded: "medium"
198
+ }
199
+ });
200
+
201
+ const splitButtonThemeVariants = (theme) => {
202
+ switch (theme) {
203
+ case "mona":
204
+ return splitButtonVariants;
205
+ default:
206
+ return splitButtonVariants; // Default to Mona styles
207
+ }
208
+ };
209
+
210
+ class SplitButtonComponent {
211
+ #destroyRef;
212
+ #themeService;
213
+ constructor() {
214
+ this.#destroyRef = inject(DestroyRef);
215
+ this.#themeService = inject(ThemeService);
216
+ this.menuItemComponents = contentChildren(PopupMenuToken, { ...(ngDevMode ? { debugName: "menuItemComponents" } : /* istanbul ignore next */ {}), descendants: false });
217
+ this.menuButtonRef = viewChild("menuButton", /* @ts-ignore */
218
+ ...(ngDevMode ? [{ debugName: "menuButtonRef" }] : /* istanbul ignore next */ []));
219
+ this.popupMenuRef = viewChild("popupMenu", /* @ts-ignore */
220
+ ...(ngDevMode ? [{ debugName: "popupMenuRef" }] : /* istanbul ignore next */ []));
221
+ this.classes = computed(() => {
222
+ const theme = this.#themeService.theme();
223
+ const look = this.look();
224
+ const rounded = this.rounded();
225
+ const size = this.size();
226
+ const classes = splitButtonThemeVariants(theme)({
227
+ look,
228
+ rounded,
229
+ size
230
+ });
231
+ const userClass = this.userClass();
232
+ return twMerge(classes, userClass);
233
+ }, /* @ts-ignore */
234
+ ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
235
+ this.groupTemplate = contentChild(SplitButtonMenuGroupTemplateDirective, { ...(ngDevMode ? { debugName: "groupTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
236
+ descendants: false });
237
+ this.iconTemplate = contentChild(SplitButtonMenuItemIconTemplateDirective, { ...(ngDevMode ? { debugName: "iconTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
238
+ descendants: false });
239
+ this.mainButtonTextTemplate = contentChild(SplitButtonTextTemplateDirective, { ...(ngDevMode ? { debugName: "mainButtonTextTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
240
+ this.menuButtonTemplate = contentChild(SplitButtonMenuButtonTemplateDirective, { ...(ngDevMode ? { debugName: "menuButtonTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
241
+ this.menuId = createElementControlId();
242
+ this.menuItems = computed(() => {
243
+ return this.menuItemComponents()
244
+ .map(item => item.getPopupMenuItem())
245
+ .flatMap(i => i);
246
+ }, /* @ts-ignore */
247
+ ...(ngDevMode ? [{ debugName: "menuItems" }] : /* istanbul ignore next */ []));
248
+ this.menuOpen = signal(false, /* @ts-ignore */
249
+ ...(ngDevMode ? [{ debugName: "menuOpen" }] : /* istanbul ignore next */ []));
250
+ this.popupMenuRounded = computed(() => {
251
+ const rounded = this.rounded();
252
+ return rounded === "full" ? "large" : rounded;
253
+ }, /* @ts-ignore */
254
+ ...(ngDevMode ? [{ debugName: "popupMenuRounded" }] : /* istanbul ignore next */ []));
255
+ this.shortcutTemplate = contentChild(SplitButtonMenuItemShortcutTemplateDirective, { ...(ngDevMode ? { debugName: "shortcutTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
256
+ descendants: false });
257
+ this.splitButtonAriaLabel = computed(() => {
258
+ const ariaLabel = this.ariaLabel();
259
+ const text = this.text();
260
+ return ariaLabel || `${text} splitbutton`;
261
+ }, /* @ts-ignore */
262
+ ...(ngDevMode ? [{ debugName: "splitButtonAriaLabel" }] : /* istanbul ignore next */ []));
263
+ this.textTemplate = contentChild(SplitButtonMenuItemTextTemplateDirective, { ...(ngDevMode ? { debugName: "textTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef,
264
+ descendants: false });
265
+ /**
266
+ * @description Accessible name for the main action button.
267
+ * Falls back to `"{text} splitbutton"` when empty.
268
+ * @default ""
269
+ */
270
+ this.ariaLabel = input("", { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: "aria-label" });
271
+ /**
272
+ * @description ID of an external element that provides the accessible name for the main action button.
273
+ * Takes precedence over `ariaLabel` when both are set.
274
+ * @default ""
275
+ */
276
+ this.ariaLabelledby = input("", { ...(ngDevMode ? { debugName: "ariaLabelledby" } : /* istanbul ignore next */ {}), alias: "aria-labelledby" });
277
+ /**
278
+ * @description Emitted when the main action button is clicked.
279
+ */
280
+ this.buttonClick = output();
281
+ /**
282
+ * @description Renders the component with reduced visual emphasis
283
+ * and removes pointer interaction from both the main button and the menu toggle button.
284
+ * @default false
285
+ */
286
+ this.disabled = input(false, /* @ts-ignore */
287
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
288
+ /**
289
+ * @description Visual style preset applied to the button.
290
+ * @default "default"
291
+ */
292
+ this.look = input("default", /* @ts-ignore */
293
+ ...(ngDevMode ? [{ debugName: "look" }] : /* istanbul ignore next */ []));
294
+ /**
295
+ * @description Accessible name for the menu toggle button.
296
+ * Override to provide a localized label for non-English applications.
297
+ * @default "Show menu options"
298
+ */
299
+ this.menuButtonAriaLabel = input("Show menu options", /* @ts-ignore */
300
+ ...(ngDevMode ? [{ debugName: "menuButtonAriaLabel" }] : /* istanbul ignore next */ []));
301
+ /**
302
+ * @description Emitted when a menu item in the popup is clicked.
303
+ */
304
+ this.menuItemClick = output();
305
+ /**
306
+ * @description Minimum width of the popup menu in pixels.
307
+ * A value of `0` means no minimum width is applied.
308
+ * @default 0
309
+ */
310
+ this.popupWidth = input(0, /* @ts-ignore */
311
+ ...(ngDevMode ? [{ debugName: "popupWidth" }] : /* istanbul ignore next */ []));
312
+ /**
313
+ * @description Border-radius preset applied to the button.
314
+ * @default "medium"
315
+ */
316
+ this.rounded = input("medium", /* @ts-ignore */
317
+ ...(ngDevMode ? [{ debugName: "rounded" }] : /* istanbul ignore next */ []));
318
+ /**
319
+ * @description Size preset controlling the button's dimensions.
320
+ * @default "medium"
321
+ */
322
+ this.size = input("medium", /* @ts-ignore */
323
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
324
+ /**
325
+ * @description Primary text content displayed in the main action button.
326
+ * Ignored when a `monaSplitButtonTextTemplate` is provided.
327
+ * @default ""
328
+ */
329
+ this.text = input("", /* @ts-ignore */
330
+ ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
331
+ /**
332
+ * @description Additional CSS classes merged onto the host element via `tailwind-merge`.
333
+ * @default ""
334
+ */
335
+ this.userClass = input("", { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: "class" });
336
+ afterNextRender({
337
+ read: () => this.#setKeyboardEvents()
338
+ });
339
+ }
340
+ onMenuClose() {
341
+ this.menuOpen.set(false);
342
+ }
343
+ onMenuItemClick(event) {
344
+ this.menuItemClick.emit(event);
345
+ }
346
+ onMenuOpen() {
347
+ this.menuOpen.set(true);
348
+ }
349
+ #closeMenu() {
350
+ const popupMenu = this.popupMenuRef();
351
+ if (popupMenu && this.menuOpen()) {
352
+ popupMenu.closeMenu();
353
+ this.menuButtonRef()?.nativeElement?.focus();
354
+ }
355
+ }
356
+ #openMenuViaKeyboard() {
357
+ const popupMenu = this.popupMenuRef();
358
+ if (popupMenu && !this.menuOpen()) {
359
+ popupMenu.openMenuViaKeyboard();
360
+ }
361
+ }
362
+ #setKeyboardEvents() {
363
+ const menuButtonElement = this.menuButtonRef()?.nativeElement;
364
+ if (!menuButtonElement) {
365
+ return;
366
+ }
367
+ fromEvent(menuButtonElement, "keydown")
368
+ .pipe(takeUntilDestroyed(this.#destroyRef))
369
+ .subscribe(event => {
370
+ switch (event.key) {
371
+ case "ArrowDown":
372
+ case "ArrowUp":
373
+ case " ":
374
+ case "Enter":
375
+ event.preventDefault();
376
+ this.#openMenuViaKeyboard();
377
+ break;
378
+ case "Escape":
379
+ if (this.menuOpen()) {
380
+ this.#closeMenu();
381
+ }
382
+ break;
383
+ }
384
+ });
385
+ }
386
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
387
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: SplitButtonComponent, isStandalone: true, selector: "mona-split-button", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, menuButtonAriaLabel: { classPropertyName: "menuButtonAriaLabel", publicName: "menuButtonAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, popupWidth: { classPropertyName: "popupWidth", publicName: "popupWidth", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick", menuItemClick: "menuItemClick" }, host: { properties: { "class": "classes()" } }, queries: [{ propertyName: "menuItemComponents", predicate: PopupMenuToken, isSignal: true }, { propertyName: "groupTemplate", first: true, predicate: SplitButtonMenuGroupTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "iconTemplate", first: true, predicate: SplitButtonMenuItemIconTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "mainButtonTextTemplate", first: true, predicate: SplitButtonTextTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "menuButtonTemplate", first: true, predicate: SplitButtonMenuButtonTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "shortcutTemplate", first: true, predicate: SplitButtonMenuItemShortcutTemplateDirective, read: TemplateRef, isSignal: true }, { propertyName: "textTemplate", first: true, predicate: SplitButtonMenuItemTextTemplateDirective, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "menuButtonRef", first: true, predicate: ["menuButton"], descendants: true, isSignal: true }, { propertyName: "popupMenuRef", first: true, predicate: ["popupMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<button\r\n monaButton\r\n (click)=\"buttonClick.emit($event)\"\r\n [disabled]=\"disabled()\"\r\n [look]=\"look()\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n class=\"rounded-tr-none rounded-br-none\"\r\n [attr.aria-label]=\"splitButtonAriaLabel() || null\"\r\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\r\n [tabindex]=\"disabled() ? -1 : 0\"\r\n #mainButton>\r\n @if (mainButtonTextTemplate()) {\r\n <ng-container [ngTemplateOutlet]=\"mainButtonTextTemplate()\"></ng-container>\r\n } @else {\r\n <span>{{ text() }}</span>\r\n }\r\n</button>\r\n<button\r\n monaButton\r\n [disabled]=\"disabled()\"\r\n [iconOnly]=\"true\"\r\n [look]=\"look()\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n class=\"rounded-tl-none rounded-bl-none border-l-0\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n [attr.aria-expanded]=\"menuOpen()\"\r\n [attr.aria-controls]=\"menuId\"\r\n [attr.aria-label]=\"menuButtonAriaLabel()\"\r\n [tabindex]=\"disabled() ? -1 : 0\"\r\n #menuButton>\r\n @if (menuButtonTemplate()) {\r\n <ng-container [ngTemplateOutlet]=\"menuButtonTemplate()\"></ng-container>\r\n } @else {\r\n <svg lucideChevronDown [size]=\"16\"></svg>\r\n }\r\n</button>\r\n\r\n<mona-popup-menu\r\n [anchorConnectionPoint]=\"'bottomleft'\"\r\n [anchor]=\"mainButton\"\r\n [items]=\"menuItems()\"\r\n (menuClick)=\"onMenuItemClick($event)\"\r\n (open)=\"onMenuOpen()\"\r\n (close)=\"onMenuClose()\"\r\n [offset]=\"{ horizontal: 0, vertical: 2 }\"\r\n [popupConnectionPoint]=\"'topleft'\"\r\n [rounded]=\"popupMenuRounded()\"\r\n [size]=\"size()\"\r\n [target]=\"menuButton\"\r\n [trigger]=\"'click'\"\r\n [id]=\"menuId\"\r\n [minWidth]=\"popupWidth() || undefined\"\r\n #popupMenu>\r\n @if (groupTemplate()) {\r\n <ng-template monaPopupMenuGroupTemplate let-group>\r\n <ng-container\r\n [ngTemplateOutlet]=\"groupTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (iconTemplate()) {\r\n <ng-template monaPopupMenuIconTemplate let-item>\r\n <ng-container\r\n [ngTemplateOutlet]=\"iconTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (shortcutTemplate()) {\r\n <ng-template monaPopupMenuShortcutTemplate let-item>\r\n <ng-container\r\n [ngTemplateOutlet]=\"shortcutTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (textTemplate()) {\r\n <ng-template monaPopupMenuTextTemplate let-item>\r\n <ng-container\r\n [ngTemplateOutlet]=\"textTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ng-template>\r\n }\r\n</mona-popup-menu>\r\n", dependencies: [{ kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { 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: PopupMenuGroupTemplateDirective, selector: "ng-template[monaPopupMenuGroupTemplate]" }, { kind: "directive", type: PopupMenuIconTemplateDirective, selector: "ng-template[monaPopupMenuIconTemplate]" }, { kind: "directive", type: PopupMenuShortcutTemplateDirective, selector: "ng-template[monaPopupMenuShortcutTemplate]" }, { kind: "directive", type: PopupMenuTextTemplateDirective, selector: "ng-template[monaPopupMenuTextTemplate]" }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }] }); }
388
+ }
389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonComponent, decorators: [{
390
+ type: Component,
391
+ args: [{ selector: "mona-split-button", imports: [
392
+ ButtonDirective,
393
+ NgTemplateOutlet,
394
+ PopupMenuComponent,
395
+ PopupMenuGroupTemplateDirective,
396
+ PopupMenuIconTemplateDirective,
397
+ PopupMenuShortcutTemplateDirective,
398
+ PopupMenuTextTemplateDirective,
399
+ LucideChevronDown
400
+ ], host: {
401
+ "[class]": "classes()"
402
+ }, template: "<button\r\n monaButton\r\n (click)=\"buttonClick.emit($event)\"\r\n [disabled]=\"disabled()\"\r\n [look]=\"look()\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n class=\"rounded-tr-none rounded-br-none\"\r\n [attr.aria-label]=\"splitButtonAriaLabel() || null\"\r\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\r\n [tabindex]=\"disabled() ? -1 : 0\"\r\n #mainButton>\r\n @if (mainButtonTextTemplate()) {\r\n <ng-container [ngTemplateOutlet]=\"mainButtonTextTemplate()\"></ng-container>\r\n } @else {\r\n <span>{{ text() }}</span>\r\n }\r\n</button>\r\n<button\r\n monaButton\r\n [disabled]=\"disabled()\"\r\n [iconOnly]=\"true\"\r\n [look]=\"look()\"\r\n [size]=\"size()\"\r\n [rounded]=\"rounded()\"\r\n class=\"rounded-tl-none rounded-bl-none border-l-0\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n [attr.aria-expanded]=\"menuOpen()\"\r\n [attr.aria-controls]=\"menuId\"\r\n [attr.aria-label]=\"menuButtonAriaLabel()\"\r\n [tabindex]=\"disabled() ? -1 : 0\"\r\n #menuButton>\r\n @if (menuButtonTemplate()) {\r\n <ng-container [ngTemplateOutlet]=\"menuButtonTemplate()\"></ng-container>\r\n } @else {\r\n <svg lucideChevronDown [size]=\"16\"></svg>\r\n }\r\n</button>\r\n\r\n<mona-popup-menu\r\n [anchorConnectionPoint]=\"'bottomleft'\"\r\n [anchor]=\"mainButton\"\r\n [items]=\"menuItems()\"\r\n (menuClick)=\"onMenuItemClick($event)\"\r\n (open)=\"onMenuOpen()\"\r\n (close)=\"onMenuClose()\"\r\n [offset]=\"{ horizontal: 0, vertical: 2 }\"\r\n [popupConnectionPoint]=\"'topleft'\"\r\n [rounded]=\"popupMenuRounded()\"\r\n [size]=\"size()\"\r\n [target]=\"menuButton\"\r\n [trigger]=\"'click'\"\r\n [id]=\"menuId\"\r\n [minWidth]=\"popupWidth() || undefined\"\r\n #popupMenu>\r\n @if (groupTemplate()) {\r\n <ng-template monaPopupMenuGroupTemplate let-group>\r\n <ng-container\r\n [ngTemplateOutlet]=\"groupTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (iconTemplate()) {\r\n <ng-template monaPopupMenuIconTemplate let-item>\r\n <ng-container\r\n [ngTemplateOutlet]=\"iconTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (shortcutTemplate()) {\r\n <ng-template monaPopupMenuShortcutTemplate let-item>\r\n <ng-container\r\n [ngTemplateOutlet]=\"shortcutTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (textTemplate()) {\r\n <ng-template monaPopupMenuTextTemplate let-item>\r\n <ng-container\r\n [ngTemplateOutlet]=\"textTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ng-template>\r\n }\r\n</mona-popup-menu>\r\n" }]
403
+ }], ctorParameters: () => [], propDecorators: { menuItemComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PopupMenuToken), { ...{ descendants: false }, isSignal: true }] }], menuButtonRef: [{ type: i0.ViewChild, args: ["menuButton", { isSignal: true }] }], popupMenuRef: [{ type: i0.ViewChild, args: ["popupMenu", { isSignal: true }] }], groupTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SplitButtonMenuGroupTemplateDirective), { ...{
404
+ read: TemplateRef,
405
+ descendants: false
406
+ }, isSignal: true }] }], iconTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SplitButtonMenuItemIconTemplateDirective), { ...{
407
+ read: TemplateRef,
408
+ descendants: false
409
+ }, isSignal: true }] }], mainButtonTextTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SplitButtonTextTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], menuButtonTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SplitButtonMenuButtonTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], shortcutTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SplitButtonMenuItemShortcutTemplateDirective), { ...{
410
+ read: TemplateRef,
411
+ descendants: false
412
+ }, isSignal: true }] }], textTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SplitButtonMenuItemTextTemplateDirective), { ...{
413
+ read: TemplateRef,
414
+ descendants: false
415
+ }, isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], buttonClick: [{ type: i0.Output, args: ["buttonClick"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], look: [{ type: i0.Input, args: [{ isSignal: true, alias: "look", required: false }] }], menuButtonAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuButtonAriaLabel", required: false }] }], menuItemClick: [{ type: i0.Output, args: ["menuItemClick"] }], popupWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupWidth", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
416
+
417
+ const componentTypeMap = {
418
+ [PopupMenuItemType.CheckboxMenuItem]: "mona-split-button-checkbox-item",
419
+ [PopupMenuItemType.MenuGroup]: "mona-split-button-group",
420
+ [PopupMenuItemType.MenuItem]: "mona-split-button-item",
421
+ [PopupMenuItemType.RadioGroup]: "mona-split-button-radio-group",
422
+ [PopupMenuItemType.RadioItem]: "mona-split-button-radio-item",
423
+ [PopupMenuItemType.Separator]: "mona-split-button-separator"
424
+ };
425
+ const templateTypeMap = {
426
+ [PopupMenuTemplateType.Group]: "monaSplitButtonMenuGroupTemplate",
427
+ [PopupMenuTemplateType.Icon]: "monaSplitButtonMenuItemIconTemplate",
428
+ [PopupMenuTemplateType.Shortcut]: "monaSplitButtonMenuItemShortcutTemplate",
429
+ [PopupMenuTemplateType.Text]: "monaSplitButtonMenuItemTextTemplate"
430
+ };
431
+ const ensureSplitButtonComponentTypes = (components) => {
432
+ ensurePopupComponentTypes({
433
+ components,
434
+ componentTypeMap,
435
+ origin: PopupMenuOrigin.SplitButton,
436
+ prefix: "mona-split-button"
437
+ });
438
+ };
439
+ const ensureSplitButtonTemplateTypes = (templates) => {
440
+ ensurePopupTemplateTypes({
441
+ templates,
442
+ templateTypeMap,
443
+ origin: PopupMenuTemplateOrigin.SplitButton,
444
+ prefix: "mona-split-button"
445
+ });
446
+ };
447
+
448
+ class SplitButtonCheckboxItemComponent extends PopupMenuCheckboxItemComponent {
449
+ constructor() {
450
+ super();
451
+ this.origin = PopupMenuOrigin.SplitButton;
452
+ effect(() => ensureSplitButtonTemplateTypes([this.shortcutTemplateConfig(), this.textTemplateConfig()].filter(t => t !== undefined)));
453
+ }
454
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonCheckboxItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
455
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonCheckboxItemComponent, isStandalone: true, selector: "mona-split-button-checkbox-item", providers: [
456
+ {
457
+ provide: PopupMenuToken,
458
+ useExisting: forwardRef(() => SplitButtonCheckboxItemComponent)
459
+ }
460
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
461
+ }
462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonCheckboxItemComponent, decorators: [{
463
+ type: Component,
464
+ args: [{
465
+ selector: "mona-split-button-checkbox-item",
466
+ template: "",
467
+ providers: [
468
+ {
469
+ provide: PopupMenuToken,
470
+ useExisting: forwardRef(() => SplitButtonCheckboxItemComponent)
471
+ }
472
+ ]
473
+ }]
474
+ }], ctorParameters: () => [] });
475
+
476
+ class SplitButtonGroupComponent extends PopupMenuGroupComponent {
477
+ constructor() {
478
+ super();
479
+ this.origin = PopupMenuOrigin.SplitButton;
480
+ effect(() => ensureSplitButtonComponentTypes(this.items()));
481
+ effect(() => ensureSplitButtonTemplateTypes([this.groupTemplateConfig()].filter(t => t !== undefined)));
482
+ }
483
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
484
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonGroupComponent, isStandalone: true, selector: "mona-split-button-group", providers: [
485
+ {
486
+ provide: PopupMenuToken,
487
+ useExisting: forwardRef(() => SplitButtonGroupComponent)
488
+ }
489
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
490
+ }
491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonGroupComponent, decorators: [{
492
+ type: Component,
493
+ args: [{
494
+ selector: "mona-split-button-group",
495
+ template: "",
496
+ providers: [
497
+ {
498
+ provide: PopupMenuToken,
499
+ useExisting: forwardRef(() => SplitButtonGroupComponent)
500
+ }
501
+ ]
502
+ }]
503
+ }], ctorParameters: () => [] });
504
+
505
+ class SplitButtonItemComponent extends PopupMenuItemComponent {
506
+ constructor() {
507
+ super();
508
+ this.origin = PopupMenuOrigin.SplitButton;
509
+ effect(() => ensureSplitButtonComponentTypes(this.items()));
510
+ effect(() => ensureSplitButtonTemplateTypes([this.iconTemplateConfig(), this.shortcutTemplateConfig(), this.textTemplateConfig()].filter(t => t !== undefined)));
511
+ }
512
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
513
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonItemComponent, isStandalone: true, selector: "mona-split-button-item", providers: [
514
+ {
515
+ provide: PopupMenuToken,
516
+ useExisting: forwardRef(() => SplitButtonItemComponent)
517
+ }
518
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
519
+ }
520
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonItemComponent, decorators: [{
521
+ type: Component,
522
+ args: [{
523
+ selector: "mona-split-button-item",
524
+ imports: [],
525
+ template: "",
526
+ providers: [
527
+ {
528
+ provide: PopupMenuToken,
529
+ useExisting: forwardRef(() => SplitButtonItemComponent)
530
+ }
531
+ ]
532
+ }]
533
+ }], ctorParameters: () => [] });
534
+
535
+ class SplitButtonRadioGroupComponent extends PopupMenuRadioGroupComponent {
536
+ constructor() {
537
+ super();
538
+ this.origin = PopupMenuOrigin.SplitButton;
539
+ effect(() => ensureSplitButtonComponentTypes(this.items()));
540
+ effect(() => ensureSplitButtonTemplateTypes([this.groupTemplateConfig()].filter(t => t !== undefined)));
541
+ }
542
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonRadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
543
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonRadioGroupComponent, isStandalone: true, selector: "mona-split-button-radio-group", providers: [
544
+ {
545
+ provide: PopupMenuToken,
546
+ useExisting: forwardRef(() => SplitButtonRadioGroupComponent)
547
+ }
548
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
549
+ }
550
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonRadioGroupComponent, decorators: [{
551
+ type: Component,
552
+ args: [{
553
+ selector: "mona-split-button-radio-group",
554
+ template: "",
555
+ providers: [
556
+ {
557
+ provide: PopupMenuToken,
558
+ useExisting: forwardRef(() => SplitButtonRadioGroupComponent)
559
+ }
560
+ ]
561
+ }]
562
+ }], ctorParameters: () => [] });
563
+
564
+ class SplitButtonRadioItemComponent extends PopupMenuRadioItemComponent {
565
+ constructor() {
566
+ super();
567
+ this.origin = PopupMenuOrigin.SplitButton;
568
+ effect(() => ensureSplitButtonTemplateTypes([this.shortcutTemplateConfig(), this.textTemplateConfig()].filter(t => t !== undefined)));
569
+ }
570
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonRadioItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
571
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonRadioItemComponent, isStandalone: true, selector: "mona-split-button-radio-item", providers: [
572
+ {
573
+ provide: PopupMenuToken,
574
+ useExisting: forwardRef(() => SplitButtonRadioItemComponent)
575
+ },
576
+ {
577
+ provide: PopupMenuRadioItemToken,
578
+ useExisting: forwardRef(() => SplitButtonRadioItemComponent)
579
+ }
580
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
581
+ }
582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonRadioItemComponent, decorators: [{
583
+ type: Component,
584
+ args: [{
585
+ selector: "mona-split-button-radio-item",
586
+ template: "",
587
+ providers: [
588
+ {
589
+ provide: PopupMenuToken,
590
+ useExisting: forwardRef(() => SplitButtonRadioItemComponent)
591
+ },
592
+ {
593
+ provide: PopupMenuRadioItemToken,
594
+ useExisting: forwardRef(() => SplitButtonRadioItemComponent)
595
+ }
596
+ ]
597
+ }]
598
+ }], ctorParameters: () => [] });
599
+
600
+ class SplitButtonSeparatorComponent extends PopupMenuSeparatorComponent {
601
+ constructor() {
602
+ super(...arguments);
603
+ this.origin = PopupMenuOrigin.SplitButton;
604
+ }
605
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonSeparatorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
606
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: SplitButtonSeparatorComponent, isStandalone: true, selector: "mona-split-button-separator", providers: [
607
+ {
608
+ provide: PopupMenuToken,
609
+ useExisting: forwardRef(() => SplitButtonSeparatorComponent)
610
+ }
611
+ ], usesInheritance: true, ngImport: i0, template: "", isInline: true }); }
612
+ }
613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SplitButtonSeparatorComponent, decorators: [{
614
+ type: Component,
615
+ args: [{
616
+ selector: "mona-split-button-separator",
617
+ template: "",
618
+ providers: [
619
+ {
620
+ provide: PopupMenuToken,
621
+ useExisting: forwardRef(() => SplitButtonSeparatorComponent)
622
+ }
623
+ ]
624
+ }]
625
+ }] });
626
+
627
+ /*
628
+ * Public API Surface of @nanahoshi/mona-ui/split-button
629
+ */
630
+
631
+ /**
632
+ * Generated bundle index. Do not edit.
633
+ */
634
+
635
+ export { SplitButtonCheckboxItemComponent, SplitButtonComponent, SplitButtonGroupComponent, SplitButtonItemComponent, SplitButtonMenuButtonTemplateDirective, SplitButtonMenuGroupTemplateDirective, SplitButtonMenuItemIconTemplateDirective, SplitButtonMenuItemShortcutTemplateDirective, SplitButtonMenuItemTextTemplateDirective, SplitButtonRadioGroupComponent, SplitButtonRadioItemComponent, SplitButtonSeparatorComponent, SplitButtonTextTemplateDirective };
636
+ //# sourceMappingURL=nanahoshi-mona-ui-split-button.mjs.map