@frame-ui-ng/components 0.4.0-beta.0 → 0.4.2-beta.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 (168) hide show
  1. package/calendar/src/styles/_vars.css +4 -0
  2. package/calendar/src/styles/calendar.css +29 -5
  3. package/confirm-popover/src/styles/confirm-popover.css +20 -0
  4. package/date-picker/src/styles/date-picker.css +27 -1
  5. package/drag-drop/src/styles/_vars.css +28 -0
  6. package/drag-drop/src/styles/drag-drop.css +132 -0
  7. package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
  8. package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
  9. package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
  10. package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
  11. package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
  12. package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
  13. package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
  14. package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
  15. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
  16. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
  17. package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
  18. package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
  19. package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
  20. package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
  21. package/fesm2022/frame-ui-ng-components-calendar.mjs +24 -1
  22. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
  23. package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
  24. package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
  25. package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
  26. package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
  27. package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
  28. package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
  29. package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
  30. package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
  31. package/fesm2022/frame-ui-ng-components-combobox.mjs +66 -18
  32. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
  33. package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
  34. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
  35. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +3 -0
  36. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -1
  37. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
  38. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
  39. package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
  40. package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
  41. package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
  42. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
  43. package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
  44. package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
  45. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +73 -36
  46. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  47. package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
  48. package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
  49. package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
  50. package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
  51. package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
  52. package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
  53. package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
  54. package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
  55. package/fesm2022/frame-ui-ng-components-input-otp.mjs +5 -0
  56. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
  57. package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
  58. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
  59. package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
  60. package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
  61. package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
  62. package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
  63. package/fesm2022/frame-ui-ng-components-modal.mjs +167 -128
  64. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
  65. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
  66. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
  67. package/fesm2022/frame-ui-ng-components-pagination.mjs +8 -0
  68. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
  69. package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
  70. package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
  71. package/fesm2022/frame-ui-ng-components-progress.mjs +2 -0
  72. package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
  73. package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
  74. package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
  75. package/fesm2022/frame-ui-ng-components-resizable.mjs +6 -0
  76. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
  77. package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
  78. package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
  79. package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
  80. package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
  81. package/fesm2022/frame-ui-ng-components-sheet.mjs +99 -88
  82. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
  83. package/fesm2022/frame-ui-ng-components-sidebar.mjs +27 -12
  84. package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
  85. package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
  86. package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
  87. package/fesm2022/frame-ui-ng-components-slider.mjs +29 -16
  88. package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
  89. package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
  90. package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
  91. package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
  92. package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
  93. package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
  94. package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
  95. package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
  96. package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
  97. package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
  98. package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
  99. package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
  100. package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
  101. package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
  102. package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
  103. package/fesm2022/frame-ui-ng-components-tooltip.mjs +30 -25
  104. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  105. package/fesm2022/frame-ui-ng-components-utils.mjs +5 -1
  106. package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -1
  107. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +26 -8
  108. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
  109. package/fesm2022/frame-ui-ng-components.mjs +1449 -571
  110. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  111. package/package.json +10 -2
  112. package/popover/src/styles/popover.css +106 -101
  113. package/select/src/styles/select-content.css +27 -19
  114. package/src/styles/components.css +6 -4
  115. package/styles/components.css +6 -4
  116. package/styles.css +6 -4
  117. package/types/frame-ui-ng-components-accordion.d.ts +11 -4
  118. package/types/frame-ui-ng-components-alert.d.ts +4 -0
  119. package/types/frame-ui-ng-components-avatar.d.ts +7 -0
  120. package/types/frame-ui-ng-components-badge.d.ts +4 -0
  121. package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
  122. package/types/frame-ui-ng-components-button-group.d.ts +1 -0
  123. package/types/frame-ui-ng-components-button.d.ts +5 -0
  124. package/types/frame-ui-ng-components-calendar.d.ts +2 -0
  125. package/types/frame-ui-ng-components-card.d.ts +8 -3
  126. package/types/frame-ui-ng-components-carousel.d.ts +11 -2
  127. package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
  128. package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
  129. package/types/frame-ui-ng-components-combobox.d.ts +32 -3
  130. package/types/frame-ui-ng-components-command.d.ts +26 -4
  131. package/types/frame-ui-ng-components-confirm-modal.d.ts +2 -0
  132. package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
  133. package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
  134. package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
  135. package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
  136. package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
  137. package/types/frame-ui-ng-components-empty.d.ts +6 -0
  138. package/types/frame-ui-ng-components-field.d.ts +9 -0
  139. package/types/frame-ui-ng-components-forms.d.ts +1 -0
  140. package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
  141. package/types/frame-ui-ng-components-input-otp.d.ts +4 -0
  142. package/types/frame-ui-ng-components-input.d.ts +13 -0
  143. package/types/frame-ui-ng-components-item.d.ts +10 -0
  144. package/types/frame-ui-ng-components-menubar.d.ts +15 -0
  145. package/types/frame-ui-ng-components-modal.d.ts +27 -4
  146. package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
  147. package/types/frame-ui-ng-components-pagination.d.ts +8 -0
  148. package/types/frame-ui-ng-components-popover.d.ts +14 -2
  149. package/types/frame-ui-ng-components-progress.d.ts +2 -0
  150. package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
  151. package/types/frame-ui-ng-components-resizable.d.ts +3 -0
  152. package/types/frame-ui-ng-components-select.d.ts +23 -2
  153. package/types/frame-ui-ng-components-separator.d.ts +1 -0
  154. package/types/frame-ui-ng-components-sheet.d.ts +11 -0
  155. package/types/frame-ui-ng-components-sidebar.d.ts +21 -0
  156. package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
  157. package/types/frame-ui-ng-components-slider.d.ts +5 -2
  158. package/types/frame-ui-ng-components-spinner.d.ts +1 -0
  159. package/types/frame-ui-ng-components-switch.d.ts +6 -0
  160. package/types/frame-ui-ng-components-table.d.ts +26 -0
  161. package/types/frame-ui-ng-components-tabs.d.ts +4 -0
  162. package/types/frame-ui-ng-components-textarea.d.ts +1 -0
  163. package/types/frame-ui-ng-components-toast.d.ts +2 -0
  164. package/types/frame-ui-ng-components-toggle.d.ts +8 -2
  165. package/types/frame-ui-ng-components-tooltip.d.ts +6 -2
  166. package/types/frame-ui-ng-components-utils.d.ts +3 -1
  167. package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
  168. package/types/frame-ui-ng-components.d.ts +507 -80
@@ -1,9 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, TemplateRef, Directive, DestroyRef, ElementRef, signal, viewChild, contentChild, input, booleanAttribute, model, computed, effect, afterNextRender, Component, Renderer2, NgModule } from '@angular/core';
2
+ import { inject, TemplateRef, Directive, DestroyRef, ElementRef, signal, viewChild, contentChild, input, booleanAttribute, model, computed, Component, afterNextRender, Renderer2, NgModule } from '@angular/core';
3
3
  import { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
4
4
  import { NgTemplateOutlet } from '@angular/common';
5
5
  import { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';
6
6
 
7
+ /** Content slot for combobox. */
7
8
  class FrComboboxContent {
8
9
  templateRef = inject((TemplateRef));
9
10
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -16,6 +17,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
16
17
  exportAs: 'frComboboxContent',
17
18
  }]
18
19
  }] });
20
+ /** Panel slot for combobox. */
19
21
  class FrComboboxPanel {
20
22
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
23
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxPanel, isStandalone: true, selector: "[frComboboxPanel], frame-combobox-panel", host: { attributes: { "role": "listbox" }, classAttribute: "frame-combobox__panel" }, ngImport: i0 });
@@ -30,6 +32,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
30
32
  },
31
33
  }]
32
34
  }] });
35
+ /** List slot for combobox. */
33
36
  class FrComboboxList {
34
37
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
38
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxList, isStandalone: true, selector: "[frComboboxList], frame-combobox-list", host: { classAttribute: "frame-combobox__list" }, ngImport: i0 });
@@ -43,6 +46,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
43
46
  },
44
47
  }]
45
48
  }] });
49
+ /** Empty-state slot for combobox results. */
46
50
  class FrComboboxEmpty {
47
51
  root = inject(FrComboboxRootLookup);
48
52
  hidden() {
@@ -61,6 +65,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
61
65
  },
62
66
  }]
63
67
  }] });
68
+ /** Group slot for combobox. */
64
69
  class FrComboboxGroup {
65
70
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
66
71
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxGroup, isStandalone: true, selector: "[frComboboxGroup], frame-combobox-group", host: { classAttribute: "frame-combobox__group" }, ngImport: i0 });
@@ -74,6 +79,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
74
79
  },
75
80
  }]
76
81
  }] });
82
+ /** Label slot for combobox. */
77
83
  class FrComboboxLabel {
78
84
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
79
85
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxLabel, isStandalone: true, selector: "[frComboboxLabel], frame-combobox-label", host: { classAttribute: "frame-combobox__label" }, ngImport: i0 });
@@ -87,6 +93,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
87
93
  },
88
94
  }]
89
95
  }] });
96
+ /** Separator slot for combobox. */
90
97
  class FrComboboxSeparator {
91
98
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
92
99
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxSeparator, isStandalone: true, selector: "[frComboboxSeparator], frame-combobox-separator", host: { attributes: { "role": "separator" }, classAttribute: "frame-combobox__separator" }, ngImport: i0 });
@@ -101,6 +108,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
101
108
  },
102
109
  }]
103
110
  }] });
111
+ /** Collection host for combobox options. */
104
112
  class FrComboboxCollection {
105
113
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxCollection, deps: [], target: i0.ɵɵFactoryTarget.Directive });
106
114
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxCollection, isStandalone: true, selector: "[frComboboxCollection], frame-combobox-collection", host: { classAttribute: "frame-combobox__collection" }, ngImport: i0 });
@@ -115,6 +123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
115
123
  }]
116
124
  }] });
117
125
  // Resolved by the root file to avoid a circular import in decorator metadata.
126
+ /** Base API for combobox root lookup. */
118
127
  class FrComboboxRootLookup {
119
128
  }
120
129
 
@@ -134,12 +143,16 @@ const POSITIONS = [
134
143
  offsetY: -4,
135
144
  },
136
145
  ];
146
+ /** Combobox control with single and multi-value support. */
137
147
  class FrCombobox extends FrControlValueAccessor {
138
148
  destroyRef = inject(DestroyRef);
139
149
  elementRef = inject(ElementRef);
140
150
  items = new Set();
141
151
  itemsVersion = signal(0, ...(ngDevMode ? [{ debugName: "itemsVersion" }] : /* istanbul ignore next */ []));
142
152
  selectedLabels = new Map();
153
+ lastAutoHighlight = false;
154
+ lastItemsVersion = -1;
155
+ lastQuery = '';
143
156
  resizeObserver = null;
144
157
  origin = viewChild(CdkOverlayOrigin, ...(ngDevMode ? [{ debugName: "origin" }] : /* istanbul ignore next */ []));
145
158
  content = contentChild(FrComboboxContent, ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
@@ -176,18 +189,6 @@ class FrCombobox extends FrControlValueAccessor {
176
189
  hasValue = computed(() => this.selectedValues().length > 0 || this.query().length > 0, ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
177
190
  constructor() {
178
191
  super();
179
- effect(() => {
180
- if (this.debugVisible()) {
181
- afterNextRender(() => this.open());
182
- }
183
- });
184
- effect(() => {
185
- this.query();
186
- this.itemsVersion();
187
- if (this.autoHighlight()) {
188
- this.highlightedIndex.set(0);
189
- }
190
- });
191
192
  queueMicrotask(() => {
192
193
  this.measureAnchor();
193
194
  this.attachResizeObserver();
@@ -196,6 +197,29 @@ class FrCombobox extends FrControlValueAccessor {
196
197
  this.resizeObserver?.disconnect();
197
198
  });
198
199
  }
200
+ ngAfterViewInit() {
201
+ if (this.debugVisible()) {
202
+ this.open();
203
+ }
204
+ }
205
+ ngDoCheck() {
206
+ if (this.debugVisible() && !this.isOpen()) {
207
+ this.open();
208
+ }
209
+ const autoHighlight = this.autoHighlight();
210
+ const itemsVersion = this.itemsVersion();
211
+ const query = this.query();
212
+ if (autoHighlight &&
213
+ (query !== this.lastQuery ||
214
+ itemsVersion !== this.lastItemsVersion ||
215
+ autoHighlight !== this.lastAutoHighlight)) {
216
+ // Filtering can invalidate the current index, so restart highlight at the first visible item.
217
+ this.highlightedIndex.set(0);
218
+ }
219
+ this.lastAutoHighlight = autoHighlight;
220
+ this.lastItemsVersion = itemsVersion;
221
+ this.lastQuery = query;
222
+ }
199
223
  registerItem(item) {
200
224
  this.items.add(item);
201
225
  this.bumpItems();
@@ -204,6 +228,9 @@ class FrCombobox extends FrControlValueAccessor {
204
228
  this.items.delete(item);
205
229
  this.bumpItems();
206
230
  }
231
+ refreshItems() {
232
+ this.bumpItems();
233
+ }
207
234
  visibleItems() {
208
235
  this.itemsVersion();
209
236
  return Array.from(this.items).filter((item) => item.isVisible());
@@ -313,6 +340,7 @@ class FrCombobox extends FrControlValueAccessor {
313
340
  this.anchorWidth.set(null);
314
341
  return;
315
342
  }
343
+ // Match the overlay width to the trigger even when content is rendered in the CDK overlay.
316
344
  this.anchorWidth.set(element.getBoundingClientRect().width || null);
317
345
  }
318
346
  attachResizeObserver() {
@@ -399,6 +427,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
399
427
  }]
400
428
  }], ctorParameters: () => [], propDecorators: { origin: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkOverlayOrigin), { isSignal: true }] }], content: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FrComboboxContent), { isSignal: true }] }], autoHighlight: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoHighlight", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], itemToStringValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemToStringValue", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
401
429
 
430
+ /** Search input for combobox filtering. */
402
431
  class FrComboboxInput {
403
432
  root = inject(FrCombobox);
404
433
  elementRef = inject(ElementRef);
@@ -456,6 +485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
456
485
  },
457
486
  }]
458
487
  }] });
488
+ /** Trigger control for combobox. */
459
489
  class FrComboboxTrigger {
460
490
  root = inject(FrCombobox);
461
491
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -475,6 +505,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
475
505
  },
476
506
  }]
477
507
  }] });
508
+ /** Clear control for combobox values. */
478
509
  class FrComboboxClear {
479
510
  root = inject(FrCombobox);
480
511
  hidden() {
@@ -496,6 +527,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
496
527
  }]
497
528
  }] });
498
529
 
530
+ /** Item slot for combobox. */
499
531
  class FrComboboxItem {
500
532
  destroyRef = inject(DestroyRef);
501
533
  elementRef = inject(ElementRef);
@@ -505,6 +537,7 @@ class FrComboboxItem {
505
537
  itemLabel = input(null, { ...(ngDevMode ? { debugName: "itemLabel" } : /* istanbul ignore next */ {}), alias: 'label' });
506
538
  value = input.required(...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
507
539
  resolvedLabel = signal('', ...(ngDevMode ? [{ debugName: "resolvedLabel" }] : /* istanbul ignore next */ []));
540
+ lastItemStateKey = '';
508
541
  label = computed(() => this.itemLabel() ?? this.resolvedLabel(), ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
509
542
  visible = computed(() => this.root.itemVisible(this.label()), ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
510
543
  constructor() {
@@ -517,11 +550,17 @@ class FrComboboxItem {
517
550
  this.refreshResolvedLabel();
518
551
  this.observeTextChanges();
519
552
  });
520
- effect(() => {
521
- if (this.root.isSelected(this.value())) {
522
- this.root.rememberItemLabel(this.value(), this.label());
523
- }
524
- });
553
+ }
554
+ ngDoCheck() {
555
+ const itemStateKey = `${this.label()}|${this.disabled()}|${this.root.isSelected(this.value())}`;
556
+ if (itemStateKey === this.lastItemStateKey) {
557
+ return;
558
+ }
559
+ this.lastItemStateKey = itemStateKey;
560
+ this.root.refreshItems();
561
+ if (this.root.isSelected(this.value())) {
562
+ this.root.rememberItemLabel(this.value(), this.label());
563
+ }
525
564
  }
526
565
  isVisible() {
527
566
  return this.visible();
@@ -548,11 +587,13 @@ class FrComboboxItem {
548
587
  }
549
588
  refreshResolvedLabel() {
550
589
  this.resolvedLabel.set(this.resolveLabel());
590
+ this.root.refreshItems();
551
591
  }
552
592
  observeTextChanges() {
553
593
  if (typeof MutationObserver === 'undefined' || this.itemLabel() !== null) {
554
594
  return;
555
595
  }
596
+ // Items without explicit labels derive filtering text from projected content.
556
597
  this.mutationObserver = new MutationObserver(() => this.refreshResolvedLabel());
557
598
  this.mutationObserver.observe(this.elementRef.nativeElement, {
558
599
  characterData: true,
@@ -581,6 +622,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
581
622
  },
582
623
  }]
583
624
  }], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], itemLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
625
+ /** Indicator slot for combobox item. */
584
626
  class FrComboboxItemIndicator {
585
627
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
586
628
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxItemIndicator, isStandalone: true, selector: "[frComboboxItemIndicator]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-combobox__item-indicator" }, ngImport: i0 });
@@ -596,6 +638,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
596
638
  }]
597
639
  }] });
598
640
 
641
+ /** Chip list for multi-value combobox selections. */
599
642
  class FrComboboxChips {
600
643
  root = inject(FrCombobox);
601
644
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxChips, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -612,6 +655,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
612
655
  },
613
656
  }]
614
657
  }] });
658
+ /** List slot for combobox value. */
615
659
  class FrComboboxValueList {
616
660
  root = inject(FrCombobox);
617
661
  values() {
@@ -630,6 +674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
630
674
  },
631
675
  }]
632
676
  }] });
677
+ /** Selected value chip for combobox. */
633
678
  class FrComboboxChip {
634
679
  root = inject(FrCombobox);
635
680
  elementRef = inject(ElementRef);
@@ -677,6 +722,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
677
722
  },
678
723
  }]
679
724
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "removable", required: false }] }] } });
725
+ /** Remove control for a combobox chip. */
680
726
  class FrComboboxChipRemove {
681
727
  chip = inject(FrComboboxChip);
682
728
  remove(event) {
@@ -698,6 +744,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
698
744
  },
699
745
  }]
700
746
  }] });
747
+ /** Inline text input inside combobox chips. */
701
748
  class FrComboboxChipsInput {
702
749
  root = inject(FrCombobox);
703
750
  handleInput(event) {
@@ -740,6 +787,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
740
787
  },
741
788
  }]
742
789
  }] });
790
+ /** Error slot for combobox. */
743
791
  class FrComboboxError {
744
792
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrComboboxError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
745
793
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrComboboxError, isStandalone: true, selector: "[frComboboxError], frame-combobox-error", host: { attributes: { "aria-live": "polite" }, classAttribute: "frame-combobox__error" }, ngImport: i0 });
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-combobox.mjs","sources":["../../../projects/components/combobox/src/combobox.content.ts","../../../projects/components/combobox/src/combobox.root.ts","../../../projects/components/combobox/src/combobox.input.ts","../../../projects/components/combobox/src/combobox.items.ts","../../../projects/components/combobox/src/combobox.value.ts","../../../projects/components/combobox/combobox.module.ts","../../../projects/components/combobox/frame-ui-ng-components-combobox.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[frComboboxContent]',\n exportAs: 'frComboboxContent',\n})\nexport class FrComboboxContent {\n readonly templateRef = inject(TemplateRef<unknown>);\n}\n\n@Directive({\n selector: '[frComboboxPanel], frame-combobox-panel',\n host: {\n class: 'frame-combobox__panel',\n role: 'listbox',\n },\n})\nexport class FrComboboxPanel {}\n\n@Directive({\n selector: '[frComboboxList], frame-combobox-list',\n host: {\n class: 'frame-combobox__list',\n },\n})\nexport class FrComboboxList {}\n\n@Directive({\n selector: '[frComboboxEmpty], frame-combobox-empty',\n host: {\n class: 'frame-combobox__empty',\n '[attr.hidden]': 'hidden() ? \"\" : null',\n },\n})\nexport class FrComboboxEmpty {\n private readonly root = inject(FrComboboxRootLookup);\n\n protected hidden(): boolean {\n return this.root.visibleCount() > 0;\n }\n}\n\n@Directive({\n selector: '[frComboboxGroup], frame-combobox-group',\n host: {\n class: 'frame-combobox__group',\n },\n})\nexport class FrComboboxGroup {}\n\n@Directive({\n selector: '[frComboboxLabel], frame-combobox-label',\n host: {\n class: 'frame-combobox__label',\n },\n})\nexport class FrComboboxLabel {}\n\n@Directive({\n selector: '[frComboboxSeparator], frame-combobox-separator',\n host: {\n class: 'frame-combobox__separator',\n role: 'separator',\n },\n})\nexport class FrComboboxSeparator {}\n\n@Directive({\n selector: '[frComboboxCollection], frame-combobox-collection',\n host: {\n class: 'frame-combobox__collection',\n },\n})\nexport class FrComboboxCollection {}\n\n// Resolved by the root file to avoid a circular import in decorator metadata.\nexport abstract class FrComboboxRootLookup {\n abstract visibleCount(): number;\n}\n","import {\r\n CdkConnectedOverlay,\r\n CdkOverlayOrigin,\r\n ConnectedOverlayPositionChange,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterNextRender,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n contentChild,\r\n effect,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\n\r\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\r\nimport { FrComboboxContent, FrComboboxRootLookup } from './combobox.content';\r\nimport { FrComboboxItem } from './combobox.items';\r\n\r\nexport type FrComboboxValue = unknown;\r\nexport type FrComboboxStringifier = (item: FrComboboxValue) => string;\r\n\r\nconst POSITIONS: ConnectedPosition[] = [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 4,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -4,\r\n },\r\n];\r\n\r\n@Component({\r\n selector: '[frCombobox], frame-combobox',\r\n exportAs: 'frCombobox',\r\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgTemplateOutlet],\r\n providers: [\r\n provideDsValueAccessor(FrCombobox),\r\n {\r\n provide: FrComboboxRootLookup,\r\n useExisting: FrCombobox,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-combobox',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"\" : null'\r\n },\r\n template: `\r\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-combobox__anchor\">\r\n <ng-content />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayPositions]=\"positions\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayWidth]=\"overlayMinWidth()\"\r\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth()\"\r\n (overlayOutsideClick)=\"close()\"\r\n (positionChange)=\"handlePositionChange($event)\"\r\n (detach)=\"close()\"\r\n >\r\n @if (content()) {\r\n <ng-container [ngTemplateOutlet]=\"content()!.templateRef\" />\r\n }\r\n </ng-template>\r\n `,\r\n})\r\nexport class FrCombobox extends FrControlValueAccessor<FrComboboxValue | FrComboboxValue[] | null> {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly items = new Set<FrComboboxItem>();\r\n private readonly itemsVersion = signal(0);\r\n private readonly selectedLabels = new Map<FrComboboxValue, string>();\r\n private resizeObserver: ResizeObserver | null = null;\r\n\r\n private readonly origin = viewChild(CdkOverlayOrigin);\r\n\r\n readonly content = contentChild(FrComboboxContent);\r\n readonly autoHighlight = input(false, { transform: booleanAttribute });\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\r\n readonly itemToStringValue = input<FrComboboxStringifier>((item) => String(item ?? ''));\r\n readonly multiple = input(false, { transform: booleanAttribute });\r\n readonly showClear = input(false, { transform: booleanAttribute });\r\n readonly value = model<FrComboboxValue | FrComboboxValue[] | null>(null);\r\n\r\n readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\r\n readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\r\n readonly isOpen = signal(false);\r\n readonly query = signal('');\r\n readonly anchorWidth = signal<number | null>(null);\r\n readonly highlightedIndex = signal(0);\r\n readonly overlaySide = signal<'bottom' | 'top'>('bottom');\r\n readonly positions = POSITIONS;\r\n\r\n readonly selectedValues = computed(() => {\r\n const value = this.value();\r\n return Array.isArray(value) ? value : value === null ? [] : [value];\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n if (this.multiple()) {\r\n return this.query();\r\n }\r\n\r\n const value = this.value();\r\n\r\n if (value === null || Array.isArray(value)) {\r\n return this.query();\r\n }\r\n\r\n return this.query() || this.selectedLabels.get(value) || this.itemToStringValue()(value);\r\n });\r\n\r\n readonly hasValue = computed(() => this.selectedValues().length > 0 || this.query().length > 0);\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n if (this.debugVisible()) {\r\n afterNextRender(() => this.open());\r\n }\r\n });\r\n\r\n effect(() => {\r\n this.query();\r\n this.itemsVersion();\r\n\r\n if (this.autoHighlight()) {\r\n this.highlightedIndex.set(0);\r\n }\r\n });\r\n\r\n queueMicrotask(() => {\r\n this.measureAnchor();\r\n this.attachResizeObserver();\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.resizeObserver?.disconnect();\r\n });\r\n }\r\n\r\n registerItem(item: FrComboboxItem): void {\r\n this.items.add(item);\r\n this.bumpItems();\r\n }\r\n\r\n unregisterItem(item: FrComboboxItem): void {\r\n this.items.delete(item);\r\n this.bumpItems();\r\n }\r\n\r\n visibleItems(): FrComboboxItem[] {\r\n this.itemsVersion();\r\n return Array.from(this.items).filter((item) => item.isVisible());\r\n }\r\n\r\n visibleCount(): number {\r\n return this.visibleItems().length;\r\n }\r\n\r\n overlayMinWidth(): number {\r\n return this.anchorWidth() ?? 0;\r\n }\r\n\r\n overlayPanelClasses(): string[] {\r\n return ['frame-combobox-overlay', `frame-combobox-overlay--${this.overlaySide()}`];\r\n }\r\n\r\n isSelected(value: FrComboboxValue): boolean {\r\n return this.selectedValues().some((selected) => Object.is(selected, value));\r\n }\r\n\r\n isHighlighted(item: FrComboboxItem): boolean {\r\n return this.visibleItems()[this.highlightedIndex()] === item;\r\n }\r\n\r\n rememberItemLabel(value: FrComboboxValue, label: string): void {\r\n this.selectedLabels.set(value, label);\r\n }\r\n\r\n itemVisible(label: string): boolean {\r\n const query = this.query().trim().toLowerCase();\r\n return !query || label.toLowerCase().includes(query);\r\n }\r\n\r\n open(): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n this.measureAnchor();\r\n this.isOpen.set(true);\r\n }\r\n\r\n close(): void {\r\n if (this.debugVisible()) {\r\n return;\r\n }\r\n\r\n this.isOpen.set(false);\r\n this.markAsTouched();\r\n }\r\n\r\n touch(): void {\r\n this.markAsTouched();\r\n }\r\n\r\n clear(): void {\r\n this.query.set('');\r\n this.value.set(this.multiple() ? [] : null);\r\n this.notifyValueChange(this.value());\r\n this.markAsTouched();\r\n }\r\n\r\n selectItem(value: FrComboboxValue, label: string): void {\r\n this.selectedLabels.set(value, label);\r\n\r\n if (this.multiple()) {\r\n const current = this.selectedValues();\r\n const exists = current.some((item) => Object.is(item, value));\r\n const next = exists ? current.filter((item) => !Object.is(item, value)) : [...current, value];\r\n this.value.set(next);\r\n this.notifyValueChange(next);\r\n this.query.set('');\r\n this.open();\r\n return;\r\n }\r\n\r\n this.value.set(value);\r\n this.notifyValueChange(value);\r\n this.query.set('');\r\n this.close();\r\n }\r\n\r\n removeItem(value: FrComboboxValue): void {\r\n if (!this.multiple()) {\r\n this.clear();\r\n return;\r\n }\r\n\r\n const next = this.selectedValues().filter((item) => !Object.is(item, value));\r\n this.value.set(next);\r\n this.notifyValueChange(next);\r\n this.markAsTouched();\r\n }\r\n\r\n updateQuery(value: string): void {\r\n this.query.set(value);\r\n this.highlightedIndex.set(0);\r\n this.open();\r\n }\r\n\r\n moveHighlight(delta: number): void {\r\n const count = this.visibleCount();\r\n\r\n if (count === 0) {\r\n this.highlightedIndex.set(0);\r\n return;\r\n }\r\n\r\n this.highlightedIndex.set((this.highlightedIndex() + delta + count) % count);\r\n }\r\n\r\n selectHighlighted(): void {\r\n const item = this.visibleItems()[this.highlightedIndex()];\r\n item?.select();\r\n }\r\n\r\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\r\n this.overlaySide.set(event.connectionPair.overlayY === 'bottom' ? 'top' : 'bottom');\r\n }\r\n\r\n protected setViewValue(value: FrComboboxValue | FrComboboxValue[] | null): void {\r\n this.value.set(value);\r\n this.query.set('');\r\n }\r\n\r\n private bumpItems(): void {\r\n this.itemsVersion.update((value) => value + 1);\r\n }\r\n\r\n private measureAnchor(): void {\r\n const element = this.origin()?.elementRef.nativeElement ?? this.elementRef.nativeElement;\r\n\r\n if (typeof element?.getBoundingClientRect !== 'function') {\r\n this.anchorWidth.set(null);\r\n return;\r\n }\r\n\r\n this.anchorWidth.set(element.getBoundingClientRect().width || null);\r\n }\r\n\r\n private attachResizeObserver(): void {\r\n if (typeof ResizeObserver === 'undefined') {\r\n return;\r\n }\r\n\r\n const element = this.origin()?.elementRef.nativeElement ?? this.elementRef.nativeElement;\r\n\r\n if (typeof element?.getBoundingClientRect !== 'function') {\r\n return;\r\n }\r\n\r\n this.resizeObserver = new ResizeObserver(() => this.measureAnchor());\r\n this.resizeObserver.observe(element);\r\n }\r\n}\r\n\r\n","import { Directive, ElementRef, inject } from '@angular/core';\n\nimport { FrCombobox } from './combobox.root';\n\n@Directive({\n selector: 'input[frComboboxInput]',\n host: {\n class: 'frame-combobox__input',\n '[attr.aria-disabled]': 'root.disabled() ? \"true\" : null',\n '[attr.aria-expanded]': 'root.isOpen() ? \"true\" : \"false\"',\n '[attr.aria-invalid]': 'root.invalid() ? \"true\" : null',\n '[attr.disabled]': 'root.disabled() ? \"\" : null',\n '[attr.data-has-value]': 'root.hasValue() ? \"true\" : \"false\"',\n '[value]': 'root.displayValue()',\n autocomplete: 'off',\n role: 'combobox',\n type: 'text',\n '(blur)': 'handleBlur()',\n '(focus)': 'root.open()',\n '(input)': 'handleInput()',\n '(keydown)': 'handleKeydown($event)',\n },\n})\nexport class FrComboboxInput {\n protected readonly root = inject(FrCombobox);\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n protected handleInput(): void {\n this.root.updateQuery(this.elementRef.nativeElement.value);\n }\n\n protected handleBlur(): void {\n this.root.touch();\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.root.open();\n this.root.moveHighlight(1);\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.root.open();\n this.root.moveHighlight(-1);\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n this.root.selectHighlighted();\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.root.close();\n }\n }\n}\n\n@Directive({\n selector: 'button[frComboboxTrigger]',\n host: {\n class: 'frame-combobox__trigger',\n '[attr.aria-expanded]': 'root.isOpen() ? \"true\" : \"false\"',\n '[attr.disabled]': 'root.disabled() ? \"\" : null',\n role: 'combobox',\n type: 'button',\n '(click)': 'root.isOpen() ? root.close() : root.open()',\n },\n})\nexport class FrComboboxTrigger {\n protected readonly root = inject(FrCombobox);\n}\n\n@Directive({\n selector: 'button[frComboboxClear]',\n host: {\n class: 'frame-combobox__clear',\n '[attr.hidden]': 'hidden() ? \"\" : null',\n type: 'button',\n '(click)': 'root.clear()',\n },\n})\nexport class FrComboboxClear {\n protected readonly root = inject(FrCombobox);\n\n protected hidden(): boolean {\n return !this.root.showClear() || !this.root.hasValue();\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n afterNextRender,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport { FrCombobox, FrComboboxValue } from './combobox.root';\n\n@Directive({\n selector: 'button[frComboboxItem]',\n host: {\n class: 'frame-combobox__item',\n '[attr.aria-selected]': 'isSelected() ? \"true\" : \"false\"',\n '[attr.data-highlighted]': 'isHighlighted() ? \"\" : null',\n '[attr.data-hidden]': 'isVisible() ? null : \"\"',\n '[attr.data-selected]': 'isSelected() ? \"\" : null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n role: 'option',\n type: 'button',\n '(click)': 'select()',\n '(mouseenter)': 'highlightSelf()',\n },\n})\nexport class FrComboboxItem {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly root = inject(FrCombobox);\n private mutationObserver: MutationObserver | null = null;\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly itemLabel = input<string | null>(null, { alias: 'label' });\n readonly value = input.required<FrComboboxValue>();\n readonly resolvedLabel = signal('');\n\n readonly label = computed(() => this.itemLabel() ?? this.resolvedLabel());\n readonly visible = computed(() => this.root.itemVisible(this.label()));\n\n constructor() {\n this.root.registerItem(this);\n this.destroyRef.onDestroy(() => {\n this.mutationObserver?.disconnect();\n this.root.unregisterItem(this);\n });\n\n afterNextRender(() => {\n this.refreshResolvedLabel();\n this.observeTextChanges();\n });\n\n effect(() => {\n if (this.root.isSelected(this.value())) {\n this.root.rememberItemLabel(this.value(), this.label());\n }\n });\n }\n\n isVisible(): boolean {\n return this.visible();\n }\n\n isSelected(): boolean {\n return this.root.isSelected(this.value());\n }\n\n isHighlighted(): boolean {\n return this.root.isHighlighted(this);\n }\n\n select(): void {\n if (!this.disabled() && this.isVisible()) {\n this.root.selectItem(this.value(), this.label());\n }\n }\n\n protected highlightSelf(): void {\n const index = this.root.visibleItems().indexOf(this);\n\n if (index >= 0) {\n this.root.highlightedIndex.set(index);\n }\n }\n\n private resolveLabel(): string {\n return this.elementRef.nativeElement.textContent?.trim() ?? '';\n }\n\n private refreshResolvedLabel(): void {\n this.resolvedLabel.set(this.resolveLabel());\n }\n\n private observeTextChanges(): void {\n if (typeof MutationObserver === 'undefined' || this.itemLabel() !== null) {\n return;\n }\n\n this.mutationObserver = new MutationObserver(() => this.refreshResolvedLabel());\n this.mutationObserver.observe(this.elementRef.nativeElement, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n}\n\n@Directive({\n selector: '[frComboboxItemIndicator]',\n host: {\n class: 'frame-combobox__item-indicator',\n 'aria-hidden': 'true',\n },\n})\nexport class FrComboboxItemIndicator {}\n","import {\n Directive,\n ElementRef,\n Renderer2,\n afterNextRender,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\nimport { FrCombobox, FrComboboxValue } from './combobox.root';\n\n@Directive({\n selector: '[frComboboxChips], frame-combobox-chips',\n host: {\n class: 'frame-combobox__chips',\n '[attr.data-disabled]': 'root.disabled() ? \"\" : null',\n '[attr.data-invalid]': 'root.invalid() ? \"\" : null',\n },\n})\nexport class FrComboboxChips {\n protected readonly root = inject(FrCombobox);\n}\n\n@Directive({\n selector: '[frComboboxValue], frame-combobox-value',\n exportAs: 'frComboboxValue',\n host: {\n class: 'frame-combobox__value',\n },\n})\nexport class FrComboboxValueList {\n private readonly root = inject(FrCombobox);\n\n values(): FrComboboxValue[] {\n return this.root.selectedValues();\n }\n}\n\n@Directive({\n selector: '[frComboboxChip], frame-combobox-chip',\n exportAs: 'frComboboxChip',\n host: {\n class: 'frame-combobox__chip',\n },\n})\nexport class FrComboboxChip {\n private readonly root = inject(FrCombobox);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n readonly value = input.required<FrComboboxValue>();\n readonly removable = input(true, { transform: booleanAttribute });\n\n constructor() {\n afterNextRender(() => this.attachDefaultRemoveButton());\n }\n\n remove(): void {\n if (this.root.disabled()) {\n return;\n }\n\n this.root.removeItem(this.value());\n }\n\n private attachDefaultRemoveButton(): void {\n const element = this.elementRef.nativeElement;\n\n if (!this.removable() || element.querySelector('[frComboboxChipRemove], [frcomboboxchipremove]')) {\n return;\n }\n\n const button = this.renderer.createElement('button') as HTMLButtonElement;\n const label = this.renderer.createText('×');\n this.renderer.setAttribute(button, 'type', 'button');\n this.renderer.setAttribute(button, 'aria-label', 'Remove selected item');\n this.renderer.setAttribute(button, 'data-default-remove', '');\n this.renderer.addClass(button, 'frame-combobox__chip-remove');\n this.renderer.appendChild(button, label);\n this.renderer.listen(button, 'click', (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.remove();\n });\n this.renderer.appendChild(element, button);\n }\n}\n\n@Directive({\n selector: 'button[frComboboxChipRemove]',\n host: {\n class: 'frame-combobox__chip-remove',\n type: 'button',\n '(click)': 'remove($event)',\n },\n})\nexport class FrComboboxChipRemove {\n private readonly chip = inject(FrComboboxChip);\n\n protected remove(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.chip.remove();\n }\n}\n\n@Directive({\n selector: 'input[frComboboxChipsInput]',\n host: {\n class: 'frame-combobox__chips-input',\n '[attr.disabled]': 'root.disabled() ? \"\" : null',\n '[value]': 'root.query()',\n autocomplete: 'off',\n type: 'text',\n '(focus)': 'root.open()',\n '(input)': 'handleInput($event)',\n '(keydown)': 'handleKeydown($event)',\n },\n})\nexport class FrComboboxChipsInput {\n protected readonly root = inject(FrCombobox);\n\n protected handleInput(event: Event): void {\n this.root.updateQuery((event.target as HTMLInputElement).value);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Backspace' && this.root.query() === '') {\n const values = this.root.selectedValues();\n const last = values.at(-1);\n\n if (last !== undefined) {\n this.root.removeItem(last);\n }\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.root.open();\n this.root.moveHighlight(1);\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n this.root.selectHighlighted();\n }\n }\n}\n\n@Directive({\n selector: '[frComboboxError], frame-combobox-error',\n host: {\n class: 'frame-combobox__error',\n 'aria-live': 'polite',\n },\n})\nexport class FrComboboxError {}\n","import { NgModule } from '@angular/core';\nimport {\n FrCombobox,\n FrComboboxChip,\n FrComboboxChipRemove,\n FrComboboxChips,\n FrComboboxChipsInput,\n FrComboboxClear,\n FrComboboxCollection,\n FrComboboxContent,\n FrComboboxEmpty,\n FrComboboxError,\n FrComboboxGroup,\n FrComboboxInput,\n FrComboboxItem,\n FrComboboxItemIndicator,\n FrComboboxLabel,\n FrComboboxList,\n FrComboboxPanel,\n FrComboboxSeparator,\n FrComboboxTrigger,\n FrComboboxValueList,\n} from './src/combobox';\n\n@NgModule({\n imports: [\n FrCombobox,\n FrComboboxChip,\n FrComboboxChipRemove,\n FrComboboxChips,\n FrComboboxChipsInput,\n FrComboboxClear,\n FrComboboxCollection,\n FrComboboxContent,\n FrComboboxEmpty,\n FrComboboxError,\n FrComboboxGroup,\n FrComboboxInput,\n FrComboboxItem,\n FrComboboxItemIndicator,\n FrComboboxLabel,\n FrComboboxList,\n FrComboboxPanel,\n FrComboboxSeparator,\n FrComboboxTrigger,\n FrComboboxValueList,\n ],\n exports: [\n FrCombobox,\n FrComboboxChip,\n FrComboboxChipRemove,\n FrComboboxChips,\n FrComboboxChipsInput,\n FrComboboxClear,\n FrComboboxCollection,\n FrComboboxContent,\n FrComboboxEmpty,\n FrComboboxError,\n FrComboboxGroup,\n FrComboboxInput,\n FrComboboxItem,\n FrComboboxItemIndicator,\n FrComboboxLabel,\n FrComboboxList,\n FrComboboxPanel,\n FrComboboxSeparator,\n FrComboboxTrigger,\n FrComboboxValueList,\n ],\n})\nexport class FrComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-ui-ng-components-combobox.mjs","sources":["../../../projects/components/combobox/src/combobox.content.ts","../../../projects/components/combobox/src/combobox.root.ts","../../../projects/components/combobox/src/combobox.input.ts","../../../projects/components/combobox/src/combobox.items.ts","../../../projects/components/combobox/src/combobox.value.ts","../../../projects/components/combobox/combobox.module.ts","../../../projects/components/combobox/frame-ui-ng-components-combobox.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n/** Content slot for combobox. */\r\n@Directive({\r\n selector: 'ng-template[frComboboxContent]',\r\n exportAs: 'frComboboxContent',\r\n})\r\nexport class FrComboboxContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n}\r\n\r\n/** Panel slot for combobox. */\r\n@Directive({\r\n selector: '[frComboboxPanel], frame-combobox-panel',\r\n host: {\r\n class: 'frame-combobox__panel',\r\n role: 'listbox',\r\n },\r\n})\r\nexport class FrComboboxPanel {}\r\n\r\n/** List slot for combobox. */\r\n@Directive({\r\n selector: '[frComboboxList], frame-combobox-list',\r\n host: {\r\n class: 'frame-combobox__list',\r\n },\r\n})\r\nexport class FrComboboxList {}\r\n\r\n/** Empty-state slot for combobox results. */\r\n@Directive({\r\n selector: '[frComboboxEmpty], frame-combobox-empty',\r\n host: {\r\n class: 'frame-combobox__empty',\r\n '[attr.hidden]': 'hidden() ? \"\" : null',\r\n },\r\n})\r\nexport class FrComboboxEmpty {\r\n private readonly root = inject(FrComboboxRootLookup);\r\n\r\n protected hidden(): boolean {\r\n return this.root.visibleCount() > 0;\r\n }\r\n}\r\n\r\n/** Group slot for combobox. */\r\n@Directive({\r\n selector: '[frComboboxGroup], frame-combobox-group',\r\n host: {\r\n class: 'frame-combobox__group',\r\n },\r\n})\r\nexport class FrComboboxGroup {}\r\n\r\n/** Label slot for combobox. */\r\n@Directive({\r\n selector: '[frComboboxLabel], frame-combobox-label',\r\n host: {\r\n class: 'frame-combobox__label',\r\n },\r\n})\r\nexport class FrComboboxLabel {}\r\n\r\n/** Separator slot for combobox. */\r\n@Directive({\r\n selector: '[frComboboxSeparator], frame-combobox-separator',\r\n host: {\r\n class: 'frame-combobox__separator',\r\n role: 'separator',\r\n },\r\n})\r\nexport class FrComboboxSeparator {}\r\n\r\n/** Collection host for combobox options. */\r\n@Directive({\r\n selector: '[frComboboxCollection], frame-combobox-collection',\r\n host: {\r\n class: 'frame-combobox__collection',\r\n },\r\n})\r\nexport class FrComboboxCollection {}\r\n\r\n// Resolved by the root file to avoid a circular import in decorator metadata.\r\n/** Base API for combobox root lookup. */\r\nexport abstract class FrComboboxRootLookup {\r\n abstract visibleCount(): number;\r\n}\r\n\r\n","import {\r\n CdkConnectedOverlay,\r\n CdkOverlayOrigin,\r\n ConnectedOverlayPositionChange,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n DestroyRef,\r\n DoCheck,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\n\r\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\r\nimport { FrComboboxContent, FrComboboxRootLookup } from './combobox.content';\r\nimport { FrComboboxItem } from './combobox.items';\r\n\r\nexport type FrComboboxValue = unknown;\r\nexport type FrComboboxStringifier = (item: FrComboboxValue) => string;\r\n\r\nconst POSITIONS: ConnectedPosition[] = [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 4,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -4,\r\n },\r\n];\r\n\r\n/** Combobox control with single and multi-value support. */\r\n@Component({\r\n selector: '[frCombobox], frame-combobox',\r\n exportAs: 'frCombobox',\r\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgTemplateOutlet],\r\n providers: [\r\n provideDsValueAccessor(FrCombobox),\r\n {\r\n provide: FrComboboxRootLookup,\r\n useExisting: FrCombobox,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-combobox',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"\" : null'\r\n },\r\n template: `\r\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-combobox__anchor\">\r\n <ng-content />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayPositions]=\"positions\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayWidth]=\"overlayMinWidth()\"\r\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth()\"\r\n (overlayOutsideClick)=\"close()\"\r\n (positionChange)=\"handlePositionChange($event)\"\r\n (detach)=\"close()\"\r\n >\r\n @if (content()) {\r\n <ng-container [ngTemplateOutlet]=\"content()!.templateRef\" />\r\n }\r\n </ng-template>\r\n `,\r\n})\r\nexport class FrCombobox\r\n extends FrControlValueAccessor<FrComboboxValue | FrComboboxValue[] | null>\r\n implements AfterViewInit, DoCheck {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly items = new Set<FrComboboxItem>();\r\n private readonly itemsVersion = signal(0);\r\n private readonly selectedLabels = new Map<FrComboboxValue, string>();\r\n private lastAutoHighlight = false;\r\n private lastItemsVersion = -1;\r\n private lastQuery = '';\r\n private resizeObserver: ResizeObserver | null = null;\r\n\r\n private readonly origin = viewChild(CdkOverlayOrigin);\r\n\r\n readonly content = contentChild(FrComboboxContent);\r\n readonly autoHighlight = input(false, { transform: booleanAttribute });\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\r\n readonly itemToStringValue = input<FrComboboxStringifier>((item) => String(item ?? ''));\r\n readonly multiple = input(false, { transform: booleanAttribute });\r\n readonly showClear = input(false, { transform: booleanAttribute });\r\n readonly value = model<FrComboboxValue | FrComboboxValue[] | null>(null);\r\n\r\n readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\r\n readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\r\n readonly isOpen = signal(false);\r\n readonly query = signal('');\r\n readonly anchorWidth = signal<number | null>(null);\r\n readonly highlightedIndex = signal(0);\r\n readonly overlaySide = signal<'bottom' | 'top'>('bottom');\r\n readonly positions = POSITIONS;\r\n\r\n readonly selectedValues = computed(() => {\r\n const value = this.value();\r\n return Array.isArray(value) ? value : value === null ? [] : [value];\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n if (this.multiple()) {\r\n return this.query();\r\n }\r\n\r\n const value = this.value();\r\n\r\n if (value === null || Array.isArray(value)) {\r\n return this.query();\r\n }\r\n\r\n return this.query() || this.selectedLabels.get(value) || this.itemToStringValue()(value);\r\n });\r\n\r\n readonly hasValue = computed(() => this.selectedValues().length > 0 || this.query().length > 0);\r\n\r\n constructor() {\r\n super();\r\n\r\n queueMicrotask(() => {\r\n this.measureAnchor();\r\n this.attachResizeObserver();\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.resizeObserver?.disconnect();\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.debugVisible()) {\r\n this.open();\r\n }\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.debugVisible() && !this.isOpen()) {\r\n this.open();\r\n }\r\n\r\n const autoHighlight = this.autoHighlight();\r\n const itemsVersion = this.itemsVersion();\r\n const query = this.query();\r\n\r\n if (\r\n autoHighlight &&\r\n (query !== this.lastQuery ||\r\n itemsVersion !== this.lastItemsVersion ||\r\n autoHighlight !== this.lastAutoHighlight)\r\n ) {\r\n // Filtering can invalidate the current index, so restart highlight at the first visible item.\r\n this.highlightedIndex.set(0);\r\n }\r\n\r\n this.lastAutoHighlight = autoHighlight;\r\n this.lastItemsVersion = itemsVersion;\r\n this.lastQuery = query;\r\n }\r\n\r\n registerItem(item: FrComboboxItem): void {\r\n this.items.add(item);\r\n this.bumpItems();\r\n }\r\n\r\n unregisterItem(item: FrComboboxItem): void {\r\n this.items.delete(item);\r\n this.bumpItems();\r\n }\r\n\r\n refreshItems(): void {\r\n this.bumpItems();\r\n }\r\n\r\n visibleItems(): FrComboboxItem[] {\r\n this.itemsVersion();\r\n return Array.from(this.items).filter((item) => item.isVisible());\r\n }\r\n\r\n visibleCount(): number {\r\n return this.visibleItems().length;\r\n }\r\n\r\n overlayMinWidth(): number {\r\n return this.anchorWidth() ?? 0;\r\n }\r\n\r\n overlayPanelClasses(): string[] {\r\n return ['frame-combobox-overlay', `frame-combobox-overlay--${this.overlaySide()}`];\r\n }\r\n\r\n isSelected(value: FrComboboxValue): boolean {\r\n return this.selectedValues().some((selected) => Object.is(selected, value));\r\n }\r\n\r\n isHighlighted(item: FrComboboxItem): boolean {\r\n return this.visibleItems()[this.highlightedIndex()] === item;\r\n }\r\n\r\n rememberItemLabel(value: FrComboboxValue, label: string): void {\r\n this.selectedLabels.set(value, label);\r\n }\r\n\r\n itemVisible(label: string): boolean {\r\n const query = this.query().trim().toLowerCase();\r\n return !query || label.toLowerCase().includes(query);\r\n }\r\n\r\n open(): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n this.measureAnchor();\r\n this.isOpen.set(true);\r\n }\r\n\r\n close(): void {\r\n if (this.debugVisible()) {\r\n return;\r\n }\r\n\r\n this.isOpen.set(false);\r\n this.markAsTouched();\r\n }\r\n\r\n touch(): void {\r\n this.markAsTouched();\r\n }\r\n\r\n clear(): void {\r\n this.query.set('');\r\n this.value.set(this.multiple() ? [] : null);\r\n this.notifyValueChange(this.value());\r\n this.markAsTouched();\r\n }\r\n\r\n selectItem(value: FrComboboxValue, label: string): void {\r\n this.selectedLabels.set(value, label);\r\n\r\n if (this.multiple()) {\r\n const current = this.selectedValues();\r\n const exists = current.some((item) => Object.is(item, value));\r\n const next = exists ? current.filter((item) => !Object.is(item, value)) : [...current, value];\r\n this.value.set(next);\r\n this.notifyValueChange(next);\r\n this.query.set('');\r\n this.open();\r\n return;\r\n }\r\n\r\n this.value.set(value);\r\n this.notifyValueChange(value);\r\n this.query.set('');\r\n this.close();\r\n }\r\n\r\n removeItem(value: FrComboboxValue): void {\r\n if (!this.multiple()) {\r\n this.clear();\r\n return;\r\n }\r\n\r\n const next = this.selectedValues().filter((item) => !Object.is(item, value));\r\n this.value.set(next);\r\n this.notifyValueChange(next);\r\n this.markAsTouched();\r\n }\r\n\r\n updateQuery(value: string): void {\r\n this.query.set(value);\r\n this.highlightedIndex.set(0);\r\n this.open();\r\n }\r\n\r\n moveHighlight(delta: number): void {\r\n const count = this.visibleCount();\r\n\r\n if (count === 0) {\r\n this.highlightedIndex.set(0);\r\n return;\r\n }\r\n\r\n this.highlightedIndex.set((this.highlightedIndex() + delta + count) % count);\r\n }\r\n\r\n selectHighlighted(): void {\r\n const item = this.visibleItems()[this.highlightedIndex()];\r\n item?.select();\r\n }\r\n\r\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\r\n this.overlaySide.set(event.connectionPair.overlayY === 'bottom' ? 'top' : 'bottom');\r\n }\r\n\r\n protected setViewValue(value: FrComboboxValue | FrComboboxValue[] | null): void {\r\n this.value.set(value);\r\n this.query.set('');\r\n }\r\n\r\n private bumpItems(): void {\r\n this.itemsVersion.update((value) => value + 1);\r\n }\r\n\r\n private measureAnchor(): void {\r\n const element = this.origin()?.elementRef.nativeElement ?? this.elementRef.nativeElement;\r\n\r\n if (typeof element?.getBoundingClientRect !== 'function') {\r\n this.anchorWidth.set(null);\r\n return;\r\n }\r\n\r\n // Match the overlay width to the trigger even when content is rendered in the CDK overlay.\r\n this.anchorWidth.set(element.getBoundingClientRect().width || null);\r\n }\r\n\r\n private attachResizeObserver(): void {\r\n if (typeof ResizeObserver === 'undefined') {\r\n return;\r\n }\r\n\r\n const element = this.origin()?.elementRef.nativeElement ?? this.elementRef.nativeElement;\r\n\r\n if (typeof element?.getBoundingClientRect !== 'function') {\r\n return;\r\n }\r\n\r\n this.resizeObserver = new ResizeObserver(() => this.measureAnchor());\r\n this.resizeObserver.observe(element);\r\n }\r\n}\r\n\r\n\r\n","import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\nimport { FrCombobox } from './combobox.root';\r\n\r\n/** Search input for combobox filtering. */\r\n@Directive({\r\n selector: 'input[frComboboxInput]',\r\n host: {\r\n class: 'frame-combobox__input',\r\n '[attr.aria-disabled]': 'root.disabled() ? \"true\" : null',\r\n '[attr.aria-expanded]': 'root.isOpen() ? \"true\" : \"false\"',\r\n '[attr.aria-invalid]': 'root.invalid() ? \"true\" : null',\r\n '[attr.disabled]': 'root.disabled() ? \"\" : null',\r\n '[attr.data-has-value]': 'root.hasValue() ? \"true\" : \"false\"',\r\n '[value]': 'root.displayValue()',\r\n autocomplete: 'off',\r\n role: 'combobox',\r\n type: 'text',\r\n '(blur)': 'handleBlur()',\r\n '(focus)': 'root.open()',\r\n '(input)': 'handleInput()',\r\n '(keydown)': 'handleKeydown($event)',\r\n },\r\n})\r\nexport class FrComboboxInput {\r\n protected readonly root = inject(FrCombobox);\r\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n\r\n protected handleInput(): void {\r\n this.root.updateQuery(this.elementRef.nativeElement.value);\r\n }\r\n\r\n protected handleBlur(): void {\r\n this.root.touch();\r\n }\r\n\r\n protected handleKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.root.open();\r\n this.root.moveHighlight(1);\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.root.open();\r\n this.root.moveHighlight(-1);\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n this.root.selectHighlighted();\r\n return;\r\n }\r\n\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.root.close();\r\n }\r\n }\r\n}\r\n\r\n/** Trigger control for combobox. */\r\n@Directive({\r\n selector: 'button[frComboboxTrigger]',\r\n host: {\r\n class: 'frame-combobox__trigger',\r\n '[attr.aria-expanded]': 'root.isOpen() ? \"true\" : \"false\"',\r\n '[attr.disabled]': 'root.disabled() ? \"\" : null',\r\n role: 'combobox',\r\n type: 'button',\r\n '(click)': 'root.isOpen() ? root.close() : root.open()',\r\n },\r\n})\r\nexport class FrComboboxTrigger {\r\n protected readonly root = inject(FrCombobox);\r\n}\r\n\r\n/** Clear control for combobox values. */\r\n@Directive({\r\n selector: 'button[frComboboxClear]',\r\n host: {\r\n class: 'frame-combobox__clear',\r\n '[attr.hidden]': 'hidden() ? \"\" : null',\r\n type: 'button',\r\n '(click)': 'root.clear()',\r\n },\r\n})\r\nexport class FrComboboxClear {\r\n protected readonly root = inject(FrCombobox);\r\n\r\n protected hidden(): boolean {\r\n return !this.root.showClear() || !this.root.hasValue();\r\n }\r\n}\r\n\r\n","import {\r\n DestroyRef,\r\n Directive,\r\n DoCheck,\r\n ElementRef,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\n\r\nimport { FrCombobox, FrComboboxValue } from './combobox.root';\r\n\r\n/** Item slot for combobox. */\r\n@Directive({\r\n selector: 'button[frComboboxItem]',\r\n host: {\r\n class: 'frame-combobox__item',\r\n '[attr.aria-selected]': 'isSelected() ? \"true\" : \"false\"',\r\n '[attr.data-highlighted]': 'isHighlighted() ? \"\" : null',\r\n '[attr.data-hidden]': 'isVisible() ? null : \"\"',\r\n '[attr.data-selected]': 'isSelected() ? \"\" : null',\r\n '[attr.disabled]': 'disabled() ? \"\" : null',\r\n role: 'option',\r\n type: 'button',\r\n '(click)': 'select()',\r\n '(mouseenter)': 'highlightSelf()',\r\n },\r\n})\r\nexport class FrComboboxItem implements DoCheck {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly root = inject(FrCombobox);\r\n private mutationObserver: MutationObserver | null = null;\r\n\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly itemLabel = input<string | null>(null, { alias: 'label' });\r\n readonly value = input.required<FrComboboxValue>();\r\n readonly resolvedLabel = signal('');\r\n private lastItemStateKey = '';\r\n\r\n readonly label = computed(() => this.itemLabel() ?? this.resolvedLabel());\r\n readonly visible = computed(() => this.root.itemVisible(this.label()));\r\n\r\n constructor() {\r\n this.root.registerItem(this);\r\n this.destroyRef.onDestroy(() => {\r\n this.mutationObserver?.disconnect();\r\n this.root.unregisterItem(this);\r\n });\r\n\r\n afterNextRender(() => {\r\n this.refreshResolvedLabel();\r\n this.observeTextChanges();\r\n });\r\n\r\n }\r\n\r\n ngDoCheck(): void {\r\n const itemStateKey = `${this.label()}|${this.disabled()}|${this.root.isSelected(this.value())}`;\r\n\r\n if (itemStateKey === this.lastItemStateKey) {\r\n return;\r\n }\r\n\r\n this.lastItemStateKey = itemStateKey;\r\n this.root.refreshItems();\r\n\r\n if (this.root.isSelected(this.value())) {\r\n this.root.rememberItemLabel(this.value(), this.label());\r\n }\r\n }\r\n\r\n isVisible(): boolean {\r\n return this.visible();\r\n }\r\n\r\n isSelected(): boolean {\r\n return this.root.isSelected(this.value());\r\n }\r\n\r\n isHighlighted(): boolean {\r\n return this.root.isHighlighted(this);\r\n }\r\n\r\n select(): void {\r\n if (!this.disabled() && this.isVisible()) {\r\n this.root.selectItem(this.value(), this.label());\r\n }\r\n }\r\n\r\n protected highlightSelf(): void {\r\n const index = this.root.visibleItems().indexOf(this);\r\n\r\n if (index >= 0) {\r\n this.root.highlightedIndex.set(index);\r\n }\r\n }\r\n\r\n private resolveLabel(): string {\r\n return this.elementRef.nativeElement.textContent?.trim() ?? '';\r\n }\r\n\r\n private refreshResolvedLabel(): void {\r\n this.resolvedLabel.set(this.resolveLabel());\r\n this.root.refreshItems();\r\n }\r\n\r\n private observeTextChanges(): void {\r\n if (typeof MutationObserver === 'undefined' || this.itemLabel() !== null) {\r\n return;\r\n }\r\n\r\n // Items without explicit labels derive filtering text from projected content.\r\n this.mutationObserver = new MutationObserver(() => this.refreshResolvedLabel());\r\n this.mutationObserver.observe(this.elementRef.nativeElement, {\r\n characterData: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n }\r\n}\r\n\r\n/** Indicator slot for combobox item. */\r\n@Directive({\r\n selector: '[frComboboxItemIndicator]',\r\n host: {\r\n class: 'frame-combobox__item-indicator',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrComboboxItemIndicator {}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n afterNextRender,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\n\r\nimport { FrCombobox, FrComboboxValue } from './combobox.root';\r\n\r\n/** Chip list for multi-value combobox selections. */\r\n@Directive({\r\n selector: '[frComboboxChips], frame-combobox-chips',\r\n host: {\r\n class: 'frame-combobox__chips',\r\n '[attr.data-disabled]': 'root.disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'root.invalid() ? \"\" : null',\r\n },\r\n})\r\nexport class FrComboboxChips {\r\n protected readonly root = inject(FrCombobox);\r\n}\r\n\r\n/** List slot for combobox value. */\r\n@Directive({\r\n selector: '[frComboboxValue], frame-combobox-value',\r\n exportAs: 'frComboboxValue',\r\n host: {\r\n class: 'frame-combobox__value',\r\n },\r\n})\r\nexport class FrComboboxValueList {\r\n private readonly root = inject(FrCombobox);\r\n\r\n values(): FrComboboxValue[] {\r\n return this.root.selectedValues();\r\n }\r\n}\r\n\r\n/** Selected value chip for combobox. */\r\n@Directive({\r\n selector: '[frComboboxChip], frame-combobox-chip',\r\n exportAs: 'frComboboxChip',\r\n host: {\r\n class: 'frame-combobox__chip',\r\n },\r\n})\r\nexport class FrComboboxChip {\r\n private readonly root = inject(FrCombobox);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly renderer = inject(Renderer2);\r\n\r\n readonly value = input.required<FrComboboxValue>();\r\n readonly removable = input(true, { transform: booleanAttribute });\r\n\r\n constructor() {\r\n afterNextRender(() => this.attachDefaultRemoveButton());\r\n }\r\n\r\n remove(): void {\r\n if (this.root.disabled()) {\r\n return;\r\n }\r\n\r\n this.root.removeItem(this.value());\r\n }\r\n\r\n private attachDefaultRemoveButton(): void {\r\n const element = this.elementRef.nativeElement;\r\n\r\n if (!this.removable() || element.querySelector('[frComboboxChipRemove], [frcomboboxchipremove]')) {\r\n return;\r\n }\r\n\r\n const button = this.renderer.createElement('button') as HTMLButtonElement;\r\n const label = this.renderer.createText('×');\r\n this.renderer.setAttribute(button, 'type', 'button');\r\n this.renderer.setAttribute(button, 'aria-label', 'Remove selected item');\r\n this.renderer.setAttribute(button, 'data-default-remove', '');\r\n this.renderer.addClass(button, 'frame-combobox__chip-remove');\r\n this.renderer.appendChild(button, label);\r\n this.renderer.listen(button, 'click', (event: MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.remove();\r\n });\r\n this.renderer.appendChild(element, button);\r\n }\r\n}\r\n\r\n/** Remove control for a combobox chip. */\r\n@Directive({\r\n selector: 'button[frComboboxChipRemove]',\r\n host: {\r\n class: 'frame-combobox__chip-remove',\r\n type: 'button',\r\n '(click)': 'remove($event)',\r\n },\r\n})\r\nexport class FrComboboxChipRemove {\r\n private readonly chip = inject(FrComboboxChip);\r\n\r\n protected remove(event: MouseEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.chip.remove();\r\n }\r\n}\r\n\r\n/** Inline text input inside combobox chips. */\r\n@Directive({\r\n selector: 'input[frComboboxChipsInput]',\r\n host: {\r\n class: 'frame-combobox__chips-input',\r\n '[attr.disabled]': 'root.disabled() ? \"\" : null',\r\n '[value]': 'root.query()',\r\n autocomplete: 'off',\r\n type: 'text',\r\n '(focus)': 'root.open()',\r\n '(input)': 'handleInput($event)',\r\n '(keydown)': 'handleKeydown($event)',\r\n },\r\n})\r\nexport class FrComboboxChipsInput {\r\n protected readonly root = inject(FrCombobox);\r\n\r\n protected handleInput(event: Event): void {\r\n this.root.updateQuery((event.target as HTMLInputElement).value);\r\n }\r\n\r\n protected handleKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Backspace' && this.root.query() === '') {\r\n const values = this.root.selectedValues();\r\n const last = values.at(-1);\r\n\r\n if (last !== undefined) {\r\n this.root.removeItem(last);\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.root.open();\r\n this.root.moveHighlight(1);\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n this.root.selectHighlighted();\r\n }\r\n }\r\n}\r\n\r\n/** Error slot for combobox. */\r\n@Directive({\r\n selector: '[frComboboxError], frame-combobox-error',\r\n host: {\r\n class: 'frame-combobox__error',\r\n 'aria-live': 'polite',\r\n },\r\n})\r\nexport class FrComboboxError {}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrCombobox,\n FrComboboxChip,\n FrComboboxChipRemove,\n FrComboboxChips,\n FrComboboxChipsInput,\n FrComboboxClear,\n FrComboboxCollection,\n FrComboboxContent,\n FrComboboxEmpty,\n FrComboboxError,\n FrComboboxGroup,\n FrComboboxInput,\n FrComboboxItem,\n FrComboboxItemIndicator,\n FrComboboxLabel,\n FrComboboxList,\n FrComboboxPanel,\n FrComboboxSeparator,\n FrComboboxTrigger,\n FrComboboxValueList,\n} from './src/combobox';\n\n@NgModule({\n imports: [\n FrCombobox,\n FrComboboxChip,\n FrComboboxChipRemove,\n FrComboboxChips,\n FrComboboxChipsInput,\n FrComboboxClear,\n FrComboboxCollection,\n FrComboboxContent,\n FrComboboxEmpty,\n FrComboboxError,\n FrComboboxGroup,\n FrComboboxInput,\n FrComboboxItem,\n FrComboboxItemIndicator,\n FrComboboxLabel,\n FrComboboxList,\n FrComboboxPanel,\n FrComboboxSeparator,\n FrComboboxTrigger,\n FrComboboxValueList,\n ],\n exports: [\n FrCombobox,\n FrComboboxChip,\n FrComboboxChipRemove,\n FrComboboxChips,\n FrComboboxChipsInput,\n FrComboboxClear,\n FrComboboxCollection,\n FrComboboxContent,\n FrComboboxEmpty,\n FrComboboxError,\n FrComboboxGroup,\n FrComboboxInput,\n FrComboboxItem,\n FrComboboxItemIndicator,\n FrComboboxLabel,\n FrComboboxList,\n FrComboboxPanel,\n FrComboboxSeparator,\n FrComboboxTrigger,\n FrComboboxValueList,\n ],\n})\nexport class FrComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}