ng-mat-select-infinite-scroll 2.0.0 → 3.0.1
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/LICENSE +1 -1
- package/README.md +12 -12
- package/bundles/ng-mat-select-infinite-scroll.umd.js +81 -159
- package/bundles/ng-mat-select-infinite-scroll.umd.js.map +1 -1
- package/esm2015/lib/mat-select-infinite-scroll.directive.js +29 -119
- package/esm2015/lib/mat-select-infinite-scroll.module.js +17 -14
- package/esm2015/ng-mat-select-infinite-scroll.js +2 -6
- package/esm2015/public-api.js +6 -0
- package/fesm2015/ng-mat-select-infinite-scroll.js +47 -136
- package/fesm2015/ng-mat-select-infinite-scroll.js.map +1 -1
- package/lib/mat-select-infinite-scroll.directive.d.ts +3 -0
- package/lib/mat-select-infinite-scroll.module.d.ts +6 -0
- package/ng-mat-select-infinite-scroll-3.0.1.tgz +0 -0
- package/ng-mat-select-infinite-scroll.d.ts +2 -1
- package/package.json +6 -10
- package/{public_api.d.ts → public-api.d.ts} +0 -0
- package/bundles/ng-mat-select-infinite-scroll.umd.min.js +0 -2
- package/bundles/ng-mat-select-infinite-scroll.umd.min.js.map +0 -1
- package/esm2015/public_api.js +0 -10
- package/esm5/lib/mat-select-infinite-scroll.directive.js +0 -198
- package/esm5/lib/mat-select-infinite-scroll.module.js +0 -23
- package/esm5/ng-mat-select-infinite-scroll.js +0 -9
- package/esm5/public_api.js +0 -10
- package/fesm5/ng-mat-select-infinite-scroll.js +0 -229
- package/fesm5/ng-mat-select-infinite-scroll.js.map +0 -1
- package/ng-mat-select-infinite-scroll-2.0.0.tgz +0 -0
- package/ng-mat-select-infinite-scroll.metadata.json +0 -1
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -8,13 +8,13 @@ Adds missing infinite scroll functionality for the [angular material select comp
|
|
|
8
8
|
|
|
9
9
|
| Property | Description | Type | Default |
|
|
10
10
|
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------| ---------- |
|
|
11
|
-
| `complete` | If `true`, the `
|
|
11
|
+
| `complete` | If `true`, the `infiniteScroll` output will no longer be triggered | `boolean` | `false` |
|
|
12
12
|
| `threshold` | The threshold distance from the bottom of the options list to call the `infiniteScroll` output event when scrolled. The threshold value can be either in percent, or in pixels. For example, use the value of `10%` for the `infiniteScroll` output event to get called when the user has needs 10% to reach the bottom. | `string` | `'15%'` |
|
|
13
13
|
| `debounceTime` | The threshold time before firing the `infiniteScroll` event | `number` | `150` |
|
|
14
14
|
### Outputs
|
|
15
15
|
| Property | Description | Type |
|
|
16
|
-
|
|
|
17
|
-
| `
|
|
16
|
+
| ----------------- | --------------------------------------------------------------------------------------- | --------------------
|
|
17
|
+
| `infiniteScroll` | Emitted when the scroller inside the `mat-select` reaches the required distance | `EventEmitter<void>`
|
|
18
18
|
|
|
19
19
|
### Installation
|
|
20
20
|
|
|
@@ -50,19 +50,19 @@ export class AppModule {
|
|
|
50
50
|
|
|
51
51
|
Then place the msInfiniteScroll directive on the `mat-select` component
|
|
52
52
|
```html
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
<mat-form-field appearance="outline">
|
|
54
|
+
<mat-label>Select</mat-label>
|
|
55
|
+
<mat-select msInfiniteScroll (infiniteScroll)="getNextBatch()" [complete]="offset === data.length">
|
|
56
|
+
<mat-option *ngFor="let option of options$ | async" [value]="option">{{option}}</mat-option>
|
|
57
|
+
</mat-select>
|
|
58
|
+
</mat-form-field>
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
### Compatibility
|
|
62
62
|
|
|
63
|
-
* `@angular/core`: `>=6.0.0 <
|
|
64
|
-
* `@angular/cdk`: `>=6.0.0 <
|
|
65
|
-
* `@angular/material`: `>=6.0.0 <
|
|
63
|
+
* `@angular/core`: `>=6.0.0 <14`,
|
|
64
|
+
* `@angular/cdk`: `>=6.0.0 <14`,
|
|
65
|
+
* `@angular/material`: `>=6.0.0 <14`,
|
|
66
66
|
* `rxjs`: `^6.0.0`
|
|
67
67
|
|
|
68
68
|
### Contributions
|
|
@@ -1,71 +1,62 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('
|
|
3
|
-
typeof define === 'function' && define.amd ? define('ng-mat-select-infinite-scroll', ['exports', '@angular/core', '
|
|
4
|
-
(global = global || self, factory(global[
|
|
5
|
-
}(this, function (exports,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs/operators'), require('rxjs'), require('@angular/material/select')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('ng-mat-select-infinite-scroll', ['exports', '@angular/core', 'rxjs/operators', 'rxjs', '@angular/material/select'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["ng-mat-select-infinite-scroll"] = {}, global.ng.core, global.rxjs.operators, global.rxjs, global.ng.material.select));
|
|
5
|
+
})(this, (function (exports, i0, operators, rxjs, i1) { 'use strict';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
function _interopNamespace(e) {
|
|
8
|
+
if (e && e.__esModule) return e;
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return e[k]; }
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
n["default"] = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
|
|
26
|
+
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
|
|
27
|
+
|
|
28
|
+
/** The height of the select items in `em` units. */
|
|
29
|
+
var SELECT_ITEM_HEIGHT_EM = 3;
|
|
11
30
|
var MatSelectInfiniteScrollDirective = /** @class */ (function () {
|
|
12
31
|
function MatSelectInfiniteScrollDirective(matSelect, ngZone) {
|
|
13
32
|
this.matSelect = matSelect;
|
|
14
33
|
this.ngZone = ngZone;
|
|
15
34
|
this.threshold = '15%';
|
|
16
35
|
this.debounceTime = 150;
|
|
17
|
-
this.infiniteScroll = new
|
|
36
|
+
this.infiniteScroll = new i0.EventEmitter();
|
|
18
37
|
this.thrPx = 0;
|
|
19
38
|
this.thrPc = 0;
|
|
20
|
-
this.singleOptionHeight =
|
|
39
|
+
this.singleOptionHeight = SELECT_ITEM_HEIGHT_EM;
|
|
21
40
|
this.destroyed$ = new rxjs.Subject();
|
|
22
41
|
}
|
|
23
|
-
|
|
24
|
-
* @return {?}
|
|
25
|
-
*/
|
|
26
|
-
MatSelectInfiniteScrollDirective.prototype.ngOnInit = /**
|
|
27
|
-
* @return {?}
|
|
28
|
-
*/
|
|
29
|
-
function () {
|
|
42
|
+
MatSelectInfiniteScrollDirective.prototype.ngOnInit = function () {
|
|
30
43
|
this.evaluateThreshold();
|
|
31
44
|
};
|
|
32
|
-
|
|
33
|
-
* @return {?}
|
|
34
|
-
*/
|
|
35
|
-
MatSelectInfiniteScrollDirective.prototype.ngAfterViewInit = /**
|
|
36
|
-
* @return {?}
|
|
37
|
-
*/
|
|
38
|
-
function () {
|
|
45
|
+
MatSelectInfiniteScrollDirective.prototype.ngAfterViewInit = function () {
|
|
39
46
|
var _this = this;
|
|
40
|
-
this.matSelect.openedChange.pipe(operators.takeUntil(this.destroyed$)).subscribe((
|
|
41
|
-
* @param {?} opened
|
|
42
|
-
* @return {?}
|
|
43
|
-
*/
|
|
44
|
-
function (opened) {
|
|
47
|
+
this.matSelect.openedChange.pipe(operators.takeUntil(this.destroyed$)).subscribe(function (opened) {
|
|
45
48
|
if (opened) {
|
|
46
49
|
_this.panel = _this.matSelect.panel.nativeElement;
|
|
47
50
|
_this.singleOptionHeight = _this.getSelectItemHeightPx();
|
|
48
51
|
_this.registerScrollListener();
|
|
49
52
|
}
|
|
50
|
-
})
|
|
53
|
+
});
|
|
51
54
|
};
|
|
52
|
-
|
|
53
|
-
* @return {?}
|
|
54
|
-
*/
|
|
55
|
-
MatSelectInfiniteScrollDirective.prototype.ngOnDestroy = /**
|
|
56
|
-
* @return {?}
|
|
57
|
-
*/
|
|
58
|
-
function () {
|
|
55
|
+
MatSelectInfiniteScrollDirective.prototype.ngOnDestroy = function () {
|
|
59
56
|
this.destroyed$.next(true);
|
|
60
57
|
this.destroyed$.complete();
|
|
61
58
|
};
|
|
62
|
-
|
|
63
|
-
* @return {?}
|
|
64
|
-
*/
|
|
65
|
-
MatSelectInfiniteScrollDirective.prototype.evaluateThreshold = /**
|
|
66
|
-
* @return {?}
|
|
67
|
-
*/
|
|
68
|
-
function () {
|
|
59
|
+
MatSelectInfiniteScrollDirective.prototype.evaluateThreshold = function () {
|
|
69
60
|
if (this.threshold.lastIndexOf('%') > -1) {
|
|
70
61
|
this.thrPx = 0;
|
|
71
62
|
this.thrPc = (parseFloat(this.threshold) / 100);
|
|
@@ -75,146 +66,77 @@
|
|
|
75
66
|
this.thrPc = 0;
|
|
76
67
|
}
|
|
77
68
|
};
|
|
78
|
-
|
|
79
|
-
* @return {?}
|
|
80
|
-
*/
|
|
81
|
-
MatSelectInfiniteScrollDirective.prototype.registerScrollListener = /**
|
|
82
|
-
* @return {?}
|
|
83
|
-
*/
|
|
84
|
-
function () {
|
|
69
|
+
MatSelectInfiniteScrollDirective.prototype.registerScrollListener = function () {
|
|
85
70
|
var _this = this;
|
|
86
|
-
rxjs.fromEvent(this.panel, 'scroll').pipe(operators.takeUntil(this.destroyed$), operators.debounceTime(this.debounceTime), operators.tap((
|
|
87
|
-
* @param {?} event
|
|
88
|
-
* @return {?}
|
|
89
|
-
*/
|
|
90
|
-
function (event) {
|
|
71
|
+
rxjs.fromEvent(this.panel, 'scroll').pipe(operators.takeUntil(this.destroyed$), operators.debounceTime(this.debounceTime), operators.tap(function (event) {
|
|
91
72
|
_this.handleScrollEvent(event);
|
|
92
|
-
}))
|
|
73
|
+
})).subscribe();
|
|
93
74
|
};
|
|
94
|
-
|
|
95
|
-
* @param {?} event
|
|
96
|
-
* @return {?}
|
|
97
|
-
*/
|
|
98
|
-
MatSelectInfiniteScrollDirective.prototype.handleScrollEvent = /**
|
|
99
|
-
* @param {?} event
|
|
100
|
-
* @return {?}
|
|
101
|
-
*/
|
|
102
|
-
function (event) {
|
|
75
|
+
MatSelectInfiniteScrollDirective.prototype.handleScrollEvent = function (event) {
|
|
103
76
|
var _this = this;
|
|
104
|
-
this.ngZone.runOutsideAngular((
|
|
105
|
-
* @return {?}
|
|
106
|
-
*/
|
|
107
|
-
function () {
|
|
77
|
+
this.ngZone.runOutsideAngular(function () {
|
|
108
78
|
if (_this.complete) {
|
|
109
79
|
return;
|
|
110
80
|
}
|
|
111
|
-
/** @type {?} */
|
|
112
81
|
var countOfRenderedOptions = _this.matSelect.options.length;
|
|
113
|
-
/** @type {?} */
|
|
114
82
|
var infiniteScrollDistance = _this.singleOptionHeight * countOfRenderedOptions;
|
|
115
|
-
/** @type {?} */
|
|
116
83
|
var threshold = _this.thrPc !== 0 ? (infiniteScrollDistance * _this.thrPc) : _this.thrPx;
|
|
117
|
-
/** @type {?} */
|
|
118
84
|
var scrolledDistance = _this.panel.clientHeight + event.target.scrollTop;
|
|
119
85
|
if ((scrolledDistance + threshold) >= infiniteScrollDistance) {
|
|
120
|
-
_this.ngZone.run((
|
|
121
|
-
* @return {?}
|
|
122
|
-
*/
|
|
123
|
-
function () { return _this.infiniteScroll.emit(); }));
|
|
86
|
+
_this.ngZone.run(function () { return _this.infiniteScroll.emit(); });
|
|
124
87
|
}
|
|
125
|
-
})
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* @return {?}
|
|
129
|
-
*/
|
|
130
|
-
MatSelectInfiniteScrollDirective.prototype.getSelectItemHeightPx = /**
|
|
131
|
-
* @return {?}
|
|
132
|
-
*/
|
|
133
|
-
function () {
|
|
134
|
-
return parseFloat(getComputedStyle(this.panel).fontSize) * select.SELECT_ITEM_HEIGHT_EM;
|
|
88
|
+
});
|
|
135
89
|
};
|
|
136
|
-
MatSelectInfiniteScrollDirective.
|
|
137
|
-
|
|
138
|
-
selector: '[msInfiniteScroll]'
|
|
139
|
-
},] }
|
|
140
|
-
];
|
|
141
|
-
/** @nocollapse */
|
|
142
|
-
MatSelectInfiniteScrollDirective.ctorParameters = function () { return [
|
|
143
|
-
{ type: select.MatSelect },
|
|
144
|
-
{ type: core.NgZone }
|
|
145
|
-
]; };
|
|
146
|
-
MatSelectInfiniteScrollDirective.propDecorators = {
|
|
147
|
-
threshold: [{ type: core.Input }],
|
|
148
|
-
debounceTime: [{ type: core.Input }],
|
|
149
|
-
complete: [{ type: core.Input }],
|
|
150
|
-
infiniteScroll: [{ type: core.Output }]
|
|
90
|
+
MatSelectInfiniteScrollDirective.prototype.getSelectItemHeightPx = function () {
|
|
91
|
+
return parseFloat(getComputedStyle(this.panel).fontSize) * SELECT_ITEM_HEIGHT_EM;
|
|
151
92
|
};
|
|
152
93
|
return MatSelectInfiniteScrollDirective;
|
|
153
94
|
}());
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
* @private
|
|
171
|
-
*/
|
|
172
|
-
MatSelectInfiniteScrollDirective.prototype.thrPx;
|
|
173
|
-
/**
|
|
174
|
-
* @type {?}
|
|
175
|
-
* @private
|
|
176
|
-
*/
|
|
177
|
-
MatSelectInfiniteScrollDirective.prototype.thrPc;
|
|
178
|
-
/**
|
|
179
|
-
* @type {?}
|
|
180
|
-
* @private
|
|
181
|
-
*/
|
|
182
|
-
MatSelectInfiniteScrollDirective.prototype.singleOptionHeight;
|
|
183
|
-
/**
|
|
184
|
-
* @type {?}
|
|
185
|
-
* @private
|
|
186
|
-
*/
|
|
187
|
-
MatSelectInfiniteScrollDirective.prototype.destroyed$;
|
|
188
|
-
/**
|
|
189
|
-
* @type {?}
|
|
190
|
-
* @private
|
|
191
|
-
*/
|
|
192
|
-
MatSelectInfiniteScrollDirective.prototype.matSelect;
|
|
193
|
-
/**
|
|
194
|
-
* @type {?}
|
|
195
|
-
* @private
|
|
196
|
-
*/
|
|
197
|
-
MatSelectInfiniteScrollDirective.prototype.ngZone;
|
|
198
|
-
}
|
|
95
|
+
MatSelectInfiniteScrollDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: MatSelectInfiniteScrollDirective, deps: [{ token: i1__namespace.MatSelect }, { token: i0__namespace.NgZone }], target: i0__namespace.ɵɵFactoryTarget.Directive });
|
|
96
|
+
MatSelectInfiniteScrollDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.5", type: MatSelectInfiniteScrollDirective, selector: "[msInfiniteScroll]", inputs: { threshold: "threshold", debounceTime: "debounceTime", complete: "complete" }, outputs: { infiniteScroll: "infiniteScroll" }, ngImport: i0__namespace });
|
|
97
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: MatSelectInfiniteScrollDirective, decorators: [{
|
|
98
|
+
type: i0.Directive,
|
|
99
|
+
args: [{
|
|
100
|
+
selector: '[msInfiniteScroll]'
|
|
101
|
+
}]
|
|
102
|
+
}], ctorParameters: function () { return [{ type: i1__namespace.MatSelect }, { type: i0__namespace.NgZone }]; }, propDecorators: { threshold: [{
|
|
103
|
+
type: i0.Input
|
|
104
|
+
}], debounceTime: [{
|
|
105
|
+
type: i0.Input
|
|
106
|
+
}], complete: [{
|
|
107
|
+
type: i0.Input
|
|
108
|
+
}], infiniteScroll: [{
|
|
109
|
+
type: i0.Output
|
|
110
|
+
}] } });
|
|
199
111
|
|
|
200
|
-
/**
|
|
201
|
-
* @fileoverview added by tsickle
|
|
202
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
203
|
-
*/
|
|
204
112
|
var MatSelectInfiniteScrollModule = /** @class */ (function () {
|
|
205
113
|
function MatSelectInfiniteScrollModule() {
|
|
206
114
|
}
|
|
207
|
-
MatSelectInfiniteScrollModule
|
|
208
|
-
|
|
115
|
+
return MatSelectInfiniteScrollModule;
|
|
116
|
+
}());
|
|
117
|
+
MatSelectInfiniteScrollModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: MatSelectInfiniteScrollModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
|
118
|
+
MatSelectInfiniteScrollModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: MatSelectInfiniteScrollModule, declarations: [MatSelectInfiniteScrollDirective], imports: [i1.MatSelectModule], exports: [MatSelectInfiniteScrollDirective] });
|
|
119
|
+
MatSelectInfiniteScrollModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: MatSelectInfiniteScrollModule, imports: [[
|
|
120
|
+
i1.MatSelectModule
|
|
121
|
+
]] });
|
|
122
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: MatSelectInfiniteScrollModule, decorators: [{
|
|
123
|
+
type: i0.NgModule,
|
|
124
|
+
args: [{
|
|
209
125
|
declarations: [MatSelectInfiniteScrollDirective],
|
|
210
126
|
imports: [
|
|
211
|
-
|
|
127
|
+
i1.MatSelectModule
|
|
212
128
|
],
|
|
213
129
|
exports: [MatSelectInfiniteScrollDirective]
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
130
|
+
}]
|
|
131
|
+
}] });
|
|
132
|
+
|
|
133
|
+
/*
|
|
134
|
+
* Public API Surface of ng-mat-select-infinite-scroll
|
|
135
|
+
*/
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Generated bundle index. Do not edit.
|
|
139
|
+
*/
|
|
218
140
|
|
|
219
141
|
exports.MatSelectInfiniteScrollDirective = MatSelectInfiniteScrollDirective;
|
|
220
142
|
exports.MatSelectInfiniteScrollModule = MatSelectInfiniteScrollModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-mat-select-infinite-scroll.umd.js","sources":["ng
|
|
1
|
+
{"version":3,"file":"ng-mat-select-infinite-scroll.umd.js","sources":["../../../projects/ng-mat-select-infinite-scroll/src/lib/mat-select-infinite-scroll.directive.ts","../../../projects/ng-mat-select-infinite-scroll/src/lib/mat-select-infinite-scroll.module.ts","../../../projects/ng-mat-select-infinite-scroll/src/public-api.ts","../../../projects/ng-mat-select-infinite-scroll/src/ng-mat-select-infinite-scroll.ts"],"sourcesContent":["import {AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output} from '@angular/core';\nimport {MatSelect} from '@angular/material/select';\nimport {debounceTime, takeUntil, tap} from 'rxjs/operators';\nimport {fromEvent, Subject} from 'rxjs';\n\n/** The height of the select items in `em` units. */\nconst SELECT_ITEM_HEIGHT_EM = 3;\n\n@Directive({\n selector: '[msInfiniteScroll]'\n})\nexport class MatSelectInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\n\n @Input() threshold = '15%';\n @Input() debounceTime = 150;\n @Input() complete!: boolean;\n @Output() infiniteScroll = new EventEmitter<void>();\n\n private panel!: Element;\n private thrPx = 0;\n private thrPc = 0;\n private singleOptionHeight = SELECT_ITEM_HEIGHT_EM;\n\n private destroyed$ = new Subject<boolean>();\n\n constructor(private matSelect: MatSelect, private ngZone: NgZone) {\n }\n\n ngOnInit() {\n this.evaluateThreshold();\n }\n\n ngAfterViewInit() {\n this.matSelect.openedChange.pipe(\n takeUntil(this.destroyed$)\n ).subscribe((opened) => {\n if (opened) {\n this.panel = this.matSelect.panel.nativeElement;\n this.singleOptionHeight = this.getSelectItemHeightPx();\n this.registerScrollListener();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n evaluateThreshold() {\n if (this.threshold.lastIndexOf('%') > -1) {\n this.thrPx = 0;\n this.thrPc = (parseFloat(this.threshold) / 100);\n\n } else {\n this.thrPx = parseFloat(this.threshold);\n this.thrPc = 0;\n }\n }\n\n registerScrollListener() {\n fromEvent(this.panel, 'scroll').pipe(\n takeUntil(this.destroyed$),\n debounceTime(this.debounceTime),\n tap((event) => {\n this.handleScrollEvent(event);\n })\n ).subscribe();\n }\n\n handleScrollEvent(event: any) {\n this.ngZone.runOutsideAngular(() => {\n if (this.complete) {\n return;\n }\n const countOfRenderedOptions = this.matSelect.options.length;\n const infiniteScrollDistance = this.singleOptionHeight * countOfRenderedOptions;\n const threshold = this.thrPc !== 0 ? (infiniteScrollDistance * this.thrPc) : this.thrPx;\n\n const scrolledDistance = this.panel.clientHeight + event.target.scrollTop;\n\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\n this.ngZone.run(() => this.infiniteScroll.emit());\n }\n });\n }\n\n getSelectItemHeightPx(): number {\n return parseFloat(getComputedStyle(this.panel).fontSize) * SELECT_ITEM_HEIGHT_EM;\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {MatSelectInfiniteScrollDirective} from './mat-select-infinite-scroll.directive';\nimport {MatSelectModule} from '@angular/material/select';\n\n@NgModule({\n declarations: [MatSelectInfiniteScrollDirective],\n imports: [\n MatSelectModule\n ],\n exports: [MatSelectInfiniteScrollDirective]\n})\nexport class MatSelectInfiniteScrollModule {\n}\n","/*\n * Public API Surface of ng-mat-select-infinite-scroll\n */\n\nexport * from './lib/mat-select-infinite-scroll.directive';\nexport * from './lib/mat-select-infinite-scroll.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["EventEmitter","Subject","takeUntil","fromEvent","debounceTime","tap","Directive","Input","Output","MatSelectModule","NgModule"],"mappings":"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"}
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { Directive, EventEmitter, Input, NgZone, Output } from '@angular/core';
|
|
6
|
-
import { MatSelect, SELECT_ITEM_HEIGHT_EM } from '@angular/material/select';
|
|
1
|
+
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
7
2
|
import { debounceTime, takeUntil, tap } from 'rxjs/operators';
|
|
8
3
|
import { fromEvent, Subject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/select";
|
|
6
|
+
/** The height of the select items in `em` units. */
|
|
7
|
+
const SELECT_ITEM_HEIGHT_EM = 3;
|
|
9
8
|
export class MatSelectInfiniteScrollDirective {
|
|
10
|
-
/**
|
|
11
|
-
* @param {?} matSelect
|
|
12
|
-
* @param {?} ngZone
|
|
13
|
-
*/
|
|
14
9
|
constructor(matSelect, ngZone) {
|
|
15
10
|
this.matSelect = matSelect;
|
|
16
11
|
this.ngZone = ngZone;
|
|
@@ -22,38 +17,22 @@ export class MatSelectInfiniteScrollDirective {
|
|
|
22
17
|
this.singleOptionHeight = SELECT_ITEM_HEIGHT_EM;
|
|
23
18
|
this.destroyed$ = new Subject();
|
|
24
19
|
}
|
|
25
|
-
/**
|
|
26
|
-
* @return {?}
|
|
27
|
-
*/
|
|
28
20
|
ngOnInit() {
|
|
29
21
|
this.evaluateThreshold();
|
|
30
22
|
}
|
|
31
|
-
/**
|
|
32
|
-
* @return {?}
|
|
33
|
-
*/
|
|
34
23
|
ngAfterViewInit() {
|
|
35
|
-
this.matSelect.openedChange.pipe(takeUntil(this.destroyed$)).subscribe((
|
|
36
|
-
* @param {?} opened
|
|
37
|
-
* @return {?}
|
|
38
|
-
*/
|
|
39
|
-
(opened) => {
|
|
24
|
+
this.matSelect.openedChange.pipe(takeUntil(this.destroyed$)).subscribe((opened) => {
|
|
40
25
|
if (opened) {
|
|
41
26
|
this.panel = this.matSelect.panel.nativeElement;
|
|
42
27
|
this.singleOptionHeight = this.getSelectItemHeightPx();
|
|
43
28
|
this.registerScrollListener();
|
|
44
29
|
}
|
|
45
|
-
})
|
|
30
|
+
});
|
|
46
31
|
}
|
|
47
|
-
/**
|
|
48
|
-
* @return {?}
|
|
49
|
-
*/
|
|
50
32
|
ngOnDestroy() {
|
|
51
33
|
this.destroyed$.next(true);
|
|
52
34
|
this.destroyed$.complete();
|
|
53
35
|
}
|
|
54
|
-
/**
|
|
55
|
-
* @return {?}
|
|
56
|
-
*/
|
|
57
36
|
evaluateThreshold() {
|
|
58
37
|
if (this.threshold.lastIndexOf('%') > -1) {
|
|
59
38
|
this.thrPx = 0;
|
|
@@ -64,112 +43,43 @@ export class MatSelectInfiniteScrollDirective {
|
|
|
64
43
|
this.thrPc = 0;
|
|
65
44
|
}
|
|
66
45
|
}
|
|
67
|
-
/**
|
|
68
|
-
* @return {?}
|
|
69
|
-
*/
|
|
70
46
|
registerScrollListener() {
|
|
71
|
-
fromEvent(this.panel, 'scroll').pipe(takeUntil(this.destroyed$), debounceTime(this.debounceTime), tap((
|
|
72
|
-
* @param {?} event
|
|
73
|
-
* @return {?}
|
|
74
|
-
*/
|
|
75
|
-
(event) => {
|
|
47
|
+
fromEvent(this.panel, 'scroll').pipe(takeUntil(this.destroyed$), debounceTime(this.debounceTime), tap((event) => {
|
|
76
48
|
this.handleScrollEvent(event);
|
|
77
|
-
}))
|
|
49
|
+
})).subscribe();
|
|
78
50
|
}
|
|
79
|
-
/**
|
|
80
|
-
* @param {?} event
|
|
81
|
-
* @return {?}
|
|
82
|
-
*/
|
|
83
51
|
handleScrollEvent(event) {
|
|
84
|
-
this.ngZone.runOutsideAngular((
|
|
85
|
-
* @return {?}
|
|
86
|
-
*/
|
|
87
|
-
() => {
|
|
52
|
+
this.ngZone.runOutsideAngular(() => {
|
|
88
53
|
if (this.complete) {
|
|
89
54
|
return;
|
|
90
55
|
}
|
|
91
|
-
/** @type {?} */
|
|
92
56
|
const countOfRenderedOptions = this.matSelect.options.length;
|
|
93
|
-
/** @type {?} */
|
|
94
57
|
const infiniteScrollDistance = this.singleOptionHeight * countOfRenderedOptions;
|
|
95
|
-
/** @type {?} */
|
|
96
58
|
const threshold = this.thrPc !== 0 ? (infiniteScrollDistance * this.thrPc) : this.thrPx;
|
|
97
|
-
/** @type {?} */
|
|
98
59
|
const scrolledDistance = this.panel.clientHeight + event.target.scrollTop;
|
|
99
60
|
if ((scrolledDistance + threshold) >= infiniteScrollDistance) {
|
|
100
|
-
this.ngZone.run((
|
|
101
|
-
* @return {?}
|
|
102
|
-
*/
|
|
103
|
-
() => this.infiniteScroll.emit()));
|
|
61
|
+
this.ngZone.run(() => this.infiniteScroll.emit());
|
|
104
62
|
}
|
|
105
|
-
})
|
|
63
|
+
});
|
|
106
64
|
}
|
|
107
|
-
/**
|
|
108
|
-
* @return {?}
|
|
109
|
-
*/
|
|
110
65
|
getSelectItemHeightPx() {
|
|
111
66
|
return parseFloat(getComputedStyle(this.panel).fontSize) * SELECT_ITEM_HEIGHT_EM;
|
|
112
67
|
}
|
|
113
68
|
}
|
|
114
|
-
MatSelectInfiniteScrollDirective
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
]
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
/** @type {?} */
|
|
132
|
-
MatSelectInfiniteScrollDirective.prototype.threshold;
|
|
133
|
-
/** @type {?} */
|
|
134
|
-
MatSelectInfiniteScrollDirective.prototype.debounceTime;
|
|
135
|
-
/** @type {?} */
|
|
136
|
-
MatSelectInfiniteScrollDirective.prototype.complete;
|
|
137
|
-
/** @type {?} */
|
|
138
|
-
MatSelectInfiniteScrollDirective.prototype.infiniteScroll;
|
|
139
|
-
/**
|
|
140
|
-
* @type {?}
|
|
141
|
-
* @private
|
|
142
|
-
*/
|
|
143
|
-
MatSelectInfiniteScrollDirective.prototype.panel;
|
|
144
|
-
/**
|
|
145
|
-
* @type {?}
|
|
146
|
-
* @private
|
|
147
|
-
*/
|
|
148
|
-
MatSelectInfiniteScrollDirective.prototype.thrPx;
|
|
149
|
-
/**
|
|
150
|
-
* @type {?}
|
|
151
|
-
* @private
|
|
152
|
-
*/
|
|
153
|
-
MatSelectInfiniteScrollDirective.prototype.thrPc;
|
|
154
|
-
/**
|
|
155
|
-
* @type {?}
|
|
156
|
-
* @private
|
|
157
|
-
*/
|
|
158
|
-
MatSelectInfiniteScrollDirective.prototype.singleOptionHeight;
|
|
159
|
-
/**
|
|
160
|
-
* @type {?}
|
|
161
|
-
* @private
|
|
162
|
-
*/
|
|
163
|
-
MatSelectInfiniteScrollDirective.prototype.destroyed$;
|
|
164
|
-
/**
|
|
165
|
-
* @type {?}
|
|
166
|
-
* @private
|
|
167
|
-
*/
|
|
168
|
-
MatSelectInfiniteScrollDirective.prototype.matSelect;
|
|
169
|
-
/**
|
|
170
|
-
* @type {?}
|
|
171
|
-
* @private
|
|
172
|
-
*/
|
|
173
|
-
MatSelectInfiniteScrollDirective.prototype.ngZone;
|
|
174
|
-
}
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwvIiwic291cmNlcyI6WyJsaWIvbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBQyxTQUFTLEVBQUUscUJBQXFCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUt4QyxNQUFNLE9BQU8sZ0NBQWdDOzs7OztJQWMzQyxZQUFvQixTQUFvQixFQUFVLE1BQWM7UUFBNUMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFadkQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixpQkFBWSxHQUFHLEdBQUcsQ0FBQztRQUVsQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHNUMsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVix1QkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztRQUUzQyxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUc1QyxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7Ozs7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM5QixTQUFTLENBQUMsSUFB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QUNMLEtBQUs7dUJBQ0wsS0FBSzs2QkFDTCxNQUFNOzs7O0lBSFAscURBQTJCOztJQUMzQix3REFBNEI7O0lBQzVCLG9EQUEyQjs7SUFDM0IsMERBQW9EOzs7OztJQUVwRCxpREFBdUI7Ozs7O0lBQ3ZCLGlEQUFrQjs7Ozs7SUFDbEIsaURBQWtCOzs7OztJQUNsQiw4REFBbUQ7Ozs7O0lBRW5ELHNEQUE0Qzs7Ozs7SUFFaEMscURBQTRCOzs7OztJQUFFLGtEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRTZWxlY3QsIFNFTEVDVF9JVEVNX0hFSUdIVF9FTX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0YWtlVW50aWwsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbXNJbmZpbml0ZVNjcm9sbF0nXG59KVxuZXhwb3J0IGNsYXNzIE1hdFNlbGVjdEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpIHRocmVzaG9sZCA9ICcxNSUnO1xuICBASW5wdXQoKSBkZWJvdW5jZVRpbWUgPSAxNTA7XG4gIEBJbnB1dCgpIGNvbXBsZXRlOiBib29sZWFuO1xuICBAT3V0cHV0KCkgaW5maW5pdGVTY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBwYW5lbDogRWxlbWVudDtcbiAgcHJpdmF0ZSB0aHJQeCA9IDA7XG4gIHByaXZhdGUgdGhyUGMgPSAwO1xuICBwcml2YXRlIHNpbmdsZU9wdGlvbkhlaWdodCA9IFNFTEVDVF9JVEVNX0hFSUdIVF9FTTtcblxuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWF0U2VsZWN0OiBNYXRTZWxlY3QsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZXZhbHVhdGVUaHJlc2hvbGQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm1hdFNlbGVjdC5vcGVuZWRDaGFuZ2UucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgKS5zdWJzY3JpYmUoKG9wZW5lZCkgPT4ge1xuICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICB0aGlzLnBhbmVsID0gdGhpcy5tYXRTZWxlY3QucGFuZWwubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5zaW5nbGVPcHRpb25IZWlnaHQgPSB0aGlzLmdldFNlbGVjdEl0ZW1IZWlnaHRQeCgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGVUaHJlc2hvbGQoKSB7XG4gICAgaWYgKHRoaXMudGhyZXNob2xkLmxhc3RJbmRleE9mKCclJykgPiAtMSkge1xuICAgICAgdGhpcy50aHJQeCA9IDA7XG4gICAgICB0aGlzLnRoclBjID0gKHBhcnNlRmxvYXQodGhpcy50aHJlc2hvbGQpIC8gMTAwKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRoclB4ID0gcGFyc2VGbG9hdCh0aGlzLnRocmVzaG9sZCk7XG4gICAgICB0aGlzLnRoclBjID0gMDtcbiAgICB9XG4gIH1cblxuICByZWdpc3RlclNjcm9sbExpc3RlbmVyKCkge1xuICAgIGZyb21FdmVudCh0aGlzLnBhbmVsLCAnc2Nyb2xsJykucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVTY3JvbGxFdmVudChldmVudCk7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBoYW5kbGVTY3JvbGxFdmVudChldmVudCkge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbXBsZXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvdW50T2ZSZW5kZXJlZE9wdGlvbnMgPSB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLmxlbmd0aDtcbiAgICAgIGNvbnN0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UgPSB0aGlzLnNpbmdsZU9wdGlvbkhlaWdodCAqIGNvdW50T2ZSZW5kZXJlZE9wdGlvbnM7XG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSB0aGlzLnRoclBjICE9PSAwID8gKGluZmluaXRlU2Nyb2xsRGlzdGFuY2UgKiB0aGlzLnRoclBjKSA6IHRoaXMudGhyUHg7XG5cbiAgICAgIGNvbnN0IHNjcm9sbGVkRGlzdGFuY2UgPSB0aGlzLnBhbmVsLmNsaWVudEhlaWdodCArIGV2ZW50LnRhcmdldC5zY3JvbGxUb3A7XG5cbiAgICAgIGlmICgoc2Nyb2xsZWREaXN0YW5jZSArIHRocmVzaG9sZCkgPj0gaW5maW5pdGVTY3JvbGxEaXN0YW5jZSkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5pbmZpbml0ZVNjcm9sbC5lbWl0KCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2VsZWN0SXRlbUhlaWdodFB4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnBhbmVsKS5mb250U2l6ZSkgKiBTRUxFQ1RfSVRFTV9IRUlHSFRfRU07XG4gIH1cblxufVxuIl19
|
|
69
|
+
MatSelectInfiniteScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollDirective, deps: [{ token: i1.MatSelect }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
70
|
+
MatSelectInfiniteScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.5", type: MatSelectInfiniteScrollDirective, selector: "[msInfiniteScroll]", inputs: { threshold: "threshold", debounceTime: "debounceTime", complete: "complete" }, outputs: { infiniteScroll: "infiniteScroll" }, ngImport: i0 });
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollDirective, decorators: [{
|
|
72
|
+
type: Directive,
|
|
73
|
+
args: [{
|
|
74
|
+
selector: '[msInfiniteScroll]'
|
|
75
|
+
}]
|
|
76
|
+
}], ctorParameters: function () { return [{ type: i1.MatSelect }, { type: i0.NgZone }]; }, propDecorators: { threshold: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], debounceTime: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], complete: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], infiniteScroll: [{
|
|
83
|
+
type: Output
|
|
84
|
+
}] } });
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwvc3JjL2xpYi9tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBNkIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFFeEMsb0RBQW9EO0FBQ3BELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBS2hDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFjM0MsWUFBb0IsU0FBb0IsRUFBVSxNQUFjO1FBQTVDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWnZELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsaUJBQVksR0FBRyxHQUFHLENBQUM7UUFFbEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzVDLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsdUJBQWtCLEdBQUcscUJBQXFCLENBQUM7UUFFM0MsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFHNUMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFV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QUdVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0U2VsZWN0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2Zyb21FdmVudCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbi8qKiBUaGUgaGVpZ2h0IG9mIHRoZSBzZWxlY3QgaXRlbXMgaW4gYGVtYCB1bml0cy4gKi9cbmNvbnN0IFNFTEVDVF9JVEVNX0hFSUdIVF9FTSA9IDM7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttc0luZmluaXRlU2Nyb2xsXSdcbn0pXG5leHBvcnQgY2xhc3MgTWF0U2VsZWN0SW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KCkgdGhyZXNob2xkID0gJzE1JSc7XG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZSA9IDE1MDtcbiAgQElucHV0KCkgY29tcGxldGUhOiBib29sZWFuO1xuICBAT3V0cHV0KCkgaW5maW5pdGVTY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBwYW5lbCE6IEVsZW1lbnQ7XG4gIHByaXZhdGUgdGhyUHggPSAwO1xuICBwcml2YXRlIHRoclBjID0gMDtcbiAgcHJpdmF0ZSBzaW5nbGVPcHRpb25IZWlnaHQgPSBTRUxFQ1RfSVRFTV9IRUlHSFRfRU07XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hdFNlbGVjdDogTWF0U2VsZWN0LCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmV2YWx1YXRlVGhyZXNob2xkKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5tYXRTZWxlY3Qub3BlbmVkQ2hhbmdlLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICkuc3Vic2NyaWJlKChvcGVuZWQpID0+IHtcbiAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgdGhpcy5wYW5lbCA9IHRoaXMubWF0U2VsZWN0LnBhbmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuc2luZ2xlT3B0aW9uSGVpZ2h0ID0gdGhpcy5nZXRTZWxlY3RJdGVtSGVpZ2h0UHgoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclNjcm9sbExpc3RlbmVyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlVGhyZXNob2xkKCkge1xuICAgIGlmICh0aGlzLnRocmVzaG9sZC5sYXN0SW5kZXhPZignJScpID4gLTEpIHtcbiAgICAgIHRoaXMudGhyUHggPSAwO1xuICAgICAgdGhpcy50aHJQYyA9IChwYXJzZUZsb2F0KHRoaXMudGhyZXNob2xkKSAvIDEwMCk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50aHJQeCA9IHBhcnNlRmxvYXQodGhpcy50aHJlc2hvbGQpO1xuICAgICAgdGhpcy50aHJQYyA9IDA7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICBmcm9tRXZlbnQodGhpcy5wYW5lbCwgJ3Njcm9sbCcpLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSksXG4gICAgICB0YXAoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlU2Nyb2xsRXZlbnQoZXZlbnQpO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgaGFuZGxlU2Nyb2xsRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbXBsZXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvdW50T2ZSZW5kZXJlZE9wdGlvbnMgPSB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLmxlbmd0aDtcbiAgICAgIGNvbnN0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UgPSB0aGlzLnNpbmdsZU9wdGlvbkhlaWdodCAqIGNvdW50T2ZSZW5kZXJlZE9wdGlvbnM7XG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSB0aGlzLnRoclBjICE9PSAwID8gKGluZmluaXRlU2Nyb2xsRGlzdGFuY2UgKiB0aGlzLnRoclBjKSA6IHRoaXMudGhyUHg7XG5cbiAgICAgIGNvbnN0IHNjcm9sbGVkRGlzdGFuY2UgPSB0aGlzLnBhbmVsLmNsaWVudEhlaWdodCArIGV2ZW50LnRhcmdldC5zY3JvbGxUb3A7XG5cbiAgICAgIGlmICgoc2Nyb2xsZWREaXN0YW5jZSArIHRocmVzaG9sZCkgPj0gaW5maW5pdGVTY3JvbGxEaXN0YW5jZSkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5pbmZpbml0ZVNjcm9sbC5lbWl0KCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2VsZWN0SXRlbUhlaWdodFB4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnBhbmVsKS5mb250U2l6ZSkgKiBTRUxFQ1RfSVRFTV9IRUlHSFRfRU07XG4gIH1cblxufVxuIl19
|