@stackline/angular-multiselect-dropdown 15.0.0 → 17.0.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 CHANGED
@@ -6,13 +6,13 @@
6
6
  [![npm downloads](https://img.shields.io/npm/dt/@stackline/angular-multiselect-dropdown.svg?style=flat-square)](https://www.npmjs.com/package/@stackline/angular-multiselect-dropdown)
7
7
  [![npm monthly](https://img.shields.io/npm/dm/@stackline/angular-multiselect-dropdown.svg?style=flat-square)](https://www.npmjs.com/package/@stackline/angular-multiselect-dropdown)
8
8
  [![license](https://img.shields.io/npm/l/@stackline/angular-multiselect-dropdown.svg?style=flat-square)](https://github.com/alexandroit/angular-multiselect-dropdown/blob/master/LICENSE)
9
- [![Angular 15](https://img.shields.io/badge/Angular-15.x-red?style=flat-square&logo=angular)](https://alexandro.net/docs/angular/multiselect/angular-15/)
10
- [![TypeScript](https://img.shields.io/badge/TypeScript-4.9-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org)
9
+ [![Angular 17](https://img.shields.io/badge/Angular-17.x-red?style=flat-square&logo=angular)](https://alexandro.net/docs/angular/multiselect/angular-17/)
10
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.4-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org)
11
11
  [![GitHub stars](https://img.shields.io/github/stars/alexandroit/angular-multiselect-dropdown.svg?style=flat-square)](https://github.com/alexandroit/angular-multiselect-dropdown/stargazers)
12
12
 
13
- **[Documentation & Live Demos](https://alexandro.net/docs/angular/multiselect/)** | **[Angular 15 Demo](https://alexandro.net/docs/angular/multiselect/angular-15/)** | **[npm](https://www.npmjs.com/package/@stackline/angular-multiselect-dropdown)** | **[Issues](https://github.com/alexandroit/angular-multiselect-dropdown/issues)** | **[Repository](https://github.com/alexandroit/angular-multiselect-dropdown)**
13
+ **[Documentation & Live Demos](https://alexandro.net/docs/angular/multiselect/)** | **[Angular 17 Demo](https://alexandro.net/docs/angular/multiselect/angular-17/)** | **[npm](https://www.npmjs.com/package/@stackline/angular-multiselect-dropdown)** | **[Issues](https://github.com/alexandroit/angular-multiselect-dropdown/issues)** | **[Repository](https://github.com/alexandroit/angular-multiselect-dropdown)**
14
14
 
15
- **Latest tested npm release:** `15.0.0` for Angular `15.x`
15
+ **Latest tested npm release:** `17.0.0` for Angular `17.x`
16
16
 
17
17
  ---
18
18
 
@@ -24,15 +24,15 @@
24
24
 
25
25
  The original `angular2-multiselect-dropdown` package became difficult to keep current across multiple Angular generations. This maintained package keeps the classic API and template structure intact, introduces the new primary selector `<angular-multiselect>`, preserves the legacy alias `<angular2-multiselect>`, and publishes the project line by line so older applications can keep a predictable upgrade path.
26
26
 
27
- The repository contains the full documentation matrix from Angular 2 through Angular 21. The current public npm release is `15.0.0` for Angular 15.x applications.
27
+ The repository contains the full documentation matrix from Angular 2 through Angular 21. The current public npm release is `17.0.0` for Angular 17.x applications.
28
28
 
29
- The Angular 15 package is compatible with Angular 15.x and was tested in a real Angular 15.2.10 application before npm publication.
29
+ The Angular 17 package is compatible with Angular 17.x and was tested in a real Angular 17.3.12 application before npm publication.
30
30
 
31
31
  ## Features
32
32
 
33
33
  | Feature | Supported |
34
34
  | :--- | :---: |
35
- | Angular 15 tested published release line | ✅ |
35
+ | Angular 17 tested published release line | ✅ |
36
36
  | Multi-select and single-select modes | ✅ |
37
37
  | Search and filter | ✅ |
38
38
  | Group by field | ✅ |
@@ -54,7 +54,7 @@ The Angular 15 package is compatible with Angular 15.x and was tested in a real
54
54
  4. [Setup](#setup)
55
55
  5. [Custom CSS and SCSS Themes](#custom-css-and-scss-themes)
56
56
  6. [Basic Usage](#basic-usage)
57
- 7. [Official Angular 15 Test Matrix](#official-angular-15-test-matrix)
57
+ 7. [Official Angular 17 Test Matrix](#official-angular-17-test-matrix)
58
58
  8. [Custom Templates](#custom-templates)
59
59
  9. [Forms Integration](#forms-integration)
60
60
  10. [Lazy Loading and Remote Data](#lazy-loading-and-remote-data)
@@ -98,10 +98,10 @@ Each package family only installs on its matching Angular family. Framework majo
98
98
  ## Installation
99
99
 
100
100
  ```bash
101
- npm install @stackline/angular-multiselect-dropdown@15.0.0 --save-exact
101
+ npm install @stackline/angular-multiselect-dropdown@17.0.0 --save-exact
102
102
  ```
103
103
 
104
- Install `15.0.0` for Angular 15.x applications. This line keeps the tested Angular 15 behavior, makes `<angular-multiselect>` the documented standard selector, and keeps `<angular2-multiselect>` only as a legacy compatibility alias.
104
+ Install `17.0.0` for Angular 17.x applications. This line keeps the tested Angular 17 behavior, makes `<angular-multiselect>` the documented standard selector, and keeps `<angular2-multiselect>` only as a legacy compatibility alias.
105
105
 
106
106
  ## Setup
107
107
 
@@ -195,9 +195,9 @@ dropdownSettings = {
195
195
  </angular-multiselect>
196
196
  ```
197
197
 
198
- ## Official Angular 15 Test Matrix
198
+ ## Official Angular 17 Test Matrix
199
199
 
200
- The published Angular 15 release was tested in a real Angular `15.2.10` application with `@stackline/angular-multiselect-dropdown@15.0.0`. The docs now use the same examples from that test app.
200
+ The published Angular 17 release was tested in a real Angular `17.3.12` application with `@stackline/angular-multiselect-dropdown@17.0.0`. The docs now use the same examples from that test app.
201
201
 
202
202
  Switch between skins through the settings object:
203
203
 
@@ -0,0 +1,82 @@
1
+ import { Directive, Output, EventEmitter, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ClickOutsideDirective {
4
+ _elementRef;
5
+ constructor(_elementRef) {
6
+ this._elementRef = _elementRef;
7
+ }
8
+ clickOutside = new EventEmitter();
9
+ onClick(event, targetElement) {
10
+ if (!targetElement) {
11
+ return;
12
+ }
13
+ const clickedInside = this._elementRef.nativeElement.contains(targetElement);
14
+ if (!clickedInside) {
15
+ this.clickOutside.emit(event);
16
+ }
17
+ }
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
19
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event,$event.target)", "document:touchstart": "onClick($event,$event.target)" } }, ngImport: i0 });
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClickOutsideDirective, decorators: [{
22
+ type: Directive,
23
+ args: [{
24
+ selector: '[clickOutside]'
25
+ }]
26
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clickOutside: [{
27
+ type: Output
28
+ }], onClick: [{
29
+ type: HostListener,
30
+ args: ['document:click', ['$event', '$event.target']]
31
+ }, {
32
+ type: HostListener,
33
+ args: ['document:touchstart', ['$event', '$event.target']]
34
+ }] } });
35
+ export class ScrollDirective {
36
+ _elementRef;
37
+ constructor(_elementRef) {
38
+ this._elementRef = _elementRef;
39
+ }
40
+ scroll = new EventEmitter();
41
+ onClick(event, targetElement) {
42
+ this.scroll.emit(event);
43
+ }
44
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
45
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ScrollDirective, selector: "[scroll]", outputs: { scroll: "scroll" }, host: { listeners: { "scroll": "onClick($event)" } }, ngImport: i0 });
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ScrollDirective, decorators: [{
48
+ type: Directive,
49
+ args: [{
50
+ selector: '[scroll]'
51
+ }]
52
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { scroll: [{
53
+ type: Output
54
+ }], onClick: [{
55
+ type: HostListener,
56
+ args: ['scroll', ['$event']]
57
+ }] } });
58
+ export class styleDirective {
59
+ el;
60
+ constructor(el) {
61
+ this.el = el;
62
+ }
63
+ styleVal;
64
+ ngOnInit() {
65
+ this.el.nativeElement.style.top = this.styleVal;
66
+ }
67
+ ngOnChanges() {
68
+ this.el.nativeElement.style.top = this.styleVal;
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: styleDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
71
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: styleDirective, selector: "[styleProp]", inputs: { styleVal: ["styleProp", "styleVal"] }, usesOnChanges: true, ngImport: i0 });
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: styleDirective, decorators: [{
74
+ type: Directive,
75
+ args: [{
76
+ selector: '[styleProp]'
77
+ }]
78
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { styleVal: [{
79
+ type: Input,
80
+ args: ['styleProp']
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2tPdXRzaWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jbGlja091dHNpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBSy9GLE1BQU0sT0FBTyxxQkFBcUI7SUFDVjtJQUFwQixZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUMzQyxDQUFDO0lBR00sWUFBWSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFJOUMsT0FBTyxDQUFDLEtBQWlCLEVBQUUsYUFBMEI7UUFDeEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQzt3R0FsQlEscUJBQXFCOzRGQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtpQkFDN0I7K0VBTVUsWUFBWTtzQkFEbEIsTUFBTTtnQkFLQSxPQUFPO3NCQUZiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDOztzQkFDMUQsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O0FBZ0JwRSxNQUFNLE9BQU8sZUFBZTtJQUNKO0lBQXBCLFlBQW9CLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO0lBQzNDLENBQUM7SUFHTSxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUd4QyxPQUFPLENBQUMsS0FBaUIsRUFBRSxhQUEwQjtRQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO3dHQVZRLGVBQWU7NEZBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFIM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtpQkFDdkI7K0VBTVUsTUFBTTtzQkFEWixNQUFNO2dCQUlBLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBUXRDLE1BQU0sT0FBTyxjQUFjO0lBRUw7SUFBcEIsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFFakMsQ0FBQztJQUVrQixRQUFRLENBQVM7SUFFcEMsUUFBUTtRQUVMLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNuRCxDQUFDO0lBQ0EsV0FBVztRQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNyRCxDQUFDO3dHQWRVLGNBQWM7NEZBQWQsY0FBYzs7NEZBQWQsY0FBYztrQkFIMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7K0VBT3FCLFFBQVE7c0JBQTNCLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2NsaWNrT3V0c2lkZV0nXG59KVxuZXhwb3J0IGNsYXNzIENsaWNrT3V0c2lkZURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja091dHNpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50JywgJyRldmVudC50YXJnZXQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp0b3VjaHN0YXJ0JywgWyckZXZlbnQnLCAnJGV2ZW50LnRhcmdldCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgICAgICAgdGhpcy5jbGlja091dHNpZGUuZW1pdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3Njcm9sbF0nXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbERpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdzY3JvbGwnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcm9sbC5lbWl0KGV2ZW50KTtcbiAgICB9XG59XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc3R5bGVQcm9wXSdcbn0pXG5leHBvcnQgY2xhc3Mgc3R5bGVEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcblxuICAgfVxuXG4gIEBJbnB1dCgnc3R5bGVQcm9wJykgc3R5bGVWYWw6IG51bWJlcjtcblxuICAgbmdPbkluaXQoKSB7XG5cbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSB0aGlzLnN0eWxlVmFsO1xuICAgfVxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSB0aGlzLnN0eWxlVmFsO1xuICB9XG59Il19
@@ -0,0 +1,33 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ListFilterPipe {
4
+ transform(items, filter) {
5
+ if (!items || !filter) {
6
+ return items;
7
+ }
8
+ return items.filter((item) => this.applyFilter(item, filter));
9
+ }
10
+ applyFilter(item, filter) {
11
+ let found = false;
12
+ for (var prop in item) {
13
+ if (filter) {
14
+ if (item[prop].toString().toLowerCase().indexOf(filter.toLowerCase()) >= 0) {
15
+ found = true;
16
+ }
17
+ }
18
+ else
19
+ found = true;
20
+ }
21
+ return found;
22
+ }
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ListFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
24
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ListFilterPipe, name: "listFilter", pure: false });
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ListFilterPipe, decorators: [{
27
+ type: Pipe,
28
+ args: [{
29
+ name: 'listFilter',
30
+ pure: false
31
+ }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2xpc3QtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQVFwRCxNQUFNLE9BQU8sY0FBYztJQUN2QixTQUFTLENBQUMsS0FBaUIsRUFBRSxNQUFXO1FBQ3BDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxXQUFXLENBQUMsSUFBUyxFQUFFLE1BQVc7UUFDOUIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDcEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3pFLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLENBQUM7WUFDTCxDQUFDOztnQkFFRyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQW5CUSxjQUFjO3NHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBSjFCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxLQUFLO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4vbXVsdGlzZWxlY3QubW9kZWwnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2xpc3RGaWx0ZXInLFxuICAgIHB1cmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIExpc3RGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGl0ZW1zOiBMaXN0SXRlbVtdLCBmaWx0ZXI6IGFueSk6IExpc3RJdGVtW10ge1xuICAgICAgICBpZiAoIWl0ZW1zIHx8ICFmaWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IHRoaXMuYXBwbHlGaWx0ZXIoaXRlbSwgZmlsdGVyKSk7XG4gICAgfVxuICAgIGFwcGx5RmlsdGVyKGl0ZW06IGFueSwgZmlsdGVyOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIHByb3AgaW4gaXRlbSkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtW3Byb3BdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlci50b0xvd2VyQ2FzZSgpKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,68 @@
1
+ import { Component, TemplateRef, ContentChild, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class Item {
4
+ template;
5
+ constructor() {
6
+ }
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Item, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: Item, selector: "c-item", queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: ``, isInline: true });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Item, decorators: [{
11
+ type: Component,
12
+ args: [{
13
+ selector: 'c-item',
14
+ template: ``
15
+ }]
16
+ }], ctorParameters: () => [], propDecorators: { template: [{
17
+ type: ContentChild,
18
+ args: [TemplateRef, { static: false }]
19
+ }] } });
20
+ export class Badge {
21
+ template;
22
+ constructor() {
23
+ }
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Badge, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: Badge, selector: "c-badge", queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: ``, isInline: true });
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Badge, decorators: [{
28
+ type: Component,
29
+ args: [{
30
+ selector: 'c-badge',
31
+ template: ``
32
+ }]
33
+ }], ctorParameters: () => [], propDecorators: { template: [{
34
+ type: ContentChild,
35
+ args: [TemplateRef, { static: false }]
36
+ }] } });
37
+ export class TemplateRenderer {
38
+ viewContainer;
39
+ data;
40
+ item;
41
+ view;
42
+ constructor(viewContainer) {
43
+ this.viewContainer = viewContainer;
44
+ }
45
+ ngOnInit() {
46
+ this.view = this.viewContainer.createEmbeddedView(this.data.template, {
47
+ '\$implicit': this.data,
48
+ 'item': this.item
49
+ });
50
+ }
51
+ ngOnDestroy() {
52
+ this.view.destroy();
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TemplateRenderer, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TemplateRenderer, selector: "c-templateRenderer", inputs: { data: "data", item: "item" }, ngImport: i0, template: ``, isInline: true });
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TemplateRenderer, decorators: [{
58
+ type: Component,
59
+ args: [{
60
+ selector: 'c-templateRenderer',
61
+ template: ``
62
+ }]
63
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { data: [{
64
+ type: Input
65
+ }], item: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tZW51LWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0IsV0FBVyxFQUFvQixZQUFZLEVBQW1FLEtBQUssRUFBd0UsTUFBTSxlQUFlLENBQUM7O0FBU2xRLE1BQU0sT0FBTyxJQUFJO0lBRWlDLFFBQVEsQ0FBa0I7SUFDeEU7SUFDQSxDQUFDO3dHQUpRLElBQUk7NEZBQUosSUFBSSxvRkFFQyxXQUFXLGdEQUxqQixFQUFFOzs0RkFHRCxJQUFJO2tCQUxoQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxRQUFRO29CQUNsQixRQUFRLEVBQUUsRUFBRTtpQkFDYjt3REFJaUQsUUFBUTtzQkFBckQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztBQVdoRCxNQUFNLE9BQU8sS0FBSztJQUVnQyxRQUFRLENBQWtCO0lBQ3hFO0lBQ0EsQ0FBQzt3R0FKUSxLQUFLOzRGQUFMLEtBQUsscUZBRUEsV0FBVyxnREFMakIsRUFBRTs7NEZBR0QsS0FBSztrQkFMakIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsU0FBUztvQkFDbkIsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7d0RBSWlELFFBQVE7c0JBQXJELFlBQVk7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUFXaEQsTUFBTSxPQUFPLGdCQUFnQjtJQU1OO0lBSlYsSUFBSSxDQUFLO0lBQ1QsSUFBSSxDQUFLO0lBQ2xCLElBQUksQ0FBdUI7SUFFM0IsWUFBbUIsYUFBK0I7UUFBL0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO0lBQ2xELENBQUM7SUFDRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xFLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUN2QixNQUFNLEVBQUMsSUFBSSxDQUFDLElBQUk7U0FDbkIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7d0dBakJXLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLGtHQUhqQixFQUFFOzs0RkFHRCxnQkFBZ0I7a0JBTDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7cUZBSVksSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIE5nTW9kdWxlLCBUZW1wbGF0ZVJlZiwgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkLCBFbWJlZGRlZFZpZXdSZWYsIE9uQ2hhbmdlcywgVmlld0NvbnRhaW5lclJlZiwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsLCBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9ICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtaXRlbScsXG4gIHRlbXBsYXRlOiBgYFxufSlcblxuZXhwb3J0IGNsYXNzIEl0ZW0geyBcblxuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PlxuICAgIGNvbnN0cnVjdG9yKCkgeyAgIFxuICAgIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWJhZGdlJyxcbiAgdGVtcGxhdGU6IGBgXG59KVxuXG5leHBvcnQgY2xhc3MgQmFkZ2UgeyBcblxuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PlxuICAgIGNvbnN0cnVjdG9yKCkgeyAgIFxuICAgIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLXRlbXBsYXRlUmVuZGVyZXInLFxuICB0ZW1wbGF0ZTogYGBcbn0pXG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVJlbmRlcmVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kgeyBcblxuICAgIEBJbnB1dCgpIGRhdGE6IGFueVxuICAgIEBJbnB1dCgpIGl0ZW06IGFueVxuICAgIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHsgICBcbiAgICB9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudmlldyA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5kYXRhLnRlbXBsYXRlLCB7XG4gICAgICAgICAgICAnXFwkaW1wbGljaXQnOiB0aGlzLmRhdGEsXG4gICAgICAgICAgICAnaXRlbSc6dGhpcy5pdGVtXG4gICAgICAgIH0pO1xuICAgIH1cblx0XG4gICAgbmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy52aWV3LmRlc3Ryb3koKTtcblx0fVxuXG59XG4iXX0=