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.
@@ -1,19 +1,22 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
1
  import { NgModule } from '@angular/core';
6
2
  import { MatSelectInfiniteScrollDirective } from './mat-select-infinite-scroll.directive';
7
3
  import { MatSelectModule } from '@angular/material/select';
4
+ import * as i0 from "@angular/core";
8
5
  export class MatSelectInfiniteScrollModule {
9
6
  }
10
- MatSelectInfiniteScrollModule.decorators = [
11
- { type: NgModule, args: [{
12
- declarations: [MatSelectInfiniteScrollDirective],
13
- imports: [
14
- MatSelectModule
15
- ],
16
- exports: [MatSelectInfiniteScrollDirective]
17
- },] }
18
- ];
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwvIiwic291cmNlcyI6WyJsaWIvbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQVN6RCxNQUFNLE9BQU8sNkJBQTZCOzs7WUFQekMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2dCQUNoRCxPQUFPLEVBQUU7b0JBQ1AsZUFBZTtpQkFDaEI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7YUFDNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0U2VsZWN0SW5maW5pdGVTY3JvbGxEaXJlY3RpdmV9IGZyb20gJy4vbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0U2VsZWN0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtNYXRTZWxlY3RJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtcbiAgICBNYXRTZWxlY3RNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW01hdFNlbGVjdEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBNYXRTZWxlY3RJbmZpbml0ZVNjcm9sbE1vZHVsZSB7XG59XG4iXX0=
7
+ MatSelectInfiniteScrollModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ MatSelectInfiniteScrollModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollModule, declarations: [MatSelectInfiniteScrollDirective], imports: [MatSelectModule], exports: [MatSelectInfiniteScrollDirective] });
9
+ MatSelectInfiniteScrollModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollModule, imports: [[
10
+ MatSelectModule
11
+ ]] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [MatSelectInfiniteScrollDirective],
16
+ imports: [
17
+ MatSelectModule
18
+ ],
19
+ exports: [MatSelectInfiniteScrollDirective]
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwvc3JjL2xpYi9tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBU3pELE1BQU0sT0FBTyw2QkFBNkI7OzBIQUE3Qiw2QkFBNkI7MkhBQTdCLDZCQUE2QixpQkFOekIsZ0NBQWdDLGFBRTdDLGVBQWUsYUFFUCxnQ0FBZ0M7MkhBRS9CLDZCQUE2QixZQUwvQjtZQUNQLGVBQWU7U0FDaEI7MkZBR1UsNkJBQTZCO2tCQVB6QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdDQUFnQyxDQUFDO29CQUNoRCxPQUFPLEVBQUU7d0JBQ1AsZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdFNlbGVjdEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlfSBmcm9tICcuL21hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XG5pbXBvcnQge01hdFNlbGVjdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTWF0U2VsZWN0SW5maW5pdGVTY3JvbGxEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0U2VsZWN0TW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtNYXRTZWxlY3RJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgTWF0U2VsZWN0SW5maW5pdGVTY3JvbGxNb2R1bGUge1xufVxuIl19
@@ -1,9 +1,5 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
1
  /**
6
2
  * Generated bundle index. Do not edit.
7
3
  */
8
- export { MatSelectInfiniteScrollDirective, MatSelectInfiniteScrollModule } from './public_api';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC8iLCJzb3VyY2VzIjpbIm5nLW1hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxnRkFBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZy1tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC9zcmMvbmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Public API Surface of ng-mat-select-infinite-scroll
3
+ */
4
+ export * from './lib/mat-select-infinite-scroll.directive';
5
+ export * from './lib/mat-select-infinite-scroll.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLW1hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZy1tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC5tb2R1bGUnO1xuIl19
@@ -1,17 +1,13 @@
1
- import { EventEmitter, Directive, NgZone, Input, Output, NgModule } from '@angular/core';
2
- import { SELECT_ITEM_HEIGHT_EM, MatSelect, MatSelectModule } from '@angular/material/select';
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Directive, Input, Output, NgModule } from '@angular/core';
3
3
  import { takeUntil, debounceTime, tap } from 'rxjs/operators';
4
4
  import { Subject, fromEvent } from 'rxjs';
5
+ import * as i1 from '@angular/material/select';
6
+ import { MatSelectModule } from '@angular/material/select';
5
7
 
6
- /**
7
- * @fileoverview added by tsickle
8
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9
- */
8
+ /** The height of the select items in `em` units. */
9
+ const SELECT_ITEM_HEIGHT_EM = 3;
10
10
  class MatSelectInfiniteScrollDirective {
11
- /**
12
- * @param {?} matSelect
13
- * @param {?} ngZone
14
- */
15
11
  constructor(matSelect, ngZone) {
16
12
  this.matSelect = matSelect;
17
13
  this.ngZone = ngZone;
@@ -23,38 +19,22 @@ class MatSelectInfiniteScrollDirective {
23
19
  this.singleOptionHeight = SELECT_ITEM_HEIGHT_EM;
24
20
  this.destroyed$ = new Subject();
25
21
  }
26
- /**
27
- * @return {?}
28
- */
29
22
  ngOnInit() {
30
23
  this.evaluateThreshold();
31
24
  }
32
- /**
33
- * @return {?}
34
- */
35
25
  ngAfterViewInit() {
36
- this.matSelect.openedChange.pipe(takeUntil(this.destroyed$)).subscribe((/**
37
- * @param {?} opened
38
- * @return {?}
39
- */
40
- (opened) => {
26
+ this.matSelect.openedChange.pipe(takeUntil(this.destroyed$)).subscribe((opened) => {
41
27
  if (opened) {
42
28
  this.panel = this.matSelect.panel.nativeElement;
43
29
  this.singleOptionHeight = this.getSelectItemHeightPx();
44
30
  this.registerScrollListener();
45
31
  }
46
- }));
32
+ });
47
33
  }
48
- /**
49
- * @return {?}
50
- */
51
34
  ngOnDestroy() {
52
35
  this.destroyed$.next(true);
53
36
  this.destroyed$.complete();
54
37
  }
55
- /**
56
- * @return {?}
57
- */
58
38
  evaluateThreshold() {
59
39
  if (this.threshold.lastIndexOf('%') > -1) {
60
40
  this.thrPx = 0;
@@ -65,139 +45,70 @@ class MatSelectInfiniteScrollDirective {
65
45
  this.thrPc = 0;
66
46
  }
67
47
  }
68
- /**
69
- * @return {?}
70
- */
71
48
  registerScrollListener() {
72
- fromEvent(this.panel, 'scroll').pipe(takeUntil(this.destroyed$), debounceTime(this.debounceTime), tap((/**
73
- * @param {?} event
74
- * @return {?}
75
- */
76
- (event) => {
49
+ fromEvent(this.panel, 'scroll').pipe(takeUntil(this.destroyed$), debounceTime(this.debounceTime), tap((event) => {
77
50
  this.handleScrollEvent(event);
78
- }))).subscribe();
51
+ })).subscribe();
79
52
  }
80
- /**
81
- * @param {?} event
82
- * @return {?}
83
- */
84
53
  handleScrollEvent(event) {
85
- this.ngZone.runOutsideAngular((/**
86
- * @return {?}
87
- */
88
- () => {
54
+ this.ngZone.runOutsideAngular(() => {
89
55
  if (this.complete) {
90
56
  return;
91
57
  }
92
- /** @type {?} */
93
58
  const countOfRenderedOptions = this.matSelect.options.length;
94
- /** @type {?} */
95
59
  const infiniteScrollDistance = this.singleOptionHeight * countOfRenderedOptions;
96
- /** @type {?} */
97
60
  const threshold = this.thrPc !== 0 ? (infiniteScrollDistance * this.thrPc) : this.thrPx;
98
- /** @type {?} */
99
61
  const scrolledDistance = this.panel.clientHeight + event.target.scrollTop;
100
62
  if ((scrolledDistance + threshold) >= infiniteScrollDistance) {
101
- this.ngZone.run((/**
102
- * @return {?}
103
- */
104
- () => this.infiniteScroll.emit()));
63
+ this.ngZone.run(() => this.infiniteScroll.emit());
105
64
  }
106
- }));
65
+ });
107
66
  }
108
- /**
109
- * @return {?}
110
- */
111
67
  getSelectItemHeightPx() {
112
68
  return parseFloat(getComputedStyle(this.panel).fontSize) * SELECT_ITEM_HEIGHT_EM;
113
69
  }
114
70
  }
115
- MatSelectInfiniteScrollDirective.decorators = [
116
- { type: Directive, args: [{
117
- selector: '[msInfiniteScroll]'
118
- },] }
119
- ];
120
- /** @nocollapse */
121
- MatSelectInfiniteScrollDirective.ctorParameters = () => [
122
- { type: MatSelect },
123
- { type: NgZone }
124
- ];
125
- MatSelectInfiniteScrollDirective.propDecorators = {
126
- threshold: [{ type: Input }],
127
- debounceTime: [{ type: Input }],
128
- complete: [{ type: Input }],
129
- infiniteScroll: [{ type: Output }]
130
- };
131
- if (false) {
132
- /** @type {?} */
133
- MatSelectInfiniteScrollDirective.prototype.threshold;
134
- /** @type {?} */
135
- MatSelectInfiniteScrollDirective.prototype.debounceTime;
136
- /** @type {?} */
137
- MatSelectInfiniteScrollDirective.prototype.complete;
138
- /** @type {?} */
139
- MatSelectInfiniteScrollDirective.prototype.infiniteScroll;
140
- /**
141
- * @type {?}
142
- * @private
143
- */
144
- MatSelectInfiniteScrollDirective.prototype.panel;
145
- /**
146
- * @type {?}
147
- * @private
148
- */
149
- MatSelectInfiniteScrollDirective.prototype.thrPx;
150
- /**
151
- * @type {?}
152
- * @private
153
- */
154
- MatSelectInfiniteScrollDirective.prototype.thrPc;
155
- /**
156
- * @type {?}
157
- * @private
158
- */
159
- MatSelectInfiniteScrollDirective.prototype.singleOptionHeight;
160
- /**
161
- * @type {?}
162
- * @private
163
- */
164
- MatSelectInfiniteScrollDirective.prototype.destroyed$;
165
- /**
166
- * @type {?}
167
- * @private
168
- */
169
- MatSelectInfiniteScrollDirective.prototype.matSelect;
170
- /**
171
- * @type {?}
172
- * @private
173
- */
174
- MatSelectInfiniteScrollDirective.prototype.ngZone;
175
- }
71
+ 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 });
72
+ 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 });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollDirective, decorators: [{
74
+ type: Directive,
75
+ args: [{
76
+ selector: '[msInfiniteScroll]'
77
+ }]
78
+ }], ctorParameters: function () { return [{ type: i1.MatSelect }, { type: i0.NgZone }]; }, propDecorators: { threshold: [{
79
+ type: Input
80
+ }], debounceTime: [{
81
+ type: Input
82
+ }], complete: [{
83
+ type: Input
84
+ }], infiniteScroll: [{
85
+ type: Output
86
+ }] } });
176
87
 
177
- /**
178
- * @fileoverview added by tsickle
179
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
180
- */
181
88
  class MatSelectInfiniteScrollModule {
182
89
  }
183
- MatSelectInfiniteScrollModule.decorators = [
184
- { type: NgModule, args: [{
185
- declarations: [MatSelectInfiniteScrollDirective],
186
- imports: [
187
- MatSelectModule
188
- ],
189
- exports: [MatSelectInfiniteScrollDirective]
190
- },] }
191
- ];
90
+ MatSelectInfiniteScrollModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
91
+ MatSelectInfiniteScrollModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollModule, declarations: [MatSelectInfiniteScrollDirective], imports: [MatSelectModule], exports: [MatSelectInfiniteScrollDirective] });
92
+ MatSelectInfiniteScrollModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollModule, imports: [[
93
+ MatSelectModule
94
+ ]] });
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: MatSelectInfiniteScrollModule, decorators: [{
96
+ type: NgModule,
97
+ args: [{
98
+ declarations: [MatSelectInfiniteScrollDirective],
99
+ imports: [
100
+ MatSelectModule
101
+ ],
102
+ exports: [MatSelectInfiniteScrollDirective]
103
+ }]
104
+ }] });
192
105
 
193
- /**
194
- * @fileoverview added by tsickle
195
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
106
+ /*
107
+ * Public API Surface of ng-mat-select-infinite-scroll
196
108
  */
197
109
 
198
110
  /**
199
- * @fileoverview added by tsickle
200
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
111
+ * Generated bundle index. Do not edit.
201
112
  */
202
113
 
203
114
  export { MatSelectInfiniteScrollDirective, MatSelectInfiniteScrollModule };
@@ -1 +1 @@
1
- {"version":3,"file":"ng-mat-select-infinite-scroll.js","sources":["ng://ng-mat-select-infinite-scroll/lib/mat-select-infinite-scroll.directive.ts","ng://ng-mat-select-infinite-scroll/lib/mat-select-infinite-scroll.module.ts"],"sourcesContent":["import {AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output} from '@angular/core';\nimport {MatSelect, SELECT_ITEM_HEIGHT_EM} from '@angular/material/select';\nimport {debounceTime, takeUntil, tap} from 'rxjs/operators';\nimport {fromEvent, Subject} from 'rxjs';\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) {\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"],"names":[],"mappings":";;;;;;;;;AAAA,MAQa,gCAAgC;;;;;IAc3C,YAAoB,SAAoB,EAAU,MAAc;QAA5C,cAAS,GAAT,SAAS,CAAW;QAAU,WAAM,GAAN,MAAM,CAAQ;QAZvD,cAAS,GAAG,KAAK,CAAC;QAClB,iBAAY,GAAG,GAAG,CAAC;QAElB,mBAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;QAG5C,UAAK,GAAG,CAAC,CAAC;QACV,UAAK,GAAG,CAAC,CAAC;QACV,uBAAkB,GAAG,qBAAqB,CAAC;QAE3C,eAAU,GAAG,IAAI,OAAO,EAAW,CAAC;KAG3C;;;;IAED,QAAQ;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;;;;IAED,eAAe;QACb,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAC9B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS;;;;QAAC,CAAC,MAAM;YACjB,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;gBAChD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACvD,IAAI,CAAC,sBAAsB,EAAE,CAAC;aAC/B;SACF,EAAC,CAAC;KACJ;;;;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;;;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YACxC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;SAEjD;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;KACF;;;;IAED,sBAAsB;QACpB,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAClC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC1B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,GAAG;;;;QAAC,CAAC,KAAK;YACR,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC/B,EAAC,CACH,CAAC,SAAS,EAAE,CAAC;KACf;;;;;IAED,iBAAiB,CAAC,KAAK;QACrB,IAAI,CAAC,MAAM,CAAC,iBAAiB;;;QAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,OAAO;aACR;;kBACK,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;;kBACtD,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,GAAG,sBAAsB;;kBACzE,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,sBAAsB,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;;kBAEjF,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS;YAEzE,IAAI,CAAC,gBAAgB,GAAG,SAAS,KAAK,sBAAsB,EAAE;gBAC5D,IAAI,CAAC,MAAM,CAAC,GAAG;;;gBAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAC,CAAC;aACnD;SACF,EAAC,CAAC;KACJ;;;;IAED,qBAAqB;QACnB,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC;KAClF;;;YAjFF,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;aAC/B;;;;YANO,SAAS;YADsC,MAAM;;;wBAU1D,KAAK;2BACL,KAAK;uBACL,KAAK;6BACL,MAAM;;;;IAHP,qDAA2B;;IAC3B,wDAA4B;;IAC5B,oDAA2B;;IAC3B,0DAAoD;;;;;IAEpD,iDAAuB;;;;;IACvB,iDAAkB;;;;;IAClB,iDAAkB;;;;;IAClB,8DAAmD;;;;;IAEnD,sDAA4C;;;;;IAEhC,qDAA4B;;;;;IAAE,kDAAsB;;;;;;;ACtBlE,MAWa,6BAA6B;;;YAPzC,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,gCAAgC,CAAC;gBAChD,OAAO,EAAE;oBACP,eAAe;iBAChB;gBACD,OAAO,EAAE,CAAC,gCAAgC,CAAC;aAC5C;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ng-mat-select-infinite-scroll.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":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { AfterViewInit, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';
2
2
  import { MatSelect } from '@angular/material/select';
3
+ import * as i0 from "@angular/core";
3
4
  export declare class MatSelectInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {
4
5
  private matSelect;
5
6
  private ngZone;
@@ -20,4 +21,6 @@ export declare class MatSelectInfiniteScrollDirective implements OnInit, OnDestr
20
21
  registerScrollListener(): void;
21
22
  handleScrollEvent(event: any): void;
22
23
  getSelectItemHeightPx(): number;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatSelectInfiniteScrollDirective, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MatSelectInfiniteScrollDirective, "[msInfiniteScroll]", never, { "threshold": "threshold"; "debounceTime": "debounceTime"; "complete": "complete"; }, { "infiniteScroll": "infiniteScroll"; }, never>;
23
26
  }
@@ -1,2 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./mat-select-infinite-scroll.directive";
3
+ import * as i2 from "@angular/material/select";
1
4
  export declare class MatSelectInfiniteScrollModule {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatSelectInfiniteScrollModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MatSelectInfiniteScrollModule, [typeof i1.MatSelectInfiniteScrollDirective], [typeof i2.MatSelectModule], [typeof i1.MatSelectInfiniteScrollDirective]>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<MatSelectInfiniteScrollModule>;
2
8
  }
@@ -1,4 +1,5 @@
1
1
  /**
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
- export * from './public_api';
4
+ /// <amd-module name="ng-mat-select-infinite-scroll" />
5
+ export * from './public-api';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-mat-select-infinite-scroll",
3
- "version": "2.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Adds missing infinite scroll functionality for the angular material select component",
5
5
  "author": "Haidar Zeineddine",
6
6
  "repository": {
@@ -23,21 +23,17 @@
23
23
  ],
24
24
  "license": "MIT",
25
25
  "peerDependencies": {
26
- "@angular/common": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
27
- "@angular/core": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
28
- "@angular/material": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
26
+ "@angular/core": ">=6.0.0 <14.0.0",
27
+ "@angular/material": ">=6.0.0 <14.0.0"
29
28
  },
30
29
  "main": "bundles/ng-mat-select-infinite-scroll.umd.js",
31
- "module": "fesm5/ng-mat-select-infinite-scroll.js",
30
+ "module": "fesm2015/ng-mat-select-infinite-scroll.js",
32
31
  "es2015": "fesm2015/ng-mat-select-infinite-scroll.js",
33
- "esm5": "esm5/ng-mat-select-infinite-scroll.js",
34
32
  "esm2015": "esm2015/ng-mat-select-infinite-scroll.js",
35
- "fesm5": "fesm5/ng-mat-select-infinite-scroll.js",
36
33
  "fesm2015": "fesm2015/ng-mat-select-infinite-scroll.js",
37
34
  "typings": "ng-mat-select-infinite-scroll.d.ts",
38
- "metadata": "ng-mat-select-infinite-scroll.metadata.json",
39
35
  "sideEffects": false,
40
36
  "dependencies": {
41
- "tslib": "^1.9.0"
37
+ "tslib": "^2.1.0"
42
38
  }
43
- }
39
+ }
File without changes
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/material/select"),require("rxjs/operators"),require("rxjs")):"function"==typeof define&&define.amd?define("ng-mat-select-infinite-scroll",["exports","@angular/core","@angular/material/select","rxjs/operators","rxjs"],t):t((e=e||self)["ng-mat-select-infinite-scroll"]={},e.ng.core,e.ng.material.select,e.rxjs.operators,e.rxjs)}(this,(function(e,t,n,r,i){"use strict";var o=function(){function e(e,r){this.matSelect=e,this.ngZone=r,this.threshold="15%",this.debounceTime=150,this.infiniteScroll=new t.EventEmitter,this.thrPx=0,this.thrPc=0,this.singleOptionHeight=n.SELECT_ITEM_HEIGHT_EM,this.destroyed$=new i.Subject}return e.prototype.ngOnInit=function(){this.evaluateThreshold()},e.prototype.ngAfterViewInit=function(){var e=this;this.matSelect.openedChange.pipe(r.takeUntil(this.destroyed$)).subscribe((function(t){t&&(e.panel=e.matSelect.panel.nativeElement,e.singleOptionHeight=e.getSelectItemHeightPx(),e.registerScrollListener())}))},e.prototype.ngOnDestroy=function(){this.destroyed$.next(!0),this.destroyed$.complete()},e.prototype.evaluateThreshold=function(){this.threshold.lastIndexOf("%")>-1?(this.thrPx=0,this.thrPc=parseFloat(this.threshold)/100):(this.thrPx=parseFloat(this.threshold),this.thrPc=0)},e.prototype.registerScrollListener=function(){var e=this;i.fromEvent(this.panel,"scroll").pipe(r.takeUntil(this.destroyed$),r.debounceTime(this.debounceTime),r.tap((function(t){e.handleScrollEvent(t)}))).subscribe()},e.prototype.handleScrollEvent=function(e){var t=this;this.ngZone.runOutsideAngular((function(){if(!t.complete){var n=t.matSelect.options.length,r=t.singleOptionHeight*n,i=0!==t.thrPc?r*t.thrPc:t.thrPx;t.panel.clientHeight+e.target.scrollTop+i>=r&&t.ngZone.run((function(){return t.infiniteScroll.emit()}))}}))},e.prototype.getSelectItemHeightPx=function(){return parseFloat(getComputedStyle(this.panel).fontSize)*n.SELECT_ITEM_HEIGHT_EM},e.decorators=[{type:t.Directive,args:[{selector:"[msInfiniteScroll]"}]}],e.ctorParameters=function(){return[{type:n.MatSelect},{type:t.NgZone}]},e.propDecorators={threshold:[{type:t.Input}],debounceTime:[{type:t.Input}],complete:[{type:t.Input}],infiniteScroll:[{type:t.Output}]},e}();var s=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{declarations:[o],imports:[n.MatSelectModule],exports:[o]}]}],e}();e.MatSelectInfiniteScrollDirective=o,e.MatSelectInfiniteScrollModule=s,Object.defineProperty(e,"__esModule",{value:!0})}));
2
- //# sourceMappingURL=ng-mat-select-infinite-scroll.umd.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["ng://ng-mat-select-infinite-scroll/lib/mat-select-infinite-scroll.directive.ts","ng://ng-mat-select-infinite-scroll/lib/mat-select-infinite-scroll.module.ts"],"names":["MatSelectInfiniteScrollDirective","matSelect","ngZone","this","threshold","debounceTime","infiniteScroll","EventEmitter","thrPx","thrPc","singleOptionHeight","SELECT_ITEM_HEIGHT_EM","destroyed$","Subject","prototype","ngOnInit","evaluateThreshold","ngAfterViewInit","_this","openedChange","pipe","takeUntil","subscribe","opened","panel","nativeElement","getSelectItemHeightPx","registerScrollListener","ngOnDestroy","next","complete","lastIndexOf","parseFloat","fromEvent","tap","event","handleScrollEvent","runOutsideAngular","countOfRenderedOptions","options","length","infiniteScrollDistance","clientHeight","target","scrollTop","run","emit","getComputedStyle","fontSize","Directive","args","selector","MatSelect","NgZone","Input","Output","MatSelectInfiniteScrollModule","NgModule","declarations","imports","MatSelectModule","exports"],"mappings":"ueAAA,IAAAA,EAAA,WAsBE,SAAAA,EAAoBC,EAA8BC,GAA9BC,KAAAF,UAAAA,EAA8BE,KAAAD,OAAAA,EAZzCC,KAAAC,UAAY,MACZD,KAAAE,aAAe,IAEdF,KAAAG,eAAiB,IAAIC,EAAAA,aAGvBJ,KAAAK,MAAQ,EACRL,KAAAM,MAAQ,EACRN,KAAAO,mBAAqBC,EAAAA,sBAErBR,KAAAS,WAAa,IAAIC,EAAAA,QAoE3B,OA/DEb,EAAAc,UAAAC,SAAA,WACEZ,KAAKa,qBAGPhB,EAAAc,UAAAG,gBAAA,WAAA,IAAAC,EAAAf,KACEA,KAAKF,UAAUkB,aAAaC,KAC1BC,EAAAA,UAAUlB,KAAKS,aACfU,WAAS,SAAEC,GACPA,IACFL,EAAKM,MAAQN,EAAKjB,UAAUuB,MAAMC,cAClCP,EAAKR,mBAAqBQ,EAAKQ,wBAC/BR,EAAKS,8BAKX3B,EAAAc,UAAAc,YAAA,WACEzB,KAAKS,WAAWiB,MAAK,GACrB1B,KAAKS,WAAWkB,YAGlB9B,EAAAc,UAAAE,kBAAA,WACMb,KAAKC,UAAU2B,YAAY,MAAQ,GACrC5B,KAAKK,MAAQ,EACbL,KAAKM,MAASuB,WAAW7B,KAAKC,WAAa,MAG3CD,KAAKK,MAAQwB,WAAW7B,KAAKC,WAC7BD,KAAKM,MAAQ,IAIjBT,EAAAc,UAAAa,uBAAA,WAAA,IAAAT,EAAAf,KACE8B,EAAAA,UAAU9B,KAAKqB,MAAO,UAAUJ,KAC9BC,EAAAA,UAAUlB,KAAKS,YACfP,EAAAA,aAAaF,KAAKE,cAClB6B,EAAAA,KAAG,SAAEC,GACHjB,EAAKkB,kBAAkBD,OAEzBb,aAGJtB,EAAAc,UAAAsB,kBAAA,SAAkBD,GAAlB,IAAAjB,EAAAf,KACEA,KAAKD,OAAOmC,mBAAiB,WAC3B,IAAInB,EAAKY,SAAT,KAGMQ,EAAyBpB,EAAKjB,UAAUsC,QAAQC,OAChDC,EAAyBvB,EAAKR,mBAAqB4B,EACnDlC,EAA2B,IAAfc,EAAKT,MAAegC,EAAyBvB,EAAKT,MAASS,EAAKV,MAEzDU,EAAKM,MAAMkB,aAAeP,EAAMQ,OAAOC,UAExCxC,GAAcqC,GACpCvB,EAAKhB,OAAO2C,KAAG,WAAO,OAAA3B,EAAKZ,eAAewC,eAKhD9C,EAAAc,UAAAY,sBAAA,WACE,OAAOM,WAAWe,iBAAiB5C,KAAKqB,OAAOwB,UAAYrC,EAAAA,2CAhF9DsC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kEALJC,EAAAA,iBAD+CC,EAAAA,6CAUpDC,EAAAA,4BACAA,EAAAA,wBACAA,EAAAA,8BACAC,EAAAA,UA2EHvD,EAxFA,GCAA,IAAAwD,EAAA,WAIA,SAAAA,KAQA,2BARCC,EAAAA,SAAQP,KAAA,CAAC,CACRQ,aAAc,CAAC1D,GACf2D,QAAS,CACPC,EAAAA,iBAEFC,QAAS,CAAC7D,OAGZwD,EAZA","sourcesContent":["import {AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output} from '@angular/core';\nimport {MatSelect, SELECT_ITEM_HEIGHT_EM} from '@angular/material/select';\nimport {debounceTime, takeUntil, tap} from 'rxjs/operators';\nimport {fromEvent, Subject} from 'rxjs';\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) {\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"]}
@@ -1,10 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /*
6
- * Public API Surface of ng-mat-select-infinite-scroll
7
- */
8
- export { MatSelectInfiniteScrollDirective } from './lib/mat-select-infinite-scroll.directive';
9
- export { MatSelectInfiniteScrollModule } from './lib/mat-select-infinite-scroll.module';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLW1hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsaURBQWMsNENBQTRDLENBQUM7QUFDM0QsOENBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5nLW1hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsLm1vZHVsZSc7XG4iXX0=