@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.
- package/calendar/src/styles/_vars.css +4 -0
- package/calendar/src/styles/calendar.css +29 -5
- package/confirm-popover/src/styles/confirm-popover.css +20 -0
- package/date-picker/src/styles/date-picker.css +27 -1
- package/drag-drop/src/styles/_vars.css +28 -0
- package/drag-drop/src/styles/drag-drop.css +132 -0
- package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
- package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
- package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-calendar.mjs +24 -1
- package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
- package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
- package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
- package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
- package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-combobox.mjs +66 -18
- package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
- package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
- package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +73 -36
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
- package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
- package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input-otp.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
- package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
- package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
- package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-modal.mjs +167 -128
- package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-pagination.mjs +8 -0
- package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
- package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-resizable.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
- package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sheet.mjs +99 -88
- package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sidebar.mjs +27 -12
- package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-slider.mjs +29 -16
- package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
- package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
- package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tooltip.mjs +30 -25
- package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-utils.mjs +5 -1
- package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +26 -8
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components.mjs +1449 -571
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/package.json +10 -2
- package/popover/src/styles/popover.css +106 -101
- package/select/src/styles/select-content.css +27 -19
- package/src/styles/components.css +6 -4
- package/styles/components.css +6 -4
- package/styles.css +6 -4
- package/types/frame-ui-ng-components-accordion.d.ts +11 -4
- package/types/frame-ui-ng-components-alert.d.ts +4 -0
- package/types/frame-ui-ng-components-avatar.d.ts +7 -0
- package/types/frame-ui-ng-components-badge.d.ts +4 -0
- package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
- package/types/frame-ui-ng-components-button-group.d.ts +1 -0
- package/types/frame-ui-ng-components-button.d.ts +5 -0
- package/types/frame-ui-ng-components-calendar.d.ts +2 -0
- package/types/frame-ui-ng-components-card.d.ts +8 -3
- package/types/frame-ui-ng-components-carousel.d.ts +11 -2
- package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
- package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
- package/types/frame-ui-ng-components-combobox.d.ts +32 -3
- package/types/frame-ui-ng-components-command.d.ts +26 -4
- package/types/frame-ui-ng-components-confirm-modal.d.ts +2 -0
- package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
- package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
- package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
- package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
- package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
- package/types/frame-ui-ng-components-empty.d.ts +6 -0
- package/types/frame-ui-ng-components-field.d.ts +9 -0
- package/types/frame-ui-ng-components-forms.d.ts +1 -0
- package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
- package/types/frame-ui-ng-components-input-otp.d.ts +4 -0
- package/types/frame-ui-ng-components-input.d.ts +13 -0
- package/types/frame-ui-ng-components-item.d.ts +10 -0
- package/types/frame-ui-ng-components-menubar.d.ts +15 -0
- package/types/frame-ui-ng-components-modal.d.ts +27 -4
- package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
- package/types/frame-ui-ng-components-pagination.d.ts +8 -0
- package/types/frame-ui-ng-components-popover.d.ts +14 -2
- package/types/frame-ui-ng-components-progress.d.ts +2 -0
- package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
- package/types/frame-ui-ng-components-resizable.d.ts +3 -0
- package/types/frame-ui-ng-components-select.d.ts +23 -2
- package/types/frame-ui-ng-components-separator.d.ts +1 -0
- package/types/frame-ui-ng-components-sheet.d.ts +11 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +21 -0
- package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
- package/types/frame-ui-ng-components-slider.d.ts +5 -2
- package/types/frame-ui-ng-components-spinner.d.ts +1 -0
- package/types/frame-ui-ng-components-switch.d.ts +6 -0
- package/types/frame-ui-ng-components-table.d.ts +26 -0
- package/types/frame-ui-ng-components-tabs.d.ts +4 -0
- package/types/frame-ui-ng-components-textarea.d.ts +1 -0
- package/types/frame-ui-ng-components-toast.d.ts +2 -0
- package/types/frame-ui-ng-components-toggle.d.ts +8 -2
- package/types/frame-ui-ng-components-tooltip.d.ts +6 -2
- package/types/frame-ui-ng-components-utils.d.ts +3 -1
- package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
- 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,
|
|
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
|
-
|
|
521
|
-
|
|
522
|
-
|
|
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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"}
|