ng-mat-select-infinite-scroll 5.0.0-beta.2 → 6.0.0-next.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/README.md +107 -65
- package/esm2020/lib/infinite-scroll.service.mjs +59 -50
- package/esm2020/lib/mat-select-infinite-scroll.directive.mjs +92 -30
- package/esm2020/lib/mat-select-infinite-scroll.module.mjs +7 -6
- package/esm2020/ng-mat-select-infinite-scroll.mjs +1 -1
- package/esm2020/public-api.mjs +1 -1
- package/fesm2015/ng-mat-select-infinite-scroll.mjs +158 -80
- package/fesm2015/ng-mat-select-infinite-scroll.mjs.map +1 -1
- package/fesm2020/ng-mat-select-infinite-scroll.mjs +153 -80
- package/fesm2020/ng-mat-select-infinite-scroll.mjs.map +1 -1
- package/lib/infinite-scroll.service.d.ts +19 -18
- package/lib/mat-select-infinite-scroll.directive.d.ts +21 -9
- package/lib/mat-select-infinite-scroll.module.d.ts +3 -3
- package/package.json +4 -3
- package/ng-mat-select-infinite-scroll-5.0.0-beta.2.tgz +0 -0
package/README.md
CHANGED
|
@@ -1,93 +1,135 @@
|
|
|
1
|
+
# Angular Material Select Infinite Scroll
|
|
1
2
|
|
|
2
|
-
|
|
3
|
+
Load options in pages as users scroll a standard Angular Material `mat-select`. Supports standalone imports and the existing NgModule API.
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
## Version compatibility
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
The 6.0 release candidate targets Angular/Material **15.2–22**. It is compiled with Angular 15.2 partial Ivy and checked as one npm tarball in independent applications for every major, including minimum-version fixtures. See [compatibility.json](compatibility.json) for exact test toolchains and [the execution status](REVIVAL_STATUS.md) for validation progress. A candidate is not a published stable release.
|
|
7
8
|
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
9
|
+
| Your application | Package |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Angular/Material 15.2–22 | Upcoming 6.x; use `@next` only after the candidate is published |
|
|
12
|
+
| Angular/Material 15–16 | Existing `5.0.0-beta.3`; excludes the 6.x fixes |
|
|
13
|
+
| Angular below 15 | Historical `4.0.0` declares peers `>=6 <15`; verify your exact versions |
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
Angular and Material should use matching majors. The 6.x line uses RxJS 7.8+. Standard `MatSelect` is covered; `MatLegacySelect` is a separate integration. An older framework's compatibility entry does not extend its upstream security support.
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
### Installation
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
npm i ng-mat-select-infinite-scroll
|
|
17
|
+
```sh
|
|
18
|
+
# Once the candidate is published:
|
|
19
|
+
npm install ng-mat-select-infinite-scroll@next
|
|
24
20
|
```
|
|
25
21
|
|
|
26
|
-
|
|
22
|
+
## Standalone usage
|
|
27
23
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
```typescript
|
|
24
|
+
```ts
|
|
25
|
+
import { Component } from '@angular/core';
|
|
26
|
+
import { CommonModule } from '@angular/common';
|
|
32
27
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
33
28
|
import { MatSelectModule } from '@angular/material/select';
|
|
34
|
-
import {
|
|
35
|
-
|
|
36
|
-
@
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
29
|
+
import { MatSelectInfiniteScrollDirective } from 'ng-mat-select-infinite-scroll';
|
|
30
|
+
|
|
31
|
+
@Component({
|
|
32
|
+
standalone: true,
|
|
33
|
+
imports: [CommonModule, MatFormFieldModule, MatSelectModule, MatSelectInfiniteScrollDirective],
|
|
34
|
+
template: `
|
|
35
|
+
<mat-form-field>
|
|
36
|
+
<mat-label>Customer</mat-label>
|
|
37
|
+
<mat-select msInfiniteScroll [loading]="loading" [complete]="complete"
|
|
38
|
+
(infiniteScroll)="loadNextPage()">
|
|
39
|
+
<mat-option *ngFor="let item of options" [value]="item.id">
|
|
40
|
+
{{ item.name }}
|
|
41
|
+
</mat-option>
|
|
42
|
+
</mat-select>
|
|
43
|
+
</mat-form-field>
|
|
44
|
+
`
|
|
49
45
|
})
|
|
50
|
-
export class
|
|
46
|
+
export class CustomerSelect {
|
|
47
|
+
options: Array<{ id: number; name: string }> = [];
|
|
48
|
+
loading = false;
|
|
49
|
+
complete = false;
|
|
50
|
+
// Fetch the initial page before opening an empty select.
|
|
51
|
+
loadNextPage() { /* guarded server request; see below */ }
|
|
52
|
+
}
|
|
51
53
|
```
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
On Angular 22 use `@for (item of options; track item.id) { ... }` instead of the removed `*ngFor`. Configure animations according to your application's Angular/Material version.
|
|
56
|
+
|
|
57
|
+
For NgModule applications, import `MatSelectInfiniteScrollModule` alongside `MatSelectModule` and `MatFormFieldModule`. Existing `msInfiniteScroll` templates continue to work.
|
|
58
|
+
|
|
59
|
+
## API
|
|
60
|
+
|
|
61
|
+
| Input | Default | Behavior |
|
|
62
|
+
| --- | --- | --- |
|
|
63
|
+
| `complete` | `false` | Suppresses output immediately, including changes while the panel is open. Reset for a new query. |
|
|
64
|
+
| `loading` | `false` | Suppresses output while a page is in flight. Bind this to the application's request state. |
|
|
65
|
+
| `threshold` | `'15%'` | Distance from the bottom: `0`–`100%`, a pixel string such as `'100px'`, or a numeric string such as `'100'`. |
|
|
66
|
+
| `debounceTime` | `150` | Non-negative milliseconds to wait after a scroll event. |
|
|
67
|
+
|
|
68
|
+
`(infiniteScroll)` emits `void` when more options are needed. Inputs remain live while open. Invalid thresholds and non-finite/negative debounce values throw `RangeError`.
|
|
69
|
+
|
|
70
|
+
The directive checks the rendered panel on opening, after option changes, and when loading/completion inputs change. This allows a preselected last item or a short page to request more without another scroll. Automatic requests are bounded by changes to the rendered list; a failed or empty response does not cause an automatic retry loop. User scrolling can request again. Close/destroy cancels pending work.
|
|
71
|
+
|
|
72
|
+
## Loading pages safely
|
|
73
|
+
|
|
74
|
+
Fetch the first page in your component's initialization. Keep HTTP, offsets, cancellation, errors, and caching in the application:
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
loadNextPage() {
|
|
78
|
+
if (this.loading || this.complete) return;
|
|
79
|
+
this.loading = true;
|
|
80
|
+
this.error = null;
|
|
81
|
+
this.api.getCustomers({ query: this.query, offset: this.options.length, limit: 20 })
|
|
82
|
+
.pipe(finalize(() => { this.loading = false; }))
|
|
83
|
+
.subscribe({
|
|
84
|
+
next: page => {
|
|
85
|
+
this.options = [...this.options, ...page.items];
|
|
86
|
+
this.complete = this.options.length >= page.total || page.items.length === 0;
|
|
87
|
+
},
|
|
88
|
+
error: error => { this.error = error; }
|
|
89
|
+
});
|
|
90
|
+
}
|
|
61
91
|
```
|
|
62
92
|
|
|
63
|
-
|
|
64
|
-
> Update the `complete` property when the loaded data reaches the total available data to avoid unnecessary scroll triggers.
|
|
65
|
-
> For older versions of Angular (<15), use version 4 of this library.
|
|
93
|
+
Import `finalize` from RxJS. In a zoneless/OnPush component, use signals or mark the view for checking when asynchronous fields change. Cancel in-flight requests on destruction and query reset; a stale response must not append to a new query. Offer an explicit retry action after an error.
|
|
66
94
|
|
|
67
|
-
|
|
95
|
+
For server search, cancel the previous query (for example with `switchMap`), reset options/page/completion, and request the new first page. Search inputs can live outside `mat-select`; this directive does not implement filtering. For repeated selects in a FormArray, share a data-service cache keyed by query/filter/page and deduplicate in-flight requests there.
|
|
68
96
|
|
|
69
|
-
|
|
70
|
-
* `@angular/core`: `>=15.0.0 <16`
|
|
71
|
-
* `@angular/cdk`: `>=15.0.0 <16`
|
|
72
|
-
* `@angular/material`: `>=15.0.0 <16`
|
|
73
|
-
* `rxjs`: `^7.0.0`
|
|
97
|
+
## Selection and layout
|
|
74
98
|
|
|
75
|
-
|
|
99
|
+
- Append options with stable IDs/identity. When clearing pages or filtering, retain the selected options separately or fetch them by ID; `compareWith` cannot recreate a removed option.
|
|
100
|
+
- Keep the Material panel as the scrolling container. Arbitrary nested scrolling `div` elements are not supported. Standard options and optgroups are supported.
|
|
101
|
+
- Appending pages preserves the panel's scroll position. **Material can still reset its active keyboard item to the selected option when the option list changes.** The compatibility browser checks record this upstream behavior; the library does not modify private Material key-manager fields. See [known limitations](docs/KNOWN_LIMITATIONS.md).
|
|
76
102
|
|
|
77
|
-
|
|
103
|
+
## Migration from 4.x / 5.x
|
|
78
104
|
|
|
79
|
-
|
|
105
|
+
Keep the same selector, output, and NgModule import, or switch to the standalone directive. Add `[loading]` to prevent overlapping requests. Set/reset `[complete]` when your query finishes or changes. Review the stricter threshold validation and the new opening/short-list checks; requests can occur on opening without a new scroll event. Use the compatibility table instead of bypassing npm peers.
|
|
80
106
|
|
|
81
|
-
|
|
107
|
+
## Development
|
|
82
108
|
|
|
83
|
-
|
|
109
|
+
```sh
|
|
110
|
+
nvm use
|
|
111
|
+
npm ci --ignore-scripts
|
|
112
|
+
npm ci --prefix tools/build-library --ignore-scripts
|
|
113
|
+
npm test
|
|
114
|
+
npm run build
|
|
115
|
+
npm run check:policy
|
|
116
|
+
```
|
|
84
117
|
|
|
85
|
-
|
|
118
|
+
The library builder intentionally uses Angular 15.2 and Node 18 in isolation. Browser orchestration and publication use Node 24.15. See [compatibility checks](compat/README.md) for per-version commands. Build output, tarballs, and browser receipts are ignored.
|
|
119
|
+
|
|
120
|
+
The interactive demo uses its own Angular 22 toolchain. After building the library:
|
|
121
|
+
|
|
122
|
+
```sh
|
|
123
|
+
cd projects/example
|
|
124
|
+
nvm use
|
|
125
|
+
npm ci --ignore-scripts
|
|
126
|
+
npm start
|
|
127
|
+
```
|
|
86
128
|
|
|
87
|
-
|
|
129
|
+
PR CI validates the actual tarball; the publishing workflow repeats the checks and uses npm trusted publishing. Stable publication requires the approved version, beta feedback, and the full matrix. See [request and selection recipes](docs/RECIPES.md) for shared caching and reset behavior.
|
|
88
130
|
|
|
89
|
-
|
|
131
|
+
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
90
132
|
|
|
91
|
-
|
|
133
|
+
## License
|
|
92
134
|
|
|
93
|
-
[MIT](LICENSE)
|
|
135
|
+
[MIT](LICENSE)
|
|
@@ -1,64 +1,73 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { fromEvent,
|
|
3
|
-
import { debounceTime, takeUntil, tap } from 'rxjs/operators';
|
|
2
|
+
import { debounce, fromEvent, timer } from 'rxjs';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export class InfiniteScrollService {
|
|
6
5
|
constructor(ngZone) {
|
|
7
6
|
this.ngZone = ngZone;
|
|
8
|
-
this.
|
|
9
|
-
this.debounceTime = 150;
|
|
10
|
-
this.thrPx = 0;
|
|
11
|
-
this.thrPc = 0;
|
|
12
|
-
this.destroyed$ = new Subject();
|
|
7
|
+
this.optionCount = 0;
|
|
13
8
|
}
|
|
14
|
-
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.panel = panel;
|
|
19
|
-
this.selectItemHeightPx = selectItemHeightPx;
|
|
20
|
-
this.evaluateThreshold();
|
|
21
|
-
}
|
|
22
|
-
evaluateThreshold() {
|
|
23
|
-
if (this.threshold.lastIndexOf('%') > -1) {
|
|
24
|
-
this.thrPx = 0;
|
|
25
|
-
this.thrPc = (parseFloat(this.threshold) / 100);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.thrPx = parseFloat(this.threshold);
|
|
29
|
-
this.thrPc = 0;
|
|
9
|
+
validate(config) {
|
|
10
|
+
this.thresholdPixels(config.threshold, 1);
|
|
11
|
+
if (!Number.isFinite(config.debounceTime) || config.debounceTime < 0) {
|
|
12
|
+
throw new RangeError('debounceTime must be a finite, non-negative number');
|
|
30
13
|
}
|
|
31
14
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
15
|
+
connect(panel, configuration, callback) {
|
|
16
|
+
this.disconnect();
|
|
17
|
+
this.validate(configuration());
|
|
18
|
+
this.panel = panel;
|
|
19
|
+
this.configuration = configuration;
|
|
20
|
+
this.callback = callback;
|
|
38
21
|
this.ngZone.runOutsideAngular(() => {
|
|
39
|
-
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const countOfRenderedOptions = Math.round(this.panel.scrollHeight / this.selectItemHeightPx);
|
|
43
|
-
const infiniteScrollDistance = this.selectItemHeightPx * countOfRenderedOptions;
|
|
44
|
-
const threshold = this.thrPc !== 0 ? (infiniteScrollDistance * this.thrPc) : this.thrPx;
|
|
45
|
-
const scrolledDistance = this.panel.clientHeight + event.target.scrollTop;
|
|
46
|
-
if ((scrolledDistance + threshold) >= infiniteScrollDistance) {
|
|
47
|
-
this.ngZone.run(infiniteScrollCallback);
|
|
48
|
-
}
|
|
22
|
+
this.subscription = fromEvent(panel, 'scroll').pipe(debounce(() => timer(configuration().debounceTime))).subscribe(() => this.check(this.optionCount, false));
|
|
49
23
|
});
|
|
50
24
|
}
|
|
51
|
-
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
25
|
+
check(optionCount, automatic = true) {
|
|
26
|
+
this.optionCount = optionCount;
|
|
27
|
+
const panel = this.panel;
|
|
28
|
+
const config = this.configuration?.();
|
|
29
|
+
if (!panel || !config || config.complete || config.loading || panel.clientHeight <= 0)
|
|
30
|
+
return;
|
|
31
|
+
const threshold = this.thresholdPixels(config.threshold, panel.scrollHeight);
|
|
32
|
+
const remaining = panel.scrollHeight - panel.clientHeight - panel.scrollTop;
|
|
33
|
+
if (remaining > threshold + 0.5)
|
|
34
|
+
return;
|
|
35
|
+
// An automatic check can request again only after the rendered list changes.
|
|
36
|
+
// A failed/empty page must not cause an unbounded automatic request loop.
|
|
37
|
+
const key = `${panel.scrollHeight}:${panel.clientHeight}:${optionCount}`;
|
|
38
|
+
if (automatic && key === this.lastRequestKey)
|
|
39
|
+
return;
|
|
40
|
+
this.lastRequestKey = key;
|
|
41
|
+
if (this.callback)
|
|
42
|
+
this.ngZone.run(this.callback);
|
|
43
|
+
}
|
|
44
|
+
reset() {
|
|
45
|
+
this.lastRequestKey = undefined;
|
|
46
|
+
}
|
|
47
|
+
disconnect() {
|
|
48
|
+
// Unsubscribing discards pending debounce timers instead of flushing them.
|
|
49
|
+
this.subscription?.unsubscribe();
|
|
50
|
+
this.subscription = undefined;
|
|
51
|
+
this.panel = undefined;
|
|
52
|
+
this.configuration = undefined;
|
|
53
|
+
this.callback = undefined;
|
|
54
|
+
this.optionCount = 0;
|
|
55
|
+
this.reset();
|
|
56
|
+
}
|
|
57
|
+
thresholdPixels(value, height) {
|
|
58
|
+
const match = /^(\d+(?:\.\d+)?|\.\d+)(%|px)?$/.exec(String(value).trim());
|
|
59
|
+
if (!match || !Number.isFinite(Number(match[1]))) {
|
|
60
|
+
throw new RangeError('threshold must be a non-negative percentage or pixel distance');
|
|
61
|
+
}
|
|
62
|
+
const distance = Number(match[1]);
|
|
63
|
+
if (match[2] === '%' && distance > 100)
|
|
64
|
+
throw new RangeError('percentage threshold must not exceed 100%');
|
|
65
|
+
return match[2] === '%' ? height * distance / 100 : distance;
|
|
54
66
|
}
|
|
55
67
|
}
|
|
56
|
-
InfiniteScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
57
|
-
InfiniteScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
59
|
-
type: Injectable
|
|
60
|
-
args: [{
|
|
61
|
-
providedIn: 'root'
|
|
62
|
-
}]
|
|
68
|
+
InfiniteScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: InfiniteScrollService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
+
InfiniteScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: InfiniteScrollService });
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: InfiniteScrollService, decorators: [{
|
|
71
|
+
type: Injectable
|
|
63
72
|
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90b29scy9idWlsZC1saWJyYXJ5Ly5zdGFnZS9zcmMvbGliL2luZmluaXRlLXNjcm9sbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFVaEUsTUFBTSxPQUFPLHFCQUFxQjtJQVFoQyxZQUE2QixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUZuQyxnQkFBVyxHQUFHLENBQUMsQ0FBQztJQUVzQixDQUFDO0lBRS9DLFFBQVEsQ0FBQyxNQUEyQjtRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sSUFBSSxVQUFVLENBQUMsb0RBQW9ELENBQUMsQ0FBQztTQUM1RTtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBa0IsRUFBRSxhQUF3QyxFQUFFLFFBQW9CO1FBQ3hGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsSUFB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QUEyQyxDQUFDLENBQUM7UUFDMUcsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQy9ELENBQUM7O2tIQXRFVSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZSwgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nyb2xsQ29uZmlndXJhdGlvbiB7XG4gIHRocmVzaG9sZDogc3RyaW5nO1xuICBkZWJvdW5jZVRpbWU6IG51bWJlcjtcbiAgY29tcGxldGU6IGJvb2xlYW47XG4gIGxvYWRpbmc6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmZpbml0ZVNjcm9sbFNlcnZpY2Uge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBwYW5lbD86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGNvbmZpZ3VyYXRpb24/OiAoKSA9PiBTY3JvbGxDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIGNhbGxiYWNrPzogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBsYXN0UmVxdWVzdEtleT86IHN0cmluZztcbiAgcHJpdmF0ZSBvcHRpb25Db3VudCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge31cblxuICB2YWxpZGF0ZShjb25maWc6IFNjcm9sbENvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnRocmVzaG9sZFBpeGVscyhjb25maWcudGhyZXNob2xkLCAxKTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShjb25maWcuZGVib3VuY2VUaW1lKSB8fCBjb25maWcuZGVib3VuY2VUaW1lIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2RlYm91bmNlVGltZSBtdXN0IGJlIGEgZmluaXRlLCBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgfVxuICB9XG5cbiAgY29ubmVjdChwYW5lbDogSFRNTEVsZW1lbnQsIGNvbmZpZ3VyYXRpb246ICgpID0+IFNjcm9sbENvbmZpZ3VyYXRpb24sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy52YWxpZGF0ZShjb25maWd1cmF0aW9uKCkpO1xuICAgIHRoaXMucGFuZWwgPSBwYW5lbDtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChwYW5lbCwgJ3Njcm9sbCcpLnBpcGUoXG4gICAgICAgIGRlYm91bmNlKCgpID0+IHRpbWVyKGNvbmZpZ3VyYXRpb24oKS5kZWJvdW5jZVRpbWUpKVxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGVjayh0aGlzLm9wdGlvbkNvdW50LCBmYWxzZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgY2hlY2sob3B0aW9uQ291bnQ6IG51bWJlciwgYXV0b21hdGljID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9uQ291bnQgPSBvcHRpb25Db3VudDtcbiAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWw7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uPy4oKTtcbiAgICBpZiAoIXBhbmVsIHx8ICFjb25maWcgfHwgY29uZmlnLmNvbXBsZXRlIHx8IGNvbmZpZy5sb2FkaW5nIHx8IHBhbmVsLmNsaWVudEhlaWdodCA8PSAwKSByZXR1cm47XG4gICAgY29uc3QgdGhyZXNob2xkID0gdGhpcy50aHJlc2hvbGRQaXhlbHMoY29uZmlnLnRocmVzaG9sZCwgcGFuZWwuc2Nyb2xsSGVpZ2h0KTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBwYW5lbC5zY3JvbGxIZWlnaHQgLSBwYW5lbC5jbGllbnRIZWlnaHQgLSBwYW5lbC5zY3JvbGxUb3A7XG4gICAgaWYgKHJlbWFpbmluZyA+IHRocmVzaG9sZCArIDAuNSkgcmV0dXJuO1xuXG4gICAgLy8gQW4gYXV0b21hdGljIGNoZWNrIGNhbiByZXF1ZXN0IGFnYWluIG9ubHkgYWZ0ZXIgdGhlIHJlbmRlcmVkIGxpc3QgY2hhbmdlcy5cbiAgICAvLyBBIGZhaWxlZC9lbXB0eSBwYWdlIG11c3Qgbm90IGNhdXNlIGFuIHVuYm91bmRlZCBhdXRvbWF0aWMgcmVxdWVzdCBsb29wLlxuICAgIGNvbnN0IGtleSA9IGAke3BhbmVsLnNjcm9sbEhlaWdodH06JHtwYW5lbC5jbGllbnRIZWlnaHR9OiR7b3B0aW9uQ291bnR9YDtcbiAgICBpZiAoYXV0b21hdGljICYmIGtleSA9PT0gdGhpcy5sYXN0UmVxdWVzdEtleSkgcmV0dXJuO1xuICAgIHRoaXMubGFzdFJlcXVlc3RLZXkgPSBrZXk7XG4gICAgaWYgKHRoaXMuY2FsbGJhY2spIHRoaXMubmdab25lLnJ1bih0aGlzLmNhbGxiYWNrKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMubGFzdFJlcXVlc3RLZXkgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIC8vIFVuc3Vic2NyaWJpbmcgZGlzY2FyZHMgcGVuZGluZyBkZWJvdW5jZSB0aW1lcnMgaW5zdGVhZCBvZiBmbHVzaGluZyB0aGVtLlxuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGFuZWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2FsbGJhY2sgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcHRpb25Db3VudCA9IDA7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0aHJlc2hvbGRQaXhlbHModmFsdWU6IHN0cmluZywgaGVpZ2h0OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1hdGNoID0gL14oXFxkKyg/OlxcLlxcZCspP3xcXC5cXGQrKSglfHB4KT8kLy5leGVjKFN0cmluZyh2YWx1ZSkudHJpbSgpKTtcbiAgICBpZiAoIW1hdGNoIHx8ICFOdW1iZXIuaXNGaW5pdGUoTnVtYmVyKG1hdGNoWzFdKSkpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0aHJlc2hvbGQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBwZXJjZW50YWdlIG9yIHBpeGVsIGRpc3RhbmNlJyk7XG4gICAgfVxuICAgIGNvbnN0IGRpc3RhbmNlID0gTnVtYmVyKG1hdGNoWzFdKTtcbiAgICBpZiAobWF0Y2hbMl0gPT09ICclJyAmJiBkaXN0YW5jZSA+IDEwMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3BlcmNlbnRhZ2UgdGhyZXNob2xkIG11c3Qgbm90IGV4Y2VlZCAxMDAlJyk7XG4gICAgcmV0dXJuIG1hdGNoWzJdID09PSAnJScgPyBoZWlnaHQgKiBkaXN0YW5jZSAvIDEwMCA6IGRpc3RhbmNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,52 +1,112 @@
|
|
|
1
1
|
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { InfiniteScrollService } from
|
|
4
|
-
import { Subject } from "rxjs";
|
|
2
|
+
import { Subscription } from 'rxjs';
|
|
3
|
+
import { InfiniteScrollService } from './infinite-scroll.service';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
import * as i1 from "@angular/material/select";
|
|
7
6
|
import * as i2 from "./infinite-scroll.service";
|
|
8
|
-
/** The height of the select items in `em` units. */
|
|
9
|
-
const SELECT_ITEM_HEIGHT_EM = 3;
|
|
10
7
|
export class MatSelectInfiniteScrollDirective {
|
|
11
|
-
constructor(matSelect,
|
|
8
|
+
constructor(matSelect, scroll) {
|
|
12
9
|
this.matSelect = matSelect;
|
|
13
|
-
this.
|
|
10
|
+
this.scroll = scroll;
|
|
14
11
|
this.threshold = '15%';
|
|
15
12
|
this.debounceTime = 150;
|
|
13
|
+
this.complete = false;
|
|
14
|
+
this.loading = false;
|
|
16
15
|
this.infiniteScroll = new EventEmitter();
|
|
17
|
-
this.
|
|
16
|
+
this.subscriptions = new Subscription();
|
|
17
|
+
this.connected = false;
|
|
18
|
+
this.destroyed = false;
|
|
19
|
+
this.optionCount = 0;
|
|
20
|
+
}
|
|
21
|
+
ngOnChanges(changes) {
|
|
22
|
+
this.scroll.validate(this.configuration());
|
|
23
|
+
if (changes['complete']?.previousValue === true && !this.complete)
|
|
24
|
+
this.scroll.reset();
|
|
25
|
+
this.scheduleCheck();
|
|
18
26
|
}
|
|
19
27
|
ngAfterViewInit() {
|
|
20
|
-
this.matSelect.openedChange.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
this.subscriptions.add(this.matSelect.openedChange.subscribe(opened => {
|
|
29
|
+
if (!opened)
|
|
30
|
+
this.closePanel();
|
|
31
|
+
else if (!this.connected && this.openTimer === undefined)
|
|
32
|
+
this.openPanel();
|
|
33
|
+
else
|
|
34
|
+
this.scheduleCheck();
|
|
35
|
+
}));
|
|
36
|
+
this.subscriptions.add(this.matSelect.stateChanges.subscribe(() => {
|
|
37
|
+
if (!this.matSelect.panelOpen)
|
|
38
|
+
this.closePanel();
|
|
39
|
+
else if (!this.connected && this.openTimer === undefined)
|
|
40
|
+
this.openPanel();
|
|
41
|
+
}));
|
|
42
|
+
this.subscriptions.add(this.matSelect.options.changes.subscribe(() => {
|
|
43
|
+
const count = this.matSelect.options.length;
|
|
44
|
+
if (this.connected && this.optionCount > 0 && count > this.optionCount &&
|
|
45
|
+
this.matSelect.options.get(this.optionCount - 1) === this.lastOption) {
|
|
46
|
+
this.scrollAnchor = this.matSelect.panel?.nativeElement.scrollTop;
|
|
32
47
|
}
|
|
48
|
+
this.optionCount = count;
|
|
49
|
+
this.lastOption = this.matSelect.options.last;
|
|
50
|
+
this.scheduleCheck();
|
|
51
|
+
}));
|
|
52
|
+
if (this.matSelect.panelOpen)
|
|
53
|
+
this.openPanel();
|
|
54
|
+
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
this.destroyed = true;
|
|
57
|
+
this.closePanel();
|
|
58
|
+
this.subscriptions.unsubscribe();
|
|
59
|
+
}
|
|
60
|
+
openPanel() {
|
|
61
|
+
// Material versions differ in when the overlay panel becomes available.
|
|
62
|
+
this.openTimer = setTimeout(() => {
|
|
63
|
+
this.openTimer = undefined;
|
|
64
|
+
const panel = this.matSelect.panel?.nativeElement;
|
|
65
|
+
if (this.destroyed || !this.matSelect.panelOpen || !panel)
|
|
66
|
+
return;
|
|
67
|
+
this.scroll.connect(panel, () => this.configuration(), () => this.infiniteScroll.emit());
|
|
68
|
+
this.connected = true;
|
|
69
|
+
this.optionCount = this.matSelect.options.length;
|
|
70
|
+
this.lastOption = this.matSelect.options.last;
|
|
71
|
+
this.scheduleCheck();
|
|
33
72
|
});
|
|
34
73
|
}
|
|
35
|
-
|
|
36
|
-
|
|
74
|
+
closePanel() {
|
|
75
|
+
clearTimeout(this.openTimer);
|
|
76
|
+
clearTimeout(this.checkTimer);
|
|
77
|
+
this.openTimer = undefined;
|
|
78
|
+
this.checkTimer = undefined;
|
|
79
|
+
this.connected = false;
|
|
80
|
+
this.scrollAnchor = undefined;
|
|
81
|
+
this.lastOption = undefined;
|
|
82
|
+
this.scroll.disconnect();
|
|
37
83
|
}
|
|
38
|
-
|
|
39
|
-
this.destroyed
|
|
40
|
-
|
|
41
|
-
this.
|
|
84
|
+
scheduleCheck() {
|
|
85
|
+
if (!this.connected || this.destroyed)
|
|
86
|
+
return;
|
|
87
|
+
clearTimeout(this.checkTimer);
|
|
88
|
+
this.checkTimer = setTimeout(() => {
|
|
89
|
+
this.checkTimer = undefined;
|
|
90
|
+
if (this.connected && this.matSelect.panelOpen) {
|
|
91
|
+
if (this.scrollAnchor !== undefined) {
|
|
92
|
+
this.matSelect.panel.nativeElement.scrollTop = this.scrollAnchor;
|
|
93
|
+
this.scrollAnchor = undefined;
|
|
94
|
+
}
|
|
95
|
+
this.scroll.check(this.matSelect.options.length);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
configuration() {
|
|
100
|
+
return { threshold: this.threshold, debounceTime: this.debounceTime, complete: this.complete || !this.matSelect.panelOpen, loading: this.loading };
|
|
42
101
|
}
|
|
43
102
|
}
|
|
44
|
-
MatSelectInfiniteScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
45
|
-
MatSelectInfiniteScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
103
|
+
MatSelectInfiniteScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MatSelectInfiniteScrollDirective, deps: [{ token: i1.MatSelect }, { token: i2.InfiniteScrollService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
104
|
+
MatSelectInfiniteScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: MatSelectInfiniteScrollDirective, isStandalone: true, selector: "[msInfiniteScroll]", inputs: { threshold: "threshold", debounceTime: "debounceTime", complete: "complete", loading: "loading" }, outputs: { infiniteScroll: "infiniteScroll" }, providers: [InfiniteScrollService], usesOnChanges: true, ngImport: i0 });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MatSelectInfiniteScrollDirective, decorators: [{
|
|
47
106
|
type: Directive,
|
|
48
107
|
args: [{
|
|
49
108
|
selector: '[msInfiniteScroll]',
|
|
109
|
+
standalone: true,
|
|
50
110
|
providers: [InfiniteScrollService]
|
|
51
111
|
}]
|
|
52
112
|
}], ctorParameters: function () { return [{ type: i1.MatSelect }, { type: i2.InfiniteScrollService }]; }, propDecorators: { threshold: [{
|
|
@@ -55,7 +115,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
55
115
|
type: Input
|
|
56
116
|
}], complete: [{
|
|
57
117
|
type: Input
|
|
118
|
+
}], loading: [{
|
|
119
|
+
type: Input
|
|
58
120
|
}], infiniteScroll: [{
|
|
59
121
|
type: Output
|
|
60
122
|
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwvc3JjL2xpYi9tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBNkIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQzs7OztBQUU3QixvREFBb0Q7QUFDcEQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUFNaEMsTUFBTSxPQUFPLGdDQUFnQztJQVN6QyxZQUFzQixTQUFvQixFQUFVLHFCQUE0QztRQUExRSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVB2RixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsR0FBRyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU1QyxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUc1QyxDQUFDO0lBR0QsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUk7UUFDNUIsd0ZBQXdGO1FBQ3hGLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUM3QixDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ25CLElBQUksTUFBTSxFQUFFO2dCQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFDakQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO29CQUM3RCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtvQkFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUN2RjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQWM7UUFDaEMsT0FBTyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcscUJBQXFCLENBQUM7SUFDaEYsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzs4SEExQ1EsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0Msb0xBRjlCLENBQUMscUJBQXFCLENBQUM7NEZBRXpCLGdDQUFnQztrQkFKNUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDckM7b0lBR1ksU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRTZWxlY3R9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQge2RlbGF5LCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5maW5pdGVTY3JvbGxTZXJ2aWNlfSBmcm9tIFwiLi9pbmZpbml0ZS1zY3JvbGwuc2VydmljZVwiO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuXG4vKiogVGhlIGhlaWdodCBvZiB0aGUgc2VsZWN0IGl0ZW1zIGluIGBlbWAgdW5pdHMuICovXG5jb25zdCBTRUxFQ1RfSVRFTV9IRUlHSFRfRU0gPSAzO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttc0luZmluaXRlU2Nyb2xsXScsXG4gICAgcHJvdmlkZXJzOiBbSW5maW5pdGVTY3JvbGxTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNYXRTZWxlY3RJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBASW5wdXQoKSB0aHJlc2hvbGQgPSAnMTUlJztcbiAgICBASW5wdXQoKSBkZWJvdW5jZVRpbWUgPSAxNTA7XG4gICAgQElucHV0KCkgY29tcGxldGUhOiBib29sZWFuO1xuICAgIEBPdXRwdXQoKSBpbmZpbml0ZVNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbWF0U2VsZWN0OiBNYXRTZWxlY3QsIHByaXZhdGUgaW5maW5pdGVTY3JvbGxTZXJ2aWNlOiBJbmZpbml0ZVNjcm9sbFNlcnZpY2UpIHtcbiAgICB9XG5cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5tYXRTZWxlY3Qub3BlbmVkQ2hhbmdlLnBpcGUoXG4gICAgICAgICAgICAvL1dhaXQgZm9yIHRoZSBwYW5lbCB0byBiZSByZW5kZXJlZCAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMzA1OTYpXG4gICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICAgICkuc3Vic2NyaWJlKChvcGVuZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMubWF0U2VsZWN0LnBhbmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0SXRlbUhlaWdodFB4ID0gdGhpcy5nZXRTZWxlY3RJdGVtSGVpZ2h0UHgocGFuZWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGxTZXJ2aWNlLmluaXRpYWxpemUocGFuZWwsIHNlbGVjdEl0ZW1IZWlnaHRQeCwge1xuICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IHRoaXMudGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWU6IHRoaXMuZGVib3VuY2VUaW1lLFxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogdGhpcy5jb21wbGV0ZVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFNlcnZpY2UucmVnaXN0ZXJTY3JvbGxMaXN0ZW5lcigoKSA9PiB0aGlzLmluZmluaXRlU2Nyb2xsLmVtaXQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFNlbGVjdEl0ZW1IZWlnaHRQeChwYW5lbDogRWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUocGFuZWwpLmZvbnRTaXplKSAqIFNFTEVDVF9JVEVNX0hFSUdIVF9FTTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuXG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGxTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG9vbHMvYnVpbGQtbGlicmFyeS8uc3RhZ2Uvc3JjL2xpYi9tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUUzSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQU92RixNQUFNLE9BQU8sZ0NBQWdDO0lBZ0IzQyxZQUErQixTQUFvQixFQUFtQixNQUE2QjtRQUFwRSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQW1CLFdBQU0sR0FBTixNQUFNLENBQXVCO1FBZjFGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsaUJBQVksR0FBRyxHQUFHLENBQUM7UUFDbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRW5DLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUc1QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7SUFJOEUsQ0FBQztJQUV2RyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsYUFBYSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxR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b0JBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7aUJBQy9CO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2xEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNuQixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JKLENBQUM7OzZIQS9GVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyw0TkFGaEMsQ0FBQyxxQkFBcUIsQ0FBQzsyRkFFdkIsZ0NBQWdDO2tCQUw1QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDbkM7b0lBRVUsU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsU2VydmljZSwgU2Nyb2xsQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5maW5pdGUtc2Nyb2xsLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbXNJbmZpbml0ZVNjcm9sbF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtJbmZpbml0ZVNjcm9sbFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1hdFNlbGVjdEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB0aHJlc2hvbGQgPSAnMTUlJztcbiAgQElucHV0KCkgZGVib3VuY2VUaW1lID0gMTUwO1xuICBASW5wdXQoKSBjb21wbGV0ZSA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBpbmZpbml0ZVNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb3BlblRpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgY2hlY2tUaW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIGNvbm5lY3RlZCA9IGZhbHNlO1xuICBwcml2YXRlIGRlc3Ryb3llZCA9IGZhbHNlO1xuICBwcml2YXRlIG9wdGlvbkNvdW50ID0gMDtcbiAgcHJpdmF0ZSBsYXN0T3B0aW9uOiB1bmtub3duO1xuICBwcml2YXRlIHNjcm9sbEFuY2hvcj86IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbWF0U2VsZWN0OiBNYXRTZWxlY3QsIHByaXZhdGUgcmVhZG9ubHkgc2Nyb2xsOiBJbmZpbml0ZVNjcm9sbFNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsLnZhbGlkYXRlKHRoaXMuY29uZmlndXJhdGlvbigpKTtcbiAgICBpZiAoY2hhbmdlc1snY29tcGxldGUnXT8ucHJldmlvdXNWYWx1ZSA9PT0gdHJ1ZSAmJiAhdGhpcy5jb21wbGV0ZSkgdGhpcy5zY3JvbGwucmVzZXQoKTtcbiAgICB0aGlzLnNjaGVkdWxlQ2hlY2soKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubWF0U2VsZWN0Lm9wZW5lZENoYW5nZS5zdWJzY3JpYmUob3BlbmVkID0+IHtcbiAgICAgIGlmICghb3BlbmVkKSB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbm5lY3RlZCAmJiB0aGlzLm9wZW5UaW1lciA9PT0gdW5kZWZpbmVkKSB0aGlzLm9wZW5QYW5lbCgpO1xuICAgICAgZWxzZSB0aGlzLnNjaGVkdWxlQ2hlY2soKTtcbiAgICB9KSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLm1hdFNlbGVjdC5zdGF0ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuKSB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbm5lY3RlZCAmJiB0aGlzLm9wZW5UaW1lciA9PT0gdW5kZWZpbmVkKSB0aGlzLm9wZW5QYW5lbCgpO1xuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMubWF0U2VsZWN0Lm9wdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY291bnQgPSB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLmxlbmd0aDtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3RlZCAmJiB0aGlzLm9wdGlvbkNvdW50ID4gMCAmJiBjb3VudCA+IHRoaXMub3B0aW9uQ291bnQgJiZcbiAgICAgICAgICB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLmdldCh0aGlzLm9wdGlvbkNvdW50IC0gMSkgPT09IHRoaXMubGFzdE9wdGlvbikge1xuICAgICAgICB0aGlzLnNjcm9sbEFuY2hvciA9IHRoaXMubWF0U2VsZWN0LnBhbmVsPy5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0aW9uQ291bnQgPSBjb3VudDtcbiAgICAgIHRoaXMubGFzdE9wdGlvbiA9IHRoaXMubWF0U2VsZWN0Lm9wdGlvbnMubGFzdDtcbiAgICAgIHRoaXMuc2NoZWR1bGVDaGVjaygpO1xuICAgIH0pKTtcbiAgICBpZiAodGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuKSB0aGlzLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgLy8gTWF0ZXJpYWwgdmVyc2lvbnMgZGlmZmVyIGluIHdoZW4gdGhlIG92ZXJsYXkgcGFuZWwgYmVjb21lcyBhdmFpbGFibGUuXG4gICAgdGhpcy5vcGVuVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub3BlblRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgcGFuZWwgPSB0aGlzLm1hdFNlbGVjdC5wYW5lbD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCB8fCAhdGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuIHx8ICFwYW5lbCkgcmV0dXJuO1xuICAgICAgdGhpcy5zY3JvbGwuY29ubmVjdChwYW5lbCwgKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uKCksICgpID0+IHRoaXMuaW5maW5pdGVTY3JvbGwuZW1pdCgpKTtcbiAgICAgIHRoaXMuY29ubmVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMub3B0aW9uQ291bnQgPSB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLmxlbmd0aDtcbiAgICAgIHRoaXMubGFzdE9wdGlvbiA9IHRoaXMubWF0U2VsZWN0Lm9wdGlvbnMubGFzdDtcbiAgICAgIHRoaXMuc2NoZWR1bGVDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVBhbmVsKCk6IHZvaWQge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLm9wZW5UaW1lcik7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuY2hlY2tUaW1lcik7XG4gICAgdGhpcy5vcGVuVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jaGVja1RpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5zY3JvbGxBbmNob3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXN0T3B0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2Nyb2xsLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVDaGVjaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29ubmVjdGVkIHx8IHRoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuY2hlY2tUaW1lcik7XG4gICAgdGhpcy5jaGVja1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAodGhpcy5jb25uZWN0ZWQgJiYgdGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEFuY2hvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5tYXRTZWxlY3QucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnNjcm9sbEFuY2hvcjtcbiAgICAgICAgICB0aGlzLnNjcm9sbEFuY2hvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjcm9sbC5jaGVjayh0aGlzLm1hdFNlbGVjdC5vcHRpb25zLmxlbmd0aCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyYXRpb24oKTogU2Nyb2xsQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHsgdGhyZXNob2xkOiB0aGlzLnRocmVzaG9sZCwgZGVib3VuY2VUaW1lOiB0aGlzLmRlYm91bmNlVGltZSwgY29tcGxldGU6IHRoaXMuY29tcGxldGUgfHwgIXRoaXMubWF0U2VsZWN0LnBhbmVsT3BlbiwgbG9hZGluZzogdGhpcy5sb2FkaW5nIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,17 +4,18 @@ import { MatSelectModule } from '@angular/material/select';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class MatSelectInfiniteScrollModule {
|
|
6
6
|
}
|
|
7
|
-
MatSelectInfiniteScrollModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
8
|
-
MatSelectInfiniteScrollModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
9
|
-
|
|
10
|
-
i0.ɵɵ
|
|
7
|
+
MatSelectInfiniteScrollModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MatSelectInfiniteScrollModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
MatSelectInfiniteScrollModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: MatSelectInfiniteScrollModule, imports: [MatSelectModule,
|
|
9
|
+
MatSelectInfiniteScrollDirective], exports: [MatSelectInfiniteScrollDirective] });
|
|
10
|
+
MatSelectInfiniteScrollModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MatSelectInfiniteScrollModule, imports: [MatSelectModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MatSelectInfiniteScrollModule, decorators: [{
|
|
11
12
|
type: NgModule,
|
|
12
13
|
args: [{
|
|
13
|
-
declarations: [MatSelectInfiniteScrollDirective],
|
|
14
14
|
imports: [
|
|
15
15
|
MatSelectModule,
|
|
16
|
+
MatSelectInfiniteScrollDirective,
|
|
16
17
|
],
|
|
17
18
|
exports: [MatSelectInfiniteScrollDirective]
|
|
18
19
|
}]
|
|
19
20
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG9vbHMvYnVpbGQtbGlicmFyeS8uc3RhZ2Uvc3JjL2xpYi9tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBU3pELE1BQU0sT0FBTyw2QkFBNkI7OzBIQUE3Qiw2QkFBNkI7MkhBQTdCLDZCQUE2QixZQUxsQyxlQUFlO1FBQ2YsZ0NBQWdDLGFBRTFCLGdDQUFnQzsySEFFakMsNkJBQTZCLFlBTGxDLGVBQWU7MkZBS1YsNkJBQTZCO2tCQVB6QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxlQUFlO3dCQUNmLGdDQUFnQztxQkFDbkM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7aUJBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdFNlbGVjdEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlfSBmcm9tICcuL21hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XG5pbXBvcnQge01hdFNlbGVjdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICAgICAgTWF0U2VsZWN0SW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgXSxcbiAgICBleHBvcnRzOiBbTWF0U2VsZWN0SW5maW5pdGVTY3JvbGxEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIE1hdFNlbGVjdEluZmluaXRlU2Nyb2xsTW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90b29scy9idWlsZC1saWJyYXJ5Ly5zdGFnZS9zcmMvbmctbWF0LXNlbGVjdC1pbmZpbml0ZS1zY3JvbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/mat-select-infinite-scroll.directive';
|
|
5
5
|
export * from './lib/mat-select-infinite-scroll.module';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL2J1aWxkLWxpYnJhcnkvLnN0YWdlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZy1tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21hdC1zZWxlY3QtaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXQtc2VsZWN0LWluZmluaXRlLXNjcm9sbC5tb2R1bGUnO1xuIl19
|