ng-jvx-multiselect 1.1.28

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.
Files changed (56) hide show
  1. package/README.md +330 -0
  2. package/_index.scss +1 -0
  3. package/esm2020/lib/directives/ng-jvx-disabled-option.directive.mjs +49 -0
  4. package/esm2020/lib/directives/ng-jvx-focus.directive.mjs +29 -0
  5. package/esm2020/lib/directives/ng-jvx-group-header.directive.mjs +25 -0
  6. package/esm2020/lib/directives/ng-jvx-options-template.directive.mjs +26 -0
  7. package/esm2020/lib/directives/ng-jvx-selection-template.directive.mjs +25 -0
  8. package/esm2020/lib/interfaces/ng-jvx-group-mapper.mjs +2 -0
  9. package/esm2020/lib/interfaces/ng-jvx-option-mapper.mjs +2 -0
  10. package/esm2020/lib/interfaces/ng-jvx-search-mapper.mjs +2 -0
  11. package/esm2020/lib/ng-jvx-multiselect.component.mjs +589 -0
  12. package/esm2020/lib/ng-jvx-multiselect.module.mjs +92 -0
  13. package/esm2020/lib/ng-jvx-multiselect.service.mjs +42 -0
  14. package/esm2020/lib/ng-jvx-option/ng-jvx-option.component.mjs +31 -0
  15. package/esm2020/lib/ng-jvx-panel/ng-jvx-panel.component.mjs +41 -0
  16. package/esm2020/ng-jvx-multiselect.mjs +5 -0
  17. package/esm2020/public-api.mjs +15 -0
  18. package/fesm2015/ng-jvx-multiselect.mjs +924 -0
  19. package/fesm2015/ng-jvx-multiselect.mjs.map +1 -0
  20. package/fesm2020/ng-jvx-multiselect.mjs +918 -0
  21. package/fesm2020/ng-jvx-multiselect.mjs.map +1 -0
  22. package/lib/directives/ng-jvx-disabled-option.directive.d.ts +14 -0
  23. package/lib/directives/ng-jvx-disabled-option.directive.d.ts.map +1 -0
  24. package/lib/directives/ng-jvx-focus.directive.d.ts +11 -0
  25. package/lib/directives/ng-jvx-focus.directive.d.ts.map +1 -0
  26. package/lib/directives/ng-jvx-group-header.directive.d.ts +10 -0
  27. package/lib/directives/ng-jvx-group-header.directive.d.ts.map +1 -0
  28. package/lib/directives/ng-jvx-options-template.directive.d.ts +11 -0
  29. package/lib/directives/ng-jvx-options-template.directive.d.ts.map +1 -0
  30. package/lib/directives/ng-jvx-selection-template.directive.d.ts +10 -0
  31. package/lib/directives/ng-jvx-selection-template.directive.d.ts.map +1 -0
  32. package/lib/interfaces/ng-jvx-group-mapper.d.ts +8 -0
  33. package/lib/interfaces/ng-jvx-group-mapper.d.ts.map +1 -0
  34. package/lib/interfaces/ng-jvx-option-mapper.d.ts +7 -0
  35. package/lib/interfaces/ng-jvx-option-mapper.d.ts.map +1 -0
  36. package/lib/interfaces/ng-jvx-search-mapper.d.ts +7 -0
  37. package/lib/interfaces/ng-jvx-search-mapper.d.ts.map +1 -0
  38. package/lib/ng-jvx-multiselect.component.d.ts +144 -0
  39. package/lib/ng-jvx-multiselect.component.d.ts.map +1 -0
  40. package/lib/ng-jvx-multiselect.module.d.ts +26 -0
  41. package/lib/ng-jvx-multiselect.module.d.ts.map +1 -0
  42. package/lib/ng-jvx-multiselect.service.d.ts +20 -0
  43. package/lib/ng-jvx-multiselect.service.d.ts.map +1 -0
  44. package/lib/ng-jvx-option/ng-jvx-option.component.d.ts +14 -0
  45. package/lib/ng-jvx-option/ng-jvx-option.component.d.ts.map +1 -0
  46. package/lib/ng-jvx-panel/ng-jvx-panel.component.d.ts +16 -0
  47. package/lib/ng-jvx-panel/ng-jvx-panel.component.d.ts.map +1 -0
  48. package/ng-jvx-multiselect.d.ts +5 -0
  49. package/ng-jvx-multiselect.d.ts.map +1 -0
  50. package/package.json +48 -0
  51. package/public-api.d.ts +11 -0
  52. package/public-api.d.ts.map +1 -0
  53. package/src/lib/mixins.scss +6 -0
  54. package/src/lib/ng-jvx-multiselect.component.scss +234 -0
  55. package/src/lib/ng-jvx-option/ng-jvx-option.component.scss +40 -0
  56. package/src/lib/ng-jvx-panel/ng-jvx-panel.component.scss +0 -0
package/README.md ADDED
@@ -0,0 +1,330 @@
1
+ # NgJvxMultiselect
2
+
3
+ ng-jvx-multiselect is a select based on angular material. It handles both single and multiple selections and allows to
4
+ retrieves the options via asynchronous calls.
5
+
6
+ ## Install ng-jvx-multiselect
7
+
8
+ ```
9
+ npm install ng-jvx-multiselect --save
10
+ ```
11
+
12
+ In <b>app.module.ts</b>
13
+
14
+ ```typescript
15
+ import {NgJvxMultiselectModule} from 'ng-jvx-multiselect';
16
+
17
+ @NgModule({
18
+ imports: [
19
+ NgJvxMultiselectModule
20
+ ]
21
+ })
22
+ ```
23
+
24
+ In <b>styles.scss</b>
25
+
26
+ ```scss
27
+ @use '@angular/material' as mat;
28
+ @use 'index' as ng-jvx-multiselect;
29
+ @import '@angular/material/theming';
30
+ // Plus imports for other components in your app.
31
+
32
+ // Include the common styles for Angular Material.
33
+ @include mat-core();
34
+
35
+ // Define the palettes for your theme using the Material Design palettes available in palette.scss
36
+ // (imported above).
37
+ $candy-app-primary: mat-palette($mat-indigo);
38
+ $candy-app-accent: mat-palette($mat-pink, A200, A100, A400);
39
+
40
+ // The warn palette is optional (defaults to red).
41
+ $candy-app-warn: mat-palette($mat-red);
42
+
43
+ // Create the theme object. A theme consists of configurations for individual
44
+ // theming systems such as `color` or `typography`.
45
+ $candy-app-theme: mat-light-theme((
46
+ color: (
47
+ primary: $candy-app-primary,
48
+ accent: $candy-app-accent,
49
+ warn: $candy-app-warn,
50
+ )
51
+ ));
52
+
53
+ @include angular-material-theme($candy-app-theme);
54
+ @include ng-jvx-multiselect-style($candy-app-theme);
55
+ ```
56
+ In <b>example.component.html</b>
57
+
58
+ ```angular2html
59
+ <ng-jvx-multiselect style="width: 100%" [options]="options">
60
+ <ng-container placeholder>
61
+ this is a placeholder
62
+ </ng-container>
63
+ </ng-jvx-multiselect>
64
+ ```
65
+ In <b>example.component.ts</b>
66
+
67
+ ```typescript
68
+ public options = [
69
+ {value: 1, text: 'text 1'},
70
+ {value: 2, text: 'text 2'},
71
+ {value: 3, text: 'text 3'},
72
+ {value: 4, text: 'text 4'},
73
+ {value: 5, text: 'text 5'},
74
+ {value: 6, text: 'text 6'},
75
+ {value: 7, text: 'text 7'},
76
+ {value: 8, text: 'text 8'},
77
+ {value: 9, text: 'text 9'},
78
+ {value: 10, text: 'text 10'}];
79
+ ```
80
+ ![result](https://github.com/giovanni-venturelli/ng-jvx-multiselect/blob/main/blob/basic_usage.gif)
81
+
82
+ ## API
83
+
84
+ ### Slots
85
+
86
+ | Name | Description |
87
+ |---------------|------------------------------------------------------------------------------------------------------------|
88
+ | `default` | Using the default slot is one way of defining the options via the component `<ng-jvx-option>`. |
89
+ | `placeholder` | This slot allows the user to define a placeholder which will be displayed when no selection has been made. |
90
+
91
+ ### Inputs
92
+
93
+ | Name | Type | Default | Description |
94
+ |------------------|----------------------------------------------------------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
95
+ | `clearable` | `Boolean` | `false` | True to enable the empty selection. |
96
+ | `disabled` | `Boolean` | `false` | True to disable the select. |
97
+ | `itemText` | `String` | `'text'` | The name of the property of the option object that will be displayed as description of the options. |
98
+ | `itemValue` | `String` | `'value'` | The name of the property of the option object that will be treated as value of the options. |
99
+ | `multi` | `Boolean` | `false` | True if it's a multiselect. |
100
+ | `options` | `Array` | `[]` | Array of option objects. |
101
+ | `requestHeaders` | `Object` | `{...}` | The headers of the HTTP request. |
102
+ | `requestType` | <code>'GET'&#124;'POST'</code> | `'GET'` | The type of the HTTP request. |
103
+ | `searchInput` | `Boolean` | `false` | True to enable the search input for the options list. |
104
+ | `searchMode` | <code>'client'&#124;'server'</code> | `server` | `'client'` if the search is only client side, `'server'` if it's server side. |
105
+ | `searchLabel` | `String` | `'search'` | The label of the search input. |
106
+ | `searchProp` | `String` | `'search'` | The name of the search property of the HTTP request. |
107
+ | `listProp` | `String` | `''` | Name of the property in response.data where the list is stored. |
108
+ | `url` | `String` | `''` | The url to get the options. |
109
+ | `value` | `Array` | `[]` | The current value of the selection. |
110
+ | `mapper` | `NgJvxOptionMapper` | `*` | The object that will map the response of the async call. |
111
+ | `searchMapper` | `NgJvxSearchMapper` | `*` | The object that will map the client search result. |
112
+ | `groupBy` | <code>NgJvxGroupMapper<any>&#124;string&#124;null</code> | `null` | If it's a `string` it defines the the property of each option by which group them in the list. If it's a `NgJvxGroupMapper` it offers a method that groups the options (useful for nested properties). |
113
+
114
+ ### Methods
115
+
116
+ *None*
117
+
118
+ ### Events
119
+
120
+ | Event Name | Detail | Description |
121
+ |---------------|---------|-----------------------------------------------------------------------------------------------------|
122
+ | `valueChange` | `Array` | Fired when the user changes the value of the input. The detail contains the value of the selection. |
123
+ | `scrollEnd` | *None* | Fired when the scrollbar in the options menu reaches the bottom. |
124
+ | `open` | *None* | Fired when the the menu starts opening. |
125
+ | `opened` | *None* | Fired when the the menu is opened. |
126
+ | `close` | *None* | Fired when the the menu starts closing. |
127
+ | `closed` | *None* | Fired when the the menu is closed. |
128
+
129
+ ### Groups
130
+
131
+ It is possible to collect the options in groups. To do so the user can set the property `groupBy` with the name of the property they want to group the options by.
132
+ If the property is nested or the user wants to implement a more complex grouping algorithm, they set the property `groupBy` with an object that implements the interface `NgJvxGroupMapper<T>`.
133
+ This object offers the method
134
+ ```typescript
135
+ mapGroup(option: T): Observable<NgJvxGroup<T>>
136
+ ```
137
+ with
138
+ ```typescript
139
+ interface NgJvxGroup<T> {
140
+ group: string;
141
+ option: T;
142
+ }
143
+ ```
144
+ The `mapGroup` method hence takes the option and wraps it in an object that defines the name of the group it belongs to.
145
+ It is possible to define the look of the headers of the groups with the directive [*ngJvxGroupHeaderTemplate](#ngjvxgroupheadertemplate)
146
+ ### HTTP Request
147
+
148
+ #### Request
149
+
150
+ The HTTP request can be either a GET or a POST request. The user can set the type using the property `requestType` which
151
+ is set to `'GET'` by default.
152
+
153
+ ##### Headers
154
+
155
+ The headers can be set in the property `requestHeaders`. By default the ng-jvx-multiselect uses the property `trusted`
156
+ stored in the sessionStorage. The default headers are:
157
+
158
+ ```javascript
159
+ var requestHeaders = {
160
+ 'Accept': 'application/json',
161
+ 'Access-Control-Allow-Origin': '*',
162
+ 'Access-Control-Allow-Methods': 'GET, PUT, POST, DELETE, OPTIONS',
163
+ 'Content-Type': 'application/json',
164
+ 'Authorization': window.sessionStorage.getItem('trusted')
165
+ }
166
+ ```
167
+
168
+ #### Response
169
+
170
+ The response must contain an array of elements.
171
+
172
+ The property `listProp` defines the path of the array in the response object (i.e. if `listProp` is set to `list` the
173
+ ng-jvx-multiselect will get the options in the array stored in the path `response.list`).
174
+
175
+ #### Mapper
176
+
177
+ The `mapper` property will be an object implementing the interface `NgJvxOptionMapper<T>`. It will expose a
178
+ method `mapOption` which accepts the option to be mapped in the form of an Object and returns an Observable of type `T`.
179
+ For example if the request returns an array of objects like this:
180
+
181
+ ```javascript
182
+ {
183
+ id: number;
184
+ description: string;
185
+ }
186
+ ```
187
+
188
+ it is possible to write a mapper like this:
189
+
190
+ ```javascript
191
+ const mapper: NgJvxOptionMapper<{value: number, text: string}> = {
192
+ mapOption(source: {
193
+ id: number,
194
+ description: string
195
+ }): Observable<any> {
196
+ return of({value: source.id, text: source.description});
197
+ }
198
+ }
199
+ ```
200
+ #### Search
201
+
202
+ If the property `searchInput` is `true`, the user will be able to search a value amongst the options.
203
+ `searchProp` defines the name of the property for the HTTP call.
204
+
205
+ ##### searchMapper
206
+
207
+ The `searchMapper` property is an object implementing the interface `NgJvxSearchMapper<T>`. It exposes the
208
+ method `mapSearch` which accepts the value of the search (a string) and an array of the selectable options.
209
+ The method returns an Observable of type `T[]`.
210
+ The value of the returned Observable will then be used as the new option list.
211
+ This property is only useful for a client side search.
212
+
213
+ For example:
214
+ ```typescript
215
+ const searchMapper: NgJvxSearchMapper<{text: string, value: number}> = {
216
+ mapSearch: (source: string, options: {text: string, value: number}[]): Observable<{text: string, value: number}[]> => {
217
+ return of(options.filter(o => o.text.toLowerCase().includes(source.toLowerCase())));
218
+ }
219
+ }
220
+ ```
221
+
222
+ ### Slots
223
+
224
+ #### default
225
+
226
+ The default slot allows to define the options directly via html. It's not compatible with the `url` parameter. The
227
+ options shall be wrapped in the `<ng-jvx-option>` component. The slot shall not be wrapped in the `<ng-jvx-option>`
228
+ component if it's decorated with one of the available directives, since it will have different purposes.
229
+
230
+ #### placeholder
231
+
232
+ The slot `placeholder` will define the placeholder. It's shown only when the selection's value is empty.
233
+
234
+ ### Directives
235
+
236
+ #### ngJvxOptionsTemplate
237
+
238
+ When an element inside the `ng-jvx-multiselect` is decorated with this directive it becomes the template for the options
239
+ of the select. The directive provides a context. i.e.: Let's say we have the following structure:
240
+
241
+ ```javascript
242
+ var options = [{
243
+ value: 1,
244
+ text: 'Lorem ipsum',
245
+ color: 'blue',
246
+ preview: 'path/to/first-image.jpg'
247
+ },
248
+ {
249
+ value: 2,
250
+ text: 'dolor sit amet',
251
+ color: 'red',
252
+ preview: 'path/to/second-image.jpg'
253
+ }];
254
+ ```
255
+
256
+ and we want our options to have in the text field both the property color and the property text. We can write the
257
+ template like so:
258
+
259
+ ```angular2html
260
+ <div *ngJvxOptionsTemplate="let option">{{option.color}} {{option.text}}</div>
261
+ ```
262
+
263
+ It's possible to use the context inside attributes too. i.e.
264
+
265
+ ```angular2html
266
+ <div *ngJvxOptionsTemplate="let option">
267
+ <span>{{option.text}}</span>
268
+ <span>
269
+ <img src="{{option.preview}}"/>
270
+ </span>
271
+ </div>
272
+ ```
273
+
274
+ #### *ngJvxSelectionTemplate
275
+
276
+ This directive works exactly as the `ngJvxOptionsTemplate` except it defines the selection template.
277
+ In case of a multiple selection the context is the array of the selected options, for the non-multiple selection the
278
+ context is the selected option.
279
+
280
+ #### *ngJvxGroupHeaderTemplate
281
+
282
+ When an element inside the `ng-jvx-multiselect` is decorated with this directive it becomes the template for the header
283
+ of the groups by which the options are devided. The directive provides a context which describes the group with its
284
+ options in the following form:
285
+
286
+ ```typescript
287
+ {
288
+ group: any;
289
+ options: any[];
290
+ }
291
+ ```
292
+
293
+ i.e.: with the following structure:
294
+
295
+ ```typescript
296
+ const options = [{
297
+ value: 'dog',
298
+ text: 'the dog',
299
+ type: 'mammal'
300
+ }, {
301
+ value: 'lizard',
302
+ text: 'the lizard',
303
+ type: 'reptile'
304
+ }, {
305
+ value: 'cat',
306
+ text: 'the cat',
307
+ type: 'mammal'
308
+ }];
309
+ ```
310
+
311
+ and we want the header of each group be in the form of 'Type of animal: [mammal | reptile]'. We'll do as follows:
312
+
313
+ ```angular2html
314
+
315
+ <div *ngJvxGroupHeaderTemplate="let g">Type of animal: {{g.group}}</div>
316
+ ```
317
+
318
+ #### *ngJvxDisabledOption
319
+
320
+ This directive disables the selection of the host option. i.e.
321
+
322
+ ```angular2html
323
+
324
+ <div *ngJvxOptionsTemplate="let option" [ngJvxDisabledOption]="option.text === 'text of the disabled option'">
325
+ <span>{{option.text}}</span>
326
+ <span>
327
+ <img src="{{option.preview}}"/>
328
+ </span>
329
+ </div>
330
+ ```
package/_index.scss ADDED
@@ -0,0 +1 @@
1
+ @forward './src/lib/ng-jvx-multiselect.component';
@@ -0,0 +1,49 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { fromEvent, Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ export class NgJvxDisabledOptionDirective {
6
+ constructor(el) {
7
+ this.el = el;
8
+ this.isDisabled = false;
9
+ this.originalOpacity = 1;
10
+ this.unsubs = new Subject();
11
+ this.originalOpacity = el.nativeElement.style.opacity;
12
+ }
13
+ set ngJvxDisabledOption(source) {
14
+ this.isDisabled = source;
15
+ if (this.isDisabled) {
16
+ this.el.nativeElement.style.opacity = this.originalOpacity ? this.originalOpacity / 2 : 0.5;
17
+ }
18
+ else {
19
+ this.el.nativeElement.style.opacity = this.originalOpacity;
20
+ }
21
+ }
22
+ ngOnInit() {
23
+ fromEvent(this.el.nativeElement.closest('.mat-list-item-content'), 'click', {
24
+ capture: true,
25
+ }).pipe(takeUntil(this.unsubs)).subscribe((e) => {
26
+ if (this.isDisabled) {
27
+ e.stopImmediatePropagation();
28
+ e.stopPropagation();
29
+ e.preventDefault();
30
+ }
31
+ });
32
+ }
33
+ ngOnDestroy() {
34
+ this.unsubs.next();
35
+ this.unsubs.complete();
36
+ }
37
+ }
38
+ NgJvxDisabledOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxDisabledOptionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
39
+ NgJvxDisabledOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NgJvxDisabledOptionDirective, selector: "[ngJvxDisabledOption]", inputs: { ngJvxDisabledOption: "ngJvxDisabledOption" }, ngImport: i0 });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxDisabledOptionDirective, decorators: [{
41
+ type: Directive,
42
+ args: [{
43
+ // tslint:disable-next-line:directive-selector
44
+ selector: '[ngJvxDisabledOption]'
45
+ }]
46
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { ngJvxDisabledOption: [{
47
+ type: Input
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctanZ4LWRpc2FibGVkLW9wdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1qdngtbXVsdGlzZWxlY3Qvc3JjL2xpYi9kaXJlY3RpdmVzL25nLWp2eC1kaXNhYmxlZC1vcHRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQTRCLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQU16QyxNQUFNLE9BQU8sNEJBQTRCO0lBZXZDLFlBQ1UsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFmaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUVwQixXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWFuQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUV4RCxDQUFDO0lBYkQsSUFBYSxtQkFBbUIsQ0FBQyxNQUFlO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDN0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFRRCxRQUFRO1FBQ04sU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLE9BQU8sRUFBRTtZQUMxRSxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFO1lBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDOzt5SEFwQ1UsNEJBQTRCOzZHQUE1Qiw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFKeEMsU0FBUzttQkFBQztvQkFDVCw4Q0FBOEM7b0JBQzlDLFFBQVEsRUFBRSx1QkFBdUI7aUJBQ2xDO2lHQU9jLG1CQUFtQjtzQkFBL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7ZnJvbUV2ZW50LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ1tuZ0p2eERpc2FibGVkT3B0aW9uXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nSnZ4RGlzYWJsZWRPcHRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBpc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBvcmlnaW5hbE9wYWNpdHkgPSAxO1xyXG5cclxuICBwcml2YXRlIHVuc3VicyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBuZ0p2eERpc2FibGVkT3B0aW9uKHNvdXJjZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gc291cmNlO1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IHRoaXMub3JpZ2luYWxPcGFjaXR5ID8gdGhpcy5vcmlnaW5hbE9wYWNpdHkgLyAyIDogMC41O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSB0aGlzLm9yaWdpbmFsT3BhY2l0eTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5vcmlnaW5hbE9wYWNpdHkgPSBlbC5uYXRpdmVFbGVtZW50LnN0eWxlLm9wYWNpdHk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBmcm9tRXZlbnQodGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5tYXQtbGlzdC1pdGVtLWNvbnRlbnQnKSwgJ2NsaWNrJywge1xyXG4gICAgICBjYXB0dXJlOiB0cnVlLFxyXG4gICAgfSkucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnMpKS5zdWJzY3JpYmUoKGU6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vicy5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vicy5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgJvxFocusDirective {
4
+ constructor(el) {
5
+ this.el = el;
6
+ }
7
+ ngOnInit() {
8
+ if (this.ngJvxFocus) {
9
+ this.el.nativeElement.focus();
10
+ }
11
+ }
12
+ ngOnChanges(changes) {
13
+ if (changes.hasOwnProperty('ngJvxFocus') && changes.ngJvxFocus.currentValue === true) {
14
+ this.el.nativeElement.focus();
15
+ }
16
+ }
17
+ }
18
+ NgJvxFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxFocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
19
+ NgJvxFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NgJvxFocusDirective, selector: "[ngJvxFocus]", inputs: { ngJvxFocus: "ngJvxFocus" }, usesOnChanges: true, ngImport: i0 });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxFocusDirective, decorators: [{
21
+ type: Directive,
22
+ args: [{
23
+ // tslint:disable-next-line:directive-selector
24
+ selector: '[ngJvxFocus]'
25
+ }]
26
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { ngJvxFocus: [{
27
+ type: Input
28
+ }] } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctanZ4LWZvY3VzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWp2eC1tdWx0aXNlbGVjdC9zcmMvbGliL2RpcmVjdGl2ZXMvbmctanZ4LWZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLFNBQVMsRUFBYyxLQUFLLEVBQW1DLE1BQU0sZUFBZSxDQUFDOztBQU8vRyxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQ2xDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQ3BGLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzs7Z0hBaEJVLG1CQUFtQjtvR0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsOENBQThDO29CQUM5QyxRQUFRLEVBQUUsY0FBYztpQkFDekI7aUdBRVUsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJDb250ZW50SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge3RpbWVyfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ1tuZ0p2eEZvY3VzXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nSnZ4Rm9jdXNEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgbmdKdnhGb2N1czogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZ0p2eEZvY3VzKSB7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ25nSnZ4Rm9jdXMnKSAmJiBjaGFuZ2VzLm5nSnZ4Rm9jdXMuY3VycmVudFZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgJvxGroupHeaderDirective {
4
+ constructor(template, vcRef) {
5
+ this.template = template;
6
+ this.vcRef = vcRef;
7
+ }
8
+ set ngJvxGroupHeaderOf(source) {
9
+ for (const item of source) {
10
+ this.vcRef.createEmbeddedView(this.template, { $implicit: item });
11
+ }
12
+ }
13
+ }
14
+ NgJvxGroupHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxGroupHeaderDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
15
+ NgJvxGroupHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NgJvxGroupHeaderDirective, selector: "[ngJvxGroupHeader]", inputs: { ngJvxGroupHeaderOf: "ngJvxGroupHeaderOf" }, ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxGroupHeaderDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ // tslint:disable-next-line:directive-selector
20
+ selector: '[ngJvxGroupHeader]'
21
+ }]
22
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { ngJvxGroupHeaderOf: [{
23
+ type: Input
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctanZ4LWdyb3VwLWhlYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1qdngtbXVsdGlzZWxlY3Qvc3JjL2xpYi9kaXJlY3RpdmVzL25nLWp2eC1ncm91cC1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQzs7QUFNOUUsTUFBTSxPQUFPLHlCQUF5QjtJQUVwQyxZQUNTLFFBQTBCLEVBQ3pCLEtBQXVCO1FBRHhCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQ3pCLFVBQUssR0FBTCxLQUFLLENBQWtCO0lBQ2pDLENBQUM7SUFFRCxJQUFhLGtCQUFrQixDQUFDLE1BQW9CO1FBQ2xELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQzs7c0hBWFUseUJBQXlCOzBHQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCw4Q0FBOEM7b0JBQzlDLFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO2lJQVFjLGtCQUFrQjtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnW25nSnZ4R3JvdXBIZWFkZXJdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdKdnhHcm91cEhlYWRlckRpcmVjdGl2ZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgcHJpdmF0ZSB2Y1JlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG5nSnZ4R3JvdXBIZWFkZXJPZihzb3VyY2U6IEFycmF5PGFueVtdPikge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNvdXJjZSkge1xyXG4gICAgICB0aGlzLnZjUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlLCB7JGltcGxpY2l0OiBpdGVtfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,26 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgJvxOptionsTemplateDirective {
4
+ constructor(el, template, vcRef) {
5
+ this.el = el;
6
+ this.template = template;
7
+ this.vcRef = vcRef;
8
+ }
9
+ set ngJvxOptionsTemplateOf(source) {
10
+ for (const item of source) {
11
+ this.vcRef.createEmbeddedView(this.template, { $implicit: item });
12
+ }
13
+ }
14
+ }
15
+ NgJvxOptionsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxOptionsTemplateDirective, deps: [{ token: i0.ElementRef }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
16
+ NgJvxOptionsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NgJvxOptionsTemplateDirective, selector: "[ngJvxOptionsTemplate]", inputs: { ngJvxOptionsTemplateOf: "ngJvxOptionsTemplateOf" }, ngImport: i0 });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxOptionsTemplateDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ // tslint:disable-next-line:directive-selector
21
+ selector: '[ngJvxOptionsTemplate]'
22
+ }]
23
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { ngJvxOptionsTemplateOf: [{
24
+ type: Input
25
+ }] } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctanZ4LW9wdGlvbnMtdGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctanZ4LW11bHRpc2VsZWN0L3NyYy9saWIvZGlyZWN0aXZlcy9uZy1qdngtb3B0aW9ucy10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBNEIsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQzs7QUFNeEcsTUFBTSxPQUFPLDZCQUE2QjtJQUV4QyxZQUNVLEVBQWMsRUFDZixRQUEwQixFQUN6QixLQUF1QjtRQUZ2QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDekIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7SUFDakMsQ0FBQztJQUlELElBQWEsc0JBQXNCLENBQUMsTUFBb0I7UUFDdEQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDOzswSEFkVSw2QkFBNkI7OEdBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULDhDQUE4QztvQkFDOUMsUUFBUSxFQUFFLHdCQUF3QjtpQkFDbkM7MEpBV2Msc0JBQXNCO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ1tuZ0p2eE9wdGlvbnNUZW1wbGF0ZV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ0p2eE9wdGlvbnNUZW1wbGF0ZURpcmVjdGl2ZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByaXZhdGUgdmNSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgQElucHV0KCkgc2V0IG5nSnZ4T3B0aW9uc1RlbXBsYXRlT2Yoc291cmNlOiBBcnJheTxhbnlbXT4pIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBzb3VyY2UpIHtcclxuICAgICAgdGhpcy52Y1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSwgeyRpbXBsaWNpdDogaXRlbX0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,25 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgJvxSelectionTemplateDirective {
4
+ constructor(template, vcRef) {
5
+ this.template = template;
6
+ this.vcRef = vcRef;
7
+ }
8
+ set ngJvxSelectionTemplateOf(source) {
9
+ for (const item of source) {
10
+ this.vcRef.createEmbeddedView(this.template, { $implicit: item });
11
+ }
12
+ }
13
+ }
14
+ NgJvxSelectionTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxSelectionTemplateDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
15
+ NgJvxSelectionTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: NgJvxSelectionTemplateDirective, selector: "[ngJvxSelectionTemplate]", inputs: { ngJvxSelectionTemplateOf: "ngJvxSelectionTemplateOf" }, ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: NgJvxSelectionTemplateDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ // tslint:disable-next-line:directive-selector
20
+ selector: '[ngJvxSelectionTemplate]'
21
+ }]
22
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { ngJvxSelectionTemplateOf: [{
23
+ type: Input
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctanZ4LXNlbGVjdGlvbi10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1qdngtbXVsdGlzZWxlY3Qvc3JjL2xpYi9kaXJlY3RpdmVzL25nLWp2eC1zZWxlY3Rpb24tdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQzs7QUFNOUUsTUFBTSxPQUFPLCtCQUErQjtJQUUxQyxZQUNTLFFBQTBCLEVBQ3pCLEtBQXVCO1FBRHhCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQ3pCLFVBQUssR0FBTCxLQUFLLENBQWtCO0lBQ2pDLENBQUM7SUFFRCxJQUFhLHdCQUF3QixDQUFDLE1BQW9CO1FBQ3hELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQzs7NEhBWFUsK0JBQStCO2dIQUEvQiwrQkFBK0I7MkZBQS9CLCtCQUErQjtrQkFKM0MsU0FBUzttQkFBQztvQkFDVCw4Q0FBOEM7b0JBQzlDLFFBQVEsRUFBRSwwQkFBMEI7aUJBQ3JDO2lJQVFjLHdCQUF3QjtzQkFBcEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnW25nSnZ4U2VsZWN0aW9uVGVtcGxhdGVdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdKdnhTZWxlY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgcHJpdmF0ZSB2Y1JlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG5nSnZ4U2VsZWN0aW9uVGVtcGxhdGVPZihzb3VyY2U6IEFycmF5PGFueVtdPikge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNvdXJjZSkge1xyXG4gICAgICB0aGlzLnZjUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlLCB7JGltcGxpY2l0OiBpdGVtfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctanZ4LWdyb3VwLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWp2eC1tdWx0aXNlbGVjdC9zcmMvbGliL2ludGVyZmFjZXMvbmctanZ4LWdyb3VwLW1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmdKdnhHcm91cE1hcHBlcjxUPiB7XHJcbiAgbWFwR3JvdXAob3B0aW9uOiBUKTogT2JzZXJ2YWJsZTxOZ0p2eEdyb3VwPFQ+PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOZ0p2eEdyb3VwPFQ+IHtcclxuICBncm91cDogc3RyaW5nO1xyXG4gIG9wdGlvbjogVDtcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctanZ4LW9wdGlvbi1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1qdngtbXVsdGlzZWxlY3Qvc3JjL2xpYi9pbnRlcmZhY2VzL25nLWp2eC1vcHRpb24tbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIE1hcHMgdGhlIG9wdGlvbiByZXR1cm5lZCBieSB0aGUgYXN5bmMgY2FsbCBpbiBhbiBvYmplY3Qgb2YgdHlwZSBULiBXaGVuIG9iamVjdCBpcyBtYXBwZWQgdGhlIHJlc3VsdGluZyBvYmplY3QgaXMgcmV0dXJuZWQgaW4gYW4gb2JzZXJ2YWJsZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOZ0p2eE9wdGlvbk1hcHBlcjxUPiB7XHJcbiAgbWFwT3B0aW9uKHNvdXJjZTogYW55KTogT2JzZXJ2YWJsZTxUPjtcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctanZ4LXNlYXJjaC1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1qdngtbXVsdGlzZWxlY3Qvc3JjL2xpYi9pbnRlcmZhY2VzL25nLWp2eC1zZWFyY2gtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIE1hcHMgdGhlIG9wdGlvbiByZXR1cm5lZCBieSB0aGUgYXN5bmMgY2FsbCBpbiBhbiBvYmplY3Qgb2YgdHlwZSBULiBXaGVuIG9iamVjdCBpcyBtYXBwZWQgdGhlIHJlc3VsdGluZyBvYmplY3QgaXMgcmV0dXJuZWQgaW4gYW4gb2JzZXJ2YWJsZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOZ0p2eFNlYXJjaE1hcHBlcjxUPiB7XHJcbiAgbWFwU2VhcmNoKHNvdXJjZTogYW55LCBvcHRpb25zOiBUKTogT2JzZXJ2YWJsZTxUPjtcclxufVxyXG4iXX0=