@ngbase/adk 0.1.19 → 0.1.21
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/fesm2022/ngbase-adk-a11y.mjs +15 -15
- package/fesm2022/ngbase-adk-accordion.mjs +12 -12
- package/fesm2022/ngbase-adk-autocomplete.mjs +6 -6
- package/fesm2022/ngbase-adk-avatar.mjs +6 -6
- package/fesm2022/ngbase-adk-bidi.mjs +3 -3
- package/fesm2022/ngbase-adk-breadcrumb.mjs +12 -12
- package/fesm2022/ngbase-adk-cache.mjs +3 -3
- package/fesm2022/ngbase-adk-carousel.mjs +15 -15
- package/fesm2022/ngbase-adk-checkbox.mjs +6 -6
- package/fesm2022/ngbase-adk-chip.mjs +9 -9
- package/fesm2022/ngbase-adk-clipboard.mjs +3 -3
- package/fesm2022/ngbase-adk-color-picker.mjs +30 -30
- package/fesm2022/ngbase-adk-cookies.mjs +3 -3
- package/fesm2022/ngbase-adk-datepicker.mjs +36 -36
- package/fesm2022/ngbase-adk-dialog.mjs +12 -12
- package/fesm2022/ngbase-adk-drag.mjs +12 -12
- package/fesm2022/ngbase-adk-form-field.mjs +20 -20
- package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
- package/fesm2022/ngbase-adk-hover-card.mjs +3 -3
- package/fesm2022/ngbase-adk-icon.mjs +6 -6
- package/fesm2022/ngbase-adk-inline-edit.mjs +9 -9
- package/fesm2022/ngbase-adk-jwt.mjs +6 -6
- package/fesm2022/ngbase-adk-keys.mjs +6 -6
- package/fesm2022/ngbase-adk-list.mjs +6 -6
- package/fesm2022/ngbase-adk-mask.mjs +6 -6
- package/fesm2022/ngbase-adk-menu.mjs +24 -24
- package/fesm2022/ngbase-adk-network.mjs +3 -3
- package/fesm2022/ngbase-adk-otp.mjs +9 -9
- package/fesm2022/ngbase-adk-pagination.mjs +6 -6
- package/fesm2022/ngbase-adk-popover.mjs +21 -21
- package/fesm2022/ngbase-adk-portal.mjs +12 -12
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-progress.mjs +6 -6
- package/fesm2022/ngbase-adk-radio.mjs +9 -9
- package/fesm2022/ngbase-adk-resizable.mjs +39 -131
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-scroll-area.mjs +6 -6
- package/fesm2022/ngbase-adk-select.mjs +245 -102
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-selectable.mjs +6 -6
- package/fesm2022/ngbase-adk-sheet.mjs +3 -3
- package/fesm2022/ngbase-adk-sidenav.mjs +18 -18
- package/fesm2022/ngbase-adk-slider.mjs +12 -12
- package/fesm2022/ngbase-adk-sonner.mjs +9 -9
- package/fesm2022/ngbase-adk-stepper.mjs +12 -12
- package/fesm2022/ngbase-adk-switch.mjs +12 -12
- package/fesm2022/ngbase-adk-table.mjs +39 -39
- package/fesm2022/ngbase-adk-tabs.mjs +21 -21
- package/fesm2022/ngbase-adk-toggle-group.mjs +6 -6
- package/fesm2022/ngbase-adk-toggle.mjs +3 -3
- package/fesm2022/ngbase-adk-tooltip.mjs +9 -9
- package/fesm2022/ngbase-adk-tour.mjs +12 -12
- package/fesm2022/ngbase-adk-translate.mjs +6 -6
- package/fesm2022/ngbase-adk-tree.mjs +15 -15
- package/fesm2022/ngbase-adk-utils.mjs +14 -10
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/fesm2022/ngbase-adk-virtualizer.mjs +11 -8
- package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/components/files/pagination/pagination.ts.template +2 -2
- package/schematics/components/files/select/select.ts.template +92 -15
- package/schematics/components/files/sidenav/sidenav.ts.template +16 -8
- package/schematics/components/files/switch/switch.ts.template +1 -1
- package/types/ngbase-adk-color-picker.d.ts +1 -1
- package/types/ngbase-adk-form-field.d.ts +1 -1
- package/types/ngbase-adk-portal.d.ts +2 -3
- package/types/ngbase-adk-resizable.d.ts +3 -3
- package/types/ngbase-adk-scroll-area.d.ts +1 -1
- package/types/ngbase-adk-select.d.ts +27 -6
- package/types/ngbase-adk-virtualizer.d.ts +3 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef,
|
|
2
|
+
import { signal, Directive, inject, ElementRef, viewChild, TemplateRef, model, input, booleanAttribute, output, computed, effect, untracked, contentChild, numberAttribute, linkedSignal, forwardRef, DestroyRef } from '@angular/core';
|
|
3
3
|
import * as i1 from '@ngbase/adk/a11y';
|
|
4
|
-
import {
|
|
4
|
+
import { AccessibleGroup, AccessibleItem, Autofocus } from '@ngbase/adk/a11y';
|
|
5
5
|
import { uniqueId, filterFunction } from '@ngbase/adk/utils';
|
|
6
6
|
import { Directionality } from '@ngbase/adk/bidi';
|
|
7
7
|
import { ngbPopoverPortal } from '@ngbase/adk/popover';
|
|
@@ -9,80 +9,34 @@ import { Subject } from 'rxjs';
|
|
|
9
9
|
import * as i2 from '@ngbase/adk/form-field';
|
|
10
10
|
import { InputBase } from '@ngbase/adk/form-field';
|
|
11
11
|
|
|
12
|
-
class NgbOption {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.allyItem = inject(AccessibleItem);
|
|
15
|
-
this.el = inject(ElementRef);
|
|
16
|
-
// inputs
|
|
17
|
-
this.value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
|
|
18
|
-
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
19
|
-
this.ayId = input(...(ngDevMode ? [undefined, { debugName: "ayId" }] : []));
|
|
20
|
-
// outputs
|
|
21
|
-
this.onSelectionChange = output();
|
|
22
|
-
this.multiple = signal(false, ...(ngDevMode ? [{ debugName: "multiple" }] : []));
|
|
23
|
-
this.checked = signal(false, ...(ngDevMode ? [{ debugName: "checked" }] : []));
|
|
24
|
-
this.active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
|
|
25
|
-
this._ayId = linkedSignal({ ...(ngDevMode ? { debugName: "_ayId" } : {}), source: this.ayId, computation: id => id || '' });
|
|
26
|
-
this.allyItem._ayId = this._ayId;
|
|
27
|
-
this.allyItem._disabled = this.disabled;
|
|
28
|
-
}
|
|
29
|
-
selectOption() { }
|
|
30
|
-
setAyId(id) {
|
|
31
|
-
this._ayId.set(id);
|
|
32
|
-
}
|
|
33
|
-
label() {
|
|
34
|
-
return this.el.nativeElement.textContent || '';
|
|
35
|
-
}
|
|
36
|
-
focus() {
|
|
37
|
-
this.el.nativeElement.scrollIntoView({ block: 'nearest' });
|
|
38
|
-
this.el.nativeElement.classList.add('bg-muted');
|
|
39
|
-
}
|
|
40
|
-
unselect() {
|
|
41
|
-
this.el.nativeElement.classList.remove('bg-muted');
|
|
42
|
-
}
|
|
43
|
-
getValue() {
|
|
44
|
-
if (this.value() === undefined) {
|
|
45
|
-
return this.label();
|
|
46
|
-
}
|
|
47
|
-
return this.value();
|
|
48
|
-
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbOption, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
50
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbOption, isStandalone: true, selector: "[ngbOption]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ayId: { classPropertyName: "ayId", publicName: "ayId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChange: "onSelectionChange" }, host: { attributes: { "role": "option", "tabindex": "-1" }, listeners: { "click": "selectOption()" } }, hostDirectives: [{ directive: i1.AccessibleItem }], ngImport: i0 }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbOption, decorators: [{
|
|
53
|
-
type: Directive,
|
|
54
|
-
args: [{
|
|
55
|
-
selector: '[ngbOption]',
|
|
56
|
-
hostDirectives: [AccessibleItem],
|
|
57
|
-
host: {
|
|
58
|
-
role: 'option',
|
|
59
|
-
tabindex: '-1',
|
|
60
|
-
'(click)': 'selectOption()',
|
|
61
|
-
},
|
|
62
|
-
}]
|
|
63
|
-
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], ayId: [{ type: i0.Input, args: [{ isSignal: true, alias: "ayId", required: false }] }], onSelectionChange: [{ type: i0.Output, args: ["onSelectionChange"] }] } });
|
|
64
|
-
|
|
65
12
|
class NgbSelectTarget {
|
|
66
13
|
constructor() {
|
|
67
14
|
this.target = signal(null, ...(ngDevMode ? [{ debugName: "target" }] : []));
|
|
68
15
|
}
|
|
69
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
70
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectTarget, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.2", type: NgbSelectTarget, isStandalone: true, selector: "[ngbSelectTarget]", ngImport: i0 }); }
|
|
71
18
|
}
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectTarget, decorators: [{
|
|
73
20
|
type: Directive,
|
|
74
21
|
args: [{
|
|
75
22
|
selector: '[ngbSelectTarget]',
|
|
76
23
|
}]
|
|
77
24
|
}] });
|
|
78
25
|
class SelectBase {
|
|
26
|
+
registerOption(option) {
|
|
27
|
+
this.registered.update(list => [...list, option]);
|
|
28
|
+
}
|
|
29
|
+
unregisterOption(option) {
|
|
30
|
+
this.registered.update(list => list.filter(o => o !== option));
|
|
31
|
+
}
|
|
79
32
|
constructor(isSelect) {
|
|
80
33
|
this.isSelect = isSelect;
|
|
81
34
|
// Dependencies
|
|
82
35
|
this.el = inject(ElementRef);
|
|
83
36
|
this.dir = inject(Directionality);
|
|
84
37
|
this.target = inject(NgbSelectTarget, { optional: true });
|
|
85
|
-
this.
|
|
38
|
+
this.registered = signal([], ...(ngDevMode ? [{ debugName: "registered" }] : []));
|
|
39
|
+
this.list = this.registered.asReadonly();
|
|
86
40
|
this.popover = ngbPopoverPortal();
|
|
87
41
|
this.optionsTemplate = viewChild('optionsTemplate', { ...(ngDevMode ? { debugName: "optionsTemplate" } : {}), read: TemplateRef });
|
|
88
42
|
this.container = viewChild('container', { ...(ngDevMode ? { debugName: "container" } : {}), read: ElementRef });
|
|
@@ -91,6 +45,7 @@ class SelectBase {
|
|
|
91
45
|
this.value = model('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
92
46
|
this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
93
47
|
this.touched = model(false, ...(ngDevMode ? [{ debugName: "touched" }] : []));
|
|
48
|
+
this.labelFn = input(undefined, ...(ngDevMode ? [{ debugName: "labelFn" }] : []));
|
|
94
49
|
this.multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : {}), transform: booleanAttribute });
|
|
95
50
|
this.noAutoClose = input(false, { ...(ngDevMode ? { debugName: "noAutoClose" } : {}), transform: booleanAttribute });
|
|
96
51
|
this.options = input([], ...(ngDevMode ? [{ debugName: "options" }] : []));
|
|
@@ -106,21 +61,34 @@ class SelectBase {
|
|
|
106
61
|
this.previousValue = '';
|
|
107
62
|
this.events = new Subject();
|
|
108
63
|
this.ayId = uniqueId();
|
|
64
|
+
// Cache of value -> label. Populated when options register/are selected.
|
|
65
|
+
// Allows display value to persist after option is destroyed (e.g. virtual scroll).
|
|
66
|
+
this.labelCache = signal(new Map(), ...(ngDevMode ? [{ debugName: "labelCache" }] : []));
|
|
109
67
|
this.cValue = computed(() => {
|
|
110
68
|
if (!this.isSelect && this.status() === 'opened') {
|
|
111
69
|
return this.previousValue;
|
|
112
70
|
}
|
|
113
71
|
const multiple = this.multiple();
|
|
72
|
+
const filtered = this.values();
|
|
73
|
+
const labelFn = this.labelFn();
|
|
74
|
+
const cache = this.labelCache();
|
|
114
75
|
const options = this.list();
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return
|
|
122
|
-
|
|
123
|
-
|
|
76
|
+
const values = filtered
|
|
77
|
+
.filter(v => v !== undefined && v !== null && v !== '')
|
|
78
|
+
.map(v => {
|
|
79
|
+
// Prefer fresh DOM label if option currently registered
|
|
80
|
+
const opt = options.find(o => o.getValue() === v);
|
|
81
|
+
if (opt)
|
|
82
|
+
return opt.label();
|
|
83
|
+
// Then cached label from previous registration
|
|
84
|
+
const cached = cache.get(v);
|
|
85
|
+
if (cached)
|
|
86
|
+
return cached;
|
|
87
|
+
// Then user-supplied label function (data-driven virtual scroll)
|
|
88
|
+
if (labelFn)
|
|
89
|
+
return labelFn(v);
|
|
90
|
+
return '';
|
|
91
|
+
});
|
|
124
92
|
// if the value is greater than 1, then take the first value and add a plus sign with the length of the remaining values
|
|
125
93
|
if (multiple && values.length > 1) {
|
|
126
94
|
this.previousValue = `${values[0]} (+${values.length - 1})`;
|
|
@@ -175,6 +143,31 @@ class SelectBase {
|
|
|
175
143
|
option.checked.set(values.includes(option.getValue()));
|
|
176
144
|
});
|
|
177
145
|
});
|
|
146
|
+
// Cache labels of currently-selected options so display value survives
|
|
147
|
+
// option destruction (e.g., virtual scroll removing off-screen items).
|
|
148
|
+
effect(() => {
|
|
149
|
+
const options = this.list();
|
|
150
|
+
const values = this.values();
|
|
151
|
+
untracked(() => {
|
|
152
|
+
const cache = this.labelCache();
|
|
153
|
+
let next = null;
|
|
154
|
+
for (const o of options) {
|
|
155
|
+
const v = o.getValue();
|
|
156
|
+
if (!values.includes(v))
|
|
157
|
+
continue;
|
|
158
|
+
const lbl = o.label();
|
|
159
|
+
if (!lbl)
|
|
160
|
+
continue;
|
|
161
|
+
if (cache.get(v) !== lbl) {
|
|
162
|
+
if (!next)
|
|
163
|
+
next = new Map(cache);
|
|
164
|
+
next.set(v, lbl);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (next)
|
|
168
|
+
this.labelCache.set(next);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
178
171
|
// Sync value model to internal values array
|
|
179
172
|
effect(() => this.updateValues(this.value()));
|
|
180
173
|
}
|
|
@@ -204,10 +197,10 @@ class SelectBase {
|
|
|
204
197
|
this.withInPopup = e.type !== 'mouseleave';
|
|
205
198
|
});
|
|
206
199
|
if (!this.isSelect) {
|
|
207
|
-
diaRef.events.subscribe(() => {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
});
|
|
200
|
+
// diaRef.events.subscribe(() => {
|
|
201
|
+
document.addEventListener('click', this.clickHandler);
|
|
202
|
+
this.events.next('open');
|
|
203
|
+
// });
|
|
211
204
|
}
|
|
212
205
|
else {
|
|
213
206
|
this.events.next('open');
|
|
@@ -285,21 +278,41 @@ class SelectBase {
|
|
|
285
278
|
ngOnDestroy() {
|
|
286
279
|
this.close();
|
|
287
280
|
}
|
|
288
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
289
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.
|
|
281
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SelectBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
|
|
282
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.2", type: SelectBase, isStandalone: true, inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, labelFn: { classPropertyName: "labelFn", publicName: "labelFn", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, noAutoClose: { classPropertyName: "noAutoClose", publicName: "noAutoClose", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touched: "touchedChange", opened: "opened", closed: "closed" }, viewQueries: [{ propertyName: "optionsTemplate", first: true, predicate: ["optionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "optionsGroup", first: true, predicate: ["optionsGroup"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 }); }
|
|
290
283
|
}
|
|
291
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
284
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SelectBase, decorators: [{
|
|
292
285
|
type: Directive
|
|
293
|
-
}], ctorParameters: () => [{ type: undefined }], propDecorators: {
|
|
286
|
+
}], ctorParameters: () => [{ type: undefined }], propDecorators: { optionsTemplate: [{ type: i0.ViewChild, args: ['optionsTemplate', { ...{ read: TemplateRef }, isSignal: true }] }], container: [{ type: i0.ViewChild, args: ['container', { ...{ read: ElementRef }, isSignal: true }] }], optionsGroup: [{ type: i0.ViewChild, args: ['optionsGroup', { ...{ read: ElementRef }, isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], labelFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelFn", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], noAutoClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "noAutoClose", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
287
|
+
|
|
288
|
+
function flattenForVirtualScroll(items, groupKey, groupLabelKey) {
|
|
289
|
+
if (!groupKey) {
|
|
290
|
+
return items.map(item => ({ type: 'option', value: item }));
|
|
291
|
+
}
|
|
292
|
+
const result = [];
|
|
293
|
+
for (const group of items) {
|
|
294
|
+
result.push({
|
|
295
|
+
type: 'group-header',
|
|
296
|
+
label: group[groupLabelKey || 'label'],
|
|
297
|
+
});
|
|
298
|
+
const children = group[groupKey];
|
|
299
|
+
if (children) {
|
|
300
|
+
for (const child of children) {
|
|
301
|
+
result.push({ type: 'option', value: child });
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return result;
|
|
306
|
+
}
|
|
294
307
|
|
|
295
308
|
class NgbSelectOption {
|
|
296
309
|
constructor() {
|
|
297
310
|
this.template = inject((TemplateRef));
|
|
298
311
|
}
|
|
299
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
300
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.
|
|
312
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectOption, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
313
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.2", type: NgbSelectOption, isStandalone: true, selector: "[ngbSelectOption]", ngImport: i0 }); }
|
|
301
314
|
}
|
|
302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
315
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectOption, decorators: [{
|
|
303
316
|
type: Directive,
|
|
304
317
|
args: [{
|
|
305
318
|
selector: '[ngbSelectOption]',
|
|
@@ -309,10 +322,10 @@ class SelectValue {
|
|
|
309
322
|
constructor() {
|
|
310
323
|
this.select = inject((NgbSelect));
|
|
311
324
|
}
|
|
312
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
313
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.
|
|
325
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SelectValue, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
326
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.2", type: SelectValue, isStandalone: true, selector: "button[ngbSelectValue]", host: { attributes: { "type": "button", "role": "combobox", "tabindex": "-1" }, properties: { "disabled": "select.disabled()" } }, ngImport: i0 }); }
|
|
314
327
|
}
|
|
315
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SelectValue, decorators: [{
|
|
316
329
|
type: Directive,
|
|
317
330
|
args: [{
|
|
318
331
|
selector: 'button[ngbSelectValue]',
|
|
@@ -332,10 +345,10 @@ class NgbSelectOptionGroup {
|
|
|
332
345
|
this.group._loop.set(false);
|
|
333
346
|
this.group._ayId.set(this.select.ayId);
|
|
334
347
|
}
|
|
335
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
336
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.
|
|
348
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectOptionGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
349
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.2", type: NgbSelectOptionGroup, isStandalone: true, selector: "[ngbSelectOptionGroup]", hostDirectives: [{ directive: i1.AccessibleGroup }], ngImport: i0 }); }
|
|
337
350
|
}
|
|
338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectOptionGroup, decorators: [{
|
|
339
352
|
type: Directive,
|
|
340
353
|
args: [{
|
|
341
354
|
selector: '[ngbSelectOptionGroup]',
|
|
@@ -349,12 +362,84 @@ class NgbSelect extends SelectBase {
|
|
|
349
362
|
this.search = model('', ...(ngDevMode ? [{ debugName: "search" }] : []));
|
|
350
363
|
this.filterFn = input((option) => option, ...(ngDevMode ? [{ debugName: "filterFn" }] : []));
|
|
351
364
|
this.filterOptions = input(...(ngDevMode ? [undefined, { debugName: "filterOptions" }] : []));
|
|
365
|
+
// Virtual scroll inputs
|
|
366
|
+
this.virtualScroll = input(false, { ...(ngDevMode ? { debugName: "virtualScroll" } : {}), transform: booleanAttribute });
|
|
367
|
+
this.itemSize = input(36, { ...(ngDevMode ? { debugName: "itemSize" } : {}), transform: numberAttribute });
|
|
368
|
+
this.groupKey = input(...(ngDevMode ? [undefined, { debugName: "groupKey" }] : []));
|
|
369
|
+
this.groupLabelKey = input(...(ngDevMode ? [undefined, { debugName: "groupLabelKey" }] : []));
|
|
352
370
|
this.optionsFilter = filterFunction(this.options, computed(() => this.filterOptions() ?? { filter: this.filterFn() }));
|
|
371
|
+
// Flattened items for virtual scroll rendering
|
|
372
|
+
this.virtualItems = computed(() => {
|
|
373
|
+
if (!this.virtualScroll())
|
|
374
|
+
return [];
|
|
375
|
+
const filtered = this.optionsFilter.filteredList();
|
|
376
|
+
return flattenForVirtualScroll(filtered, this.groupKey(), this.groupLabelKey());
|
|
377
|
+
}, ...(ngDevMode ? [{ debugName: "virtualItems" }] : []));
|
|
378
|
+
// Keyboard navigation state for virtual mode
|
|
379
|
+
this.focusedVirtualIndex = signal(-1, ...(ngDevMode ? [{ debugName: "focusedVirtualIndex" }] : []));
|
|
380
|
+
this.scrollToIndexFn = signal(null, ...(ngDevMode ? [{ debugName: "scrollToIndexFn" }] : []));
|
|
381
|
+
// Reset scroll position when filtered list changes in virtual mode
|
|
382
|
+
effect(() => {
|
|
383
|
+
this.optionsFilter.filteredList();
|
|
384
|
+
untracked(() => {
|
|
385
|
+
if (this.virtualScroll()) {
|
|
386
|
+
this.focusedVirtualIndex.set(-1);
|
|
387
|
+
this.scrollToIndexFn()?.call(null, 0);
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
handleVirtualKeydown(event) {
|
|
393
|
+
const items = this.virtualItems();
|
|
394
|
+
if (!items.length)
|
|
395
|
+
return;
|
|
396
|
+
const current = this.focusedVirtualIndex();
|
|
397
|
+
let next = current;
|
|
398
|
+
switch (event.key) {
|
|
399
|
+
case 'ArrowDown':
|
|
400
|
+
next = current + 1;
|
|
401
|
+
break;
|
|
402
|
+
case 'ArrowUp':
|
|
403
|
+
next = current - 1;
|
|
404
|
+
break;
|
|
405
|
+
case 'Enter':
|
|
406
|
+
case ' ': {
|
|
407
|
+
const item = items[current];
|
|
408
|
+
if (item?.type === 'option' && item.value !== undefined) {
|
|
409
|
+
this.selectVirtualItem(item.value);
|
|
410
|
+
}
|
|
411
|
+
event.preventDefault();
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
case 'Escape':
|
|
415
|
+
this.close();
|
|
416
|
+
event.preventDefault();
|
|
417
|
+
return;
|
|
418
|
+
default:
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
event.preventDefault();
|
|
422
|
+
// Skip group headers
|
|
423
|
+
const dir = event.key === 'ArrowDown' ? 1 : -1;
|
|
424
|
+
while (next >= 0 && next < items.length && items[next].type === 'group-header') {
|
|
425
|
+
next += dir;
|
|
426
|
+
}
|
|
427
|
+
if (next < 0 || next >= items.length)
|
|
428
|
+
return;
|
|
429
|
+
this.focusedVirtualIndex.set(next);
|
|
430
|
+
this.scrollToIndexFn()?.call(null, next);
|
|
431
|
+
}
|
|
432
|
+
selectVirtualItem(value) {
|
|
433
|
+
const list = this.list();
|
|
434
|
+
const option = list.find(o => o.getValue() === value);
|
|
435
|
+
if (option) {
|
|
436
|
+
option.selectOption();
|
|
437
|
+
}
|
|
353
438
|
}
|
|
354
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
355
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.
|
|
439
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
440
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.2", type: NgbSelect, isStandalone: true, selector: "[ngbSelect]", inputs: { search: { classPropertyName: "search", publicName: "search", isSignal: true, isRequired: false, transformFunction: null }, filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: true, isRequired: false, transformFunction: null }, filterOptions: { classPropertyName: "filterOptions", publicName: "filterOptions", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, itemSize: { classPropertyName: "itemSize", publicName: "itemSize", isSignal: true, isRequired: false, transformFunction: null }, groupKey: { classPropertyName: "groupKey", publicName: "groupKey", isSignal: true, isRequired: false, transformFunction: null }, groupLabelKey: { classPropertyName: "groupLabelKey", publicName: "groupLabelKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { search: "searchChange" }, host: { attributes: { "role": "listbox", "type": "button" }, listeners: { "click": "open()", "blur": "touched.set(true)", "keydown.arrowdown": "$event.preventDefault(); open()", "keydown.arrowup": "$event.preventDefault(); open()", "keydown.enter": "$event.preventDefault(); open()", "keydown.space": "$event.preventDefault(); open()" }, properties: { "tabindex": "disabled() ? -1 : 0" } }, providers: [{ provide: SelectBase, useExisting: NgbSelect }], queries: [{ propertyName: "optionTemplate", first: true, predicate: (NgbSelectOption), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
356
441
|
}
|
|
357
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelect, decorators: [{
|
|
358
443
|
type: Directive,
|
|
359
444
|
args: [{
|
|
360
445
|
selector: '[ngbSelect]',
|
|
@@ -371,7 +456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
371
456
|
'[tabindex]': 'disabled() ? -1 : 0',
|
|
372
457
|
},
|
|
373
458
|
}]
|
|
374
|
-
}], ctorParameters: () => [], propDecorators: { optionTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgbSelectOption), { isSignal: true }] }], search: [{ type: i0.Input, args: [{ isSignal: true, alias: "search", required: false }] }, { type: i0.Output, args: ["searchChange"] }], filterFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterFn", required: false }] }], filterOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterOptions", required: false }] }] } });
|
|
459
|
+
}], ctorParameters: () => [], propDecorators: { optionTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgbSelectOption), { isSignal: true }] }], search: [{ type: i0.Input, args: [{ isSignal: true, alias: "search", required: false }] }, { type: i0.Output, args: ["searchChange"] }], filterFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterFn", required: false }] }], filterOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterOptions", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], itemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemSize", required: false }] }], groupKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupKey", required: false }] }], groupLabelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupLabelKey", required: false }] }] } });
|
|
375
460
|
function aliasSelect(select) {
|
|
376
461
|
return [
|
|
377
462
|
{ provide: SelectBase, useExisting: select },
|
|
@@ -379,15 +464,73 @@ function aliasSelect(select) {
|
|
|
379
464
|
];
|
|
380
465
|
}
|
|
381
466
|
|
|
467
|
+
class NgbOption {
|
|
468
|
+
constructor() {
|
|
469
|
+
this.allyItem = inject(AccessibleItem);
|
|
470
|
+
this.el = inject(ElementRef);
|
|
471
|
+
// inputs
|
|
472
|
+
this.value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
|
|
473
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
474
|
+
this.ayId = input(...(ngDevMode ? [undefined, { debugName: "ayId" }] : []));
|
|
475
|
+
// outputs
|
|
476
|
+
this.onSelectionChange = output();
|
|
477
|
+
this.multiple = signal(false, ...(ngDevMode ? [{ debugName: "multiple" }] : []));
|
|
478
|
+
this.checked = signal(false, ...(ngDevMode ? [{ debugName: "checked" }] : []));
|
|
479
|
+
this.active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
|
|
480
|
+
this._ayId = linkedSignal({ ...(ngDevMode ? { debugName: "_ayId" } : {}), source: this.ayId, computation: id => id || '' });
|
|
481
|
+
this.allyItem._ayId = this._ayId;
|
|
482
|
+
this.allyItem._disabled = this.disabled;
|
|
483
|
+
const select = inject(forwardRef(() => SelectBase), { optional: true });
|
|
484
|
+
if (select) {
|
|
485
|
+
select.registerOption(this);
|
|
486
|
+
inject(DestroyRef).onDestroy(() => select.unregisterOption(this));
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
selectOption() { }
|
|
490
|
+
setAyId(id) {
|
|
491
|
+
this._ayId.set(id);
|
|
492
|
+
}
|
|
493
|
+
label() {
|
|
494
|
+
return this.el.nativeElement.textContent || '';
|
|
495
|
+
}
|
|
496
|
+
focus() {
|
|
497
|
+
this.el.nativeElement.scrollIntoView({ block: 'nearest' });
|
|
498
|
+
this.el.nativeElement.classList.add('bg-muted');
|
|
499
|
+
}
|
|
500
|
+
unselect() {
|
|
501
|
+
this.el.nativeElement.classList.remove('bg-muted');
|
|
502
|
+
}
|
|
503
|
+
getValue() {
|
|
504
|
+
if (this.value() === undefined) {
|
|
505
|
+
return this.label();
|
|
506
|
+
}
|
|
507
|
+
return this.value();
|
|
508
|
+
}
|
|
509
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbOption, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
510
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.2", type: NgbOption, isStandalone: true, selector: "[ngbOption]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ayId: { classPropertyName: "ayId", publicName: "ayId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChange: "onSelectionChange" }, host: { attributes: { "role": "option", "tabindex": "-1" }, listeners: { "click": "selectOption()" } }, hostDirectives: [{ directive: i1.AccessibleItem }], ngImport: i0 }); }
|
|
511
|
+
}
|
|
512
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbOption, decorators: [{
|
|
513
|
+
type: Directive,
|
|
514
|
+
args: [{
|
|
515
|
+
selector: '[ngbOption]',
|
|
516
|
+
hostDirectives: [AccessibleItem],
|
|
517
|
+
host: {
|
|
518
|
+
role: 'option',
|
|
519
|
+
tabindex: '-1',
|
|
520
|
+
'(click)': 'selectOption()',
|
|
521
|
+
},
|
|
522
|
+
}]
|
|
523
|
+
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], ayId: [{ type: i0.Input, args: [{ isSignal: true, alias: "ayId", required: false }] }], onSelectionChange: [{ type: i0.Output, args: ["onSelectionChange"] }] } });
|
|
524
|
+
|
|
382
525
|
class NgbOptionGroup {
|
|
383
526
|
constructor() {
|
|
384
527
|
this.label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
385
528
|
this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
386
529
|
}
|
|
387
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
388
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.
|
|
530
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbOptionGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
531
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.2", type: NgbOptionGroup, isStandalone: true, selector: "[ngbOptionGroup]", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
389
532
|
}
|
|
390
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbOptionGroup, decorators: [{
|
|
391
534
|
type: Directive,
|
|
392
535
|
args: [{
|
|
393
536
|
selector: '[ngbOptionGroup]',
|
|
@@ -422,10 +565,10 @@ class NgbSelectInput {
|
|
|
422
565
|
updateSearch(value) {
|
|
423
566
|
this.inputBase.value.set(value);
|
|
424
567
|
}
|
|
425
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
426
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.
|
|
568
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
569
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.2", type: NgbSelectInput, isStandalone: true, selector: "input[ngbSelectInput]", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "placeholder": "placeholder()", "tabindex": "0" } }, exportAs: ["ngbSelectInput"], hostDirectives: [{ directive: i1.Autofocus }, { directive: i2.InputBase, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
427
570
|
}
|
|
428
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
571
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectInput, decorators: [{
|
|
429
572
|
type: Directive,
|
|
430
573
|
args: [{
|
|
431
574
|
selector: 'input[ngbSelectInput]',
|
|
@@ -441,10 +584,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
441
584
|
}]
|
|
442
585
|
}], ctorParameters: () => [], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], filterFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterFn", required: false }] }] } });
|
|
443
586
|
class NgbSelectTrigger {
|
|
444
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
445
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.
|
|
587
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
588
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.2", type: NgbSelectTrigger, isStandalone: true, selector: "[ngbSelectTrigger]", ngImport: i0 }); }
|
|
446
589
|
}
|
|
447
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
590
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NgbSelectTrigger, decorators: [{
|
|
448
591
|
type: Directive,
|
|
449
592
|
args: [{
|
|
450
593
|
selector: '[ngbSelectTrigger]',
|
|
@@ -455,10 +598,10 @@ class ListSelection extends SelectBase {
|
|
|
455
598
|
constructor() {
|
|
456
599
|
super(true);
|
|
457
600
|
}
|
|
458
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.
|
|
459
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.
|
|
601
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ListSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
602
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.2", type: ListSelection, isStandalone: true, selector: "[ngbListSelection]", usesInheritance: true, ngImport: i0 }); }
|
|
460
603
|
}
|
|
461
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.
|
|
604
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ListSelection, decorators: [{
|
|
462
605
|
type: Directive,
|
|
463
606
|
args: [{
|
|
464
607
|
selector: '[ngbListSelection]',
|
|
@@ -473,5 +616,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
473
616
|
* Generated bundle index. Do not edit.
|
|
474
617
|
*/
|
|
475
618
|
|
|
476
|
-
export { ListSelection, NgbOption, NgbOptionGroup, NgbSelect, NgbSelectInput, NgbSelectOption, NgbSelectOptionGroup, NgbSelectTarget, NgbSelectTrigger, SelectBase, SelectValue, aliasSelect };
|
|
619
|
+
export { ListSelection, NgbOption, NgbOptionGroup, NgbSelect, NgbSelectInput, NgbSelectOption, NgbSelectOptionGroup, NgbSelectTarget, NgbSelectTrigger, SelectBase, SelectValue, aliasSelect, flattenForVirtualScroll };
|
|
477
620
|
//# sourceMappingURL=ngbase-adk-select.mjs.map
|