@ng-select/ng-select 15.1.3 → 15.2.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/fesm2022/ng-select-ng-select.mjs +475 -703
- package/fesm2022/ng-select-ng-select.mjs.map +1 -1
- package/index.d.ts +257 -299
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive,
|
|
2
|
+
import { inject, ElementRef, input, effect, Directive, TemplateRef, Injectable, Renderer2, NgZone, booleanAttribute, output, viewChild, computed, Component, ChangeDetectionStrategy, ViewEncapsulation, signal, afterNextRender, InjectionToken, HostAttributeToken, ChangeDetectorRef, model, numberAttribute, contentChild, forwardRef, contentChildren, HostBinding, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
import { animationFrameScheduler, asapScheduler, Subject, fromEvent, merge } from 'rxjs';
|
|
5
|
-
import { takeUntil, auditTime, startWith,
|
|
6
|
-
import {
|
|
5
|
+
import { takeUntil, auditTime, tap, startWith, switchMap, debounceTime, filter, map } from 'rxjs/operators';
|
|
6
|
+
import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
|
|
7
|
+
import { toObservable } from '@angular/core/rxjs-interop';
|
|
7
8
|
|
|
8
9
|
const unescapedHTMLExp = /[&<>"']/g;
|
|
9
10
|
const hasUnescapedHTMLExp = RegExp(unescapedHTMLExp.source);
|
|
@@ -31,15 +32,18 @@ function isFunction(value) {
|
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
class NgItemLabelDirective {
|
|
34
|
-
constructor(
|
|
35
|
-
this.element =
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
constructor() {
|
|
36
|
+
this.element = inject(ElementRef);
|
|
37
|
+
this.ngItemLabel = input();
|
|
38
|
+
this.escape = input(true);
|
|
39
|
+
effect(() => {
|
|
40
|
+
this.element.nativeElement.innerHTML = this.escape()
|
|
41
|
+
? escapeHTML(this.ngItemLabel())
|
|
42
|
+
: this.ngItemLabel();
|
|
43
|
+
});
|
|
40
44
|
}
|
|
41
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgItemLabelDirective, deps: [
|
|
42
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgItemLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
46
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.0", type: NgItemLabelDirective, isStandalone: true, selector: "[ngItemLabel]", inputs: { ngItemLabel: { classPropertyName: "ngItemLabel", publicName: "ngItemLabel", isSignal: true, isRequired: false, transformFunction: null }, escape: { classPropertyName: "escape", publicName: "escape", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
43
47
|
}
|
|
44
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgItemLabelDirective, decorators: [{
|
|
45
49
|
type: Directive,
|
|
@@ -47,16 +51,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
47
51
|
selector: '[ngItemLabel]',
|
|
48
52
|
standalone: true,
|
|
49
53
|
}]
|
|
50
|
-
}], ctorParameters: () => [
|
|
51
|
-
type: Input
|
|
52
|
-
}], escape: [{
|
|
53
|
-
type: Input
|
|
54
|
-
}] } });
|
|
54
|
+
}], ctorParameters: () => [] });
|
|
55
55
|
class NgOptionTemplateDirective {
|
|
56
|
-
constructor(
|
|
57
|
-
this.template =
|
|
56
|
+
constructor() {
|
|
57
|
+
this.template = inject((TemplateRef));
|
|
58
58
|
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptionTemplateDirective, deps: [
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptionTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
60
60
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgOptionTemplateDirective, isStandalone: true, selector: "[ng-option-tmp]", ngImport: i0 }); }
|
|
61
61
|
}
|
|
62
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptionTemplateDirective, decorators: [{
|
|
@@ -66,12 +66,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
66
66
|
selector: '[ng-option-tmp]',
|
|
67
67
|
standalone: true,
|
|
68
68
|
}]
|
|
69
|
-
}]
|
|
69
|
+
}] });
|
|
70
70
|
class NgOptgroupTemplateDirective {
|
|
71
|
-
constructor(
|
|
72
|
-
this.template =
|
|
71
|
+
constructor() {
|
|
72
|
+
this.template = inject((TemplateRef));
|
|
73
73
|
}
|
|
74
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptgroupTemplateDirective, deps: [
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptgroupTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
75
75
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgOptgroupTemplateDirective, isStandalone: true, selector: "[ng-optgroup-tmp]", ngImport: i0 }); }
|
|
76
76
|
}
|
|
77
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptgroupTemplateDirective, decorators: [{
|
|
@@ -81,12 +81,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
81
81
|
selector: '[ng-optgroup-tmp]',
|
|
82
82
|
standalone: true,
|
|
83
83
|
}]
|
|
84
|
-
}]
|
|
84
|
+
}] });
|
|
85
85
|
class NgLabelTemplateDirective {
|
|
86
|
-
constructor(
|
|
87
|
-
this.template =
|
|
86
|
+
constructor() {
|
|
87
|
+
this.template = inject((TemplateRef));
|
|
88
88
|
}
|
|
89
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLabelTemplateDirective, deps: [
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLabelTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
90
90
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgLabelTemplateDirective, isStandalone: true, selector: "[ng-label-tmp]", ngImport: i0 }); }
|
|
91
91
|
}
|
|
92
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLabelTemplateDirective, decorators: [{
|
|
@@ -96,12 +96,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
96
96
|
selector: '[ng-label-tmp]',
|
|
97
97
|
standalone: true,
|
|
98
98
|
}]
|
|
99
|
-
}]
|
|
99
|
+
}] });
|
|
100
100
|
class NgMultiLabelTemplateDirective {
|
|
101
|
-
constructor(
|
|
102
|
-
this.template =
|
|
101
|
+
constructor() {
|
|
102
|
+
this.template = inject((TemplateRef));
|
|
103
103
|
}
|
|
104
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgMultiLabelTemplateDirective, deps: [
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgMultiLabelTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
105
105
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgMultiLabelTemplateDirective, isStandalone: true, selector: "[ng-multi-label-tmp]", ngImport: i0 }); }
|
|
106
106
|
}
|
|
107
107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgMultiLabelTemplateDirective, decorators: [{
|
|
@@ -111,12 +111,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
111
111
|
selector: '[ng-multi-label-tmp]',
|
|
112
112
|
standalone: true,
|
|
113
113
|
}]
|
|
114
|
-
}]
|
|
114
|
+
}] });
|
|
115
115
|
class NgHeaderTemplateDirective {
|
|
116
|
-
constructor(
|
|
117
|
-
this.template =
|
|
116
|
+
constructor() {
|
|
117
|
+
this.template = inject((TemplateRef));
|
|
118
118
|
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgHeaderTemplateDirective, deps: [
|
|
119
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgHeaderTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
120
120
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgHeaderTemplateDirective, isStandalone: true, selector: "[ng-header-tmp]", ngImport: i0 }); }
|
|
121
121
|
}
|
|
122
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgHeaderTemplateDirective, decorators: [{
|
|
@@ -126,12 +126,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
126
126
|
selector: '[ng-header-tmp]',
|
|
127
127
|
standalone: true,
|
|
128
128
|
}]
|
|
129
|
-
}]
|
|
129
|
+
}] });
|
|
130
130
|
class NgFooterTemplateDirective {
|
|
131
|
-
constructor(
|
|
132
|
-
this.template =
|
|
131
|
+
constructor() {
|
|
132
|
+
this.template = inject((TemplateRef));
|
|
133
133
|
}
|
|
134
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgFooterTemplateDirective, deps: [
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgFooterTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
135
135
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgFooterTemplateDirective, isStandalone: true, selector: "[ng-footer-tmp]", ngImport: i0 }); }
|
|
136
136
|
}
|
|
137
137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgFooterTemplateDirective, decorators: [{
|
|
@@ -141,12 +141,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
141
141
|
selector: '[ng-footer-tmp]',
|
|
142
142
|
standalone: true,
|
|
143
143
|
}]
|
|
144
|
-
}]
|
|
144
|
+
}] });
|
|
145
145
|
class NgNotFoundTemplateDirective {
|
|
146
|
-
constructor(
|
|
147
|
-
this.template =
|
|
146
|
+
constructor() {
|
|
147
|
+
this.template = inject((TemplateRef));
|
|
148
148
|
}
|
|
149
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgNotFoundTemplateDirective, deps: [
|
|
149
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgNotFoundTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
150
150
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgNotFoundTemplateDirective, isStandalone: true, selector: "[ng-notfound-tmp]", ngImport: i0 }); }
|
|
151
151
|
}
|
|
152
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgNotFoundTemplateDirective, decorators: [{
|
|
@@ -156,12 +156,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
156
156
|
selector: '[ng-notfound-tmp]',
|
|
157
157
|
standalone: true,
|
|
158
158
|
}]
|
|
159
|
-
}]
|
|
159
|
+
}] });
|
|
160
160
|
class NgPlaceholderTemplateDirective {
|
|
161
|
-
constructor(
|
|
162
|
-
this.template =
|
|
161
|
+
constructor() {
|
|
162
|
+
this.template = inject((TemplateRef));
|
|
163
163
|
}
|
|
164
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgPlaceholderTemplateDirective, deps: [
|
|
164
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgPlaceholderTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
165
165
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgPlaceholderTemplateDirective, isStandalone: true, selector: "[ng-placeholder-tmp]", ngImport: i0 }); }
|
|
166
166
|
}
|
|
167
167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgPlaceholderTemplateDirective, decorators: [{
|
|
@@ -171,12 +171,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
171
171
|
selector: '[ng-placeholder-tmp]',
|
|
172
172
|
standalone: true,
|
|
173
173
|
}]
|
|
174
|
-
}]
|
|
174
|
+
}] });
|
|
175
175
|
class NgTypeToSearchTemplateDirective {
|
|
176
|
-
constructor(
|
|
177
|
-
this.template =
|
|
176
|
+
constructor() {
|
|
177
|
+
this.template = inject((TemplateRef));
|
|
178
178
|
}
|
|
179
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgTypeToSearchTemplateDirective, deps: [
|
|
179
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgTypeToSearchTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
180
180
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgTypeToSearchTemplateDirective, isStandalone: true, selector: "[ng-typetosearch-tmp]", ngImport: i0 }); }
|
|
181
181
|
}
|
|
182
182
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgTypeToSearchTemplateDirective, decorators: [{
|
|
@@ -186,12 +186,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
186
186
|
selector: '[ng-typetosearch-tmp]',
|
|
187
187
|
standalone: true,
|
|
188
188
|
}]
|
|
189
|
-
}]
|
|
189
|
+
}] });
|
|
190
190
|
class NgLoadingTextTemplateDirective {
|
|
191
|
-
constructor(
|
|
192
|
-
this.template =
|
|
191
|
+
constructor() {
|
|
192
|
+
this.template = inject((TemplateRef));
|
|
193
193
|
}
|
|
194
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLoadingTextTemplateDirective, deps: [
|
|
194
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLoadingTextTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
195
195
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgLoadingTextTemplateDirective, isStandalone: true, selector: "[ng-loadingtext-tmp]", ngImport: i0 }); }
|
|
196
196
|
}
|
|
197
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLoadingTextTemplateDirective, decorators: [{
|
|
@@ -201,12 +201,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
201
201
|
selector: '[ng-loadingtext-tmp]',
|
|
202
202
|
standalone: true,
|
|
203
203
|
}]
|
|
204
|
-
}]
|
|
204
|
+
}] });
|
|
205
205
|
class NgTagTemplateDirective {
|
|
206
|
-
constructor(
|
|
207
|
-
this.template =
|
|
206
|
+
constructor() {
|
|
207
|
+
this.template = inject((TemplateRef));
|
|
208
208
|
}
|
|
209
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgTagTemplateDirective, deps: [
|
|
209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgTagTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
210
210
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgTagTemplateDirective, isStandalone: true, selector: "[ng-tag-tmp]", ngImport: i0 }); }
|
|
211
211
|
}
|
|
212
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgTagTemplateDirective, decorators: [{
|
|
@@ -216,12 +216,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
216
216
|
selector: '[ng-tag-tmp]',
|
|
217
217
|
standalone: true,
|
|
218
218
|
}]
|
|
219
|
-
}]
|
|
219
|
+
}] });
|
|
220
220
|
class NgLoadingSpinnerTemplateDirective {
|
|
221
|
-
constructor(
|
|
222
|
-
this.template =
|
|
221
|
+
constructor() {
|
|
222
|
+
this.template = inject((TemplateRef));
|
|
223
223
|
}
|
|
224
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLoadingSpinnerTemplateDirective, deps: [
|
|
224
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLoadingSpinnerTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
225
225
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgLoadingSpinnerTemplateDirective, isStandalone: true, selector: "[ng-loadingspinner-tmp]", ngImport: i0 }); }
|
|
226
226
|
}
|
|
227
227
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgLoadingSpinnerTemplateDirective, decorators: [{
|
|
@@ -231,19 +231,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
231
231
|
selector: '[ng-loadingspinner-tmp]',
|
|
232
232
|
standalone: true,
|
|
233
233
|
}]
|
|
234
|
-
}]
|
|
234
|
+
}] });
|
|
235
235
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
236
236
|
class NgClearButtonTemplateDirective {
|
|
237
|
-
constructor(
|
|
238
|
-
this.template =
|
|
237
|
+
constructor() {
|
|
238
|
+
this.template = inject((TemplateRef));
|
|
239
239
|
}
|
|
240
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgClearButtonTemplateDirective, deps: [
|
|
240
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgClearButtonTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
241
241
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: NgClearButtonTemplateDirective, isStandalone: true, selector: "[ng-clearbutton-tmp]", ngImport: i0 }); }
|
|
242
242
|
}
|
|
243
243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgClearButtonTemplateDirective, decorators: [{
|
|
244
244
|
type: Directive,
|
|
245
245
|
args: [{ selector: '[ng-clearbutton-tmp]', standalone: true }]
|
|
246
|
-
}]
|
|
246
|
+
}] });
|
|
247
|
+
|
|
248
|
+
class NgSelectConfig {
|
|
249
|
+
constructor() {
|
|
250
|
+
this.fixedPlaceholder = true;
|
|
251
|
+
this.notFoundText = 'No items found';
|
|
252
|
+
this.typeToSearchText = 'Type to search';
|
|
253
|
+
this.addTagText = 'Add item';
|
|
254
|
+
this.loadingText = 'Loading...';
|
|
255
|
+
this.clearAllText = 'Clear all';
|
|
256
|
+
this.disableVirtualScroll = true;
|
|
257
|
+
this.openOnEnter = true;
|
|
258
|
+
this.appearance = 'underline';
|
|
259
|
+
this.tabFocusOnClear = true;
|
|
260
|
+
}
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
262
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectConfig, providedIn: 'root' }); }
|
|
263
|
+
}
|
|
264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectConfig, decorators: [{
|
|
265
|
+
type: Injectable,
|
|
266
|
+
args: [{ providedIn: 'root' }]
|
|
267
|
+
}] });
|
|
268
|
+
|
|
269
|
+
class ConsoleService {
|
|
270
|
+
warn(message) {
|
|
271
|
+
console.warn(message);
|
|
272
|
+
}
|
|
273
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ConsoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
274
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ConsoleService, providedIn: 'root' }); }
|
|
275
|
+
}
|
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ConsoleService, decorators: [{
|
|
277
|
+
type: Injectable,
|
|
278
|
+
args: [{ providedIn: 'root' }]
|
|
279
|
+
}] });
|
|
247
280
|
|
|
248
281
|
function newId() {
|
|
249
282
|
// First character is an 'a', it's good practice to tag id to begin with a letter
|
|
@@ -1124,10 +1157,10 @@ class ItemsList {
|
|
|
1124
1157
|
return this._filteredItems[this._markedIndex];
|
|
1125
1158
|
}
|
|
1126
1159
|
get noItemsToSelect() {
|
|
1127
|
-
return this._ngSelect.hideSelected && this._items.length === this.selectedItems.length;
|
|
1160
|
+
return this._ngSelect.hideSelected() && this._items.length === this.selectedItems.length;
|
|
1128
1161
|
}
|
|
1129
1162
|
get maxItemsSelected() {
|
|
1130
|
-
return this._ngSelect.multiple && this._ngSelect.maxSelectedItems <= this.selectedItems.length;
|
|
1163
|
+
return this._ngSelect.multiple() && this._ngSelect.maxSelectedItems() <= this.selectedItems.length;
|
|
1131
1164
|
}
|
|
1132
1165
|
get lastSelectedItem() {
|
|
1133
1166
|
let i = this.selectedItems.length - 1;
|
|
@@ -1141,8 +1174,9 @@ class ItemsList {
|
|
|
1141
1174
|
}
|
|
1142
1175
|
setItems(items) {
|
|
1143
1176
|
this._items = items.map((item, index) => this.mapItem(item, index));
|
|
1144
|
-
|
|
1145
|
-
|
|
1177
|
+
const groupBy = this._ngSelect.groupBy();
|
|
1178
|
+
if (groupBy) {
|
|
1179
|
+
this._groups = this._groupBy(this._items, groupBy);
|
|
1146
1180
|
this._items = this._flatten(this._groups);
|
|
1147
1181
|
}
|
|
1148
1182
|
else {
|
|
@@ -1155,12 +1189,12 @@ class ItemsList {
|
|
|
1155
1189
|
if (item.selected || this.maxItemsSelected) {
|
|
1156
1190
|
return;
|
|
1157
1191
|
}
|
|
1158
|
-
const multiple = this._ngSelect.multiple;
|
|
1192
|
+
const multiple = this._ngSelect.multiple();
|
|
1159
1193
|
if (!multiple) {
|
|
1160
1194
|
this.clearSelected();
|
|
1161
1195
|
}
|
|
1162
|
-
this._selectionModel.select(item, multiple, this._ngSelect.selectableGroupAsModel);
|
|
1163
|
-
if (this._ngSelect.hideSelected) {
|
|
1196
|
+
this._selectionModel.select(item, multiple, this._ngSelect.selectableGroupAsModel());
|
|
1197
|
+
if (this._ngSelect.hideSelected()) {
|
|
1164
1198
|
this._hideSelected(item);
|
|
1165
1199
|
}
|
|
1166
1200
|
}
|
|
@@ -1168,21 +1202,22 @@ class ItemsList {
|
|
|
1168
1202
|
if (!item.selected) {
|
|
1169
1203
|
return;
|
|
1170
1204
|
}
|
|
1171
|
-
|
|
1172
|
-
|
|
1205
|
+
const multiple = this._ngSelect.multiple();
|
|
1206
|
+
this._selectionModel.unselect(item, multiple);
|
|
1207
|
+
if (this._ngSelect.hideSelected() && isDefined(item.index) && multiple) {
|
|
1173
1208
|
this._showSelected(item);
|
|
1174
1209
|
}
|
|
1175
1210
|
}
|
|
1176
1211
|
findItem(value) {
|
|
1177
1212
|
let findBy;
|
|
1178
|
-
if (this._ngSelect.compareWith) {
|
|
1179
|
-
findBy = (item) => this._ngSelect.compareWith(item.value, value);
|
|
1213
|
+
if (this._ngSelect.compareWith()) {
|
|
1214
|
+
findBy = (item) => this._ngSelect.compareWith()(item.value, value);
|
|
1180
1215
|
}
|
|
1181
|
-
else if (this._ngSelect.bindValue) {
|
|
1182
|
-
findBy = (item) => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue) === value;
|
|
1216
|
+
else if (this._ngSelect.bindValue()) {
|
|
1217
|
+
findBy = (item) => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue()) === value;
|
|
1183
1218
|
}
|
|
1184
1219
|
else {
|
|
1185
|
-
findBy = (item) => item.value === value || (!item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel));
|
|
1220
|
+
findBy = (item) => item.value === value || (!item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel()));
|
|
1186
1221
|
}
|
|
1187
1222
|
return this._items.find((item) => findBy(item));
|
|
1188
1223
|
}
|
|
@@ -1198,7 +1233,7 @@ class ItemsList {
|
|
|
1198
1233
|
item.selected = keepDisabled && item.selected && item.disabled;
|
|
1199
1234
|
item.marked = false;
|
|
1200
1235
|
});
|
|
1201
|
-
if (this._ngSelect.hideSelected) {
|
|
1236
|
+
if (this._ngSelect.hideSelected()) {
|
|
1202
1237
|
this.resetFilteredItems();
|
|
1203
1238
|
}
|
|
1204
1239
|
}
|
|
@@ -1215,16 +1250,16 @@ class ItemsList {
|
|
|
1215
1250
|
return;
|
|
1216
1251
|
}
|
|
1217
1252
|
this._filteredItems = [];
|
|
1218
|
-
term = this._ngSelect.searchFn ? term : stripSpecialChars(term).toLocaleLowerCase();
|
|
1219
|
-
const match = this._ngSelect.searchFn || this._defaultSearchFn;
|
|
1220
|
-
const hideSelected = this._ngSelect.hideSelected;
|
|
1253
|
+
term = this._ngSelect.searchFn() ? term : stripSpecialChars(term).toLocaleLowerCase();
|
|
1254
|
+
const match = this._ngSelect.searchFn() || this._defaultSearchFn;
|
|
1255
|
+
const hideSelected = this._ngSelect.hideSelected();
|
|
1221
1256
|
for (const key of Array.from(this._groups.keys())) {
|
|
1222
1257
|
const matchedItems = [];
|
|
1223
1258
|
for (const item of this._groups.get(key)) {
|
|
1224
1259
|
if (hideSelected && ((item.parent && item.parent.selected) || item.selected)) {
|
|
1225
1260
|
continue;
|
|
1226
1261
|
}
|
|
1227
|
-
const searchItem = this._ngSelect.searchFn ? item.value : item;
|
|
1262
|
+
const searchItem = this._ngSelect.searchFn() ? item.value : item;
|
|
1228
1263
|
if (match(term, searchItem)) {
|
|
1229
1264
|
matchedItems.push(item);
|
|
1230
1265
|
}
|
|
@@ -1243,7 +1278,7 @@ class ItemsList {
|
|
|
1243
1278
|
if (this._filteredItems.length === this._items.length) {
|
|
1244
1279
|
return;
|
|
1245
1280
|
}
|
|
1246
|
-
if (this._ngSelect.hideSelected && this.selectedItems.length > 0) {
|
|
1281
|
+
if (this._ngSelect.hideSelected() && this.selectedItems.length > 0) {
|
|
1247
1282
|
this._filteredItems = this._items.filter((x) => !x.selected);
|
|
1248
1283
|
}
|
|
1249
1284
|
else {
|
|
@@ -1294,7 +1329,7 @@ class ItemsList {
|
|
|
1294
1329
|
}
|
|
1295
1330
|
}
|
|
1296
1331
|
mapItem(item, index) {
|
|
1297
|
-
const label = isDefined(item.$ngOptionLabel) ? item.$ngOptionLabel : this.resolveNested(item, this._ngSelect.bindLabel);
|
|
1332
|
+
const label = isDefined(item.$ngOptionLabel) ? item.$ngOptionLabel : this.resolveNested(item, this._ngSelect.bindLabel());
|
|
1298
1333
|
const value = isDefined(item.$ngOptionValue) ? item.$ngOptionValue : item;
|
|
1299
1334
|
return {
|
|
1300
1335
|
index,
|
|
@@ -1305,14 +1340,15 @@ class ItemsList {
|
|
|
1305
1340
|
};
|
|
1306
1341
|
}
|
|
1307
1342
|
mapSelectedItems() {
|
|
1308
|
-
const multiple = this._ngSelect.multiple;
|
|
1343
|
+
const multiple = this._ngSelect.multiple();
|
|
1309
1344
|
for (const selected of this.selectedItems) {
|
|
1310
|
-
const
|
|
1345
|
+
const bindValue = this._ngSelect.bindValue();
|
|
1346
|
+
const value = bindValue ? this.resolveNested(selected.value, bindValue) : selected.value;
|
|
1311
1347
|
const item = isDefined(value) ? this.findItem(value) : null;
|
|
1312
1348
|
this._selectionModel.unselect(selected, multiple);
|
|
1313
|
-
this._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel);
|
|
1349
|
+
this._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel());
|
|
1314
1350
|
}
|
|
1315
|
-
if (this._ngSelect.hideSelected) {
|
|
1351
|
+
if (this._ngSelect.hideSelected()) {
|
|
1316
1352
|
this._filteredItems = this.filteredItems.filter((x) => this.selectedItems.indexOf(x) === -1);
|
|
1317
1353
|
}
|
|
1318
1354
|
}
|
|
@@ -1365,7 +1401,7 @@ class ItemsList {
|
|
|
1365
1401
|
}
|
|
1366
1402
|
}
|
|
1367
1403
|
_getLastMarkedIndex() {
|
|
1368
|
-
if (this._ngSelect.hideSelected) {
|
|
1404
|
+
if (this._ngSelect.hideSelected()) {
|
|
1369
1405
|
return -1;
|
|
1370
1406
|
}
|
|
1371
1407
|
if (this._markedIndex > -1 && this.markedItem === undefined) {
|
|
@@ -1390,7 +1426,7 @@ class ItemsList {
|
|
|
1390
1426
|
}
|
|
1391
1427
|
return groups;
|
|
1392
1428
|
}
|
|
1393
|
-
const isFnKey = isFunction(this._ngSelect.groupBy);
|
|
1429
|
+
const isFnKey = isFunction(this._ngSelect.groupBy());
|
|
1394
1430
|
const keyFn = (item) => {
|
|
1395
1431
|
const key = isFnKey ? prop(item.value) : item.value[prop];
|
|
1396
1432
|
return isDefined(key) ? key : undefined;
|
|
@@ -1409,7 +1445,7 @@ class ItemsList {
|
|
|
1409
1445
|
return groups;
|
|
1410
1446
|
}
|
|
1411
1447
|
_flatten(groups) {
|
|
1412
|
-
const isGroupByFn = isFunction(this._ngSelect.groupBy);
|
|
1448
|
+
const isGroupByFn = isFunction(this._ngSelect.groupBy());
|
|
1413
1449
|
const items = [];
|
|
1414
1450
|
for (const key of Array.from(groups.keys())) {
|
|
1415
1451
|
let i = items.length;
|
|
@@ -1427,11 +1463,11 @@ class ItemsList {
|
|
|
1427
1463
|
children: undefined,
|
|
1428
1464
|
parent: null,
|
|
1429
1465
|
index: i++,
|
|
1430
|
-
disabled: !this._ngSelect.selectableGroup,
|
|
1466
|
+
disabled: !this._ngSelect.selectableGroup(),
|
|
1431
1467
|
htmlId: newId(),
|
|
1432
1468
|
};
|
|
1433
|
-
const groupKey = isGroupByFn ? this._ngSelect.bindLabel : this._ngSelect.groupBy;
|
|
1434
|
-
const groupValue = this._ngSelect.groupValue ||
|
|
1469
|
+
const groupKey = isGroupByFn ? this._ngSelect.bindLabel() : this._ngSelect.groupBy();
|
|
1470
|
+
const groupValue = this._ngSelect.groupValue() ||
|
|
1435
1471
|
(() => {
|
|
1436
1472
|
if (isObjectKey) {
|
|
1437
1473
|
return key.value;
|
|
@@ -1522,25 +1558,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
1522
1558
|
const CSS_POSITIONS = ['top', 'right', 'bottom', 'left'];
|
|
1523
1559
|
const SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;
|
|
1524
1560
|
class NgDropdownPanelComponent {
|
|
1525
|
-
constructor(
|
|
1526
|
-
this._renderer =
|
|
1527
|
-
this._zone =
|
|
1528
|
-
this._panelService =
|
|
1529
|
-
this._document =
|
|
1530
|
-
this.
|
|
1531
|
-
this.
|
|
1532
|
-
this.
|
|
1533
|
-
this.
|
|
1561
|
+
constructor() {
|
|
1562
|
+
this._renderer = inject(Renderer2);
|
|
1563
|
+
this._zone = inject(NgZone);
|
|
1564
|
+
this._panelService = inject(NgDropdownPanelService);
|
|
1565
|
+
this._document = inject(DOCUMENT, { optional: true });
|
|
1566
|
+
this._dropdown = inject((ElementRef)).nativeElement;
|
|
1567
|
+
this.items = input([]);
|
|
1568
|
+
this.markedItem = input(undefined);
|
|
1569
|
+
this.position = input('auto');
|
|
1570
|
+
this.appendTo = input(undefined);
|
|
1571
|
+
this.bufferAmount = input(undefined);
|
|
1572
|
+
this.virtualScroll = input(false, { transform: booleanAttribute });
|
|
1573
|
+
this.headerTemplate = input(undefined);
|
|
1574
|
+
this.footerTemplate = input(undefined);
|
|
1575
|
+
this.filterValue = input(null);
|
|
1534
1576
|
this.ariaLabelDropdown = input(null);
|
|
1535
|
-
this.update =
|
|
1536
|
-
this.scroll =
|
|
1537
|
-
this.scrollToEnd =
|
|
1538
|
-
this.outsideClick =
|
|
1577
|
+
this.update = output();
|
|
1578
|
+
this.scroll = output();
|
|
1579
|
+
this.scrollToEnd = output();
|
|
1580
|
+
this.outsideClick = output();
|
|
1581
|
+
this.contentElementRef = viewChild('content', { read: ElementRef });
|
|
1582
|
+
this.scrollElementRef = viewChild('scroll', { read: ElementRef });
|
|
1583
|
+
this.paddingElementRef = viewChild('padding', { read: ElementRef });
|
|
1539
1584
|
this._destroy$ = new Subject();
|
|
1585
|
+
this._virtualPadding = computed(() => this.paddingElementRef()?.nativeElement);
|
|
1586
|
+
this._scrollablePanel = computed(() => this.scrollElementRef()?.nativeElement);
|
|
1587
|
+
this._contentPanel = computed(() => this.contentElementRef()?.nativeElement);
|
|
1540
1588
|
this._scrollToEndFired = false;
|
|
1541
1589
|
this._updateScrollHeight = false;
|
|
1542
1590
|
this._lastScrollPosition = 0;
|
|
1543
|
-
this._dropdown = _elementRef.nativeElement;
|
|
1544
1591
|
}
|
|
1545
1592
|
get currentPosition() {
|
|
1546
1593
|
return this._currentPosition;
|
|
@@ -1555,18 +1602,15 @@ class NgDropdownPanelComponent {
|
|
|
1555
1602
|
}
|
|
1556
1603
|
}
|
|
1557
1604
|
get _startOffset() {
|
|
1558
|
-
if (this.markedItem) {
|
|
1605
|
+
if (this.markedItem()) {
|
|
1559
1606
|
const { itemHeight, panelHeight } = this._panelService.dimensions;
|
|
1560
|
-
const offset = this.markedItem.index * itemHeight;
|
|
1607
|
+
const offset = this.markedItem().index * itemHeight;
|
|
1561
1608
|
return panelHeight > offset ? 0 : offset;
|
|
1562
1609
|
}
|
|
1563
1610
|
return 0;
|
|
1564
1611
|
}
|
|
1565
1612
|
ngOnInit() {
|
|
1566
1613
|
this._select = this._dropdown.parentElement;
|
|
1567
|
-
this._virtualPadding = this.paddingElementRef.nativeElement;
|
|
1568
|
-
this._scrollablePanel = this.scrollElementRef.nativeElement;
|
|
1569
|
-
this._contentPanel = this.contentElementRef.nativeElement;
|
|
1570
1614
|
this._handleScroll();
|
|
1571
1615
|
this._handleOutsideClick();
|
|
1572
1616
|
this._appendDropdown();
|
|
@@ -1582,7 +1626,7 @@ class NgDropdownPanelComponent {
|
|
|
1582
1626
|
this._destroy$.next();
|
|
1583
1627
|
this._destroy$.complete();
|
|
1584
1628
|
this._destroy$.unsubscribe();
|
|
1585
|
-
if (this.appendTo) {
|
|
1629
|
+
if (this.appendTo()) {
|
|
1586
1630
|
this._renderer.removeChild(this._dropdown.parentNode, this._dropdown);
|
|
1587
1631
|
}
|
|
1588
1632
|
}
|
|
@@ -1590,12 +1634,12 @@ class NgDropdownPanelComponent {
|
|
|
1590
1634
|
if (!option) {
|
|
1591
1635
|
return;
|
|
1592
1636
|
}
|
|
1593
|
-
const index = this.items.indexOf(option);
|
|
1637
|
+
const index = this.items().indexOf(option);
|
|
1594
1638
|
if (index < 0 || index >= this.itemsLength) {
|
|
1595
1639
|
return;
|
|
1596
1640
|
}
|
|
1597
1641
|
let scrollTo;
|
|
1598
|
-
if (this.virtualScroll) {
|
|
1642
|
+
if (this.virtualScroll()) {
|
|
1599
1643
|
const itemHeight = this._panelService.dimensions.itemHeight;
|
|
1600
1644
|
scrollTo = this._panelService.getScrollTo(index * itemHeight, itemHeight, this._lastScrollPosition);
|
|
1601
1645
|
}
|
|
@@ -1605,11 +1649,11 @@ class NgDropdownPanelComponent {
|
|
|
1605
1649
|
scrollTo = this._panelService.getScrollTo(item.offsetTop, item.clientHeight, lastScroll);
|
|
1606
1650
|
}
|
|
1607
1651
|
if (isDefined(scrollTo)) {
|
|
1608
|
-
this._scrollablePanel.scrollTop = scrollTo;
|
|
1652
|
+
this._scrollablePanel().scrollTop = scrollTo;
|
|
1609
1653
|
}
|
|
1610
1654
|
}
|
|
1611
1655
|
scrollToTag() {
|
|
1612
|
-
const panel = this._scrollablePanel;
|
|
1656
|
+
const panel = this._scrollablePanel();
|
|
1613
1657
|
panel.scrollTop = panel.scrollHeight - panel.clientHeight;
|
|
1614
1658
|
}
|
|
1615
1659
|
adjustPosition() {
|
|
@@ -1623,7 +1667,7 @@ class NgDropdownPanelComponent {
|
|
|
1623
1667
|
else {
|
|
1624
1668
|
this._updateDropdownClass('bottom');
|
|
1625
1669
|
}
|
|
1626
|
-
if (this.appendTo) {
|
|
1670
|
+
if (this.appendTo()) {
|
|
1627
1671
|
this._updateYPosition();
|
|
1628
1672
|
}
|
|
1629
1673
|
this._dropdown.style.opacity = '1';
|
|
@@ -1640,7 +1684,10 @@ class NgDropdownPanelComponent {
|
|
|
1640
1684
|
}
|
|
1641
1685
|
_handleScroll() {
|
|
1642
1686
|
this._zone.runOutsideAngular(() => {
|
|
1643
|
-
|
|
1687
|
+
if (!this._scrollablePanel()) {
|
|
1688
|
+
return;
|
|
1689
|
+
}
|
|
1690
|
+
fromEvent(this._scrollablePanel(), 'scroll')
|
|
1644
1691
|
.pipe(takeUntil(this._destroy$), auditTime(0, SCROLL_SCHEDULER))
|
|
1645
1692
|
.subscribe((e) => {
|
|
1646
1693
|
const path = e.path || (e.composedPath && e.composedPath());
|
|
@@ -1672,11 +1719,10 @@ class NgDropdownPanelComponent {
|
|
|
1672
1719
|
}
|
|
1673
1720
|
this._zone.run(() => this.outsideClick.emit());
|
|
1674
1721
|
}
|
|
1675
|
-
_onItemsChange(items, firstChange) {
|
|
1676
|
-
this.items = items || [];
|
|
1722
|
+
_onItemsChange(items = [], firstChange) {
|
|
1677
1723
|
this._scrollToEndFired = false;
|
|
1678
1724
|
this.itemsLength = items.length;
|
|
1679
|
-
if (this.virtualScroll) {
|
|
1725
|
+
if (this.virtualScroll()) {
|
|
1680
1726
|
this._updateItemsRange(firstChange);
|
|
1681
1727
|
}
|
|
1682
1728
|
else {
|
|
@@ -1685,16 +1731,16 @@ class NgDropdownPanelComponent {
|
|
|
1685
1731
|
}
|
|
1686
1732
|
}
|
|
1687
1733
|
_updateItems(firstChange) {
|
|
1688
|
-
this.update.emit(this.items);
|
|
1734
|
+
this.update.emit(this.items());
|
|
1689
1735
|
if (firstChange === false) {
|
|
1690
1736
|
return;
|
|
1691
1737
|
}
|
|
1692
1738
|
this._zone.runOutsideAngular(() => {
|
|
1693
1739
|
Promise.resolve().then(() => {
|
|
1694
|
-
const panelHeight = this._scrollablePanel.clientHeight;
|
|
1740
|
+
const panelHeight = this._scrollablePanel().clientHeight;
|
|
1695
1741
|
this._panelService.setDimensions(0, panelHeight);
|
|
1696
1742
|
this._handleDropdownPosition();
|
|
1697
|
-
this.scrollTo(this.markedItem, firstChange);
|
|
1743
|
+
this.scrollTo(this.markedItem(), firstChange);
|
|
1698
1744
|
});
|
|
1699
1745
|
});
|
|
1700
1746
|
}
|
|
@@ -1712,7 +1758,7 @@ class NgDropdownPanelComponent {
|
|
|
1712
1758
|
});
|
|
1713
1759
|
}
|
|
1714
1760
|
_onContentScrolled(scrollTop) {
|
|
1715
|
-
if (this.virtualScroll) {
|
|
1761
|
+
if (this.virtualScroll()) {
|
|
1716
1762
|
this._renderItemsRange(scrollTop);
|
|
1717
1763
|
}
|
|
1718
1764
|
this._lastScrollPosition = scrollTop;
|
|
@@ -1720,15 +1766,15 @@ class NgDropdownPanelComponent {
|
|
|
1720
1766
|
}
|
|
1721
1767
|
_updateVirtualHeight(height) {
|
|
1722
1768
|
if (this._updateScrollHeight) {
|
|
1723
|
-
this._virtualPadding.style.height = `${height}px`;
|
|
1769
|
+
this._virtualPadding().style.height = `${height}px`;
|
|
1724
1770
|
this._updateScrollHeight = false;
|
|
1725
1771
|
}
|
|
1726
1772
|
}
|
|
1727
1773
|
_setVirtualHeight() {
|
|
1728
|
-
if (!this._virtualPadding) {
|
|
1774
|
+
if (!this._virtualPadding()) {
|
|
1729
1775
|
return;
|
|
1730
1776
|
}
|
|
1731
|
-
this._virtualPadding.style.height = `0px`;
|
|
1777
|
+
this._virtualPadding().style.height = `0px`;
|
|
1732
1778
|
}
|
|
1733
1779
|
_onItemsLengthChanged() {
|
|
1734
1780
|
this._updateScrollHeight = true;
|
|
@@ -1737,16 +1783,16 @@ class NgDropdownPanelComponent {
|
|
|
1737
1783
|
if (scrollTop && this._lastScrollPosition === scrollTop) {
|
|
1738
1784
|
return;
|
|
1739
1785
|
}
|
|
1740
|
-
scrollTop = scrollTop || this._scrollablePanel.scrollTop;
|
|
1741
|
-
const range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount);
|
|
1786
|
+
scrollTop = scrollTop || this._scrollablePanel().scrollTop;
|
|
1787
|
+
const range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount());
|
|
1742
1788
|
this._updateVirtualHeight(range.scrollHeight);
|
|
1743
|
-
this._contentPanel.style.transform = `translateY(${range.topPadding}px)`;
|
|
1789
|
+
this._contentPanel().style.transform = `translateY(${range.topPadding}px)`;
|
|
1744
1790
|
this._zone.run(() => {
|
|
1745
|
-
this.update.emit(this.items.slice(range.start, range.end));
|
|
1791
|
+
this.update.emit(this.items().slice(range.start, range.end));
|
|
1746
1792
|
this.scroll.emit({ start: range.start, end: range.end });
|
|
1747
1793
|
});
|
|
1748
1794
|
if (isDefined(scrollTop) && this._lastScrollPosition === 0) {
|
|
1749
|
-
this._scrollablePanel.scrollTop = scrollTop;
|
|
1795
|
+
this._scrollablePanel().scrollTop = scrollTop;
|
|
1750
1796
|
this._lastScrollPosition = scrollTop;
|
|
1751
1797
|
}
|
|
1752
1798
|
}
|
|
@@ -1754,13 +1800,13 @@ class NgDropdownPanelComponent {
|
|
|
1754
1800
|
if (this._panelService.dimensions.itemHeight > 0 || this.itemsLength === 0) {
|
|
1755
1801
|
return Promise.resolve(this._panelService.dimensions);
|
|
1756
1802
|
}
|
|
1757
|
-
const [first] = this.items;
|
|
1803
|
+
const [first] = this.items();
|
|
1758
1804
|
this.update.emit([first]);
|
|
1759
1805
|
return Promise.resolve().then(() => {
|
|
1760
1806
|
const option = this._dropdown.querySelector(`#${first.htmlId}`);
|
|
1761
1807
|
const optionHeight = option.clientHeight;
|
|
1762
|
-
this._virtualPadding.style.height = `${optionHeight * this.itemsLength}px`;
|
|
1763
|
-
const panelHeight = this._scrollablePanel.clientHeight;
|
|
1808
|
+
this._virtualPadding().style.height = `${optionHeight * this.itemsLength}px`;
|
|
1809
|
+
const panelHeight = this._scrollablePanel().clientHeight;
|
|
1764
1810
|
this._panelService.setDimensions(optionHeight, panelHeight);
|
|
1765
1811
|
return this._panelService.dimensions;
|
|
1766
1812
|
});
|
|
@@ -1769,15 +1815,16 @@ class NgDropdownPanelComponent {
|
|
|
1769
1815
|
if (this._scrollToEndFired || scrollTop === 0) {
|
|
1770
1816
|
return;
|
|
1771
1817
|
}
|
|
1772
|
-
const padding = this.virtualScroll ? this._virtualPadding : this._contentPanel;
|
|
1818
|
+
const padding = this.virtualScroll() ? this._virtualPadding() : this._contentPanel();
|
|
1773
1819
|
if (scrollTop + this._dropdown.clientHeight >= padding.clientHeight - 1) {
|
|
1774
1820
|
this._zone.run(() => this.scrollToEnd.emit());
|
|
1775
1821
|
this._scrollToEndFired = true;
|
|
1776
1822
|
}
|
|
1777
1823
|
}
|
|
1778
1824
|
_calculateCurrentPosition(dropdownEl) {
|
|
1779
|
-
|
|
1780
|
-
|
|
1825
|
+
const position = this.position();
|
|
1826
|
+
if (position !== 'auto') {
|
|
1827
|
+
return position;
|
|
1781
1828
|
}
|
|
1782
1829
|
const selectRect = this._select.getBoundingClientRect();
|
|
1783
1830
|
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
|
|
@@ -1792,14 +1839,14 @@ class NgDropdownPanelComponent {
|
|
|
1792
1839
|
}
|
|
1793
1840
|
}
|
|
1794
1841
|
_appendDropdown() {
|
|
1795
|
-
if (!this.appendTo) {
|
|
1842
|
+
if (!this.appendTo()) {
|
|
1796
1843
|
return;
|
|
1797
1844
|
}
|
|
1798
1845
|
this._parent = this._dropdown.shadowRoot
|
|
1799
|
-
? this._dropdown.shadowRoot.querySelector(this.appendTo)
|
|
1800
|
-
: document.querySelector(this.appendTo);
|
|
1846
|
+
? this._dropdown.shadowRoot.querySelector(this.appendTo())
|
|
1847
|
+
: document.querySelector(this.appendTo());
|
|
1801
1848
|
if (!this._parent) {
|
|
1802
|
-
throw new Error(`appendTo selector ${this.appendTo} did not found any parent element`);
|
|
1849
|
+
throw new Error(`appendTo selector ${this.appendTo()} did not found any parent element`);
|
|
1803
1850
|
}
|
|
1804
1851
|
this._updateXPosition();
|
|
1805
1852
|
this._parent.appendChild(this._dropdown);
|
|
@@ -1849,22 +1896,22 @@ class NgDropdownPanelComponent {
|
|
|
1849
1896
|
});
|
|
1850
1897
|
});
|
|
1851
1898
|
}
|
|
1852
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgDropdownPanelComponent, deps: [
|
|
1853
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: NgDropdownPanelComponent, isStandalone: true, selector: "ng-dropdown-panel", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal:
|
|
1854
|
-
@if (headerTemplate) {
|
|
1899
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgDropdownPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1900
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: NgDropdownPanelComponent, isStandalone: true, selector: "ng-dropdown-panel", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, markedItem: { classPropertyName: "markedItem", publicName: "markedItem", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, bufferAmount: { classPropertyName: "bufferAmount", publicName: "bufferAmount", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: false, transformFunction: null }, filterValue: { classPropertyName: "filterValue", publicName: "filterValue", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelDropdown: { classPropertyName: "ariaLabelDropdown", publicName: "ariaLabelDropdown", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { update: "update", scroll: "scroll", scrollToEnd: "scrollToEnd", outsideClick: "outsideClick" }, viewQueries: [{ propertyName: "contentElementRef", first: true, predicate: ["content"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "scrollElementRef", first: true, predicate: ["scroll"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "paddingElementRef", first: true, predicate: ["padding"], descendants: true, read: ElementRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
1901
|
+
@if (headerTemplate()) {
|
|
1855
1902
|
<div class="ng-dropdown-header">
|
|
1856
|
-
<ng-container [ngTemplateOutlet]="headerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }" />
|
|
1903
|
+
<ng-container [ngTemplateOutlet]="headerTemplate()" [ngTemplateOutletContext]="{ searchTerm: filterValue() }" />
|
|
1857
1904
|
</div>
|
|
1858
1905
|
}
|
|
1859
1906
|
<div #scroll role="listbox" class="ng-dropdown-panel-items scroll-host" [attr.aria-label]="ariaLabelDropdown()">
|
|
1860
|
-
<div #padding [class.total-padding]="virtualScroll"></div>
|
|
1861
|
-
<div #content [class.scrollable-content]="virtualScroll && items.length">
|
|
1907
|
+
<div #padding [class.total-padding]="virtualScroll()"></div>
|
|
1908
|
+
<div #content [class.scrollable-content]="virtualScroll() && items().length">
|
|
1862
1909
|
<ng-content />
|
|
1863
1910
|
</div>
|
|
1864
1911
|
</div>
|
|
1865
|
-
@if (footerTemplate) {
|
|
1912
|
+
@if (footerTemplate()) {
|
|
1866
1913
|
<div class="ng-dropdown-footer">
|
|
1867
|
-
<ng-container [ngTemplateOutlet]="footerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }" />
|
|
1914
|
+
<ng-container [ngTemplateOutlet]="footerTemplate()" [ngTemplateOutletContext]="{ searchTerm: filterValue() }" />
|
|
1868
1915
|
</div>
|
|
1869
1916
|
}
|
|
1870
1917
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -1876,100 +1923,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
1876
1923
|
encapsulation: ViewEncapsulation.None,
|
|
1877
1924
|
selector: 'ng-dropdown-panel',
|
|
1878
1925
|
template: `
|
|
1879
|
-
@if (headerTemplate) {
|
|
1926
|
+
@if (headerTemplate()) {
|
|
1880
1927
|
<div class="ng-dropdown-header">
|
|
1881
|
-
<ng-container [ngTemplateOutlet]="headerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }" />
|
|
1928
|
+
<ng-container [ngTemplateOutlet]="headerTemplate()" [ngTemplateOutletContext]="{ searchTerm: filterValue() }" />
|
|
1882
1929
|
</div>
|
|
1883
1930
|
}
|
|
1884
1931
|
<div #scroll role="listbox" class="ng-dropdown-panel-items scroll-host" [attr.aria-label]="ariaLabelDropdown()">
|
|
1885
|
-
<div #padding [class.total-padding]="virtualScroll"></div>
|
|
1886
|
-
<div #content [class.scrollable-content]="virtualScroll && items.length">
|
|
1932
|
+
<div #padding [class.total-padding]="virtualScroll()"></div>
|
|
1933
|
+
<div #content [class.scrollable-content]="virtualScroll() && items().length">
|
|
1887
1934
|
<ng-content />
|
|
1888
1935
|
</div>
|
|
1889
1936
|
</div>
|
|
1890
|
-
@if (footerTemplate) {
|
|
1937
|
+
@if (footerTemplate()) {
|
|
1891
1938
|
<div class="ng-dropdown-footer">
|
|
1892
|
-
<ng-container [ngTemplateOutlet]="footerTemplate" [ngTemplateOutletContext]="{ searchTerm: filterValue }" />
|
|
1939
|
+
<ng-container [ngTemplateOutlet]="footerTemplate()" [ngTemplateOutletContext]="{ searchTerm: filterValue() }" />
|
|
1893
1940
|
</div>
|
|
1894
1941
|
}
|
|
1895
1942
|
`,
|
|
1896
|
-
imports: [NgTemplateOutlet]
|
|
1943
|
+
imports: [NgTemplateOutlet]
|
|
1897
1944
|
}]
|
|
1898
|
-
}]
|
|
1899
|
-
type: Optional
|
|
1900
|
-
}, {
|
|
1901
|
-
type: Inject,
|
|
1902
|
-
args: [DOCUMENT]
|
|
1903
|
-
}] }], propDecorators: { items: [{
|
|
1904
|
-
type: Input
|
|
1905
|
-
}], markedItem: [{
|
|
1906
|
-
type: Input
|
|
1907
|
-
}], position: [{
|
|
1908
|
-
type: Input
|
|
1909
|
-
}], appendTo: [{
|
|
1910
|
-
type: Input
|
|
1911
|
-
}], bufferAmount: [{
|
|
1912
|
-
type: Input
|
|
1913
|
-
}], virtualScroll: [{
|
|
1914
|
-
type: Input,
|
|
1915
|
-
args: [{ transform: booleanAttribute }]
|
|
1916
|
-
}], headerTemplate: [{
|
|
1917
|
-
type: Input
|
|
1918
|
-
}], footerTemplate: [{
|
|
1919
|
-
type: Input
|
|
1920
|
-
}], filterValue: [{
|
|
1921
|
-
type: Input
|
|
1922
|
-
}], update: [{
|
|
1923
|
-
type: Output
|
|
1924
|
-
}], scroll: [{
|
|
1925
|
-
type: Output
|
|
1926
|
-
}], scrollToEnd: [{
|
|
1927
|
-
type: Output
|
|
1928
|
-
}], outsideClick: [{
|
|
1929
|
-
type: Output
|
|
1930
|
-
}], contentElementRef: [{
|
|
1931
|
-
type: ViewChild,
|
|
1932
|
-
args: ['content', { read: ElementRef, static: true }]
|
|
1933
|
-
}], scrollElementRef: [{
|
|
1934
|
-
type: ViewChild,
|
|
1935
|
-
args: ['scroll', { read: ElementRef, static: true }]
|
|
1936
|
-
}], paddingElementRef: [{
|
|
1937
|
-
type: ViewChild,
|
|
1938
|
-
args: ['padding', { read: ElementRef, static: true }]
|
|
1939
|
-
}] } });
|
|
1945
|
+
}] });
|
|
1940
1946
|
|
|
1941
1947
|
class NgOptionComponent {
|
|
1942
|
-
constructor(
|
|
1943
|
-
this.
|
|
1944
|
-
this.disabled = false
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
this.
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
this._previousLabel = this.label;
|
|
1961
|
-
this.stateChange$.next({
|
|
1962
|
-
value: this.value,
|
|
1963
|
-
disabled: this.disabled,
|
|
1964
|
-
label: this.elementRef.nativeElement.innerHTML,
|
|
1965
|
-
});
|
|
1966
|
-
}
|
|
1948
|
+
constructor() {
|
|
1949
|
+
this.value = input();
|
|
1950
|
+
this.disabled = input(false, {
|
|
1951
|
+
transform: booleanAttribute,
|
|
1952
|
+
});
|
|
1953
|
+
this.elementRef = inject((ElementRef));
|
|
1954
|
+
this.label = signal('');
|
|
1955
|
+
this.stateChange = computed(() => ({
|
|
1956
|
+
value: this.value(),
|
|
1957
|
+
disabled: this.disabled(),
|
|
1958
|
+
label: this.label(),
|
|
1959
|
+
}));
|
|
1960
|
+
this.stateChange$ = toObservable(this.stateChange);
|
|
1961
|
+
afterNextRender(() => {
|
|
1962
|
+
if (this._label !== this.label()) {
|
|
1963
|
+
this.label.set(this._label);
|
|
1964
|
+
}
|
|
1965
|
+
});
|
|
1967
1966
|
}
|
|
1968
|
-
|
|
1969
|
-
this.
|
|
1967
|
+
get _label() {
|
|
1968
|
+
return (this.elementRef.nativeElement.innerHTML || '').trim();
|
|
1970
1969
|
}
|
|
1971
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptionComponent, deps: [
|
|
1972
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1970
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1971
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.0", type: NgOptionComponent, isStandalone: true, selector: "ng-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1973
1972
|
}
|
|
1974
1973
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgOptionComponent, decorators: [{
|
|
1975
1974
|
type: Component,
|
|
@@ -1979,12 +1978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
1979
1978
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1980
1979
|
template: `<ng-content />`,
|
|
1981
1980
|
}]
|
|
1982
|
-
}], ctorParameters: () => [
|
|
1983
|
-
type: Input
|
|
1984
|
-
}], disabled: [{
|
|
1985
|
-
type: Input,
|
|
1986
|
-
args: [{ transform: booleanAttribute }]
|
|
1987
|
-
}] } });
|
|
1981
|
+
}], ctorParameters: () => [] });
|
|
1988
1982
|
|
|
1989
1983
|
var KeyCode;
|
|
1990
1984
|
(function (KeyCode) {
|
|
@@ -2072,87 +2066,91 @@ class DefaultSelectionModel {
|
|
|
2072
2066
|
}
|
|
2073
2067
|
}
|
|
2074
2068
|
|
|
2075
|
-
class NgSelectConfig {
|
|
2076
|
-
constructor() {
|
|
2077
|
-
this.fixedPlaceholder = true;
|
|
2078
|
-
this.notFoundText = 'No items found';
|
|
2079
|
-
this.typeToSearchText = 'Type to search';
|
|
2080
|
-
this.addTagText = 'Add item';
|
|
2081
|
-
this.loadingText = 'Loading...';
|
|
2082
|
-
this.clearAllText = 'Clear all';
|
|
2083
|
-
this.disableVirtualScroll = true;
|
|
2084
|
-
this.openOnEnter = true;
|
|
2085
|
-
this.appearance = 'underline';
|
|
2086
|
-
this.tabFocusOnClear = true;
|
|
2087
|
-
}
|
|
2088
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2089
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectConfig, providedIn: 'root' }); }
|
|
2090
|
-
}
|
|
2091
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectConfig, decorators: [{
|
|
2092
|
-
type: Injectable,
|
|
2093
|
-
args: [{ providedIn: 'root' }]
|
|
2094
|
-
}] });
|
|
2095
|
-
|
|
2096
|
-
class ConsoleService {
|
|
2097
|
-
warn(message) {
|
|
2098
|
-
console.warn(message);
|
|
2099
|
-
}
|
|
2100
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ConsoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2101
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ConsoleService, providedIn: 'root' }); }
|
|
2102
|
-
}
|
|
2103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ConsoleService, decorators: [{
|
|
2104
|
-
type: Injectable,
|
|
2105
|
-
args: [{ providedIn: 'root' }]
|
|
2106
|
-
}] });
|
|
2107
|
-
|
|
2108
2069
|
const SELECTION_MODEL_FACTORY = new InjectionToken('ng-select-selection-model');
|
|
2109
2070
|
class NgSelectComponent {
|
|
2110
|
-
constructor(
|
|
2111
|
-
this.classes =
|
|
2112
|
-
this.autoFocus =
|
|
2113
|
-
this.config =
|
|
2114
|
-
this._cd =
|
|
2115
|
-
this._console =
|
|
2116
|
-
this.
|
|
2117
|
-
this.
|
|
2118
|
-
this.
|
|
2119
|
-
this.
|
|
2120
|
-
this.
|
|
2121
|
-
this.
|
|
2122
|
-
this.
|
|
2123
|
-
this.
|
|
2124
|
-
this.
|
|
2125
|
-
this.
|
|
2126
|
-
this.
|
|
2127
|
-
this.
|
|
2128
|
-
this.
|
|
2129
|
-
this.
|
|
2130
|
-
this.
|
|
2131
|
-
this.
|
|
2132
|
-
this.
|
|
2071
|
+
constructor() {
|
|
2072
|
+
this.classes = inject(new HostAttributeToken('class'), { optional: true });
|
|
2073
|
+
this.autoFocus = inject(new HostAttributeToken('autofocus'), { optional: true });
|
|
2074
|
+
this.config = inject(NgSelectConfig);
|
|
2075
|
+
this._cd = inject(ChangeDetectorRef);
|
|
2076
|
+
this._console = inject(ConsoleService);
|
|
2077
|
+
this.bindLabel = model(undefined);
|
|
2078
|
+
this.bindValue = model(undefined);
|
|
2079
|
+
this.appearance = model(undefined);
|
|
2080
|
+
this.ariaLabelDropdown = input('Options List');
|
|
2081
|
+
this.ariaLabel = input(undefined);
|
|
2082
|
+
this.markFirst = input(true, { transform: booleanAttribute });
|
|
2083
|
+
this.placeholder = input(this.config.placeholder);
|
|
2084
|
+
this.fixedPlaceholder = input(false);
|
|
2085
|
+
this.notFoundText = input(undefined);
|
|
2086
|
+
this.typeToSearchText = input(undefined);
|
|
2087
|
+
this.preventToggleOnRightClick = input(false);
|
|
2088
|
+
this.addTagText = input(undefined);
|
|
2089
|
+
this.loadingText = input(undefined);
|
|
2090
|
+
this.clearAllText = input(undefined);
|
|
2091
|
+
this.dropdownPosition = input('auto');
|
|
2092
|
+
this.appendTo = input(undefined);
|
|
2093
|
+
this.loading = input(false, { transform: booleanAttribute });
|
|
2094
|
+
this.closeOnSelect = input(true, { transform: booleanAttribute });
|
|
2095
|
+
this.hideSelected = input(false, { transform: booleanAttribute });
|
|
2096
|
+
this.selectOnTab = input(false, { transform: booleanAttribute });
|
|
2097
|
+
this.openOnEnter = input(undefined, { transform: booleanAttribute });
|
|
2098
|
+
this.maxSelectedItems = input(undefined, { transform: numberAttribute });
|
|
2099
|
+
this.groupBy = input(undefined);
|
|
2100
|
+
this.groupValue = input(undefined);
|
|
2101
|
+
this.bufferAmount = input(4, { transform: numberAttribute });
|
|
2102
|
+
this.virtualScroll = input(undefined, { transform: booleanAttribute });
|
|
2103
|
+
this.selectableGroup = input(false, { transform: booleanAttribute });
|
|
2133
2104
|
this.tabFocusOnClearButton = input();
|
|
2134
|
-
this.
|
|
2135
|
-
this.
|
|
2136
|
-
this.
|
|
2137
|
-
this.
|
|
2138
|
-
this.
|
|
2139
|
-
this.
|
|
2140
|
-
this.
|
|
2141
|
-
this.
|
|
2142
|
-
this.
|
|
2143
|
-
this.
|
|
2105
|
+
this.selectableGroupAsModel = input(true, { transform: booleanAttribute });
|
|
2106
|
+
this.searchFn = input(null);
|
|
2107
|
+
this.trackByFn = input(null);
|
|
2108
|
+
this.clearOnBackspace = input(true, { transform: booleanAttribute });
|
|
2109
|
+
this.labelForId = input(null);
|
|
2110
|
+
this.inputAttrs = input({});
|
|
2111
|
+
this.tabIndex = input(undefined, { transform: numberAttribute });
|
|
2112
|
+
this.readonly = input(false, { transform: booleanAttribute });
|
|
2113
|
+
this.searchWhileComposing = input(true, { transform: booleanAttribute });
|
|
2114
|
+
this.minTermLength = input(0, { transform: numberAttribute });
|
|
2115
|
+
this.editableSearchTerm = input(false, { transform: booleanAttribute });
|
|
2116
|
+
this.ngClass = input(null);
|
|
2117
|
+
this.typeahead = input(undefined);
|
|
2118
|
+
this.multiple = input(false, { transform: booleanAttribute });
|
|
2119
|
+
this.addTag = input(false);
|
|
2120
|
+
this.searchable = input(true, { transform: booleanAttribute });
|
|
2121
|
+
this.clearable = input(true, { transform: booleanAttribute });
|
|
2122
|
+
this.isOpen = model(false);
|
|
2144
2123
|
// output events
|
|
2145
|
-
this.blurEvent =
|
|
2146
|
-
this.focusEvent =
|
|
2147
|
-
this.changeEvent =
|
|
2148
|
-
this.openEvent =
|
|
2149
|
-
this.closeEvent =
|
|
2150
|
-
this.searchEvent =
|
|
2151
|
-
this.clearEvent =
|
|
2152
|
-
this.addEvent =
|
|
2153
|
-
this.removeEvent =
|
|
2154
|
-
this.scroll =
|
|
2155
|
-
this.scrollToEnd =
|
|
2124
|
+
this.blurEvent = output({ alias: 'blur' });
|
|
2125
|
+
this.focusEvent = output({ alias: 'focus' });
|
|
2126
|
+
this.changeEvent = output({ alias: 'change' });
|
|
2127
|
+
this.openEvent = output({ alias: 'open' });
|
|
2128
|
+
this.closeEvent = output({ alias: 'close' });
|
|
2129
|
+
this.searchEvent = output({ alias: 'search' });
|
|
2130
|
+
this.clearEvent = output({ alias: 'clear' });
|
|
2131
|
+
this.addEvent = output({ alias: 'add' });
|
|
2132
|
+
this.removeEvent = output({ alias: 'remove' });
|
|
2133
|
+
this.scroll = output({ alias: 'scroll' });
|
|
2134
|
+
this.scrollToEnd = output({ alias: 'scrollToEnd' });
|
|
2135
|
+
// custom templates
|
|
2136
|
+
this.optionTemplate = contentChild(NgOptionTemplateDirective, { read: TemplateRef });
|
|
2137
|
+
this.optgroupTemplate = contentChild(NgOptgroupTemplateDirective, { read: TemplateRef });
|
|
2138
|
+
this.labelTemplate = contentChild(NgLabelTemplateDirective, { read: TemplateRef });
|
|
2139
|
+
this.multiLabelTemplate = contentChild(NgMultiLabelTemplateDirective, { read: TemplateRef });
|
|
2140
|
+
this.headerTemplate = contentChild(NgHeaderTemplateDirective, { read: TemplateRef });
|
|
2141
|
+
this.footerTemplate = contentChild(NgFooterTemplateDirective, { read: TemplateRef });
|
|
2142
|
+
this.notFoundTemplate = contentChild(NgNotFoundTemplateDirective, { read: TemplateRef });
|
|
2143
|
+
this.placeholderTemplate = contentChild(NgPlaceholderTemplateDirective, { read: TemplateRef });
|
|
2144
|
+
this.typeToSearchTemplate = contentChild(NgTypeToSearchTemplateDirective, { read: TemplateRef });
|
|
2145
|
+
this.loadingTextTemplate = contentChild(NgLoadingTextTemplateDirective, { read: TemplateRef });
|
|
2146
|
+
this.tagTemplate = contentChild(NgTagTemplateDirective, { read: TemplateRef });
|
|
2147
|
+
this.loadingSpinnerTemplate = contentChild(NgLoadingSpinnerTemplateDirective, { read: TemplateRef });
|
|
2148
|
+
this.clearButtonTemplate = contentChild(NgClearButtonTemplateDirective, { read: TemplateRef });
|
|
2149
|
+
this.dropdownPanel = viewChild(forwardRef(() => NgDropdownPanelComponent));
|
|
2150
|
+
this.searchInput = viewChild('searchInput');
|
|
2151
|
+
this.clearButton = viewChild('clearButton');
|
|
2152
|
+
this.ngOptions = contentChildren(NgOptionComponent, { descendants: true });
|
|
2153
|
+
this.ngOptionsObservable = toObservable(this.ngOptions);
|
|
2156
2154
|
this.useDefaultClass = true;
|
|
2157
2155
|
this.viewPortItems = [];
|
|
2158
2156
|
this.searchTerm = null;
|
|
@@ -2164,72 +2162,64 @@ class NgSelectComponent {
|
|
|
2164
2162
|
this._isComposing = false;
|
|
2165
2163
|
this._destroy$ = new Subject();
|
|
2166
2164
|
this._keyPress$ = new Subject();
|
|
2167
|
-
this.
|
|
2168
|
-
this.
|
|
2165
|
+
this.items = model([]);
|
|
2166
|
+
this._disabled = signal(false);
|
|
2167
|
+
this.compareWith = input(undefined, {
|
|
2168
|
+
transform: (fn) => {
|
|
2169
|
+
if (fn !== undefined && fn !== null && !isFunction(fn)) {
|
|
2170
|
+
throw Error('`compareWith` must be a function.');
|
|
2171
|
+
}
|
|
2172
|
+
return fn;
|
|
2173
|
+
},
|
|
2174
|
+
});
|
|
2175
|
+
this.clearSearchOnAdd = input(undefined);
|
|
2176
|
+
this.clearSearchOnAddValue = computed(() => {
|
|
2177
|
+
if (isDefined(this.clearSearchOnAdd())) {
|
|
2178
|
+
return this.clearSearchOnAdd();
|
|
2179
|
+
}
|
|
2180
|
+
if (isDefined(this.config.clearSearchOnAdd)) {
|
|
2181
|
+
return this.config.clearSearchOnAdd;
|
|
2182
|
+
}
|
|
2183
|
+
return this.closeOnSelect();
|
|
2184
|
+
});
|
|
2185
|
+
this.deselectOnClick = input();
|
|
2186
|
+
this.deselectOnClickValue = computed(() => {
|
|
2187
|
+
if (isDefined(this.deselectOnClick())) {
|
|
2188
|
+
return this.deselectOnClick();
|
|
2189
|
+
}
|
|
2190
|
+
if (isDefined(this.config.deselectOnClick)) {
|
|
2191
|
+
return this.config.deselectOnClick;
|
|
2192
|
+
}
|
|
2193
|
+
return this.multiple();
|
|
2194
|
+
});
|
|
2195
|
+
this.keyDownFn = input((_) => true);
|
|
2169
2196
|
this.clearItem = (item) => {
|
|
2170
2197
|
const option = this.selectedItems.find((x) => x.value === item);
|
|
2171
2198
|
this.unselect(option);
|
|
2172
2199
|
};
|
|
2173
2200
|
this.trackByOption = (_, item) => {
|
|
2174
|
-
if (this.trackByFn) {
|
|
2175
|
-
return this.trackByFn(item.value);
|
|
2201
|
+
if (this.trackByFn()) {
|
|
2202
|
+
return this.trackByFn()(item.value);
|
|
2176
2203
|
}
|
|
2177
2204
|
return item;
|
|
2178
2205
|
};
|
|
2179
2206
|
this._onChange = (_) => { };
|
|
2180
2207
|
this._onTouched = () => { };
|
|
2208
|
+
const config = this.config;
|
|
2209
|
+
const newSelectionModel = inject(SELECTION_MODEL_FACTORY, { optional: true });
|
|
2210
|
+
const _elementRef = inject(ElementRef);
|
|
2181
2211
|
this._mergeGlobalConfig(config);
|
|
2182
2212
|
this.itemsList = new ItemsList(this, newSelectionModel ? newSelectionModel() : DefaultSelectionModelFactory());
|
|
2183
2213
|
this.element = _elementRef.nativeElement;
|
|
2184
2214
|
}
|
|
2185
2215
|
get filtered() {
|
|
2186
|
-
return (!!this.searchTerm && this.searchable) || this._isComposing;
|
|
2216
|
+
return (!!this.searchTerm && this.searchable()) || this._isComposing;
|
|
2187
2217
|
}
|
|
2188
2218
|
get single() {
|
|
2189
|
-
return !this.multiple;
|
|
2190
|
-
}
|
|
2191
|
-
get items() {
|
|
2192
|
-
return this._items;
|
|
2193
|
-
}
|
|
2194
|
-
set items(value) {
|
|
2195
|
-
this._itemsAreUsed = true;
|
|
2196
|
-
this._items = value ?? [];
|
|
2219
|
+
return !this.multiple();
|
|
2197
2220
|
}
|
|
2198
2221
|
get disabled() {
|
|
2199
|
-
return this.readonly || this._disabled;
|
|
2200
|
-
}
|
|
2201
|
-
get compareWith() {
|
|
2202
|
-
return this._compareWith;
|
|
2203
|
-
}
|
|
2204
|
-
set compareWith(fn) {
|
|
2205
|
-
if (fn !== undefined && fn !== null && !isFunction(fn)) {
|
|
2206
|
-
throw Error('`compareWith` must be a function.');
|
|
2207
|
-
}
|
|
2208
|
-
this._compareWith = fn;
|
|
2209
|
-
}
|
|
2210
|
-
get clearSearchOnAdd() {
|
|
2211
|
-
if (isDefined(this._clearSearchOnAdd)) {
|
|
2212
|
-
return this._clearSearchOnAdd;
|
|
2213
|
-
}
|
|
2214
|
-
else if (isDefined(this.config.clearSearchOnAdd)) {
|
|
2215
|
-
return this.config.clearSearchOnAdd;
|
|
2216
|
-
}
|
|
2217
|
-
return this.closeOnSelect;
|
|
2218
|
-
}
|
|
2219
|
-
set clearSearchOnAdd(value) {
|
|
2220
|
-
this._clearSearchOnAdd = value;
|
|
2221
|
-
}
|
|
2222
|
-
get deselectOnClick() {
|
|
2223
|
-
if (isDefined(this._deselectOnClick)) {
|
|
2224
|
-
return this._deselectOnClick;
|
|
2225
|
-
}
|
|
2226
|
-
else if (isDefined(this.config.deselectOnClick)) {
|
|
2227
|
-
return this.config.deselectOnClick;
|
|
2228
|
-
}
|
|
2229
|
-
return this.multiple;
|
|
2230
|
-
}
|
|
2231
|
-
set deselectOnClick(value) {
|
|
2232
|
-
this._deselectOnClick = value;
|
|
2222
|
+
return this.readonly() || this._disabled();
|
|
2233
2223
|
}
|
|
2234
2224
|
get selectedItems() {
|
|
2235
2225
|
return this.itemsList.selectedItems;
|
|
@@ -2241,8 +2231,8 @@ class NgSelectComponent {
|
|
|
2241
2231
|
return this.selectedItems.length > 0;
|
|
2242
2232
|
}
|
|
2243
2233
|
get currentPanelPosition() {
|
|
2244
|
-
if (this.dropdownPanel) {
|
|
2245
|
-
return this.dropdownPanel.currentPosition;
|
|
2234
|
+
if (this.dropdownPanel()) {
|
|
2235
|
+
return this.dropdownPanel().currentPosition;
|
|
2246
2236
|
}
|
|
2247
2237
|
return undefined;
|
|
2248
2238
|
}
|
|
@@ -2251,20 +2241,20 @@ class NgSelectComponent {
|
|
|
2251
2241
|
return false;
|
|
2252
2242
|
}
|
|
2253
2243
|
const term = this.searchTerm.toLowerCase().trim();
|
|
2254
|
-
return (this.addTag &&
|
|
2244
|
+
return (this.addTag() &&
|
|
2255
2245
|
!this.itemsList.filteredItems.some((x) => x.label.toLowerCase() === term) &&
|
|
2256
|
-
((!this.hideSelected && this.isOpen) || !this.selectedItems.some((x) => x.label.toLowerCase() === term)) &&
|
|
2257
|
-
!this.loading);
|
|
2246
|
+
((!this.hideSelected() && this.isOpen()) || !this.selectedItems.some((x) => x.label.toLowerCase() === term)) &&
|
|
2247
|
+
!this.loading());
|
|
2258
2248
|
}
|
|
2259
2249
|
get _editableSearchTerm() {
|
|
2260
|
-
return this.editableSearchTerm && !this.multiple;
|
|
2250
|
+
return this.editableSearchTerm() && !this.multiple();
|
|
2261
2251
|
}
|
|
2262
2252
|
get _isTypeahead() {
|
|
2263
|
-
return this.typeahead && this.typeahead.observed;
|
|
2253
|
+
return this.typeahead() && this.typeahead().observed;
|
|
2264
2254
|
}
|
|
2265
2255
|
get _validTerm() {
|
|
2266
2256
|
const term = this.searchTerm?.trim();
|
|
2267
|
-
return term && term.length >= this.minTermLength;
|
|
2257
|
+
return term && term.length >= this.minTermLength();
|
|
2268
2258
|
}
|
|
2269
2259
|
ngOnInit() {
|
|
2270
2260
|
this._handleKeyPresses();
|
|
@@ -2275,6 +2265,7 @@ class NgSelectComponent {
|
|
|
2275
2265
|
this.itemsList.clearSelected();
|
|
2276
2266
|
}
|
|
2277
2267
|
if (changes.items) {
|
|
2268
|
+
this._itemsAreUsed = true;
|
|
2278
2269
|
this._setItems(changes.items.currentValue || []);
|
|
2279
2270
|
}
|
|
2280
2271
|
if (changes.isOpen) {
|
|
@@ -2282,7 +2273,7 @@ class NgSelectComponent {
|
|
|
2282
2273
|
}
|
|
2283
2274
|
if (changes.groupBy) {
|
|
2284
2275
|
if (!changes.items) {
|
|
2285
|
-
this._setItems([...this.items]);
|
|
2276
|
+
this._setItems([...this.items()]);
|
|
2286
2277
|
}
|
|
2287
2278
|
}
|
|
2288
2279
|
if (changes.inputAttrs) {
|
|
@@ -2306,7 +2297,7 @@ class NgSelectComponent {
|
|
|
2306
2297
|
handleKeyDown($event) {
|
|
2307
2298
|
const keyName = $event.key;
|
|
2308
2299
|
if (Object.values(KeyCode).includes(keyName)) {
|
|
2309
|
-
if (this.keyDownFn($event) === false) {
|
|
2300
|
+
if (this.keyDownFn()($event) === false) {
|
|
2310
2301
|
return;
|
|
2311
2302
|
}
|
|
2312
2303
|
this.handleKeyCode($event);
|
|
@@ -2317,7 +2308,7 @@ class NgSelectComponent {
|
|
|
2317
2308
|
}
|
|
2318
2309
|
handleKeyCode($event) {
|
|
2319
2310
|
const target = $event.target;
|
|
2320
|
-
if (this.clearButton && this.clearButton.nativeElement === target) {
|
|
2311
|
+
if (this.clearButton() && this.clearButton().nativeElement === target) {
|
|
2321
2312
|
this.handleKeyCodeClear($event);
|
|
2322
2313
|
}
|
|
2323
2314
|
else {
|
|
@@ -2362,7 +2353,7 @@ class NgSelectComponent {
|
|
|
2362
2353
|
if (this.disabled) {
|
|
2363
2354
|
return;
|
|
2364
2355
|
}
|
|
2365
|
-
if (this.preventToggleOnRightClick && $event.button === 2) {
|
|
2356
|
+
if (this.preventToggleOnRightClick() && $event.button === 2) {
|
|
2366
2357
|
return false;
|
|
2367
2358
|
}
|
|
2368
2359
|
const target = $event.target;
|
|
@@ -2383,7 +2374,7 @@ class NgSelectComponent {
|
|
|
2383
2374
|
if (!this.focused) {
|
|
2384
2375
|
this.focus();
|
|
2385
2376
|
}
|
|
2386
|
-
if (this.searchable) {
|
|
2377
|
+
if (this.searchable()) {
|
|
2387
2378
|
this.open();
|
|
2388
2379
|
}
|
|
2389
2380
|
else {
|
|
@@ -2391,7 +2382,7 @@ class NgSelectComponent {
|
|
|
2391
2382
|
}
|
|
2392
2383
|
}
|
|
2393
2384
|
handleArrowClick() {
|
|
2394
|
-
if (this.isOpen) {
|
|
2385
|
+
if (this.isOpen()) {
|
|
2395
2386
|
this.close();
|
|
2396
2387
|
}
|
|
2397
2388
|
else {
|
|
@@ -2409,7 +2400,7 @@ class NgSelectComponent {
|
|
|
2409
2400
|
this._onSelectionChanged();
|
|
2410
2401
|
}
|
|
2411
2402
|
clearModel() {
|
|
2412
|
-
if (!this.clearable) {
|
|
2403
|
+
if (!this.clearable()) {
|
|
2413
2404
|
return;
|
|
2414
2405
|
}
|
|
2415
2406
|
this.itemsList.clearSelected();
|
|
@@ -2427,11 +2418,11 @@ class NgSelectComponent {
|
|
|
2427
2418
|
this._onTouched = fn;
|
|
2428
2419
|
}
|
|
2429
2420
|
setDisabledState(state) {
|
|
2430
|
-
this._disabled
|
|
2421
|
+
this._disabled.set(state);
|
|
2431
2422
|
this._cd.markForCheck();
|
|
2432
2423
|
}
|
|
2433
2424
|
toggle() {
|
|
2434
|
-
if (!this.isOpen) {
|
|
2425
|
+
if (!this.isOpen()) {
|
|
2435
2426
|
this.open();
|
|
2436
2427
|
}
|
|
2437
2428
|
else {
|
|
@@ -2439,14 +2430,14 @@ class NgSelectComponent {
|
|
|
2439
2430
|
}
|
|
2440
2431
|
}
|
|
2441
2432
|
open() {
|
|
2442
|
-
if (this.disabled || this.isOpen || this._manualOpen) {
|
|
2433
|
+
if (this.disabled || this.isOpen() || this._manualOpen) {
|
|
2443
2434
|
return;
|
|
2444
2435
|
}
|
|
2445
|
-
if (!this._isTypeahead && !this.addTag && this.itemsList.noItemsToSelect) {
|
|
2436
|
+
if (!this._isTypeahead && !this.addTag() && this.itemsList.noItemsToSelect) {
|
|
2446
2437
|
return;
|
|
2447
2438
|
}
|
|
2448
|
-
this.isOpen
|
|
2449
|
-
this.itemsList.markSelectedOrDefault(this.markFirst);
|
|
2439
|
+
this.isOpen.set(true);
|
|
2440
|
+
this.itemsList.markSelectedOrDefault(this.markFirst());
|
|
2450
2441
|
this.openEvent.emit();
|
|
2451
2442
|
if (!this.searchTerm) {
|
|
2452
2443
|
this.focus();
|
|
@@ -2454,10 +2445,10 @@ class NgSelectComponent {
|
|
|
2454
2445
|
this.detectChanges();
|
|
2455
2446
|
}
|
|
2456
2447
|
close() {
|
|
2457
|
-
if (!this.isOpen || this._manualOpen) {
|
|
2448
|
+
if (!this.isOpen() || this._manualOpen) {
|
|
2458
2449
|
return;
|
|
2459
2450
|
}
|
|
2460
|
-
this.isOpen
|
|
2451
|
+
this.isOpen.set(false);
|
|
2461
2452
|
this._isComposing = false;
|
|
2462
2453
|
if (!this._editableSearchTerm) {
|
|
2463
2454
|
this._clearSearch();
|
|
@@ -2474,7 +2465,7 @@ class NgSelectComponent {
|
|
|
2474
2465
|
if (!item || item.disabled || this.disabled) {
|
|
2475
2466
|
return;
|
|
2476
2467
|
}
|
|
2477
|
-
if (this.
|
|
2468
|
+
if (this.deselectOnClickValue() && item.selected) {
|
|
2478
2469
|
this.unselect(item);
|
|
2479
2470
|
}
|
|
2480
2471
|
else {
|
|
@@ -2487,24 +2478,24 @@ class NgSelectComponent {
|
|
|
2487
2478
|
select(item) {
|
|
2488
2479
|
if (!item.selected) {
|
|
2489
2480
|
this.itemsList.select(item);
|
|
2490
|
-
if (this.
|
|
2481
|
+
if (this.clearSearchOnAddValue() && !this._editableSearchTerm) {
|
|
2491
2482
|
this._clearSearch();
|
|
2492
2483
|
}
|
|
2493
2484
|
this._updateNgModel();
|
|
2494
|
-
if (this.multiple) {
|
|
2485
|
+
if (this.multiple()) {
|
|
2495
2486
|
this.addEvent.emit(item.value);
|
|
2496
2487
|
}
|
|
2497
2488
|
}
|
|
2498
|
-
if (this.closeOnSelect || this.itemsList.noItemsToSelect) {
|
|
2489
|
+
if (this.closeOnSelect() || this.itemsList.noItemsToSelect) {
|
|
2499
2490
|
this.close();
|
|
2500
2491
|
}
|
|
2501
2492
|
this._onSelectionChanged();
|
|
2502
2493
|
}
|
|
2503
2494
|
focus() {
|
|
2504
|
-
this.searchInput.nativeElement.focus();
|
|
2495
|
+
this.searchInput().nativeElement.focus();
|
|
2505
2496
|
}
|
|
2506
2497
|
blur() {
|
|
2507
|
-
this.searchInput.nativeElement.blur();
|
|
2498
|
+
this.searchInput().nativeElement.blur();
|
|
2508
2499
|
}
|
|
2509
2500
|
unselect(item) {
|
|
2510
2501
|
if (!item) {
|
|
@@ -2518,13 +2509,13 @@ class NgSelectComponent {
|
|
|
2518
2509
|
}
|
|
2519
2510
|
selectTag() {
|
|
2520
2511
|
let tag;
|
|
2521
|
-
if (isFunction(this.addTag)) {
|
|
2522
|
-
tag = this.addTag(this.searchTerm);
|
|
2512
|
+
if (isFunction(this.addTag())) {
|
|
2513
|
+
tag = this.addTag()(this.searchTerm);
|
|
2523
2514
|
}
|
|
2524
2515
|
else {
|
|
2525
|
-
tag = this._primitive ? this.searchTerm : { [this.bindLabel]: this.searchTerm };
|
|
2516
|
+
tag = this._primitive ? this.searchTerm : { [this.bindLabel()]: this.searchTerm };
|
|
2526
2517
|
}
|
|
2527
|
-
const handleTag = (item) => (this._isTypeahead || !this.isOpen ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item));
|
|
2518
|
+
const handleTag = (item) => (this._isTypeahead || !this.isOpen() ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item));
|
|
2528
2519
|
if (isPromise(tag)) {
|
|
2529
2520
|
tag.then((item) => this.select(handleTag(item))).catch(() => { });
|
|
2530
2521
|
}
|
|
@@ -2533,45 +2524,45 @@ class NgSelectComponent {
|
|
|
2533
2524
|
}
|
|
2534
2525
|
}
|
|
2535
2526
|
showClear() {
|
|
2536
|
-
return this.clearable && (this.hasValue || this.searchTerm) && !this.disabled;
|
|
2527
|
+
return this.clearable() && (this.hasValue || this.searchTerm) && !this.disabled;
|
|
2537
2528
|
}
|
|
2538
2529
|
focusOnClear() {
|
|
2539
2530
|
this.blur();
|
|
2540
|
-
if (this.clearButton) {
|
|
2541
|
-
this.clearButton.nativeElement.focus();
|
|
2531
|
+
if (this.clearButton()) {
|
|
2532
|
+
this.clearButton().nativeElement.focus();
|
|
2542
2533
|
}
|
|
2543
2534
|
}
|
|
2544
2535
|
showNoItemsFound() {
|
|
2545
2536
|
const empty = this.itemsList.filteredItems.length === 0;
|
|
2546
|
-
return (((empty && !this._isTypeahead && !this.loading) || (empty && this._isTypeahead && this._validTerm && !this.loading)) &&
|
|
2537
|
+
return (((empty && !this._isTypeahead && !this.loading()) || (empty && this._isTypeahead && this._validTerm && !this.loading())) &&
|
|
2547
2538
|
!this.showAddTag);
|
|
2548
2539
|
}
|
|
2549
2540
|
showTypeToSearch() {
|
|
2550
2541
|
const empty = this.itemsList.filteredItems.length === 0;
|
|
2551
|
-
return empty && this._isTypeahead && !this._validTerm && !this.loading;
|
|
2542
|
+
return empty && this._isTypeahead && !this._validTerm && !this.loading();
|
|
2552
2543
|
}
|
|
2553
2544
|
onCompositionStart() {
|
|
2554
2545
|
this._isComposing = true;
|
|
2555
2546
|
}
|
|
2556
2547
|
onCompositionEnd(term) {
|
|
2557
2548
|
this._isComposing = false;
|
|
2558
|
-
if (this.searchWhileComposing) {
|
|
2549
|
+
if (this.searchWhileComposing()) {
|
|
2559
2550
|
return;
|
|
2560
2551
|
}
|
|
2561
2552
|
this.filter(term);
|
|
2562
2553
|
}
|
|
2563
2554
|
filter(term) {
|
|
2564
|
-
if (this._isComposing && !this.searchWhileComposing) {
|
|
2555
|
+
if (this._isComposing && !this.searchWhileComposing()) {
|
|
2565
2556
|
return;
|
|
2566
2557
|
}
|
|
2567
2558
|
this.searchTerm = term;
|
|
2568
|
-
if (this._isTypeahead && (this._validTerm || this.minTermLength === 0)) {
|
|
2569
|
-
this.typeahead.next(term);
|
|
2559
|
+
if (this._isTypeahead && (this._validTerm || this.minTermLength() === 0)) {
|
|
2560
|
+
this.typeahead().next(term);
|
|
2570
2561
|
}
|
|
2571
2562
|
if (!this._isTypeahead) {
|
|
2572
2563
|
this.itemsList.filter(this.searchTerm);
|
|
2573
|
-
if (this.isOpen) {
|
|
2574
|
-
this.itemsList.markSelectedOrDefault(this.markFirst);
|
|
2564
|
+
if (this.isOpen()) {
|
|
2565
|
+
this.itemsList.markSelectedOrDefault(this.markFirst());
|
|
2575
2566
|
}
|
|
2576
2567
|
}
|
|
2577
2568
|
this.searchEvent.emit({ term, items: this.itemsList.filteredItems.map((x) => x.value) });
|
|
@@ -2591,7 +2582,7 @@ class NgSelectComponent {
|
|
|
2591
2582
|
onInputBlur($event) {
|
|
2592
2583
|
this.element.classList.remove('ng-select-focused');
|
|
2593
2584
|
this.blurEvent.emit($event);
|
|
2594
|
-
if (!this.isOpen && !this.disabled) {
|
|
2585
|
+
if (!this.isOpen() && !this.disabled) {
|
|
2595
2586
|
this._onTouched();
|
|
2596
2587
|
}
|
|
2597
2588
|
if (this._editableSearchTerm) {
|
|
@@ -2616,61 +2607,57 @@ class NgSelectComponent {
|
|
|
2616
2607
|
}
|
|
2617
2608
|
_setItems(items) {
|
|
2618
2609
|
const firstItem = items[0];
|
|
2619
|
-
this.bindLabel
|
|
2620
|
-
this._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel === this._defaultLabel;
|
|
2610
|
+
this.bindLabel.set(this.bindLabel() || this._defaultLabel);
|
|
2611
|
+
this._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel() === this._defaultLabel;
|
|
2621
2612
|
this.itemsList.setItems(items);
|
|
2622
2613
|
if (items.length > 0 && this.hasValue) {
|
|
2623
2614
|
this.itemsList.mapSelectedItems();
|
|
2624
2615
|
}
|
|
2625
|
-
if (this.isOpen && isDefined(this.searchTerm) && !this._isTypeahead) {
|
|
2616
|
+
if (this.isOpen() && isDefined(this.searchTerm) && !this._isTypeahead) {
|
|
2626
2617
|
this.itemsList.filter(this.searchTerm);
|
|
2627
2618
|
}
|
|
2628
|
-
if (this._isTypeahead || this.isOpen) {
|
|
2629
|
-
this.itemsList.markSelectedOrDefault(this.markFirst);
|
|
2619
|
+
if (this._isTypeahead || this.isOpen()) {
|
|
2620
|
+
this.itemsList.markSelectedOrDefault(this.markFirst());
|
|
2630
2621
|
}
|
|
2631
2622
|
}
|
|
2632
2623
|
_setItemsFromNgOptions() {
|
|
2633
2624
|
const mapNgOptions = (options) => {
|
|
2634
|
-
|
|
2635
|
-
$ngOptionValue: option.value,
|
|
2625
|
+
const items = options.map((option) => ({
|
|
2626
|
+
$ngOptionValue: option.value(),
|
|
2636
2627
|
$ngOptionLabel: option.elementRef.nativeElement.innerHTML,
|
|
2637
|
-
disabled: option.disabled,
|
|
2638
|
-
}));
|
|
2639
|
-
this.
|
|
2628
|
+
disabled: option.disabled(),
|
|
2629
|
+
})) ?? [];
|
|
2630
|
+
this.items.set(items);
|
|
2631
|
+
this.itemsList.setItems(items);
|
|
2640
2632
|
if (this.hasValue) {
|
|
2641
2633
|
this.itemsList.mapSelectedItems();
|
|
2642
2634
|
}
|
|
2643
|
-
this.detectChanges();
|
|
2644
2635
|
};
|
|
2645
|
-
const handleOptionChange = () => {
|
|
2646
|
-
|
|
2647
|
-
merge(...this.ngOptions.map((option) => option.stateChange$))
|
|
2648
|
-
.pipe(takeUntil(changedOrDestroyed))
|
|
2649
|
-
.subscribe((option) => {
|
|
2636
|
+
const handleOptionChange = (options) => {
|
|
2637
|
+
return merge(...options.map((option) => option.stateChange$)).pipe(tap((option) => {
|
|
2650
2638
|
const item = this.itemsList.findItem(option.value);
|
|
2651
2639
|
item.disabled = option.disabled;
|
|
2652
2640
|
item.label = option.label || item.label;
|
|
2653
|
-
|
|
2654
|
-
});
|
|
2641
|
+
}));
|
|
2655
2642
|
};
|
|
2656
|
-
this.
|
|
2657
|
-
this.bindLabel
|
|
2643
|
+
this.ngOptionsObservable.pipe(startWith(this.ngOptions()), takeUntil(this._destroy$), tap((options) => {
|
|
2644
|
+
this.bindLabel.set(this._defaultLabel);
|
|
2658
2645
|
mapNgOptions(options);
|
|
2659
|
-
|
|
2660
|
-
});
|
|
2646
|
+
this._cd.detectChanges();
|
|
2647
|
+
}), switchMap((options) => handleOptionChange(options))).subscribe();
|
|
2661
2648
|
}
|
|
2662
2649
|
_isValidWriteValue(value) {
|
|
2663
|
-
if (!isDefined(value) || (this.multiple && value === '') || (Array.isArray(value) && value.length === 0)) {
|
|
2650
|
+
if (!isDefined(value) || (this.multiple() && value === '') || (Array.isArray(value) && value.length === 0)) {
|
|
2664
2651
|
return false;
|
|
2665
2652
|
}
|
|
2666
2653
|
const validateBinding = (item) => {
|
|
2667
|
-
if (!isDefined(this.compareWith) && isObject(item) && this.bindValue) {
|
|
2654
|
+
if (!isDefined(this.compareWith()) && isObject(item) && this.bindValue()) {
|
|
2668
2655
|
this._console.warn(`Setting object(${JSON.stringify(item)}) as your model with bindValue is not allowed unless [compareWith] is used.`);
|
|
2669
2656
|
return false;
|
|
2670
2657
|
}
|
|
2671
2658
|
return true;
|
|
2672
2659
|
};
|
|
2673
|
-
if (this.multiple) {
|
|
2660
|
+
if (this.multiple()) {
|
|
2674
2661
|
if (!Array.isArray(value)) {
|
|
2675
2662
|
this._console.warn('Multiple select ngModel should be array.');
|
|
2676
2663
|
return false;
|
|
@@ -2692,20 +2679,20 @@ class NgSelectComponent {
|
|
|
2692
2679
|
}
|
|
2693
2680
|
else {
|
|
2694
2681
|
const isValObject = isObject(val);
|
|
2695
|
-
const isPrimitive = !isValObject && !this.bindValue;
|
|
2682
|
+
const isPrimitive = !isValObject && !this.bindValue();
|
|
2696
2683
|
if (isValObject || isPrimitive) {
|
|
2697
2684
|
this.itemsList.select(this.itemsList.mapItem(val, null));
|
|
2698
2685
|
}
|
|
2699
|
-
else if (this.bindValue) {
|
|
2686
|
+
else if (this.bindValue()) {
|
|
2700
2687
|
item = {
|
|
2701
|
-
[this.bindLabel]: null,
|
|
2702
|
-
[this.bindValue]: val,
|
|
2688
|
+
[this.bindLabel()]: null,
|
|
2689
|
+
[this.bindValue()]: val,
|
|
2703
2690
|
};
|
|
2704
2691
|
this.itemsList.select(this.itemsList.mapItem(item, null));
|
|
2705
2692
|
}
|
|
2706
2693
|
}
|
|
2707
2694
|
};
|
|
2708
|
-
if (this.multiple) {
|
|
2695
|
+
if (this.multiple()) {
|
|
2709
2696
|
ngModel.forEach((item) => select(item));
|
|
2710
2697
|
}
|
|
2711
2698
|
else {
|
|
@@ -2713,7 +2700,7 @@ class NgSelectComponent {
|
|
|
2713
2700
|
}
|
|
2714
2701
|
}
|
|
2715
2702
|
_handleKeyPresses() {
|
|
2716
|
-
if (this.searchable) {
|
|
2703
|
+
if (this.searchable()) {
|
|
2717
2704
|
return;
|
|
2718
2705
|
}
|
|
2719
2706
|
this._keyPress$
|
|
@@ -2721,7 +2708,7 @@ class NgSelectComponent {
|
|
|
2721
2708
|
.subscribe((term) => {
|
|
2722
2709
|
const item = this.itemsList.findByLabel(term);
|
|
2723
2710
|
if (item) {
|
|
2724
|
-
if (this.isOpen) {
|
|
2711
|
+
if (this.isOpen()) {
|
|
2725
2712
|
this.itemsList.markItem(item);
|
|
2726
2713
|
this._scrollToMarked();
|
|
2727
2714
|
this._cd.markForCheck();
|
|
@@ -2734,14 +2721,14 @@ class NgSelectComponent {
|
|
|
2734
2721
|
});
|
|
2735
2722
|
}
|
|
2736
2723
|
_setInputAttributes() {
|
|
2737
|
-
const input = this.searchInput.nativeElement;
|
|
2724
|
+
const input = this.searchInput().nativeElement;
|
|
2738
2725
|
const attributes = {
|
|
2739
2726
|
type: 'text',
|
|
2740
2727
|
autocorrect: 'off',
|
|
2741
2728
|
autocapitalize: 'off',
|
|
2742
2729
|
autocomplete: 'off',
|
|
2743
2730
|
'aria-controls': this.dropdownId,
|
|
2744
|
-
...this.inputAttrs,
|
|
2731
|
+
...this.inputAttrs(),
|
|
2745
2732
|
};
|
|
2746
2733
|
for (const key of Object.keys(attributes)) {
|
|
2747
2734
|
input.setAttribute(key, attributes[key]);
|
|
@@ -2753,14 +2740,14 @@ class NgSelectComponent {
|
|
|
2753
2740
|
_updateNgModel() {
|
|
2754
2741
|
const model = [];
|
|
2755
2742
|
for (const item of this.selectedItems) {
|
|
2756
|
-
if (this.bindValue) {
|
|
2743
|
+
if (this.bindValue()) {
|
|
2757
2744
|
let value = null;
|
|
2758
2745
|
if (item.children) {
|
|
2759
|
-
const groupKey = this.groupValue ? this.bindValue : this.groupBy;
|
|
2760
|
-
value = item.value[groupKey || this.groupBy];
|
|
2746
|
+
const groupKey = this.groupValue() ? this.bindValue() : this.groupBy();
|
|
2747
|
+
value = item.value[groupKey || this.groupBy()];
|
|
2761
2748
|
}
|
|
2762
2749
|
else {
|
|
2763
|
-
value = this.itemsList.resolveNested(item.value, this.bindValue);
|
|
2750
|
+
value = this.itemsList.resolveNested(item.value, this.bindValue());
|
|
2764
2751
|
}
|
|
2765
2752
|
model.push(value);
|
|
2766
2753
|
}
|
|
@@ -2769,7 +2756,7 @@ class NgSelectComponent {
|
|
|
2769
2756
|
}
|
|
2770
2757
|
}
|
|
2771
2758
|
const selected = this.selectedItems.map((x) => x.value);
|
|
2772
|
-
if (this.multiple) {
|
|
2759
|
+
if (this.multiple()) {
|
|
2773
2760
|
this._onChange(model);
|
|
2774
2761
|
this.changeEvent.emit(selected);
|
|
2775
2762
|
}
|
|
@@ -2789,39 +2776,40 @@ class NgSelectComponent {
|
|
|
2789
2776
|
_changeSearch(searchTerm) {
|
|
2790
2777
|
this.searchTerm = searchTerm;
|
|
2791
2778
|
if (this._isTypeahead) {
|
|
2792
|
-
this.typeahead.next(searchTerm);
|
|
2779
|
+
this.typeahead().next(searchTerm);
|
|
2793
2780
|
}
|
|
2794
2781
|
}
|
|
2795
2782
|
_scrollToMarked() {
|
|
2796
|
-
if (!this.isOpen || !this.dropdownPanel) {
|
|
2783
|
+
if (!this.isOpen() || !this.dropdownPanel()) {
|
|
2797
2784
|
return;
|
|
2798
2785
|
}
|
|
2799
|
-
this.dropdownPanel.scrollTo(this.itemsList.markedItem);
|
|
2786
|
+
this.dropdownPanel().scrollTo(this.itemsList.markedItem);
|
|
2800
2787
|
}
|
|
2801
2788
|
_scrollToTag() {
|
|
2802
|
-
if (!this.isOpen || !this.dropdownPanel) {
|
|
2789
|
+
if (!this.isOpen() || !this.dropdownPanel()) {
|
|
2803
2790
|
return;
|
|
2804
2791
|
}
|
|
2805
|
-
this.dropdownPanel.scrollToTag();
|
|
2792
|
+
this.dropdownPanel().scrollToTag();
|
|
2806
2793
|
}
|
|
2807
2794
|
_onSelectionChanged() {
|
|
2808
|
-
|
|
2795
|
+
const appendTo = this.appendTo() ?? this.config.appendTo;
|
|
2796
|
+
if (this.isOpen() && this.deselectOnClickValue() && appendTo) {
|
|
2809
2797
|
// Make sure items are rendered.
|
|
2810
2798
|
this._cd.detectChanges();
|
|
2811
|
-
this.dropdownPanel.adjustPosition();
|
|
2799
|
+
this.dropdownPanel().adjustPosition();
|
|
2812
2800
|
}
|
|
2813
2801
|
}
|
|
2814
2802
|
_handleTab($event) {
|
|
2815
|
-
if (this.isOpen === false) {
|
|
2803
|
+
if (this.isOpen() === false) {
|
|
2816
2804
|
if (this.showClear() && !$event.shiftKey && this.tabFocusOnClear()) {
|
|
2817
2805
|
this.focusOnClear();
|
|
2818
2806
|
$event.preventDefault();
|
|
2819
2807
|
}
|
|
2820
|
-
else if (!this.addTag) {
|
|
2808
|
+
else if (!this.addTag()) {
|
|
2821
2809
|
return;
|
|
2822
2810
|
}
|
|
2823
2811
|
}
|
|
2824
|
-
if (this.selectOnTab) {
|
|
2812
|
+
if (this.selectOnTab()) {
|
|
2825
2813
|
if (this.itemsList.markedItem) {
|
|
2826
2814
|
this.toggleItem(this.itemsList.markedItem);
|
|
2827
2815
|
$event.preventDefault();
|
|
@@ -2839,7 +2827,8 @@ class NgSelectComponent {
|
|
|
2839
2827
|
}
|
|
2840
2828
|
}
|
|
2841
2829
|
_handleEnter($event) {
|
|
2842
|
-
|
|
2830
|
+
const openOnEnter = this.openOnEnter() ?? this.config.openOnEnter;
|
|
2831
|
+
if (this.isOpen() || this._manualOpen) {
|
|
2843
2832
|
if (this.itemsList.markedItem) {
|
|
2844
2833
|
this.toggleItem(this.itemsList.markedItem);
|
|
2845
2834
|
}
|
|
@@ -2847,7 +2836,7 @@ class NgSelectComponent {
|
|
|
2847
2836
|
this.selectTag();
|
|
2848
2837
|
}
|
|
2849
2838
|
}
|
|
2850
|
-
else if (
|
|
2839
|
+
else if (openOnEnter) {
|
|
2851
2840
|
this.open();
|
|
2852
2841
|
}
|
|
2853
2842
|
else {
|
|
@@ -2856,7 +2845,7 @@ class NgSelectComponent {
|
|
|
2856
2845
|
$event.preventDefault();
|
|
2857
2846
|
}
|
|
2858
2847
|
_handleSpace($event) {
|
|
2859
|
-
if (this.isOpen || this._manualOpen) {
|
|
2848
|
+
if (this.isOpen() || this._manualOpen) {
|
|
2860
2849
|
return;
|
|
2861
2850
|
}
|
|
2862
2851
|
this.open();
|
|
@@ -2875,7 +2864,7 @@ class NgSelectComponent {
|
|
|
2875
2864
|
$event.preventDefault();
|
|
2876
2865
|
}
|
|
2877
2866
|
_handleArrowUp($event) {
|
|
2878
|
-
if (!this.isOpen) {
|
|
2867
|
+
if (!this.isOpen()) {
|
|
2879
2868
|
return;
|
|
2880
2869
|
}
|
|
2881
2870
|
if (this._nextItemIsTag(-1)) {
|
|
@@ -2890,13 +2879,13 @@ class NgSelectComponent {
|
|
|
2890
2879
|
}
|
|
2891
2880
|
_nextItemIsTag(nextStep) {
|
|
2892
2881
|
const nextIndex = this.itemsList.markedIndex + nextStep;
|
|
2893
|
-
return (this.addTag && this.searchTerm && this.itemsList.markedItem && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length));
|
|
2882
|
+
return (this.addTag() && this.searchTerm && this.itemsList.markedItem && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length));
|
|
2894
2883
|
}
|
|
2895
2884
|
_handleBackspace() {
|
|
2896
|
-
if (this.searchTerm || !this.clearable || !this.clearOnBackspace || !this.hasValue) {
|
|
2885
|
+
if (this.searchTerm || !this.clearable() || !this.clearOnBackspace() || !this.hasValue) {
|
|
2897
2886
|
return;
|
|
2898
2887
|
}
|
|
2899
|
-
if (this.multiple) {
|
|
2888
|
+
if (this.multiple()) {
|
|
2900
2889
|
this.unselect(this.itemsList.lastSelectedItem);
|
|
2901
2890
|
}
|
|
2902
2891
|
else {
|
|
@@ -2904,19 +2893,9 @@ class NgSelectComponent {
|
|
|
2904
2893
|
}
|
|
2905
2894
|
}
|
|
2906
2895
|
_mergeGlobalConfig(config) {
|
|
2907
|
-
this.
|
|
2908
|
-
this.
|
|
2909
|
-
this.
|
|
2910
|
-
this.typeToSearchText = this.typeToSearchText || config.typeToSearchText;
|
|
2911
|
-
this.addTagText = this.addTagText || config.addTagText;
|
|
2912
|
-
this.loadingText = this.loadingText || config.loadingText;
|
|
2913
|
-
this.clearAllText = this.clearAllText || config.clearAllText;
|
|
2914
|
-
this.virtualScroll = this.getVirtualScroll(config);
|
|
2915
|
-
this.openOnEnter = isDefined(this.openOnEnter) ? this.openOnEnter : config.openOnEnter;
|
|
2916
|
-
this.appendTo = this.appendTo || config.appendTo;
|
|
2917
|
-
this.bindValue = this.bindValue || config.bindValue;
|
|
2918
|
-
this.bindLabel = this.bindLabel || config.bindLabel;
|
|
2919
|
-
this.appearance = this.appearance || config.appearance;
|
|
2896
|
+
this.bindValue.set(this.bindValue() || config.bindValue);
|
|
2897
|
+
this.bindLabel.set(this.bindLabel() || config.bindLabel);
|
|
2898
|
+
this.appearance.set(this.appearance() || config.appearance);
|
|
2920
2899
|
this._setTabFocusOnClear();
|
|
2921
2900
|
}
|
|
2922
2901
|
/**
|
|
@@ -2927,7 +2906,7 @@ class NgSelectComponent {
|
|
|
2927
2906
|
* @returns `true` if virtual scroll is enabled, `false` otherwise
|
|
2928
2907
|
*/
|
|
2929
2908
|
getVirtualScroll(config) {
|
|
2930
|
-
return isDefined(this.virtualScroll) ? this.virtualScroll : this.isVirtualScrollDisabled(config);
|
|
2909
|
+
return isDefined(this.virtualScroll) ? this.virtualScroll() : this.isVirtualScrollDisabled(config);
|
|
2931
2910
|
}
|
|
2932
2911
|
/**
|
|
2933
2912
|
* Gets disableVirtualScroll value from input or from config
|
|
@@ -2939,15 +2918,15 @@ class NgSelectComponent {
|
|
|
2939
2918
|
isVirtualScrollDisabled(config) {
|
|
2940
2919
|
return isDefined(config.disableVirtualScroll) ? !config.disableVirtualScroll : false;
|
|
2941
2920
|
}
|
|
2942
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectComponent, deps: [
|
|
2943
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: NgSelectComponent, isStandalone: true, selector: "ng-select", inputs: {
|
|
2921
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2922
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: NgSelectComponent, isStandalone: true, selector: "ng-select", inputs: { bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelDropdown: { classPropertyName: "ariaLabelDropdown", publicName: "ariaLabelDropdown", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, markFirst: { classPropertyName: "markFirst", publicName: "markFirst", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, fixedPlaceholder: { classPropertyName: "fixedPlaceholder", publicName: "fixedPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, notFoundText: { classPropertyName: "notFoundText", publicName: "notFoundText", isSignal: true, isRequired: false, transformFunction: null }, typeToSearchText: { classPropertyName: "typeToSearchText", publicName: "typeToSearchText", isSignal: true, isRequired: false, transformFunction: null }, preventToggleOnRightClick: { classPropertyName: "preventToggleOnRightClick", publicName: "preventToggleOnRightClick", isSignal: true, isRequired: false, transformFunction: null }, addTagText: { classPropertyName: "addTagText", publicName: "addTagText", isSignal: true, isRequired: false, transformFunction: null }, loadingText: { classPropertyName: "loadingText", publicName: "loadingText", isSignal: true, isRequired: false, transformFunction: null }, clearAllText: { classPropertyName: "clearAllText", publicName: "clearAllText", isSignal: true, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, hideSelected: { classPropertyName: "hideSelected", publicName: "hideSelected", isSignal: true, isRequired: false, transformFunction: null }, selectOnTab: { classPropertyName: "selectOnTab", publicName: "selectOnTab", isSignal: true, isRequired: false, transformFunction: null }, openOnEnter: { classPropertyName: "openOnEnter", publicName: "openOnEnter", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, groupBy: { classPropertyName: "groupBy", publicName: "groupBy", isSignal: true, isRequired: false, transformFunction: null }, groupValue: { classPropertyName: "groupValue", publicName: "groupValue", isSignal: true, isRequired: false, transformFunction: null }, bufferAmount: { classPropertyName: "bufferAmount", publicName: "bufferAmount", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, selectableGroup: { classPropertyName: "selectableGroup", publicName: "selectableGroup", isSignal: true, isRequired: false, transformFunction: null }, tabFocusOnClearButton: { classPropertyName: "tabFocusOnClearButton", publicName: "tabFocusOnClearButton", isSignal: true, isRequired: false, transformFunction: null }, selectableGroupAsModel: { classPropertyName: "selectableGroupAsModel", publicName: "selectableGroupAsModel", isSignal: true, isRequired: false, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null }, trackByFn: { classPropertyName: "trackByFn", publicName: "trackByFn", isSignal: true, isRequired: false, transformFunction: null }, clearOnBackspace: { classPropertyName: "clearOnBackspace", publicName: "clearOnBackspace", isSignal: true, isRequired: false, transformFunction: null }, labelForId: { classPropertyName: "labelForId", publicName: "labelForId", isSignal: true, isRequired: false, transformFunction: null }, inputAttrs: { classPropertyName: "inputAttrs", publicName: "inputAttrs", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, searchWhileComposing: { classPropertyName: "searchWhileComposing", publicName: "searchWhileComposing", isSignal: true, isRequired: false, transformFunction: null }, minTermLength: { classPropertyName: "minTermLength", publicName: "minTermLength", isSignal: true, isRequired: false, transformFunction: null }, editableSearchTerm: { classPropertyName: "editableSearchTerm", publicName: "editableSearchTerm", isSignal: true, isRequired: false, transformFunction: null }, ngClass: { classPropertyName: "ngClass", publicName: "ngClass", isSignal: true, isRequired: false, transformFunction: null }, typeahead: { classPropertyName: "typeahead", publicName: "typeahead", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, addTag: { classPropertyName: "addTag", publicName: "addTag", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, clearSearchOnAdd: { classPropertyName: "clearSearchOnAdd", publicName: "clearSearchOnAdd", isSignal: true, isRequired: false, transformFunction: null }, deselectOnClick: { classPropertyName: "deselectOnClick", publicName: "deselectOnClick", isSignal: true, isRequired: false, transformFunction: null }, keyDownFn: { classPropertyName: "keyDownFn", publicName: "keyDownFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { bindLabel: "bindLabelChange", bindValue: "bindValueChange", appearance: "appearanceChange", isOpen: "isOpenChange", blurEvent: "blur", focusEvent: "focus", changeEvent: "change", openEvent: "open", closeEvent: "close", searchEvent: "search", clearEvent: "clear", addEvent: "add", removeEvent: "remove", scroll: "scroll", scrollToEnd: "scrollToEnd", items: "itemsChange" }, host: { listeners: { "keydown": "handleKeyDown($event)" }, properties: { "class.ng-select-typeahead": "this.typeahead", "class.ng-select-multiple": "this.multiple", "class.ng-select-taggable": "this.addTag", "class.ng-select-searchable": "this.searchable", "class.ng-select-clearable": "this.clearable", "class.ng-select-opened": "this.isOpen", "class.ng-select": "this.useDefaultClass", "class.ng-select-filtered": "this.filtered", "class.ng-select-single": "this.single", "class.ng-select-disabled": "this.disabled" } }, providers: [
|
|
2944
2923
|
{
|
|
2945
2924
|
provide: NG_VALUE_ACCESSOR,
|
|
2946
2925
|
useExisting: forwardRef(() => NgSelectComponent),
|
|
2947
2926
|
multi: true,
|
|
2948
2927
|
},
|
|
2949
2928
|
NgDropdownPanelService,
|
|
2950
|
-
], queries: [{ propertyName: "optionTemplate", first: true, predicate: NgOptionTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "optgroupTemplate", first: true, predicate: NgOptgroupTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "labelTemplate", first: true, predicate: NgLabelTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "multiLabelTemplate", first: true, predicate: NgMultiLabelTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "headerTemplate", first: true, predicate: NgHeaderTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "footerTemplate", first: true, predicate: NgFooterTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "notFoundTemplate", first: true, predicate: NgNotFoundTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "placeholderTemplate", first: true, predicate: NgPlaceholderTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "typeToSearchTemplate", first: true, predicate: NgTypeToSearchTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "loadingTextTemplate", first: true, predicate: NgLoadingTextTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "tagTemplate", first: true, predicate: NgTagTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "loadingSpinnerTemplate", first: true, predicate: NgLoadingSpinnerTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "clearButtonTemplate", first: true, predicate: NgClearButtonTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "ngOptions", predicate: NgOptionComponent, descendants: true }], viewQueries: [{ propertyName: "dropdownPanel", first: true, predicate: i0.forwardRef(() => NgDropdownPanelComponent), descendants: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, static: true }, { propertyName: "clearButton", first: true, predicate: ["clearButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n\t(mousedown)=\"handleMousedown($event)\"\n\t[class.ng-appearance-outline]=\"appearance === 'outline'\"\n\t[class.ng-has-value]=\"hasValue\"\n\tclass=\"ng-select-container\">\n\t<div class=\"ng-value-container\">\n\t\t@if ((selectedItems.length === 0 && !searchTerm) || fixedPlaceholder) {\n\t\t\t<ng-template #defaultPlaceholderTemplate>\n\t\t\t\t<div class=\"ng-placeholder\">{{ placeholder }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"> </ng-template>\n\t\t}\n\n\t\t@if ((!multiLabelTemplate || !multiple) && selectedItems.length > 0) {\n\t\t\t@for (item of selectedItems; track trackByOption($index, item)) {\n\t\t\t\t<div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n\t\t\t\t\t<ng-template #defaultLabelTemplate>\n\t\t\t\t\t\t<span class=\"ng-value-icon left\" (click)=\"unselect(item)\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t\t\t\t<span class=\"ng-value-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate || defaultLabelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\n\t\t@if (multiple && multiLabelTemplate && selectedValues.length > 0) {\n\t\t\t<ng-template [ngTemplateOutlet]=\"multiLabelTemplate\" [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\">\n\t\t\t</ng-template>\n\t\t}\n\n\t\t<div class=\"ng-input\">\n\t\t\t<input\n\t\t\t\t#searchInput\n\t\t\t\t(blur)=\"onInputBlur($event)\"\n\t\t\t\t(change)=\"$event.stopPropagation()\"\n\t\t\t\t(compositionend)=\"onCompositionEnd(searchInput.value)\"\n\t\t\t\t(compositionstart)=\"onCompositionStart()\"\n\t\t\t\t(focus)=\"onInputFocus($event)\"\n\t\t\t\t(input)=\"filter(searchInput.value)\"\n\t\t\t\t[attr.aria-activedescendant]=\"isOpen ? itemsList?.markedItem?.htmlId : null\"\n\t\t\t\t[attr.aria-controls]=\"isOpen ? dropdownId : null\"\n\t\t\t\t[attr.aria-expanded]=\"isOpen\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t[attr.id]=\"labelForId\"\n\t\t\t\t[attr.tabindex]=\"tabIndex\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[readOnly]=\"!searchable || itemsList.maxItemsSelected\"\n\t\t\t\t[value]=\"searchTerm ?? ''\"\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\trole=\"combobox\" />\n\t\t</div>\n\t</div>\n\n\t@if (loading) {\n\t\t<ng-template #defaultLoadingSpinnerTemplate>\n\t\t\t<div class=\"ng-spinner-loader\"></div>\n\t\t</ng-template>\n\t\t<ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate || defaultLoadingSpinnerTemplate\"></ng-template>\n\t}\n\n\t@if (showClear()) {\n\t\t@if (clearButtonTemplate) {\n\t\t\t<ng-container [ngTemplateOutlet]=\"clearButtonTemplate\"></ng-container>\n\t\t} @else {\n\t\t\t<span\n\t\t\t\tclass=\"ng-clear-wrapper\"\n\t\t\t\trole=\"button\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[attr.tabindex]=\"tabFocusOnClear() ? 0 : -1\"\n\t\t\t\ttitle=\"{{ clearAllText }}\"\n\t\t\t\t#clearButton>\n\t\t\t\t<span class=\"ng-clear\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t</span>\n\t\t}\n\t}\n\n\t<span class=\"ng-arrow-wrapper\">\n\t\t<span class=\"ng-arrow\"></span>\n\t</span>\n</div>\n\n@if (isOpen) {\n\t<ng-dropdown-panel\n\t\tclass=\"ng-dropdown-panel\"\n\t\t[virtualScroll]=\"virtualScroll\"\n\t\t[bufferAmount]=\"bufferAmount\"\n\t\t[appendTo]=\"appendTo\"\n\t\t[position]=\"dropdownPosition\"\n\t\t[headerTemplate]=\"headerTemplate\"\n\t\t[footerTemplate]=\"footerTemplate\"\n\t\t[filterValue]=\"searchTerm\"\n\t\t[items]=\"itemsList.filteredItems\"\n\t\t[markedItem]=\"itemsList.markedItem\"\n\t\t(update)=\"viewPortItems = $event\"\n\t\t(scroll)=\"scroll.emit($event)\"\n\t\t(scrollToEnd)=\"scrollToEnd.emit($event)\"\n\t\t(outsideClick)=\"close()\"\n\t\t[class.ng-select-multiple]=\"multiple\"\n\t\t[ngClass]=\"appendTo ? (ngClass ? ngClass : classes) : null\"\n\t\t[id]=\"dropdownId\"\n\t\t[ariaLabelDropdown]=\"ariaLabelDropdown\">\n\t\t<ng-container>\n\t\t\t@for (item of viewPortItems; track trackByOption($index, item)) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[attr.role]=\"item.children ? 'group' : 'option'\"\n\t\t\t\t\t(click)=\"toggleItem(item)\"\n\t\t\t\t\t(mouseover)=\"onItemHover(item)\"\n\t\t\t\t\t[class.ng-option-disabled]=\"item.disabled\"\n\t\t\t\t\t[class.ng-option-selected]=\"item.selected\"\n\t\t\t\t\t[class.ng-optgroup]=\"item.children\"\n\t\t\t\t\t[class.ng-option]=\"!item.children\"\n\t\t\t\t\t[class.ng-option-child]=\"!!item.parent\"\n\t\t\t\t\t[class.ng-option-marked]=\"item === itemsList.markedItem\"\n\t\t\t\t\t[attr.aria-selected]=\"item.selected\"\n\t\t\t\t\t[attr.id]=\"item?.htmlId\"\n\t\t\t\t\t[attr.aria-setsize]=\"itemsList.filteredItems.length\"\n\t\t\t\t\t[attr.aria-posinset]=\"item.index + 1\">\n\t\t\t\t\t<ng-template #defaultOptionTemplate>\n\t\t\t\t\t\t<span class=\"ng-option-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\titem.children ? optgroupTemplate || defaultOptionTemplate : optionTemplate || defaultOptionTemplate\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, item$: item, index: item.index, searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (showAddTag) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[class.ng-option-marked]=\"!itemsList.markedItem\"\n\t\t\t\t\t(mouseover)=\"itemsList.unmarkItem()\"\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t(click)=\"selectTag()\">\n\t\t\t\t\t<ng-template #defaultTagTemplate>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t><span class=\"ng-tag-label\">{{ addTagText }}</span\n\t\t\t\t\t\t\t>\"{{ searchTerm }}\"</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"tagTemplate || defaultTagTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (showNoItemsFound()) {\n\t\t\t<ng-template #defaultNotFoundTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ notFoundText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"notFoundTemplate || defaultNotFoundTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t\t@if (showTypeToSearch()) {\n\t\t\t<ng-template #defaultTypeToSearchTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ typeToSearchText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"typeToSearchTemplate || defaultTypeToSearchTemplate\"></ng-template>\n\t\t}\n\t\t@if (loading && itemsList.filteredItems.length === 0) {\n\t\t\t<ng-template #defaultLoadingTextTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ loadingText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"loadingTextTemplate || defaultLoadingTextTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t</ng-dropdown-panel>\n}\n\n<!-- Always present aria-live region -->\n<div aria-atomic=\"true\" aria-live=\"polite\" class=\"ng-visually-hidden\" role=\"status\">\n\t@if (isOpen && showNoItemsFound()) {\n\t\t{{ notFoundText }}\n\t}\n</div>\n", styles: ["@charset \"UTF-8\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{position:relative;z-index:1001;-webkit-user-select:text;user-select:text;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:unset;user-select:unset;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\"\\200b\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}.ng-visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgItemLabelDirective, selector: "[ngItemLabel]", inputs: ["ngItemLabel", "escape"] }, { kind: "component", type: NgDropdownPanelComponent, selector: "ng-dropdown-panel", inputs: ["items", "markedItem", "position", "appendTo", "bufferAmount", "virtualScroll", "headerTemplate", "footerTemplate", "filterValue", "ariaLabelDropdown"], outputs: ["update", "scroll", "scrollToEnd", "outsideClick"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2929
|
+
], queries: [{ propertyName: "optionTemplate", first: true, predicate: NgOptionTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "optgroupTemplate", first: true, predicate: NgOptgroupTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "labelTemplate", first: true, predicate: NgLabelTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "multiLabelTemplate", first: true, predicate: NgMultiLabelTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: NgHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: NgFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "notFoundTemplate", first: true, predicate: NgNotFoundTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: NgPlaceholderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "typeToSearchTemplate", first: true, predicate: NgTypeToSearchTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "loadingTextTemplate", first: true, predicate: NgLoadingTextTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "tagTemplate", first: true, predicate: NgTagTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "loadingSpinnerTemplate", first: true, predicate: NgLoadingSpinnerTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "clearButtonTemplate", first: true, predicate: NgClearButtonTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "ngOptions", predicate: NgOptionComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownPanel", first: true, predicate: i0.forwardRef(() => NgDropdownPanelComponent), descendants: true, isSignal: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }, { propertyName: "clearButton", first: true, predicate: ["clearButton"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\n\t(mousedown)=\"handleMousedown($event)\"\n\t[class.ng-appearance-outline]=\"appearance() === 'outline'\"\n\t[class.ng-has-value]=\"hasValue\"\n\tclass=\"ng-select-container\">\n\t<div class=\"ng-value-container\">\n\t\t@if ((selectedItems.length === 0 && !searchTerm) || (fixedPlaceholder() ?? config.fixedPlaceholder )) {\n\t\t\t<ng-template #defaultPlaceholderTemplate>\n\t\t\t\t<div class=\"ng-placeholder\">{{ placeholder() ?? config.placeholder }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"placeholderTemplate() || defaultPlaceholderTemplate\"> </ng-template>\n\t\t}\n\n\t\t@if ((!multiLabelTemplate() || !multiple()) && selectedItems.length > 0) {\n\t\t\t@for (item of selectedItems; track trackByOption($index, item)) {\n\t\t\t\t<div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n\t\t\t\t\t<ng-template #defaultLabelTemplate>\n\t\t\t\t\t\t<span class=\"ng-value-icon left\" (click)=\"unselect(item)\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t\t\t\t<span class=\"ng-value-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate() || defaultLabelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\n\t\t@if (multiple() && multiLabelTemplate() && selectedValues.length > 0) {\n\t\t\t<ng-template [ngTemplateOutlet]=\"multiLabelTemplate()\" [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\">\n\t\t\t</ng-template>\n\t\t}\n\n\t\t<div class=\"ng-input\">\n\t\t\t<input\n\t\t\t\t#searchInput\n\t\t\t\t(blur)=\"onInputBlur($event)\"\n\t\t\t\t(change)=\"$event.stopPropagation()\"\n\t\t\t\t(compositionend)=\"onCompositionEnd(searchInput.value)\"\n\t\t\t\t(compositionstart)=\"onCompositionStart()\"\n\t\t\t\t(focus)=\"onInputFocus($event)\"\n\t\t\t\t(input)=\"filter(searchInput.value)\"\n\t\t\t\t[attr.aria-activedescendant]=\"isOpen() ? itemsList?.markedItem?.htmlId : null\"\n\t\t\t\t[attr.aria-controls]=\"isOpen() ? dropdownId : null\"\n\t\t\t\t[attr.aria-expanded]=\"isOpen()\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t\t[attr.id]=\"labelForId()\"\n\t\t\t\t[attr.tabindex]=\"tabIndex()\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[readOnly]=\"!searchable() || itemsList.maxItemsSelected\"\n\t\t\t\t[value]=\"searchTerm ?? ''\"\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\trole=\"combobox\" />\n\t\t</div>\n\t</div>\n\n\t@if (loading()) {\n\t\t<ng-template #defaultLoadingSpinnerTemplate>\n\t\t\t<div class=\"ng-spinner-loader\"></div>\n\t\t</ng-template>\n\t\t<ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate() || defaultLoadingSpinnerTemplate\"></ng-template>\n\t}\n\n\t@if (showClear()) {\n\t\t@if (clearButtonTemplate()) {\n\t\t\t<ng-container [ngTemplateOutlet]=\"clearButtonTemplate()\"></ng-container>\n\t\t} @else {\n\t\t\t<span\n\t\t\t\tclass=\"ng-clear-wrapper\"\n\t\t\t\trole=\"button\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[attr.tabindex]=\"tabFocusOnClear() ? 0 : -1\"\n\t\t\t\ttitle=\"{{ clearAllText() || config.clearAllText }}\"\n\t\t\t\t#clearButton>\n\t\t\t\t<span class=\"ng-clear\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t</span>\n\t\t}\n\t}\n\n\t<span class=\"ng-arrow-wrapper\">\n\t\t<span class=\"ng-arrow\"></span>\n\t</span>\n</div>\n\n@if (isOpen()) {\n\t@let appendToValue = appendTo() || config.appendTo;\n\t<ng-dropdown-panel\n\t\tclass=\"ng-dropdown-panel\"\n\t\t[virtualScroll]=\"virtualScroll() ?? !config.disableVirtualScroll ?? false\"\n\t\t[bufferAmount]=\"bufferAmount()\"\n\t\t[appendTo]=\"appendToValue\"\n\t\t[position]=\"dropdownPosition()\"\n\t\t[headerTemplate]=\"headerTemplate()\"\n\t\t[footerTemplate]=\"footerTemplate()\"\n\t\t[filterValue]=\"searchTerm\"\n\t\t[items]=\"itemsList.filteredItems\"\n\t\t[markedItem]=\"itemsList.markedItem\"\n\t\t(update)=\"viewPortItems = $event\"\n\t\t(scroll)=\"scroll.emit($event)\"\n\t\t(scrollToEnd)=\"scrollToEnd.emit($event)\"\n\t\t(outsideClick)=\"close()\"\n\t\t[class.ng-select-multiple]=\"multiple()\"\n\t\t[class]=\"appendToValue ? (ngClass() ? ngClass() : classes) : null\"\n\t\t[id]=\"dropdownId\"\n\t\t[ariaLabelDropdown]=\"ariaLabelDropdown()\">\n\t\t<ng-container>\n\t\t\t@for (item of viewPortItems; track trackByOption($index, item)) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[attr.role]=\"item.children ? 'group' : 'option'\"\n\t\t\t\t\t(click)=\"toggleItem(item)\"\n\t\t\t\t\t(mouseover)=\"onItemHover(item)\"\n\t\t\t\t\t[class.ng-option-disabled]=\"item.disabled\"\n\t\t\t\t\t[class.ng-option-selected]=\"item.selected\"\n\t\t\t\t\t[class.ng-optgroup]=\"item.children\"\n\t\t\t\t\t[class.ng-option]=\"!item.children\"\n\t\t\t\t\t[class.ng-option-child]=\"!!item.parent\"\n\t\t\t\t\t[class.ng-option-marked]=\"item === itemsList.markedItem\"\n\t\t\t\t\t[attr.aria-selected]=\"item.selected\"\n\t\t\t\t\t[attr.id]=\"item?.htmlId\"\n\t\t\t\t\t[attr.aria-setsize]=\"itemsList.filteredItems.length\"\n\t\t\t\t\t[attr.aria-posinset]=\"item.index + 1\">\n\t\t\t\t\t<ng-template #defaultOptionTemplate>\n\t\t\t\t\t\t<span class=\"ng-option-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\titem.children ? optgroupTemplate() || defaultOptionTemplate : optionTemplate() || defaultOptionTemplate\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, item$: item, index: item.index, searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (showAddTag) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[class.ng-option-marked]=\"!itemsList.markedItem\"\n\t\t\t\t\t(mouseover)=\"itemsList.unmarkItem()\"\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t(click)=\"selectTag()\">\n\t\t\t\t\t<ng-template #defaultTagTemplate>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t><span class=\"ng-tag-label\">{{ addTagText() || config.addTagText }}</span\n\t\t\t\t\t\t\t>\"{{ searchTerm }}\"</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"tagTemplate() || defaultTagTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (showNoItemsFound()) {\n\t\t\t<ng-template #defaultNotFoundTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ notFoundText() ?? config.notFoundText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"notFoundTemplate() || defaultNotFoundTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t\t@if (showTypeToSearch()) {\n\t\t\t<ng-template #defaultTypeToSearchTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ typeToSearchText() || config.typeToSearchText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"typeToSearchTemplate() || defaultTypeToSearchTemplate\"></ng-template>\n\t\t}\n\t\t@if (loading() && itemsList.filteredItems.length === 0) {\n\t\t\t<ng-template #defaultLoadingTextTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ loadingText() || config.loadingText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"loadingTextTemplate() || defaultLoadingTextTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t</ng-dropdown-panel>\n}\n\n<!-- Always present aria-live region -->\n<div aria-atomic=\"true\" aria-live=\"polite\" class=\"ng-visually-hidden\" role=\"status\">\n\t@if (isOpen && showNoItemsFound()) {\n\t\t{{ notFoundText }}\n\t}\n</div>\n", styles: ["@charset \"UTF-8\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{position:relative;z-index:1001;-webkit-user-select:text;user-select:text;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:unset;user-select:unset;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\"\\200b\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}.ng-visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgItemLabelDirective, selector: "[ngItemLabel]", inputs: ["ngItemLabel", "escape"] }, { kind: "component", type: NgDropdownPanelComponent, selector: "ng-dropdown-panel", inputs: ["items", "markedItem", "position", "appendTo", "bufferAmount", "virtualScroll", "headerTemplate", "footerTemplate", "filterValue", "ariaLabelDropdown"], outputs: ["update", "scroll", "scrollToEnd", "outsideClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2951
2930
|
}
|
|
2952
2931
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectComponent, decorators: [{
|
|
2953
2932
|
type: Component,
|
|
@@ -2958,230 +2937,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
2958
2937
|
multi: true,
|
|
2959
2938
|
},
|
|
2960
2939
|
NgDropdownPanelService,
|
|
2961
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, NgItemLabelDirective, NgDropdownPanelComponent, NgClass], template: "<div\n\t(mousedown)=\"handleMousedown($event)\"\n\t[class.ng-appearance-outline]=\"appearance === 'outline'\"\n\t[class.ng-has-value]=\"hasValue\"\n\tclass=\"ng-select-container\">\n\t<div class=\"ng-value-container\">\n\t\t@if ((selectedItems.length === 0 && !searchTerm) || fixedPlaceholder) {\n\t\t\t<ng-template #defaultPlaceholderTemplate>\n\t\t\t\t<div class=\"ng-placeholder\">{{ placeholder }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"> </ng-template>\n\t\t}\n\n\t\t@if ((!multiLabelTemplate || !multiple) && selectedItems.length > 0) {\n\t\t\t@for (item of selectedItems; track trackByOption($index, item)) {\n\t\t\t\t<div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n\t\t\t\t\t<ng-template #defaultLabelTemplate>\n\t\t\t\t\t\t<span class=\"ng-value-icon left\" (click)=\"unselect(item)\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t\t\t\t<span class=\"ng-value-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate || defaultLabelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\n\t\t@if (multiple && multiLabelTemplate && selectedValues.length > 0) {\n\t\t\t<ng-template [ngTemplateOutlet]=\"multiLabelTemplate\" [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\">\n\t\t\t</ng-template>\n\t\t}\n\n\t\t<div class=\"ng-input\">\n\t\t\t<input\n\t\t\t\t#searchInput\n\t\t\t\t(blur)=\"onInputBlur($event)\"\n\t\t\t\t(change)=\"$event.stopPropagation()\"\n\t\t\t\t(compositionend)=\"onCompositionEnd(searchInput.value)\"\n\t\t\t\t(compositionstart)=\"onCompositionStart()\"\n\t\t\t\t(focus)=\"onInputFocus($event)\"\n\t\t\t\t(input)=\"filter(searchInput.value)\"\n\t\t\t\t[attr.aria-activedescendant]=\"isOpen ? itemsList?.markedItem?.htmlId : null\"\n\t\t\t\t[attr.aria-controls]=\"isOpen ? dropdownId : null\"\n\t\t\t\t[attr.aria-expanded]=\"isOpen\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t[attr.id]=\"labelForId\"\n\t\t\t\t[attr.tabindex]=\"tabIndex\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[readOnly]=\"!searchable || itemsList.maxItemsSelected\"\n\t\t\t\t[value]=\"searchTerm ?? ''\"\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\trole=\"combobox\" />\n\t\t</div>\n\t</div>\n\n\t@if (loading) {\n\t\t<ng-template #defaultLoadingSpinnerTemplate>\n\t\t\t<div class=\"ng-spinner-loader\"></div>\n\t\t</ng-template>\n\t\t<ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate || defaultLoadingSpinnerTemplate\"></ng-template>\n\t}\n\n\t@if (showClear()) {\n\t\t@if (clearButtonTemplate) {\n\t\t\t<ng-container [ngTemplateOutlet]=\"clearButtonTemplate\"></ng-container>\n\t\t} @else {\n\t\t\t<span\n\t\t\t\tclass=\"ng-clear-wrapper\"\n\t\t\t\trole=\"button\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[attr.tabindex]=\"tabFocusOnClear() ? 0 : -1\"\n\t\t\t\ttitle=\"{{ clearAllText }}\"\n\t\t\t\t#clearButton>\n\t\t\t\t<span class=\"ng-clear\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t</span>\n\t\t}\n\t}\n\n\t<span class=\"ng-arrow-wrapper\">\n\t\t<span class=\"ng-arrow\"></span>\n\t</span>\n</div>\n\n@if (isOpen) {\n\t<ng-dropdown-panel\n\t\tclass=\"ng-dropdown-panel\"\n\t\t[virtualScroll]=\"virtualScroll\"\n\t\t[bufferAmount]=\"bufferAmount\"\n\t\t[appendTo]=\"appendTo\"\n\t\t[position]=\"dropdownPosition\"\n\t\t[headerTemplate]=\"headerTemplate\"\n\t\t[footerTemplate]=\"footerTemplate\"\n\t\t[filterValue]=\"searchTerm\"\n\t\t[items]=\"itemsList.filteredItems\"\n\t\t[markedItem]=\"itemsList.markedItem\"\n\t\t(update)=\"viewPortItems = $event\"\n\t\t(scroll)=\"scroll.emit($event)\"\n\t\t(scrollToEnd)=\"scrollToEnd.emit($event)\"\n\t\t(outsideClick)=\"close()\"\n\t\t[class.ng-select-multiple]=\"multiple\"\n\t\t[ngClass]=\"appendTo ? (ngClass ? ngClass : classes) : null\"\n\t\t[id]=\"dropdownId\"\n\t\t[ariaLabelDropdown]=\"ariaLabelDropdown\">\n\t\t<ng-container>\n\t\t\t@for (item of viewPortItems; track trackByOption($index, item)) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[attr.role]=\"item.children ? 'group' : 'option'\"\n\t\t\t\t\t(click)=\"toggleItem(item)\"\n\t\t\t\t\t(mouseover)=\"onItemHover(item)\"\n\t\t\t\t\t[class.ng-option-disabled]=\"item.disabled\"\n\t\t\t\t\t[class.ng-option-selected]=\"item.selected\"\n\t\t\t\t\t[class.ng-optgroup]=\"item.children\"\n\t\t\t\t\t[class.ng-option]=\"!item.children\"\n\t\t\t\t\t[class.ng-option-child]=\"!!item.parent\"\n\t\t\t\t\t[class.ng-option-marked]=\"item === itemsList.markedItem\"\n\t\t\t\t\t[attr.aria-selected]=\"item.selected\"\n\t\t\t\t\t[attr.id]=\"item?.htmlId\"\n\t\t\t\t\t[attr.aria-setsize]=\"itemsList.filteredItems.length\"\n\t\t\t\t\t[attr.aria-posinset]=\"item.index + 1\">\n\t\t\t\t\t<ng-template #defaultOptionTemplate>\n\t\t\t\t\t\t<span class=\"ng-option-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\titem.children ? optgroupTemplate || defaultOptionTemplate : optionTemplate || defaultOptionTemplate\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, item$: item, index: item.index, searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (showAddTag) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[class.ng-option-marked]=\"!itemsList.markedItem\"\n\t\t\t\t\t(mouseover)=\"itemsList.unmarkItem()\"\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t(click)=\"selectTag()\">\n\t\t\t\t\t<ng-template #defaultTagTemplate>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t><span class=\"ng-tag-label\">{{ addTagText }}</span\n\t\t\t\t\t\t\t>\"{{ searchTerm }}\"</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"tagTemplate || defaultTagTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (showNoItemsFound()) {\n\t\t\t<ng-template #defaultNotFoundTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ notFoundText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"notFoundTemplate || defaultNotFoundTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t\t@if (showTypeToSearch()) {\n\t\t\t<ng-template #defaultTypeToSearchTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ typeToSearchText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"typeToSearchTemplate || defaultTypeToSearchTemplate\"></ng-template>\n\t\t}\n\t\t@if (loading && itemsList.filteredItems.length === 0) {\n\t\t\t<ng-template #defaultLoadingTextTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ loadingText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"loadingTextTemplate || defaultLoadingTextTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t</ng-dropdown-panel>\n}\n\n<!-- Always present aria-live region -->\n<div aria-atomic=\"true\" aria-live=\"polite\" class=\"ng-visually-hidden\" role=\"status\">\n\t@if (isOpen && showNoItemsFound()) {\n\t\t{{ notFoundText }}\n\t}\n</div>\n", styles: ["@charset \"UTF-8\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{position:relative;z-index:1001;-webkit-user-select:text;user-select:text;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:unset;user-select:unset;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\"\\200b\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}.ng-visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0;white-space:nowrap}\n"] }]
|
|
2962
|
-
}], ctorParameters: () => [
|
|
2963
|
-
type: Attribute,
|
|
2964
|
-
args: ['class']
|
|
2965
|
-
}] }, { type: undefined, decorators: [{
|
|
2966
|
-
type: Attribute,
|
|
2967
|
-
args: ['autofocus']
|
|
2968
|
-
}] }, { type: NgSelectConfig }, { type: undefined, decorators: [{
|
|
2969
|
-
type: Inject,
|
|
2970
|
-
args: [SELECTION_MODEL_FACTORY]
|
|
2971
|
-
}, {
|
|
2972
|
-
type: Optional
|
|
2973
|
-
}] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: ConsoleService }], propDecorators: { ariaLabelDropdown: [{
|
|
2974
|
-
type: Input
|
|
2975
|
-
}], bindLabel: [{
|
|
2976
|
-
type: Input
|
|
2977
|
-
}], bindValue: [{
|
|
2978
|
-
type: Input
|
|
2979
|
-
}], ariaLabel: [{
|
|
2980
|
-
type: Input
|
|
2981
|
-
}], markFirst: [{
|
|
2982
|
-
type: Input,
|
|
2983
|
-
args: [{ transform: booleanAttribute }]
|
|
2984
|
-
}], placeholder: [{
|
|
2985
|
-
type: Input
|
|
2986
|
-
}], fixedPlaceholder: [{
|
|
2987
|
-
type: Input
|
|
2988
|
-
}], notFoundText: [{
|
|
2989
|
-
type: Input
|
|
2990
|
-
}], typeToSearchText: [{
|
|
2991
|
-
type: Input
|
|
2992
|
-
}], preventToggleOnRightClick: [{
|
|
2993
|
-
type: Input
|
|
2994
|
-
}], addTagText: [{
|
|
2995
|
-
type: Input
|
|
2996
|
-
}], loadingText: [{
|
|
2997
|
-
type: Input
|
|
2998
|
-
}], clearAllText: [{
|
|
2999
|
-
type: Input
|
|
3000
|
-
}], appearance: [{
|
|
3001
|
-
type: Input
|
|
3002
|
-
}], dropdownPosition: [{
|
|
3003
|
-
type: Input
|
|
3004
|
-
}], appendTo: [{
|
|
3005
|
-
type: Input
|
|
3006
|
-
}], loading: [{
|
|
3007
|
-
type: Input,
|
|
3008
|
-
args: [{ transform: booleanAttribute }]
|
|
3009
|
-
}], closeOnSelect: [{
|
|
3010
|
-
type: Input,
|
|
3011
|
-
args: [{ transform: booleanAttribute }]
|
|
3012
|
-
}], hideSelected: [{
|
|
3013
|
-
type: Input,
|
|
3014
|
-
args: [{ transform: booleanAttribute }]
|
|
3015
|
-
}], selectOnTab: [{
|
|
3016
|
-
type: Input,
|
|
3017
|
-
args: [{ transform: booleanAttribute }]
|
|
3018
|
-
}], openOnEnter: [{
|
|
3019
|
-
type: Input,
|
|
3020
|
-
args: [{ transform: booleanAttribute }]
|
|
3021
|
-
}], maxSelectedItems: [{
|
|
3022
|
-
type: Input,
|
|
3023
|
-
args: [{ transform: numberAttribute }]
|
|
3024
|
-
}], groupBy: [{
|
|
3025
|
-
type: Input
|
|
3026
|
-
}], groupValue: [{
|
|
3027
|
-
type: Input
|
|
3028
|
-
}], bufferAmount: [{
|
|
3029
|
-
type: Input,
|
|
3030
|
-
args: [{ transform: numberAttribute }]
|
|
3031
|
-
}], virtualScroll: [{
|
|
3032
|
-
type: Input,
|
|
3033
|
-
args: [{ transform: booleanAttribute }]
|
|
3034
|
-
}], selectableGroup: [{
|
|
3035
|
-
type: Input,
|
|
3036
|
-
args: [{ transform: booleanAttribute }]
|
|
3037
|
-
}], selectableGroupAsModel: [{
|
|
3038
|
-
type: Input,
|
|
3039
|
-
args: [{ transform: booleanAttribute }]
|
|
3040
|
-
}], searchFn: [{
|
|
3041
|
-
type: Input
|
|
3042
|
-
}], trackByFn: [{
|
|
3043
|
-
type: Input
|
|
3044
|
-
}], clearOnBackspace: [{
|
|
3045
|
-
type: Input,
|
|
3046
|
-
args: [{ transform: booleanAttribute }]
|
|
3047
|
-
}], labelForId: [{
|
|
3048
|
-
type: Input
|
|
3049
|
-
}], inputAttrs: [{
|
|
3050
|
-
type: Input
|
|
3051
|
-
}], tabIndex: [{
|
|
3052
|
-
type: Input,
|
|
3053
|
-
args: [{ transform: numberAttribute }]
|
|
3054
|
-
}], readonly: [{
|
|
3055
|
-
type: Input,
|
|
3056
|
-
args: [{ transform: booleanAttribute }]
|
|
3057
|
-
}], searchWhileComposing: [{
|
|
3058
|
-
type: Input,
|
|
3059
|
-
args: [{ transform: booleanAttribute }]
|
|
3060
|
-
}], minTermLength: [{
|
|
3061
|
-
type: Input,
|
|
3062
|
-
args: [{ transform: numberAttribute }]
|
|
3063
|
-
}], editableSearchTerm: [{
|
|
3064
|
-
type: Input,
|
|
3065
|
-
args: [{ transform: booleanAttribute }]
|
|
3066
|
-
}], ngClass: [{
|
|
3067
|
-
type: Input
|
|
3068
|
-
}], typeahead: [{
|
|
3069
|
-
type: Input
|
|
3070
|
-
}, {
|
|
2940
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, NgItemLabelDirective, NgDropdownPanelComponent], template: "<div\n\t(mousedown)=\"handleMousedown($event)\"\n\t[class.ng-appearance-outline]=\"appearance() === 'outline'\"\n\t[class.ng-has-value]=\"hasValue\"\n\tclass=\"ng-select-container\">\n\t<div class=\"ng-value-container\">\n\t\t@if ((selectedItems.length === 0 && !searchTerm) || (fixedPlaceholder() ?? config.fixedPlaceholder )) {\n\t\t\t<ng-template #defaultPlaceholderTemplate>\n\t\t\t\t<div class=\"ng-placeholder\">{{ placeholder() ?? config.placeholder }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"placeholderTemplate() || defaultPlaceholderTemplate\"> </ng-template>\n\t\t}\n\n\t\t@if ((!multiLabelTemplate() || !multiple()) && selectedItems.length > 0) {\n\t\t\t@for (item of selectedItems; track trackByOption($index, item)) {\n\t\t\t\t<div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n\t\t\t\t\t<ng-template #defaultLabelTemplate>\n\t\t\t\t\t\t<span class=\"ng-value-icon left\" (click)=\"unselect(item)\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t\t\t\t<span class=\"ng-value-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate() || defaultLabelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\n\t\t@if (multiple() && multiLabelTemplate() && selectedValues.length > 0) {\n\t\t\t<ng-template [ngTemplateOutlet]=\"multiLabelTemplate()\" [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\">\n\t\t\t</ng-template>\n\t\t}\n\n\t\t<div class=\"ng-input\">\n\t\t\t<input\n\t\t\t\t#searchInput\n\t\t\t\t(blur)=\"onInputBlur($event)\"\n\t\t\t\t(change)=\"$event.stopPropagation()\"\n\t\t\t\t(compositionend)=\"onCompositionEnd(searchInput.value)\"\n\t\t\t\t(compositionstart)=\"onCompositionStart()\"\n\t\t\t\t(focus)=\"onInputFocus($event)\"\n\t\t\t\t(input)=\"filter(searchInput.value)\"\n\t\t\t\t[attr.aria-activedescendant]=\"isOpen() ? itemsList?.markedItem?.htmlId : null\"\n\t\t\t\t[attr.aria-controls]=\"isOpen() ? dropdownId : null\"\n\t\t\t\t[attr.aria-expanded]=\"isOpen()\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t\t[attr.id]=\"labelForId()\"\n\t\t\t\t[attr.tabindex]=\"tabIndex()\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[readOnly]=\"!searchable() || itemsList.maxItemsSelected\"\n\t\t\t\t[value]=\"searchTerm ?? ''\"\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\trole=\"combobox\" />\n\t\t</div>\n\t</div>\n\n\t@if (loading()) {\n\t\t<ng-template #defaultLoadingSpinnerTemplate>\n\t\t\t<div class=\"ng-spinner-loader\"></div>\n\t\t</ng-template>\n\t\t<ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate() || defaultLoadingSpinnerTemplate\"></ng-template>\n\t}\n\n\t@if (showClear()) {\n\t\t@if (clearButtonTemplate()) {\n\t\t\t<ng-container [ngTemplateOutlet]=\"clearButtonTemplate()\"></ng-container>\n\t\t} @else {\n\t\t\t<span\n\t\t\t\tclass=\"ng-clear-wrapper\"\n\t\t\t\trole=\"button\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[attr.tabindex]=\"tabFocusOnClear() ? 0 : -1\"\n\t\t\t\ttitle=\"{{ clearAllText() || config.clearAllText }}\"\n\t\t\t\t#clearButton>\n\t\t\t\t<span class=\"ng-clear\" aria-hidden=\"true\">\u00D7</span>\n\t\t\t</span>\n\t\t}\n\t}\n\n\t<span class=\"ng-arrow-wrapper\">\n\t\t<span class=\"ng-arrow\"></span>\n\t</span>\n</div>\n\n@if (isOpen()) {\n\t@let appendToValue = appendTo() || config.appendTo;\n\t<ng-dropdown-panel\n\t\tclass=\"ng-dropdown-panel\"\n\t\t[virtualScroll]=\"virtualScroll() ?? !config.disableVirtualScroll ?? false\"\n\t\t[bufferAmount]=\"bufferAmount()\"\n\t\t[appendTo]=\"appendToValue\"\n\t\t[position]=\"dropdownPosition()\"\n\t\t[headerTemplate]=\"headerTemplate()\"\n\t\t[footerTemplate]=\"footerTemplate()\"\n\t\t[filterValue]=\"searchTerm\"\n\t\t[items]=\"itemsList.filteredItems\"\n\t\t[markedItem]=\"itemsList.markedItem\"\n\t\t(update)=\"viewPortItems = $event\"\n\t\t(scroll)=\"scroll.emit($event)\"\n\t\t(scrollToEnd)=\"scrollToEnd.emit($event)\"\n\t\t(outsideClick)=\"close()\"\n\t\t[class.ng-select-multiple]=\"multiple()\"\n\t\t[class]=\"appendToValue ? (ngClass() ? ngClass() : classes) : null\"\n\t\t[id]=\"dropdownId\"\n\t\t[ariaLabelDropdown]=\"ariaLabelDropdown()\">\n\t\t<ng-container>\n\t\t\t@for (item of viewPortItems; track trackByOption($index, item)) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[attr.role]=\"item.children ? 'group' : 'option'\"\n\t\t\t\t\t(click)=\"toggleItem(item)\"\n\t\t\t\t\t(mouseover)=\"onItemHover(item)\"\n\t\t\t\t\t[class.ng-option-disabled]=\"item.disabled\"\n\t\t\t\t\t[class.ng-option-selected]=\"item.selected\"\n\t\t\t\t\t[class.ng-optgroup]=\"item.children\"\n\t\t\t\t\t[class.ng-option]=\"!item.children\"\n\t\t\t\t\t[class.ng-option-child]=\"!!item.parent\"\n\t\t\t\t\t[class.ng-option-marked]=\"item === itemsList.markedItem\"\n\t\t\t\t\t[attr.aria-selected]=\"item.selected\"\n\t\t\t\t\t[attr.id]=\"item?.htmlId\"\n\t\t\t\t\t[attr.aria-setsize]=\"itemsList.filteredItems.length\"\n\t\t\t\t\t[attr.aria-posinset]=\"item.index + 1\">\n\t\t\t\t\t<ng-template #defaultOptionTemplate>\n\t\t\t\t\t\t<span class=\"ng-option-label\" [ngItemLabel]=\"item.label\" [escape]=\"escapeHTML\"></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\titem.children ? optgroupTemplate() || defaultOptionTemplate : optionTemplate() || defaultOptionTemplate\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, item$: item, index: item.index, searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (showAddTag) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[class.ng-option-marked]=\"!itemsList.markedItem\"\n\t\t\t\t\t(mouseover)=\"itemsList.unmarkItem()\"\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t(click)=\"selectTag()\">\n\t\t\t\t\t<ng-template #defaultTagTemplate>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t><span class=\"ng-tag-label\">{{ addTagText() || config.addTagText }}</span\n\t\t\t\t\t\t\t>\"{{ searchTerm }}\"</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"tagTemplate() || defaultTagTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (showNoItemsFound()) {\n\t\t\t<ng-template #defaultNotFoundTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ notFoundText() ?? config.notFoundText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"notFoundTemplate() || defaultNotFoundTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t\t@if (showTypeToSearch()) {\n\t\t\t<ng-template #defaultTypeToSearchTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ typeToSearchText() || config.typeToSearchText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"typeToSearchTemplate() || defaultTypeToSearchTemplate\"></ng-template>\n\t\t}\n\t\t@if (loading() && itemsList.filteredItems.length === 0) {\n\t\t\t<ng-template #defaultLoadingTextTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ loadingText() || config.loadingText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"loadingTextTemplate() || defaultLoadingTextTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t</ng-dropdown-panel>\n}\n\n<!-- Always present aria-live region -->\n<div aria-atomic=\"true\" aria-live=\"polite\" class=\"ng-visually-hidden\" role=\"status\">\n\t@if (isOpen && showNoItemsFound()) {\n\t\t{{ notFoundText }}\n\t}\n</div>\n", styles: ["@charset \"UTF-8\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{position:relative;z-index:1001;-webkit-user-select:text;user-select:text;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:unset;user-select:unset;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\"\\200b\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}.ng-visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0;white-space:nowrap}\n"] }]
|
|
2941
|
+
}], ctorParameters: () => [], propDecorators: { typeahead: [{
|
|
3071
2942
|
type: HostBinding,
|
|
3072
2943
|
args: ['class.ng-select-typeahead']
|
|
3073
2944
|
}], multiple: [{
|
|
3074
|
-
type: Input,
|
|
3075
|
-
args: [{ transform: booleanAttribute }]
|
|
3076
|
-
}, {
|
|
3077
2945
|
type: HostBinding,
|
|
3078
2946
|
args: ['class.ng-select-multiple']
|
|
3079
2947
|
}], addTag: [{
|
|
3080
|
-
type: Input
|
|
3081
|
-
}, {
|
|
3082
2948
|
type: HostBinding,
|
|
3083
2949
|
args: ['class.ng-select-taggable']
|
|
3084
2950
|
}], searchable: [{
|
|
3085
|
-
type: Input,
|
|
3086
|
-
args: [{ transform: booleanAttribute }]
|
|
3087
|
-
}, {
|
|
3088
2951
|
type: HostBinding,
|
|
3089
2952
|
args: ['class.ng-select-searchable']
|
|
3090
2953
|
}], clearable: [{
|
|
3091
|
-
type: Input,
|
|
3092
|
-
args: [{ transform: booleanAttribute }]
|
|
3093
|
-
}, {
|
|
3094
2954
|
type: HostBinding,
|
|
3095
2955
|
args: ['class.ng-select-clearable']
|
|
3096
2956
|
}], isOpen: [{
|
|
3097
|
-
type: Input
|
|
3098
|
-
}, {
|
|
3099
2957
|
type: HostBinding,
|
|
3100
2958
|
args: ['class.ng-select-opened']
|
|
3101
|
-
}], blurEvent: [{
|
|
3102
|
-
type: Output,
|
|
3103
|
-
args: ['blur']
|
|
3104
|
-
}], focusEvent: [{
|
|
3105
|
-
type: Output,
|
|
3106
|
-
args: ['focus']
|
|
3107
|
-
}], changeEvent: [{
|
|
3108
|
-
type: Output,
|
|
3109
|
-
args: ['change']
|
|
3110
|
-
}], openEvent: [{
|
|
3111
|
-
type: Output,
|
|
3112
|
-
args: ['open']
|
|
3113
|
-
}], closeEvent: [{
|
|
3114
|
-
type: Output,
|
|
3115
|
-
args: ['close']
|
|
3116
|
-
}], searchEvent: [{
|
|
3117
|
-
type: Output,
|
|
3118
|
-
args: ['search']
|
|
3119
|
-
}], clearEvent: [{
|
|
3120
|
-
type: Output,
|
|
3121
|
-
args: ['clear']
|
|
3122
|
-
}], addEvent: [{
|
|
3123
|
-
type: Output,
|
|
3124
|
-
args: ['add']
|
|
3125
|
-
}], removeEvent: [{
|
|
3126
|
-
type: Output,
|
|
3127
|
-
args: ['remove']
|
|
3128
|
-
}], scroll: [{
|
|
3129
|
-
type: Output,
|
|
3130
|
-
args: ['scroll']
|
|
3131
|
-
}], scrollToEnd: [{
|
|
3132
|
-
type: Output,
|
|
3133
|
-
args: ['scrollToEnd']
|
|
3134
|
-
}], optionTemplate: [{
|
|
3135
|
-
type: ContentChild,
|
|
3136
|
-
args: [NgOptionTemplateDirective, { read: TemplateRef }]
|
|
3137
|
-
}], optgroupTemplate: [{
|
|
3138
|
-
type: ContentChild,
|
|
3139
|
-
args: [NgOptgroupTemplateDirective, { read: TemplateRef }]
|
|
3140
|
-
}], labelTemplate: [{
|
|
3141
|
-
type: ContentChild,
|
|
3142
|
-
args: [NgLabelTemplateDirective, { read: TemplateRef }]
|
|
3143
|
-
}], multiLabelTemplate: [{
|
|
3144
|
-
type: ContentChild,
|
|
3145
|
-
args: [NgMultiLabelTemplateDirective, { read: TemplateRef }]
|
|
3146
|
-
}], headerTemplate: [{
|
|
3147
|
-
type: ContentChild,
|
|
3148
|
-
args: [NgHeaderTemplateDirective, { read: TemplateRef }]
|
|
3149
|
-
}], footerTemplate: [{
|
|
3150
|
-
type: ContentChild,
|
|
3151
|
-
args: [NgFooterTemplateDirective, { read: TemplateRef }]
|
|
3152
|
-
}], notFoundTemplate: [{
|
|
3153
|
-
type: ContentChild,
|
|
3154
|
-
args: [NgNotFoundTemplateDirective, { read: TemplateRef }]
|
|
3155
|
-
}], placeholderTemplate: [{
|
|
3156
|
-
type: ContentChild,
|
|
3157
|
-
args: [NgPlaceholderTemplateDirective, { read: TemplateRef }]
|
|
3158
|
-
}], typeToSearchTemplate: [{
|
|
3159
|
-
type: ContentChild,
|
|
3160
|
-
args: [NgTypeToSearchTemplateDirective, { read: TemplateRef }]
|
|
3161
|
-
}], loadingTextTemplate: [{
|
|
3162
|
-
type: ContentChild,
|
|
3163
|
-
args: [NgLoadingTextTemplateDirective, { read: TemplateRef }]
|
|
3164
|
-
}], tagTemplate: [{
|
|
3165
|
-
type: ContentChild,
|
|
3166
|
-
args: [NgTagTemplateDirective, { read: TemplateRef }]
|
|
3167
|
-
}], loadingSpinnerTemplate: [{
|
|
3168
|
-
type: ContentChild,
|
|
3169
|
-
args: [NgLoadingSpinnerTemplateDirective, { read: TemplateRef }]
|
|
3170
|
-
}], clearButtonTemplate: [{
|
|
3171
|
-
type: ContentChild,
|
|
3172
|
-
args: [NgClearButtonTemplateDirective, { read: TemplateRef }]
|
|
3173
|
-
}], dropdownPanel: [{
|
|
3174
|
-
type: ViewChild,
|
|
3175
|
-
args: [forwardRef(() => NgDropdownPanelComponent)]
|
|
3176
|
-
}], searchInput: [{
|
|
3177
|
-
type: ViewChild,
|
|
3178
|
-
args: ['searchInput', { static: true }]
|
|
3179
|
-
}], clearButton: [{
|
|
3180
|
-
type: ViewChild,
|
|
3181
|
-
args: ['clearButton']
|
|
3182
|
-
}], ngOptions: [{
|
|
3183
|
-
type: ContentChildren,
|
|
3184
|
-
args: [NgOptionComponent, { descendants: true }]
|
|
3185
2959
|
}], useDefaultClass: [{
|
|
3186
2960
|
type: HostBinding,
|
|
3187
2961
|
args: ['class.ng-select']
|
|
@@ -3191,19 +2965,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
3191
2965
|
}], single: [{
|
|
3192
2966
|
type: HostBinding,
|
|
3193
2967
|
args: ['class.ng-select-single']
|
|
3194
|
-
}], items: [{
|
|
3195
|
-
type: Input
|
|
3196
2968
|
}], disabled: [{
|
|
3197
2969
|
type: HostBinding,
|
|
3198
2970
|
args: ['class.ng-select-disabled']
|
|
3199
|
-
}], compareWith: [{
|
|
3200
|
-
type: Input
|
|
3201
|
-
}], clearSearchOnAdd: [{
|
|
3202
|
-
type: Input
|
|
3203
|
-
}], deselectOnClick: [{
|
|
3204
|
-
type: Input
|
|
3205
|
-
}], keyDownFn: [{
|
|
3206
|
-
type: Input
|
|
3207
2971
|
}], handleKeyDown: [{
|
|
3208
2972
|
type: HostListener,
|
|
3209
2973
|
args: ['keydown', ['$event']]
|
|
@@ -3242,7 +3006,7 @@ class NgSelectModule {
|
|
|
3242
3006
|
NgTagTemplateDirective,
|
|
3243
3007
|
NgLoadingSpinnerTemplateDirective,
|
|
3244
3008
|
NgClearButtonTemplateDirective] }); }
|
|
3245
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectModule, providers:
|
|
3009
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectModule, providers: provideNgSelect() }); }
|
|
3246
3010
|
}
|
|
3247
3011
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: NgSelectModule, decorators: [{
|
|
3248
3012
|
type: NgModule,
|
|
@@ -3283,9 +3047,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
3283
3047
|
NgLoadingSpinnerTemplateDirective,
|
|
3284
3048
|
NgClearButtonTemplateDirective
|
|
3285
3049
|
],
|
|
3286
|
-
providers:
|
|
3050
|
+
providers: provideNgSelect(),
|
|
3287
3051
|
}]
|
|
3288
3052
|
}] });
|
|
3053
|
+
function provideNgSelect() {
|
|
3054
|
+
return [
|
|
3055
|
+
{
|
|
3056
|
+
provide: SELECTION_MODEL_FACTORY,
|
|
3057
|
+
useValue: DefaultSelectionModelFactory,
|
|
3058
|
+
},
|
|
3059
|
+
];
|
|
3060
|
+
}
|
|
3289
3061
|
|
|
3290
3062
|
/*
|
|
3291
3063
|
* Public API Surface of ng-select
|