@elderbyte/ngx-starter 15.10.5 → 15.12.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.
Files changed (29) hide show
  1. package/esm2020/lib/common/arrays.mjs +29 -0
  2. package/esm2020/lib/common/public_api.mjs +5 -4
  3. package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +9 -21
  4. package/esm2020/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +113 -0
  5. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +53 -39
  6. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +11 -5
  7. package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +1 -1
  8. package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +62 -28
  9. package/esm2020/lib/components/select/elder-select.module.mjs +19 -7
  10. package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +17 -23
  11. package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +24 -11
  12. package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +5 -5
  13. package/fesm2015/elderbyte-ngx-starter.mjs +418 -225
  14. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  15. package/fesm2020/elderbyte-ngx-starter.mjs +416 -225
  16. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  17. package/lib/common/arrays.d.ts +11 -0
  18. package/lib/common/public_api.d.ts +4 -3
  19. package/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.d.ts +1 -1
  20. package/lib/components/data-view/table/activation/elder-delete-active.directive.d.ts +53 -0
  21. package/lib/components/data-view/table/activation/elder-table-activation.directive.d.ts +8 -5
  22. package/lib/components/data-view/table/elder-table.module.d.ts +24 -22
  23. package/lib/components/dialogs/elder-dialog.module.d.ts +1 -1
  24. package/lib/components/dialogs/elder-dialog.service.d.ts +34 -12
  25. package/lib/components/select/elder-select.module.d.ts +12 -11
  26. package/lib/components/select/multi/elder-multi-select-base.d.ts +2 -0
  27. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +5 -1
  28. package/package.json +1 -1
  29. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +26 -0
@@ -48,7 +48,7 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
48
48
  import * as i1$6 from '@angular/material/snack-bar';
49
49
  import { MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
50
50
  import * as i5$4 from '@angular/cdk/drag-drop';
51
- import { transferArrayItem, moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
51
+ import { transferArrayItem, moveItemInArray, DragDropModule, CdkDropList, CdkDrag } from '@angular/cdk/drag-drop';
52
52
  import * as i4$3 from '@angular/material/divider';
53
53
  import { MatDividerModule } from '@angular/material/divider';
54
54
  import * as i2$3 from '@angular/material/badge';
@@ -2001,6 +2001,137 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2001
2001
  }]
2002
2002
  }] });
2003
2003
 
2004
+ /**
2005
+ * Provides common used object utils
2006
+ */
2007
+ class Objects {
2008
+ /**
2009
+ * Checks if the given value is non null / nun undefined
2010
+ */
2011
+ static nonNull(value) {
2012
+ return value !== null && value !== undefined;
2013
+ }
2014
+ /**
2015
+ * Checks if the given value is null or undefined
2016
+ */
2017
+ static isNull(value) {
2018
+ return value === null || value === undefined;
2019
+ }
2020
+ /**
2021
+ * Creates a copy of the object data.
2022
+ */
2023
+ static cloneData(src) {
2024
+ if (!src) {
2025
+ return src;
2026
+ }
2027
+ try {
2028
+ const json = JSON.stringify(src);
2029
+ return JSON.parse(json);
2030
+ }
2031
+ catch (err) {
2032
+ throw new Error('Failed to clone object! ' + err.message);
2033
+ }
2034
+ }
2035
+ /**
2036
+ * Checks if the two given objects have the same data
2037
+ */
2038
+ static dataEquals(a, b) {
2039
+ return JSON.stringify(a) === JSON.stringify(b);
2040
+ }
2041
+ }
2042
+ Objects.logger = LoggerFactory.getLogger('Objects');
2043
+
2044
+ class Arrays {
2045
+ /**
2046
+ * Checks if the two given arrays have the same content in the exact same order.
2047
+ * If order is not relevant, use Sets.equalContent.
2048
+ *
2049
+ * @param arrayA
2050
+ * @param arrayB
2051
+ * @param equalsFn Optional Equality Operator. If omitted, reference equality is used.
2052
+ */
2053
+ static equalContentAndOrder(arrayA, arrayB, equalsFn = (a, b) => a === b) {
2054
+ if (!arrayA?.length && !arrayB?.length) {
2055
+ return true;
2056
+ }
2057
+ if (!arrayA || !arrayB) {
2058
+ return false;
2059
+ }
2060
+ if (arrayA.length !== arrayB.length) {
2061
+ return false;
2062
+ }
2063
+ // Comparing each element of your array
2064
+ for (var i = 0; i < arrayA.length; i++) {
2065
+ if (!equalsFn(arrayA[i], arrayB[i])) {
2066
+ return false;
2067
+ }
2068
+ }
2069
+ return true;
2070
+ }
2071
+ }
2072
+
2073
+ class Sets {
2074
+ /**
2075
+ * Compares the content of two sets for equality in O(n).
2076
+ * @param as
2077
+ * @param bs
2078
+ */
2079
+ static equals(as, bs) {
2080
+ if (as.size !== bs.size) {
2081
+ return false;
2082
+ }
2083
+ if (as !== bs) { // Same reference?
2084
+ return Sets.containsEvery(bs, Array.from(as.values()));
2085
+ }
2086
+ return true;
2087
+ }
2088
+ /**
2089
+ * Checks if the two given arrays have the same content.
2090
+ * They are handled as "Sets" and order of the items is not relevant for the check.
2091
+ *
2092
+ * @param idsA
2093
+ * @param idsB
2094
+ */
2095
+ static equalContent(idsA, idsB) {
2096
+ if (!idsA?.length && !idsB?.length) {
2097
+ return true;
2098
+ }
2099
+ if (!idsA || !idsB) {
2100
+ return false;
2101
+ }
2102
+ if (idsA.length !== idsB.length) {
2103
+ return false;
2104
+ }
2105
+ // Both element lists have content and the same length
2106
+ return Sets.containsEvery(new Set(idsA), idsB);
2107
+ }
2108
+ /**
2109
+ * Checks if the given set contains every given element
2110
+ */
2111
+ static containsEvery(set, elements) {
2112
+ const predicateFn = (e) => set.has(e); // aot does not like lambdas
2113
+ return elements.every(predicateFn);
2114
+ }
2115
+ }
2116
+
2117
+ class JsonMapUtil {
2118
+ static toJsonMap(esMap) {
2119
+ const entries = Array.from(esMap.entries());
2120
+ const jsonMap = {};
2121
+ entries.reduce((o, [key, value]) => {
2122
+ o[key] = value;
2123
+ return o;
2124
+ }, jsonMap);
2125
+ return jsonMap;
2126
+ }
2127
+ static toMap(jsonMap, toIdFn = key => key) {
2128
+ const map = new Map();
2129
+ Object.keys(jsonMap)
2130
+ .forEach(k => map.set(toIdFn(k), jsonMap[k]));
2131
+ return map;
2132
+ }
2133
+ }
2134
+
2004
2135
  /**
2005
2136
  * Similar to sampleTime, but emits the first event and optionally the last event as-well.
2006
2137
  * @param intervalDuration
@@ -2167,46 +2298,6 @@ DateUtil.IsoDateDelimiter = '-';
2167
2298
  DateUtil.IsoTimeDelimiter = ':';
2168
2299
  DateUtil.DateTimeSeparator = 'T';
2169
2300
 
2170
- /**
2171
- * Provides common used object utils
2172
- */
2173
- class Objects {
2174
- /**
2175
- * Checks if the given value is non null / nun undefined
2176
- */
2177
- static nonNull(value) {
2178
- return value !== null && value !== undefined;
2179
- }
2180
- /**
2181
- * Checks if the given value is null or undefined
2182
- */
2183
- static isNull(value) {
2184
- return value === null || value === undefined;
2185
- }
2186
- /**
2187
- * Creates a copy of the object data.
2188
- */
2189
- static cloneData(src) {
2190
- if (!src) {
2191
- return src;
2192
- }
2193
- try {
2194
- const json = JSON.stringify(src);
2195
- return JSON.parse(json);
2196
- }
2197
- catch (err) {
2198
- throw new Error('Failed to clone object! ' + err.message);
2199
- }
2200
- }
2201
- /**
2202
- * Checks if the two given objects have the same data
2203
- */
2204
- static dataEquals(a, b) {
2205
- return JSON.stringify(a) === JSON.stringify(b);
2206
- }
2207
- }
2208
- Objects.logger = LoggerFactory.getLogger('Objects');
2209
-
2210
2301
  // @dynamic
2211
2302
  class CollectionUtil {
2212
2303
  static flatten(groups) {
@@ -2629,24 +2720,6 @@ class Pageable {
2629
2720
  }
2630
2721
  }
2631
2722
 
2632
- class JsonMapUtil {
2633
- static toJsonMap(esMap) {
2634
- const entries = Array.from(esMap.entries());
2635
- const jsonMap = {};
2636
- entries.reduce((o, [key, value]) => {
2637
- o[key] = value;
2638
- return o;
2639
- }, jsonMap);
2640
- return jsonMap;
2641
- }
2642
- static toMap(jsonMap, toIdFn = key => key) {
2643
- const map = new Map();
2644
- Object.keys(jsonMap)
2645
- .forEach(k => map.set(toIdFn(k), jsonMap[k]));
2646
- return map;
2647
- }
2648
- }
2649
-
2650
2723
  class EntitySetPatch {
2651
2724
  /***************************************************************************
2652
2725
  * *
@@ -8483,50 +8556,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
8483
8556
  }]
8484
8557
  }], ctorParameters: function () { return [{ type: i1$3.Router }, { type: i1$4.Location }]; } });
8485
8558
 
8486
- class Sets {
8487
- /**
8488
- * Compares the content of two sets for equality in O(n).
8489
- * @param as
8490
- * @param bs
8491
- */
8492
- static equals(as, bs) {
8493
- if (as.size !== bs.size) {
8494
- return false;
8495
- }
8496
- if (as !== bs) { // Same reference?
8497
- return Sets.containsEvery(bs, Array.from(as.values()));
8498
- }
8499
- return true;
8500
- }
8501
- /**
8502
- * Checks if the two given arrays have the same content.
8503
- * They are handled as "Sets" and order of the items is not relevant for the check.
8504
- *
8505
- * @param idsA
8506
- * @param idsB
8507
- */
8508
- static equalContent(idsA, idsB) {
8509
- if (!idsA?.length && !idsB?.length) {
8510
- return true;
8511
- }
8512
- if (!idsA || !idsB) {
8513
- return false;
8514
- }
8515
- if (idsA.length !== idsB.length) {
8516
- return false;
8517
- }
8518
- // Both element lists have content and the same length
8519
- return Sets.containsEvery(new Set(idsA), idsB);
8520
- }
8521
- /**
8522
- * Checks if the given set contains every given element
8523
- */
8524
- static containsEvery(set, elements) {
8525
- const predicateFn = (e) => set.has(e); // aot does not like lambdas
8526
- return elements.every(predicateFn);
8527
- }
8528
- }
8529
-
8530
8559
  class SuggestionProvider {
8531
8560
  constructor(provider) {
8532
8561
  this.provider = provider;
@@ -12345,18 +12374,33 @@ class ElderDialogService {
12345
12374
  * Public API *
12346
12375
  * *
12347
12376
  **************************************************************************/
12348
- /**
12349
- * @deprecated Use showConfirm({...}) instead
12350
- *
12351
- * @param title
12352
- * @param message
12353
- * @param config
12354
- */
12355
- confirm(title, message, config) {
12377
+ confirmDelete(options, confirmedFn, canceledFn) {
12378
+ const confirmRemoval = options.confirmRemoval ?? true;
12379
+ if (!options.skipConfirm && confirmRemoval) {
12380
+ this.showConfirmDelete(options.deletionCount)
12381
+ .subscribe({
12382
+ next: (confirmed) => {
12383
+ if (confirmed) {
12384
+ confirmedFn();
12385
+ }
12386
+ else {
12387
+ if (canceledFn) {
12388
+ canceledFn();
12389
+ }
12390
+ }
12391
+ }
12392
+ });
12393
+ }
12394
+ else {
12395
+ confirmedFn();
12396
+ }
12397
+ }
12398
+ showConfirmDelete(deletionCount) {
12356
12399
  return this.showConfirm({
12357
- title: title,
12358
- message: message,
12359
- config: config || this.defaultDialogConfig
12400
+ title: 'dialogs.confirm-deletion.title',
12401
+ message: 'dialogs.confirm-deletion.message',
12402
+ yesNo: true,
12403
+ interpolateParams: { numOfItems: deletionCount },
12360
12404
  });
12361
12405
  }
12362
12406
  /**
@@ -12382,22 +12426,6 @@ class ElderDialogService {
12382
12426
  return dialogRef.afterClosed();
12383
12427
  }));
12384
12428
  }
12385
- /**
12386
- * @deprecated Use showQuestion({...}) instead
12387
- *
12388
- * Creates a modal question dialog.
12389
- *
12390
- * @param title
12391
- * @param question
12392
- * @param config
12393
- */
12394
- question(title, question, config) {
12395
- return this.showQuestion({
12396
- title: title,
12397
- question: question,
12398
- config: config || this.defaultDialogConfig
12399
- });
12400
- }
12401
12429
  /**
12402
12430
  * Creates a modal question dialog.
12403
12431
  *
@@ -12423,6 +12451,41 @@ class ElderDialogService {
12423
12451
  .pipe(filter(response => !!response));
12424
12452
  }));
12425
12453
  }
12454
+ /***************************************************************************
12455
+ * *
12456
+ * DEPRECATED *
12457
+ * *
12458
+ **************************************************************************/
12459
+ /**
12460
+ * @deprecated Use showConfirm({...}) instead
12461
+ *
12462
+ * @param title
12463
+ * @param message
12464
+ * @param config
12465
+ */
12466
+ confirm(title, message, config) {
12467
+ return this.showConfirm({
12468
+ title: title,
12469
+ message: message,
12470
+ config: config || this.defaultDialogConfig
12471
+ });
12472
+ }
12473
+ /**
12474
+ * @deprecated Use showQuestion({...}) instead
12475
+ *
12476
+ * Creates a modal question dialog.
12477
+ *
12478
+ * @param title
12479
+ * @param question
12480
+ * @param config
12481
+ */
12482
+ question(title, question, config) {
12483
+ return this.showQuestion({
12484
+ title: title,
12485
+ question: question,
12486
+ config: config || this.defaultDialogConfig
12487
+ });
12488
+ }
12426
12489
  /***************************************************************************
12427
12490
  * *
12428
12491
  * Private methods *
@@ -12595,24 +12658,12 @@ class ElderDataToolbarComponent {
12595
12658
  const template = this.templates.find((item) => item.placeholderId === placeholderId);
12596
12659
  return template ? template.templateRef : null;
12597
12660
  }
12598
- requestRemoveItems(items) {
12599
- if (this.confirmRemoval) {
12600
- this.dialogService
12601
- .showConfirm({
12602
- title: 'dialogs.confirm-deletion.title',
12603
- message: 'dialogs.confirm-deletion.message',
12604
- yesNo: true,
12605
- interpolateParams: { numOfItems: items.length },
12606
- })
12607
- .subscribe((confirmed) => {
12608
- if (confirmed) {
12609
- this.emitRemove(items);
12610
- }
12611
- });
12612
- }
12613
- else {
12614
- this.emitRemove(items);
12615
- }
12661
+ requestRemoveItems(items, event) {
12662
+ this.dialogService.confirmDelete({
12663
+ deletionCount: items.length,
12664
+ confirmRemoval: this.confirmRemoval,
12665
+ skipConfirm: event?.shiftKey
12666
+ }, () => this.emitRemove(items));
12616
12667
  }
12617
12668
  emitRemove(items) {
12618
12669
  this.requestRemove.next(items);
@@ -12625,10 +12676,10 @@ class ElderDataToolbarComponent {
12625
12676
  }
12626
12677
  }
12627
12678
  ElderDataToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDataToolbarComponent, deps: [{ token: SelectionModel, optional: true }, { token: ELDER_DATA_VIEW, optional: true }, { token: ElderDialogService }], target: i0.ɵɵFactoryTarget.Component });
12628
- ElderDataToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ElderDataToolbarComponent, selector: "elder-data-toolbar", inputs: { canAdd: "canAdd", canRemove: "canRemove", canMore: "canMore", confirmRemoval: "confirmRemoval", keepSelectionAfterRemoval: "keepSelectionAfterRemoval", selectionModel: "selectionModel" }, outputs: { requestNew: "requestNew", requestRemove: "requestRemove" }, queries: [{ propertyName: "templates", predicate: ElderToolbarContentDirective }], ngImport: i0, template: "<!-- Table Toolbar -->\n<div\n class=\"layout-row place-between-center gap-md\"\n style=\"padding: 0 8px 0 8px\"\n *ngIf=\"selection$ | async as selection\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('main') || defaultContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n</div>\n\n<!-- Default Templates -->\n\n<!-- Default Main Content -->\n<ng-template #defaultContent let-selection>\n <!-- Left column -->\n <div class=\"layout-row place-start-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left') || defaultLeftContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('center') || defaultCenterContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <!-- Right column -->\n <div class=\"layout-row place-end-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right') || defaultRightContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n</ng-template>\n\n<!-- Default Left Content -->\n<ng-template #defaultLeftContent let-selection>\n <!-- Add Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canAdd\"\n (click)=\"requestNew.next($event)\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n</ng-template>\n\n<!-- Default Center Content -->\n<ng-template #defaultCenterContent let-selection></ng-template>\n\n<!-- Default Right Content -->\n<ng-template #defaultRightContent let-selection>\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n\n <!-- Delete Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canRemove\"\n [disabled]=\"!selection?.length\"\n (click)=\"requestRemoveItems(selection)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n\n <!-- More Menu -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n [matMenuTriggerFor]=\"elderTableMenu\"\n [disabled]=\"!canMore\"\n >\n <mat-icon>more_vert</mat-icon>\n <mat-menu #elderTableMenu=\"matMenu\">\n <ng-content select=\"[mat-menu-item]\"></ng-content>\n <!-- Placeholder for mat menu items-->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.menu');\n context: { $implicit: selection }\n \"\n ></ng-container>\n </mat-menu>\n </button>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12679
+ ElderDataToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ElderDataToolbarComponent, selector: "elder-data-toolbar", inputs: { canAdd: "canAdd", canRemove: "canRemove", canMore: "canMore", confirmRemoval: "confirmRemoval", keepSelectionAfterRemoval: "keepSelectionAfterRemoval", selectionModel: "selectionModel" }, outputs: { requestNew: "requestNew", requestRemove: "requestRemove" }, queries: [{ propertyName: "templates", predicate: ElderToolbarContentDirective }], ngImport: i0, template: "<!-- Table Toolbar -->\n<div\n class=\"layout-row place-between-center gap-md\"\n style=\"padding: 0 8px 0 8px\"\n *ngIf=\"selection$ | async as selection\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('main') || defaultContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n</div>\n\n<!-- Default Templates -->\n\n<!-- Default Main Content -->\n<ng-template #defaultContent let-selection>\n <!-- Left column -->\n <div class=\"layout-row place-start-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left') || defaultLeftContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('center') || defaultCenterContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <!-- Right column -->\n <div class=\"layout-row place-end-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right') || defaultRightContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n</ng-template>\n\n<!-- Default Left Content -->\n<ng-template #defaultLeftContent let-selection>\n <!-- Add Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canAdd\"\n (click)=\"requestNew.next($event)\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n</ng-template>\n\n<!-- Default Center Content -->\n<ng-template #defaultCenterContent let-selection></ng-template>\n\n<!-- Default Right Content -->\n<ng-template #defaultRightContent let-selection>\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n\n <!-- Delete Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canRemove\"\n [disabled]=\"!selection?.length\"\n (click)=\"requestRemoveItems(selection, $event)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n\n <!-- More Menu -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n [matMenuTriggerFor]=\"elderTableMenu\"\n [disabled]=\"!canMore\"\n >\n <mat-icon>more_vert</mat-icon>\n <mat-menu #elderTableMenu=\"matMenu\">\n <ng-content select=\"[mat-menu-item]\"></ng-content>\n <!-- Placeholder for mat menu items-->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.menu');\n context: { $implicit: selection }\n \"\n ></ng-container>\n </mat-menu>\n </button>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12629
12680
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDataToolbarComponent, decorators: [{
12630
12681
  type: Component,
12631
- args: [{ selector: 'elder-data-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Table Toolbar -->\n<div\n class=\"layout-row place-between-center gap-md\"\n style=\"padding: 0 8px 0 8px\"\n *ngIf=\"selection$ | async as selection\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('main') || defaultContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n</div>\n\n<!-- Default Templates -->\n\n<!-- Default Main Content -->\n<ng-template #defaultContent let-selection>\n <!-- Left column -->\n <div class=\"layout-row place-start-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left') || defaultLeftContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('center') || defaultCenterContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <!-- Right column -->\n <div class=\"layout-row place-end-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right') || defaultRightContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n</ng-template>\n\n<!-- Default Left Content -->\n<ng-template #defaultLeftContent let-selection>\n <!-- Add Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canAdd\"\n (click)=\"requestNew.next($event)\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n</ng-template>\n\n<!-- Default Center Content -->\n<ng-template #defaultCenterContent let-selection></ng-template>\n\n<!-- Default Right Content -->\n<ng-template #defaultRightContent let-selection>\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n\n <!-- Delete Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canRemove\"\n [disabled]=\"!selection?.length\"\n (click)=\"requestRemoveItems(selection)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n\n <!-- More Menu -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n [matMenuTriggerFor]=\"elderTableMenu\"\n [disabled]=\"!canMore\"\n >\n <mat-icon>more_vert</mat-icon>\n <mat-menu #elderTableMenu=\"matMenu\">\n <ng-content select=\"[mat-menu-item]\"></ng-content>\n <!-- Placeholder for mat menu items-->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.menu');\n context: { $implicit: selection }\n \"\n ></ng-container>\n </mat-menu>\n </button>\n</ng-template>\n" }]
12682
+ args: [{ selector: 'elder-data-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Table Toolbar -->\n<div\n class=\"layout-row place-between-center gap-md\"\n style=\"padding: 0 8px 0 8px\"\n *ngIf=\"selection$ | async as selection\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('main') || defaultContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n</div>\n\n<!-- Default Templates -->\n\n<!-- Default Main Content -->\n<ng-template #defaultContent let-selection>\n <!-- Left column -->\n <div class=\"layout-row place-start-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left') || defaultLeftContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('center') || defaultCenterContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <!-- Right column -->\n <div class=\"layout-row place-end-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right') || defaultRightContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n</ng-template>\n\n<!-- Default Left Content -->\n<ng-template #defaultLeftContent let-selection>\n <!-- Add Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canAdd\"\n (click)=\"requestNew.next($event)\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n</ng-template>\n\n<!-- Default Center Content -->\n<ng-template #defaultCenterContent let-selection></ng-template>\n\n<!-- Default Right Content -->\n<ng-template #defaultRightContent let-selection>\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n\n <!-- Delete Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canRemove\"\n [disabled]=\"!selection?.length\"\n (click)=\"requestRemoveItems(selection, $event)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n\n <!-- More Menu -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n [matMenuTriggerFor]=\"elderTableMenu\"\n [disabled]=\"!canMore\"\n >\n <mat-icon>more_vert</mat-icon>\n <mat-menu #elderTableMenu=\"matMenu\">\n <ng-content select=\"[mat-menu-item]\"></ng-content>\n <!-- Placeholder for mat menu items-->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.menu');\n context: { $implicit: selection }\n \"\n ></ng-container>\n </mat-menu>\n </button>\n</ng-template>\n" }]
12632
12683
  }], ctorParameters: function () { return [{ type: SelectionModel, decorators: [{
12633
12684
  type: Optional
12634
12685
  }] }, { type: undefined, decorators: [{
@@ -16161,7 +16212,7 @@ class ElderTableActivationDirective {
16161
16212
  * *
16162
16213
  **************************************************************************/
16163
16214
  this.logger = LoggerFactory.getLogger(this.constructor.name);
16164
- this.unsubscribe$ = new Subject();
16215
+ this.destroy$ = new Subject();
16165
16216
  this.activeItem$ = new BehaviorSubject(null);
16166
16217
  this.activationOptions = {};
16167
16218
  this._data = [];
@@ -16175,47 +16226,17 @@ class ElderTableActivationDirective {
16175
16226
  ngAfterViewInit() {
16176
16227
  const rows$ = this.elderTable.rows$;
16177
16228
  const data$ = this.elderTable.dataContext$.pipe(switchMap(dc => dc.data), tap(data => this._data = data));
16178
- combineLatest([rows$, data$]).pipe(takeUntil(this.unsubscribe$)).subscribe(([rows, data]) => {
16229
+ combineLatest([rows$, data$]).pipe(takeUntil(this.destroy$)).subscribe(([rows, data]) => {
16179
16230
  this.rows$.next(this.rowDataUpdated(rows, data));
16231
+ this.handleAutoActivations();
16180
16232
  });
16181
- combineLatest([this.rows$, this.activeItem$]).pipe(takeUntil(this.unsubscribe$)).subscribe(([rows, activeItem]) => this.updateRowsActivation(rows, activeItem));
16182
- }
16183
- updateRowsActivation(rows, activeItem) {
16184
- const activeId = this.getId(activeItem);
16185
- rows.forEach(row => {
16186
- this.updateRowActivation(row, activeId);
16187
- });
16188
- }
16189
- updateRowActivation(row, activeId) {
16190
- if (row.model) {
16191
- if (this.itemEqualsId(row.model, activeId)) {
16192
- if (!row.activated) {
16193
- row.activated = true;
16194
- this.logger.debug('Activated row: ', row);
16195
- if (!row.hasFocus) {
16196
- row.bringToView();
16197
- }
16198
- }
16199
- }
16200
- else {
16201
- row.activated = false;
16202
- }
16203
- }
16204
- else {
16205
- row.activated = false;
16206
- }
16207
- }
16208
- rowDataUpdated(rows, data) {
16209
- // this.logger.debug('Found rows:', rows);
16210
- rows.forEach(row => {
16211
- row.bindTableActivation(this);
16233
+ combineLatest([this.rows$, this.activeItem$]).pipe(takeUntil(this.destroy$)).subscribe(([rows, activeItem]) => {
16234
+ this.updateRowsActivation(rows, activeItem);
16212
16235
  });
16213
- this.handleAutoActivations();
16214
- return rows;
16215
16236
  }
16216
16237
  ngOnDestroy() {
16217
- this.unsubscribe$.next();
16218
- this.unsubscribe$.complete();
16238
+ this.destroy$.next();
16239
+ this.destroy$.complete();
16219
16240
  // this.elderTable.rows$.getValue().forEach(r => r.bindTableActivation(null));
16220
16241
  }
16221
16242
  /***************************************************************************
@@ -16285,11 +16306,54 @@ class ElderTableActivationDirective {
16285
16306
  return false;
16286
16307
  }
16287
16308
  }
16309
+ hasItemFocus(item) {
16310
+ const row = this.getRowForItem(item);
16311
+ return row.hasFocus;
16312
+ }
16313
+ nextCloseTo(active) {
16314
+ const next = this.nextRowItem();
16315
+ if (next !== active) {
16316
+ return next;
16317
+ }
16318
+ return this.previousRowItem();
16319
+ }
16288
16320
  /***************************************************************************
16289
16321
  * *
16290
16322
  * Private methods *
16291
16323
  * *
16292
16324
  **************************************************************************/
16325
+ updateRowsActivation(rows, activeItem) {
16326
+ const activeId = this.getId(activeItem);
16327
+ rows.forEach(row => {
16328
+ this.updateRowActivation(row, activeId);
16329
+ });
16330
+ }
16331
+ updateRowActivation(row, activeId) {
16332
+ if (row.model) {
16333
+ if (this.itemEqualsId(row.model, activeId)) {
16334
+ if (!row.activated) {
16335
+ row.activated = true;
16336
+ this.logger.debug('Activated row: ', row);
16337
+ if (!row.hasFocus) {
16338
+ row.bringToView();
16339
+ }
16340
+ }
16341
+ }
16342
+ else {
16343
+ row.activated = false;
16344
+ }
16345
+ }
16346
+ else {
16347
+ row.activated = false;
16348
+ }
16349
+ }
16350
+ rowDataUpdated(rows, data) {
16351
+ // this.logger.debug('Found rows:', rows);
16352
+ rows.forEach(row => {
16353
+ row.bindTableActivation(this);
16354
+ });
16355
+ return rows;
16356
+ }
16293
16357
  getRowForItem(item) {
16294
16358
  const rows = this.rows$.getValue();
16295
16359
  return rows.find(r => r.model === item);
@@ -16297,7 +16361,8 @@ class ElderTableActivationDirective {
16297
16361
  handleAutoActivations() {
16298
16362
  if (!this.hasActiveItem || this.activationOptions.mode === 'always') {
16299
16363
  switch (this.activationOptions.row) {
16300
- case 'none': break;
16364
+ case 'none':
16365
+ break;
16301
16366
  case 'first':
16302
16367
  this.activateFirst();
16303
16368
  break;
@@ -16428,6 +16493,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
16428
16493
  }]
16429
16494
  }], ctorParameters: function () { return []; } });
16430
16495
 
16496
+ class ActiveDeleted {
16497
+ constructor(deleted, next) {
16498
+ this.deleted = deleted;
16499
+ this.next = next;
16500
+ }
16501
+ }
16502
+ class ElderDeleteActiveDirective {
16503
+ /***************************************************************************
16504
+ * *
16505
+ * Constructor *
16506
+ * *
16507
+ **************************************************************************/
16508
+ constructor(activation, elderDialog) {
16509
+ this.activation = activation;
16510
+ this.elderDialog = elderDialog;
16511
+ /***************************************************************************
16512
+ * *
16513
+ * Fields *
16514
+ * *
16515
+ **************************************************************************/
16516
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
16517
+ this.latestDeleteRequest = null;
16518
+ this.destroy$ = new Subject();
16519
+ /**
16520
+ * Emits when the active item should be deleted.
16521
+ */
16522
+ this.requestDelete = new EventEmitter();
16523
+ /**
16524
+ * Emits when the active item should be deleted.
16525
+ */
16526
+ this.elderDeleteActive = this.requestDelete;
16527
+ this.confirmDeletion = true;
16528
+ }
16529
+ /***************************************************************************
16530
+ * *
16531
+ * Life Cycle *
16532
+ * *
16533
+ **************************************************************************/
16534
+ ngOnInit() {
16535
+ this.activation.rows$.subscribe({
16536
+ next: rows => {
16537
+ this.checkActivateNext();
16538
+ }
16539
+ });
16540
+ }
16541
+ ngOnDestroy() {
16542
+ this.destroy$.next();
16543
+ this.destroy$.complete();
16544
+ }
16545
+ /***************************************************************************
16546
+ * *.
16547
+ * Host Listeners *
16548
+ * *
16549
+ **************************************************************************/
16550
+ onKeydown(event) {
16551
+ if (event.key == 'Backspace' || event.key === 'Delete') {
16552
+ const active = this.activation.activeItem;
16553
+ if (this.activation.hasItemFocus(active)) {
16554
+ event.stopPropagation();
16555
+ this.elderDialog.confirmDelete({
16556
+ deletionCount: 1,
16557
+ confirmRemoval: this.confirmDeletion,
16558
+ skipConfirm: event.shiftKey
16559
+ }, () => {
16560
+ this.logger.debug('Deleting current row was requested: ', active);
16561
+ this.emitDelete(active);
16562
+ }, () => {
16563
+ this.activation.focusAndActivate(active);
16564
+ });
16565
+ }
16566
+ }
16567
+ }
16568
+ /***************************************************************************
16569
+ * *
16570
+ * Private methods *
16571
+ * *
16572
+ **************************************************************************/
16573
+ checkActivateNext() {
16574
+ if (this.latestDeleteRequest?.next) {
16575
+ this.activation.focusAndActivate(this.latestDeleteRequest.next);
16576
+ this.latestDeleteRequest = null;
16577
+ return true;
16578
+ }
16579
+ return false;
16580
+ }
16581
+ emitDelete(active) {
16582
+ this.latestDeleteRequest = new ActiveDeleted(active, this.activation.nextCloseTo(active));
16583
+ this.requestDelete.emit(active);
16584
+ }
16585
+ }
16586
+ ElderDeleteActiveDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDeleteActiveDirective, deps: [{ token: ElderTableActivationDirective }, { token: ElderDialogService }], target: i0.ɵɵFactoryTarget.Directive });
16587
+ ElderDeleteActiveDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderDeleteActiveDirective, selector: "[elderDeleteActive]", inputs: { confirmDeletion: "confirmDeletion" }, outputs: { elderDeleteActive: "elderDeleteActive" }, host: { listeners: { "keydown": "onKeydown($event)" } }, exportAs: ["elderDeleteActive"], ngImport: i0 });
16588
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDeleteActiveDirective, decorators: [{
16589
+ type: Directive,
16590
+ args: [{
16591
+ selector: '[elderDeleteActive]',
16592
+ exportAs: 'elderDeleteActive'
16593
+ }]
16594
+ }], ctorParameters: function () { return [{ type: ElderTableActivationDirective }, { type: ElderDialogService }]; }, propDecorators: { elderDeleteActive: [{
16595
+ type: Output
16596
+ }], confirmDeletion: [{
16597
+ type: Input
16598
+ }], onKeydown: [{
16599
+ type: HostListener,
16600
+ args: ['keydown', ['$event']]
16601
+ }] } });
16602
+
16431
16603
  class ElderTableModule {
16432
16604
  }
16433
16605
  ElderTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -16439,7 +16611,8 @@ ElderTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
16439
16611
  ElderTableRowDirective,
16440
16612
  ElderTableExtensionDirective,
16441
16613
  ElderTableColumnDirective,
16442
- ElderTableRootDirective], imports: [CommonModule, RouterModule, FormsModule,
16614
+ ElderTableRootDirective,
16615
+ ElderDeleteActiveDirective], imports: [CommonModule, RouterModule, FormsModule,
16443
16616
  // Material
16444
16617
  MatDividerModule,
16445
16618
  MatCheckboxModule,
@@ -16458,7 +16631,8 @@ ElderTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
16458
16631
  ElderNumberCellDirective,
16459
16632
  ElderTableActivationDirective,
16460
16633
  ElderTableExtensionDirective,
16461
- ElderTableRootDirective] });
16634
+ ElderTableRootDirective,
16635
+ ElderDeleteActiveDirective] });
16462
16636
  ElderTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderTableModule, providers: [
16463
16637
  {
16464
16638
  provide: MatPaginatorIntl, deps: [TranslateService],
@@ -16504,7 +16678,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
16504
16678
  ElderTableRowDirective,
16505
16679
  ElderTableExtensionDirective,
16506
16680
  ElderTableColumnDirective,
16507
- ElderTableRootDirective
16681
+ ElderTableRootDirective,
16682
+ ElderDeleteActiveDirective
16508
16683
  ],
16509
16684
  exports: [
16510
16685
  ElderTableComponent,
@@ -16514,7 +16689,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
16514
16689
  ElderNumberCellDirective,
16515
16690
  ElderTableActivationDirective,
16516
16691
  ElderTableExtensionDirective,
16517
- ElderTableRootDirective
16692
+ ElderTableRootDirective,
16693
+ ElderDeleteActiveDirective
16518
16694
  ],
16519
16695
  providers: [
16520
16696
  {
@@ -24108,7 +24284,7 @@ ElderSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
24108
24284
  provide: ELDER_SELECT_BASE,
24109
24285
  useExisting: forwardRef(() => ElderSelectComponent)
24110
24286
  }
24111
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"(entityWrapped$ | async) as entityWrapper\"\n class=\"layout-row place-start-center elder-flex-control\"\n>\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"state?.error || icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-mdc-control-icon elder-icon-small noselect clickable-icon\"\n [class.loading]=\"state.loading\"\n [color]=\"state?.error ? 'warn' : (focused ? 'primary' : undefined)\"\n (click)=\"onCurrentClicked(entity)\"\n >\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"!icon && state?.error\"\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n </div>\n </ng-container>\n\n <!-- A dynamic input -->\n <input #input\n matInput type=\"text\" class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [matAutocomplete] #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\" [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'submit'}\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n\n <!-- This breaks stuff: [displayWith]=\"displayPropertyResolver$ | async\" -->\n\n <elder-autocomplete\n #elderAuto=\"elderAutocomplete\"\n [dataContext]=\"dataContext$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [enabled]=\"!!autocomplete\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-autocomplete>\n\n <div class=\"layout-row place-start-center flex-none\">\n\n <mat-icon\n *ngIf=\"!selectionPopup && !autocomplete && !entityWrapper.displayRemove\"\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\">\n arrow_drop_down\n </mat-icon>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"selectionPopup && !entityWrapper.displayRemove\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"entityWrapper.displayRemove\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\" aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n\n\n </div>\n</div>\n\n\n\n", styles: ["@keyframes shrink{0%{transform:scale(1)}to{transform:scale(.75)}}.loading{animation:shrink .3s ease-in-out infinite alternate;-webkit-animation:shrink .3s ease-in-out infinite alternate}.clickable-icon{cursor:pointer}.full-width{width:100%}.elder-select-dropdown-input{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: ElderAutocompleteComponent, selector: "elder-autocomplete", inputs: ["isOptionDisabledFn", "isOptionHiddenFn", "optionValueConverterFn", "enabled", "valueTemplate", "dataContext", "displayPropertyResolver"], outputs: ["optionSelected"], exportAs: ["elderAutocomplete"] }, { kind: "directive", type: ElderAutocompleteDirective, selector: "[elderAutocomplete]", inputs: ["queryFilter", "filters", "sorts", "elderAutocomplete"] }, { kind: "directive", type: i4$5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: ElderSelectOnTabDirective, selector: "[elderSelectOnTab]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
24287
+ ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"(entityWrapped$ | async) as entityWrapper\"\n class=\"layout-row place-start-center elder-flex-control\"\n>\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"state?.error || icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-mdc-control-icon elder-icon-small noselect clickable-icon\"\n [class.loading]=\"state.loading\"\n [color]=\"state?.error ? 'warn' : (focused ? 'primary' : undefined)\"\n (click)=\"onCurrentClicked(entity)\"\n >\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"!icon && state?.error\"\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n </div>\n </ng-container>\n\n <!-- A dynamic input -->\n <input #input\n matInput type=\"text\" class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [matAutocomplete] #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\" [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'submit'}\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n\n <!-- This breaks stuff: [displayWith]=\"displayPropertyResolver$ | async\" -->\n\n <elder-autocomplete\n #elderAuto=\"elderAutocomplete\"\n [dataContext]=\"dataContext$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [enabled]=\"!!autocomplete\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-autocomplete>\n\n <div class=\"layout-row place-start-center flex-none\">\n\n <mat-icon\n *ngIf=\"!selectionPopup && !autocomplete && !entityWrapper.displayRemove\"\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\">\n arrow_drop_down\n </mat-icon>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"selectionPopup && !entityWrapper.displayRemove\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"entityWrapper.displayRemove\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\" aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n\n\n </div>\n</div>\n\n\n\n", styles: ["@keyframes shrink{0%{transform:scale(1)}to{transform:scale(.75)}}.loading{animation:shrink .3s ease-in-out infinite alternate;-webkit-animation:shrink .3s ease-in-out infinite alternate}.clickable-icon{cursor:pointer}.full-width{width:100%}.elder-select-dropdown-input{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i4$5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: ElderAutocompleteComponent, selector: "elder-autocomplete", inputs: ["isOptionDisabledFn", "isOptionHiddenFn", "optionValueConverterFn", "enabled", "valueTemplate", "dataContext", "displayPropertyResolver"], outputs: ["optionSelected"], exportAs: ["elderAutocomplete"] }, { kind: "directive", type: ElderAutocompleteDirective, selector: "[elderAutocomplete]", inputs: ["queryFilter", "filters", "sorts", "elderAutocomplete"] }, { kind: "directive", type: ElderSelectOnTabDirective, selector: "[elderSelectOnTab]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
24112
24288
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderSelectComponent, decorators: [{
24113
24289
  type: Component,
24114
24290
  args: [{ selector: 'elder-select', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -24512,16 +24688,15 @@ class ElderMultiSelectBase extends ElderSelectBase {
24512
24688
  return this._entityIds$;
24513
24689
  }
24514
24690
  set entities(entities) {
24515
- if (!this.equalEntities(this.entities, entities)) {
24516
- entities = this.writeEntitiesSorted(entities);
24517
- this.writeValueInternal(this.entitiesToValues(entities));
24691
+ if (!this.equalEntitiesExactOrder(this.entities, entities)) {
24692
+ this.writeValueInternal(this.entitiesToValues(this.writeEntitiesSorted(entities)));
24518
24693
  }
24519
24694
  }
24520
24695
  get entities() {
24521
24696
  return this._entities$.getValue();
24522
24697
  }
24523
24698
  set entityIds(ids) {
24524
- if (!this.equalIds(this.entityIds, ids)) {
24699
+ if (!this.equalIdsExactOrder(this.entityIds, ids)) {
24525
24700
  if (this.valueAsId) {
24526
24701
  this.writeValueInternal(ids);
24527
24702
  }
@@ -24576,23 +24751,11 @@ class ElderMultiSelectBase extends ElderSelectBase {
24576
24751
  this.requestRemoveEntities([toRemove], skipConfirm);
24577
24752
  }
24578
24753
  requestRemoveEntities(toRemove, skipConfirm) {
24579
- if (!skipConfirm && this.confirmRemoval) {
24580
- this.dialogService
24581
- .showConfirm({
24582
- title: 'dialogs.confirm-deletion.title',
24583
- message: 'dialogs.confirm-deletion.message',
24584
- yesNo: true,
24585
- interpolateParams: { numOfItems: toRemove.length },
24586
- })
24587
- .subscribe((confirmed) => {
24588
- if (confirmed) {
24589
- this.removeEntities(toRemove);
24590
- }
24591
- });
24592
- }
24593
- else {
24594
- this.removeEntities(toRemove);
24595
- }
24754
+ this.dialogService.confirmDelete({
24755
+ deletionCount: toRemove.length,
24756
+ confirmRemoval: this.confirmRemoval,
24757
+ skipConfirm: skipConfirm
24758
+ }, () => this.removeEntities(toRemove));
24596
24759
  }
24597
24760
  removeEntities(toRemove) {
24598
24761
  toRemove.forEach(e => this.removeEntity(e));
@@ -24625,7 +24788,7 @@ class ElderMultiSelectBase extends ElderSelectBase {
24625
24788
  * *
24626
24789
  **************************************************************************/
24627
24790
  valuesEquals(a, b) {
24628
- return this.equalIds(this.entityIdsFromValues(a), this.entityIdsFromValues(b));
24791
+ return this.equalIdsExactOrder(this.entityIdsFromValues(a), this.entityIdsFromValues(b));
24629
24792
  }
24630
24793
  onDataContextChanged(data) {
24631
24794
  if (this.valueAsId) {
@@ -24700,9 +24863,15 @@ class ElderMultiSelectBase extends ElderSelectBase {
24700
24863
  equalIds(idsA, idsB) {
24701
24864
  return Sets.equalContent(idsA, idsB);
24702
24865
  }
24866
+ equalIdsExactOrder(idsA, idsB) {
24867
+ return Arrays.equalContentAndOrder(idsA, idsB);
24868
+ }
24703
24869
  equalEntities(entitiesA, entitiesB) {
24704
24870
  return this.equalIds(this.getEntityIds(entitiesA), this.getEntityIds(entitiesB));
24705
24871
  }
24872
+ equalEntitiesExactOrder(entitiesA, entitiesB) {
24873
+ return this.equalIdsExactOrder(this.getEntityIds(entitiesA), this.getEntityIds(entitiesB));
24874
+ }
24706
24875
  selectEntitiesByIds(ids) {
24707
24876
  const currentEntities = this.entities;
24708
24877
  this.logger.info('selectEntitiesByIds: ids: ' + ids + ', current entities:', currentEntities);
@@ -24915,6 +25084,8 @@ class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
24915
25084
  this.avatarSpecFn = e => this.defaultAvatarSpec;
24916
25085
  this.selectable = true;
24917
25086
  this.allowRemove = true;
25087
+ this.allowSorting = false;
25088
+ this.stacked = false;
24918
25089
  this.chipTemplate$ = new BehaviorSubject(null);
24919
25090
  this.chipAvatarTemplate$ = new BehaviorSubject(null);
24920
25091
  this.customInputTemplate$ = new BehaviorSubject(null);
@@ -25018,6 +25189,11 @@ class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
25018
25189
  * Public API *
25019
25190
  * *
25020
25191
  **************************************************************************/
25192
+ drop(event) {
25193
+ const reordered = [...this.entities];
25194
+ moveItemInArray(reordered, event.previousIndex, event.currentIndex);
25195
+ this.entities = reordered;
25196
+ }
25021
25197
  resolveChipValue(e1) {
25022
25198
  return this.getEntityId(e1);
25023
25199
  }
@@ -25070,13 +25246,13 @@ class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
25070
25246
  }
25071
25247
  }
25072
25248
  ElderMultiSelectChipsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMultiSelectChipsComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: ElderDialogService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
25073
- ElderMultiSelectChipsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ElderMultiSelectChipsComponent, selector: "elder-multi-select-chips", inputs: { defaultAvatarSpec: "defaultAvatarSpec", avatarSpecFn: "avatarSpecFn", allowRemove: "allowRemove", chipTemplate: "chipTemplate", chipAvatarTemplate: "chipAvatarTemplate", customInputTemplate: "customInputTemplate", chipColorEnabled: "chipColorEnabled", chipColorResolver: "chipColorResolver" }, host: { properties: { "class": "this.hostClass", "class.mat-select-disabled": "this.disabledClass", "class.mat-select-invalid": "this.errorStateClass", "class.mat-select-required": "this.requiredClass", "class.mat-select-empty": "this.emptyClass" } }, providers: [
25249
+ ElderMultiSelectChipsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ElderMultiSelectChipsComponent, selector: "elder-multi-select-chips", inputs: { defaultAvatarSpec: "defaultAvatarSpec", avatarSpecFn: "avatarSpecFn", allowRemove: "allowRemove", allowSorting: "allowSorting", stacked: "stacked", chipTemplate: "chipTemplate", chipAvatarTemplate: "chipAvatarTemplate", customInputTemplate: "customInputTemplate", chipColorEnabled: "chipColorEnabled", chipColorResolver: "chipColorResolver" }, host: { properties: { "class": "this.hostClass", "class.mat-select-disabled": "this.disabledClass", "class.mat-select-invalid": "this.errorStateClass", "class.mat-select-required": "this.requiredClass", "class.mat-select-empty": "this.emptyClass" } }, providers: [
25074
25250
  { provide: MatFormFieldControl, useExisting: ElderMultiSelectChipsComponent },
25075
25251
  {
25076
25252
  provide: ELDER_SELECT_BASE,
25077
25253
  useExisting: forwardRef(() => ElderMultiSelectChipsComponent)
25078
25254
  }
25079
- ], queries: [{ propertyName: "_customChipInput", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: "chipTemplateQuery", first: true, predicate: ElderSelectChipDirective, descendants: true, read: TemplateRef }, { propertyName: "chipAvatarTemplateQuery", first: true, predicate: ElderSelectChipAvatarDirective, descendants: true, read: TemplateRef }, { propertyName: "customInputTemplateQuery", first: true, predicate: ElderSelectCustomInputDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "_chipInput", first: true, predicate: ElderSelectComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n\n <mat-chip-set #chips>\n\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{icon}}\n </mat-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"templates$ | async as templates\">\n <mat-chip-row elderChipLabel *ngFor=\"let chipModel of chipValues\"\n class=\"noselect clickable-chip\"\n [value]=\"resolveChipValue(chipModel.value)\"\n [color]=\"chipModel.color\"\n [removable]=\"chipModel.removeable\"\n (keydown)=\"onChipKeyDown($event, chipModel.value)\"\n (click)=\"onCurrentClicked(chipModel.value)\"\n >\n <mat-chip-avatar\n *ngIf=\"templates.avatar && !chipModel.avatarSpec.hide\"\n [class.chip-avatar-xl]=\"chipModel.avatarSpec.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n <mat-icon matChipRemove\n *ngIf=\"chipModel.removeable\"\n (click)=\"onClickRemoveChip($event, chipModel.value)\">\n cancel\n </mat-icon>\n </mat-chip-row>\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n <!-- [matChipInputFor]=\"chips\" -->\n <ng-container\n *ngTemplateOutlet=\"templates.input || selectInput;\">\n </ng-container>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button elder-browse-icon\"\n *ngIf=\"selectionPopup\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n </div>\n </ng-container>\n </mat-chip-set>\n</div>\n\n<ng-template #selectInput>\n <!-- mat-mdc-chip-input -->\n <elder-select autocomplete elderClearSelect\n class=\"elder-chip-input-select flex\"\n [data]=\"dataContext$ | async\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"!!readonly\"\n [placeholder]=\"placeholder\"\n (entityUpdated)=\"appendEntity($event)\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n ></elder-select>\n</ng-template>\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{chipModel.displayText | elderTruncate:20}}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: i6.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "directive", type: i4$5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: ElderChipLabelDirective, selector: "[elderChipLabel]", inputs: ["appearance", "color", "stateColor", "levelColor"] }, { kind: "component", type: ElderSelectComponent, selector: "elder-select", inputs: ["nullDisplay", "autocomplete", "allowNull", "entity", "entityId"], outputs: ["entityIdChange", "entityIdUpdated", "entityChange", "entityUpdated"] }, { kind: "directive", type: ElderClearSelectDirective, selector: "[elderClearSelect]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTruncatePipe, name: "elderTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
25255
+ ], queries: [{ propertyName: "_customChipInput", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: "chipTemplateQuery", first: true, predicate: ElderSelectChipDirective, descendants: true, read: TemplateRef }, { propertyName: "chipAvatarTemplateQuery", first: true, predicate: ElderSelectChipAvatarDirective, descendants: true, read: TemplateRef }, { propertyName: "customInputTemplateQuery", first: true, predicate: ElderSelectCustomInputDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "_chipInput", first: true, predicate: ElderSelectComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n <mat-chip-set #chips\n [class.mat-mdc-chip-set-stacked]=\"stacked\"\n cdkDropList\n [cdkDropListOrientation]=\"stacked ? 'vertical' : 'horizontal'\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowSorting\"\n >\n\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{icon}}\n </mat-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"templates$ | async as templates\">\n <mat-chip-row elderChipLabel *ngFor=\"let chipModel of chipValues\"\n class=\"noselect clickable-chip\"\n [value]=\"resolveChipValue(chipModel.value)\"\n [color]=\"chipModel.color\"\n [removable]=\"chipModel.removeable\"\n (keydown)=\"onChipKeyDown($event, chipModel.value)\"\n (click)=\"onCurrentClicked(chipModel.value)\"\n cdkDrag [cdkDragData]=\"chipModel.value\" [cdkDragDisabled]=\"!allowSorting\"\n >\n <mat-chip-avatar\n *ngIf=\"templates.avatar && !chipModel.avatarSpec.hide\"\n [class.chip-avatar-xl]=\"chipModel.avatarSpec.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n <mat-icon matChipRemove\n *ngIf=\"chipModel.removeable\"\n (click)=\"onClickRemoveChip($event, chipModel.value)\">\n cancel\n </mat-icon>\n </mat-chip-row>\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n <!-- [matChipInputFor]=\"chips\" -->\n <ng-container\n *ngTemplateOutlet=\"templates.input || selectInput;\">\n </ng-container>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button elder-browse-icon\"\n *ngIf=\"selectionPopup\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n </div>\n </ng-container>\n </mat-chip-set>\n</div>\n\n<ng-template #selectInput>\n <!-- mat-mdc-chip-input -->\n <elder-select autocomplete elderClearSelect\n class=\"elder-chip-input-select flex\"\n [data]=\"dataContext$ | async\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"!!readonly\"\n [placeholder]=\"placeholder\"\n (entityUpdated)=\"appendEntity($event)\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n ></elder-select>\n</ng-template>\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{chipModel.displayText | elderTruncate:20}}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-drag-preview{box-sizing:border-box;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "directive", type: i4$5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i5$4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: ElderChipLabelDirective, selector: "[elderChipLabel]", inputs: ["appearance", "color", "stateColor", "levelColor"] }, { kind: "component", type: ElderSelectComponent, selector: "elder-select", inputs: ["nullDisplay", "autocomplete", "allowNull", "entity", "entityId"], outputs: ["entityIdChange", "entityIdUpdated", "entityChange", "entityUpdated"] }, { kind: "directive", type: ElderClearSelectDirective, selector: "[elderClearSelect]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTruncatePipe, name: "elderTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
25080
25256
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMultiSelectChipsComponent, decorators: [{
25081
25257
  type: Component,
25082
25258
  args: [{ selector: 'elder-multi-select-chips', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -25085,7 +25261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
25085
25261
  provide: ELDER_SELECT_BASE,
25086
25262
  useExisting: forwardRef(() => ElderMultiSelectChipsComponent)
25087
25263
  }
25088
- ], template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n\n <mat-chip-set #chips>\n\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{icon}}\n </mat-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"templates$ | async as templates\">\n <mat-chip-row elderChipLabel *ngFor=\"let chipModel of chipValues\"\n class=\"noselect clickable-chip\"\n [value]=\"resolveChipValue(chipModel.value)\"\n [color]=\"chipModel.color\"\n [removable]=\"chipModel.removeable\"\n (keydown)=\"onChipKeyDown($event, chipModel.value)\"\n (click)=\"onCurrentClicked(chipModel.value)\"\n >\n <mat-chip-avatar\n *ngIf=\"templates.avatar && !chipModel.avatarSpec.hide\"\n [class.chip-avatar-xl]=\"chipModel.avatarSpec.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n <mat-icon matChipRemove\n *ngIf=\"chipModel.removeable\"\n (click)=\"onClickRemoveChip($event, chipModel.value)\">\n cancel\n </mat-icon>\n </mat-chip-row>\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n <!-- [matChipInputFor]=\"chips\" -->\n <ng-container\n *ngTemplateOutlet=\"templates.input || selectInput;\">\n </ng-container>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button elder-browse-icon\"\n *ngIf=\"selectionPopup\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n </div>\n </ng-container>\n </mat-chip-set>\n</div>\n\n<ng-template #selectInput>\n <!-- mat-mdc-chip-input -->\n <elder-select autocomplete elderClearSelect\n class=\"elder-chip-input-select flex\"\n [data]=\"dataContext$ | async\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"!!readonly\"\n [placeholder]=\"placeholder\"\n (entityUpdated)=\"appendEntity($event)\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n ></elder-select>\n</ng-template>\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{chipModel.displayText | elderTruncate:20}}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
25264
+ ], template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n <mat-chip-set #chips\n [class.mat-mdc-chip-set-stacked]=\"stacked\"\n cdkDropList\n [cdkDropListOrientation]=\"stacked ? 'vertical' : 'horizontal'\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowSorting\"\n >\n\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{icon}}\n </mat-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"templates$ | async as templates\">\n <mat-chip-row elderChipLabel *ngFor=\"let chipModel of chipValues\"\n class=\"noselect clickable-chip\"\n [value]=\"resolveChipValue(chipModel.value)\"\n [color]=\"chipModel.color\"\n [removable]=\"chipModel.removeable\"\n (keydown)=\"onChipKeyDown($event, chipModel.value)\"\n (click)=\"onCurrentClicked(chipModel.value)\"\n cdkDrag [cdkDragData]=\"chipModel.value\" [cdkDragDisabled]=\"!allowSorting\"\n >\n <mat-chip-avatar\n *ngIf=\"templates.avatar && !chipModel.avatarSpec.hide\"\n [class.chip-avatar-xl]=\"chipModel.avatarSpec.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n <mat-icon matChipRemove\n *ngIf=\"chipModel.removeable\"\n (click)=\"onClickRemoveChip($event, chipModel.value)\">\n cancel\n </mat-icon>\n </mat-chip-row>\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n <!-- [matChipInputFor]=\"chips\" -->\n <ng-container\n *ngTemplateOutlet=\"templates.input || selectInput;\">\n </ng-container>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button elder-browse-icon\"\n *ngIf=\"selectionPopup\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n </div>\n </ng-container>\n </mat-chip-set>\n</div>\n\n<ng-template #selectInput>\n <!-- mat-mdc-chip-input -->\n <elder-select autocomplete elderClearSelect\n class=\"elder-chip-input-select flex\"\n [data]=\"dataContext$ | async\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"!!readonly\"\n [placeholder]=\"placeholder\"\n (entityUpdated)=\"appendEntity($event)\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n ></elder-select>\n</ng-template>\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{chipModel.displayText | elderTruncate:20}}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-drag-preview{box-sizing:border-box;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
25089
25265
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.FocusMonitor }, { type: i2.TranslateService }, { type: ElderDialogService }, { type: i3.NgControl, decorators: [{
25090
25266
  type: Optional
25091
25267
  }, {
@@ -25096,6 +25272,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
25096
25272
  type: Input
25097
25273
  }], allowRemove: [{
25098
25274
  type: Input
25275
+ }], allowSorting: [{
25276
+ type: Input
25277
+ }], stacked: [{
25278
+ type: Input
25099
25279
  }], _customChipInput: [{
25100
25280
  type: ContentChild,
25101
25281
  args: [MatFormFieldControl]
@@ -25312,9 +25492,13 @@ ElderSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
25312
25492
  MatDialogModule, MatButtonModule,
25313
25493
  MatInputModule, MatAutocompleteModule,
25314
25494
  MatToolbarModule, MatProgressBarModule,
25315
- MatProgressSpinnerModule,
25495
+ MatProgressSpinnerModule, MatChipsModule,
25496
+ MatTooltipModule,
25497
+ CdkDropList, CdkDrag,
25316
25498
  TranslateModule,
25317
- ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule, ElderAutocompleteModule, MatChipsModule, ElderPipesModule, MatTooltipModule, ElderThemeModule, ElderChipsModule], exports: [ElderSelectComponent,
25499
+ ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
25500
+ ElderAutocompleteModule,
25501
+ ElderPipesModule, ElderThemeModule, ElderChipsModule], exports: [ElderSelectComponent,
25318
25502
  ElderSelectValueDirective,
25319
25503
  TemplatedSelectionDialogComponent,
25320
25504
  SelectionModelPopupDirective,
@@ -25332,9 +25516,12 @@ ElderSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
25332
25516
  MatDialogModule, MatButtonModule,
25333
25517
  MatInputModule, MatAutocompleteModule,
25334
25518
  MatToolbarModule, MatProgressBarModule,
25335
- MatProgressSpinnerModule,
25519
+ MatProgressSpinnerModule, MatChipsModule,
25520
+ MatTooltipModule,
25336
25521
  TranslateModule,
25337
- ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule, ElderAutocompleteModule, MatChipsModule, ElderPipesModule, MatTooltipModule, ElderThemeModule, ElderChipsModule] });
25522
+ ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
25523
+ ElderAutocompleteModule,
25524
+ ElderPipesModule, ElderThemeModule, ElderChipsModule] });
25338
25525
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderSelectModule, decorators: [{
25339
25526
  type: NgModule,
25340
25527
  args: [{
@@ -25346,9 +25533,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
25346
25533
  MatDialogModule, MatButtonModule,
25347
25534
  MatInputModule, MatAutocompleteModule,
25348
25535
  MatToolbarModule, MatProgressBarModule,
25349
- MatProgressSpinnerModule,
25536
+ MatProgressSpinnerModule, MatChipsModule,
25537
+ MatTooltipModule,
25538
+ CdkDropList, CdkDrag,
25350
25539
  TranslateModule,
25351
- ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule, ElderAutocompleteModule, MatChipsModule, ElderPipesModule, MatTooltipModule, ElderThemeModule, ElderChipsModule
25540
+ ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
25541
+ ElderAutocompleteModule,
25542
+ ElderPipesModule, ElderThemeModule, ElderChipsModule
25352
25543
  ],
25353
25544
  declarations: [
25354
25545
  ElderSelectComponent,
@@ -29376,5 +29567,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
29376
29567
  * Generated bundle index. Do not edit.
29377
29568
  */
29378
29569
 
29379
- export { AuditedEntity, AutoStartSpec, BlobUrl, BytesFormat, BytesPerSecondFormat, BytesPipe, CardDropEvent, CardOrganizerData, CardStack, CollectionUtil, ComparatorBuilder, ConfirmDialogConfig, ContinuableListing, CsvColumnSpec, CsvSerializer, CsvSpec, CsvStreamExporter, CsvStreamExporterBuilder, CsvStreamExporterBuilderService, Currency, CurrencyCode, CurrencyUnit, CurrencyUnitRegistry, CustomDateAdapter, DataContextActivePage, DataContextAutoStarter, DataContextBase, DataContextBuilder, DataContextContinuableBase, DataContextContinuablePaged, DataContextContinuableToken, DataContextLifeCycleBinding, DataContextSelectionDirective, DataContextSimple, DataContextSnapshot, DataContextSourceEventBinding, DataContextStateIndicatorComponent, DataContextStatus, DataSourceAdapter, DataSourceBase, DataSourceChangeEvent, DataSourceChangeType, DataSourceProcessor, DataTransferFactory, DataTransferProgress, DataTransferProgressAggregate, DataTransferState, DataTransferStatus, DataViewIframeAdapterDirective, DataViewIframeComponent, DataViewMessage, DataViewOptionsProviderBinding, DataViewSelection, DataViewSelectionInit, DateUtil, DelegateContinuableDataSource, DelegateDataSource, DelegateListDataSource, DelegatePagedDataSource, Dimensions, DrawerOutletBinding, DurationBucket, DurationFormat, ELDER_DATA_VIEW, ELDER_SELECT_BASE, ElderAccessDeniedComponent, ElderAccessDeniedModule, ElderAppHeaderComponent, ElderAuditModule, ElderAuditedEntityComponent, ElderAutoSelectFirstDirective, ElderAutocompleteComponent, ElderAutocompleteDirective, ElderAutocompleteManyDirective, ElderAutocompleteModule, ElderBadgeComponent, ElderBadgeDirective, ElderBadgeModule, ElderBlobViewerComponent, ElderBreadCrumbsComponent, ElderBreadCrumbsModule, ElderButtonGroupComponent, ElderButtonGroupModule, ElderCardComponent, ElderCardContentDirective, ElderCardHeaderActionsDirective, ElderCardHeaderComponent, ElderCardModule, ElderCardOrganizerComponent, ElderCardOrganizerModule, ElderCardPanelComponent, ElderCardStackComponent, ElderCardSubtitleDirective, ElderCardTitleDirective, ElderCheckboxState, ElderChipLabelDirective, ElderChipListSelectComponent, ElderChipListSelectModule, ElderChipsModule, ElderClearSelectDirective, ElderClipboardPutDirective, ElderClipboardService, ElderConfirmDialogComponent, ElderConnectivityModule, ElderConnectivityService, ElderContainersModule, ElderCsvExportBtnComponent, ElderCsvModule, ElderCurrencyModule, ElderCurrencyPipe, ElderDataCommonModule, ElderDataToolbarComponent, ElderDataTransferModule, ElderDataTransferService, ElderDataViewBaseComponent, ElderDataViewOptions, ElderDataViewOptionsProvider, ElderDateSwitcherComponent, ElderDateTimeInputComponent, ElderDelayedFocusDirective, ElderDialogConfig, ElderDialogModule, ElderDialogPanelComponent, ElderDialogService, ElderDimensionsInputComponent, ElderDropZoneComponent, ElderDurationInputComponent, ElderEntityValueAccessorUtil, ElderEnumTranslationService, ElderErrorModule, ElderEventSourceService, ElderExceptionDetailComponent, ElderExpandToggleButtonComponent, ElderExpandToggleButtonModule, ElderFileDropZoneDirective, ElderFileModule, ElderFileSelectComponent, ElderFileSelectDirective, ElderFileUploadComponent, ElderFormFieldControlBase, ElderFormFieldDenseDirective, ElderFormFieldLabelDirective, ElderFormFieldNoHintDirective, ElderFormFieldNoSpinnerDirective, ElderFormsDirectivesModule, ElderFormsModule, ElderFromFieldBase, ElderFromFieldEntityBase, ElderFromFieldMultiEntityBase, ElderGlobalSearchComponent, ElderGlobalSearchModule, ElderGlobalSearchService, ElderGridComponent, ElderGridModule, ElderGridTileDirective, ElderGridToolbarDirective, ElderHeaderComponent, ElderHeaderModule, ElderHttpClient, ElderI18nEntitiesModule, ElderIFrameModule, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, ElderInfiniteScrollModule, ElderInputPatternDirective, ElderIntervalInputComponent, ElderKeyEventDirective, ElderLabelInputComponent, ElderLabelsModule, ElderLanguageConfig, ElderLanguageInterceptor, ElderLanguageModule, ElderLanguageService, ElderLanguageSwitcherComponent, ElderLocalDateInputComponent, ElderLocalTimeInputComponent, ElderLocalesDeChModule, ElderLocalizedInputComponent, ElderLocalizedInputDialogComponent, ElderLocalizedInputDialogService, ElderLocalizedInputTableComponent, ElderLocalizedTextColumnDirective, ElderLocalizedTextsDirective, ElderMaxValidator, ElderMeasuresModule, ElderMinValidator, ElderMultiEntityValueAccessorUtil, ElderMultiSelectBase, ElderMultiSelectChipsComponent, ElderMultiSelectFormField, ElderMultipleOfUtil, ElderMultipleOfValidator, ElderNavGroupComponent, ElderNavLinkComponent, ElderNavListComponent, ElderNavModule, ElderNextFocusableDirective, ElderNumberCellDirective, ElderOfflineIndicatorComponent, ElderOverlayComponent, ElderOverlayModule, ElderOverlayOriginDirective, ElderOverlayTriggerDirective, ElderPaddingDirective, ElderPanelComponent, ElderPanelModule, ElderPeriodInputComponent, ElderPipesModule, ElderPlugParentFormDirective, ElderProgressBarComponent, ElderProgressBarModule, ElderQuantityFormFieldComponent, ElderQuantityInputControlComponent, ElderQuantityModule, ElderQuantityPipe, ElderQuantityRangeValidator, ElderQuantityService, ElderQuantityTransformPipe, ElderQuestionDialogComponent, ElderRepeatPipe, ElderRepeatPipeLegacy, ElderRequiredDimensionsValidator, ElderRequiredIgnoreZeroValidator, ElderRequiredQuantityValidator, ElderRoundPipe, ElderRouteOutletDrawerService, ElderRouterOutletService, ElderRouterService, ElderSafeUrlPipe, ElderScrollContainerComponent, ElderScrollbarDirective, ElderScrollbarModule, ElderSearchBoxComponent, ElderSearchContextDirective, ElderSearchInputDirective, ElderSearchModule, ElderSearchPanelComponent, ElderSelectBase, ElderSelectChipAvatarDirective, ElderSelectChipDirective, ElderSelectComponent, ElderSelectComponentState, ElderSelectCustomInputDirective, ElderSelectFormField, ElderSelectModule, ElderSelectOnTabDirective, ElderSelectValueDirective, ElderSelectionDialogComponent, ElderSelectionDialogDirective, ElderSelectionMasterCheckboxComponent, ElderSelectionPopupTriggerAdapterDirective, ElderShellCenterDirective, ElderShellComponent, ElderShellModule, ElderShellNavigationToggleComponent, ElderShellService, ElderShellSideLeftDirective, ElderShellSideRightDirective, ElderShellSlotDirective, ElderSimpleSelectionViewComponent, ElderSimpleSelectionViewModule, ElderSingleSortComponent, ElderStackCardDirective, ElderStopEventPropagationDirective, ElderSvgViewerComponent, ElderTabDirective, ElderTabFocusTrapDirective, ElderTabGroupRoutingDirective, ElderTabModule, ElderTableActivationDirective, ElderTableComponent, ElderTableExtensionDirective, ElderTableGroup, ElderTableModel, ElderTableModelCdkTableBinding, ElderTableModelQueryGroup, ElderTableModule, ElderTableProviders, ElderTableRootDirective, ElderTableSortDirective, ElderTableToolbarDirective, ElderThemeApplierDirective, ElderThemeDirective, ElderThemeModule, ElderThemePreferenceService, ElderThemeService, ElderThemeToggleComponent, ElderTimeModule, ElderToastModule, ElderToastService, ElderTogglePanelComponent, ElderTogglePanelPrimaryDirective, ElderTogglePanelSecondaryDirective, ElderTogglePanelTriggerDirective, ElderToolbarColumnDirective, ElderToolbarComponent, ElderToolbarContentDirective, ElderToolbarModule, ElderToolbarService, ElderToolbarTitleComponent, ElderToolbarTitleService, ElderTouchedDirective, ElderTrimPipe, ElderTripleStateCheckboxDirective, ElderTruncatePipe, ElderUnitSelectDirective, ElderUnitService, ElderUrlFragment, ElderUrlFragmentModule, ElderUrlFragmentParamsService, ElderUrlFragmentSwitcherComponent, ElderValidationErrorDirective, ElderViewersModule, EntitySetPatch, ErrorUtil, ExceptionDetailCtx, FileEntry, FileListingRx, FileUploadClient, Filter, FilterContext, FilterUtil, FormFieldBaseComponent, GlobalDragDropService, HttpClientBuilder, HttpClientPristine, HttpDataTransfer, HttpDataTransferAggregateComponent, HttpDataTransferComponent, HttpDataTransferIndicatorComponent, HttpDataTransferOverviewComponent, HttpParamsBuilder, I18nBase, I18nPickAsyncPipe, I18nPickPipe, I18nText, IFrameState, IframeCloseDirective, IframeDialogComponent, IframeHostComponent, IframeService, IframeSideContentComponent, IndexedEntities, InternalRestClientConfig, Interval, IsoDurationPipe, IsoIntervalParsePipe, IsoIntervalPipe, JsonMapUtil, KafentConfig, KafentEvent, KafentEventService, KafentEventStream, KafentEventStreamDisabled, KafentEventStreamSse, KafentEventTransport, KafentModule, KafentSseEventChannel, KafentTokenProvider, KafentTokenProviderSessionStorage, KafentTopicSse, KnownElderThemes, KnownLocaleType, LocalListDataSource, LocalPagedDataSource, LocalisationPickerService, MasterSelectionState, MatTableDataContextBinding, MatTableDataContextBindingBuilder, MultiModelBaseComponent, NextNumberUtil, Objects, OnlineStatus, Page, PageRequest, Pageable, ParseUtil, Path, PathNode, PeriodBucket, PeriodDuration, PeriodFormat, ProcessIterationContext, ProcessState, PropertyPathUtil, Quantity, QueryListBinding, QuestionDialogConfig, ReactiveEventSource, ReactiveMap, RefreshingEntity, RestClient, RestClientConfig, RestClientContinuable, RestClientList, RestClientPaged, SearchQuery, SelectionModel, SelectionModelPopupDirective, Sets, SimpleLocalisationPicker, Sort, SortOption, SortUtil, StandardToastComponent, SubBar, SuggestionProvider, TemplateCompositeControl, TemplatedSelectionDialogComponent, ThemeSpec, TimeAgoPipe, TimeDurationPipe, TimeUtil, ToIsoDateStringPipe, ToastType, TokenChunkRequest, ToolbarHeader, TranslatedEnumValue, TypedEventMessage, Unit, UnitDimension, UnitDimensionInfo, UnitInfo, UnitRegistry, UrlBuilder, UrlQueryParams, UuidUtil, ValueAccessorBase, ValueWrapper, ViewProviders, WeightPipe, alphaNumStringComparator, buildFormIntegrationProviders, createDataOptionsProvider, createSelectionModel, existingOrNewElderTableModel, isActivePagedDataContext, isContinuableDataContext, isContinuableDataSource, isDataContext, isDataSource, isElderEntityValueAccessor, isElderMultiEntityValueAccessor, isListDataSource, isPagedDataSource, lazySample, lazySampleTime, naturalValueComparator, newElderTableModel, proxyControlContainer, registerLocale, runInZone, themeInit };
29570
+ export { Arrays, AuditedEntity, AutoStartSpec, BlobUrl, BytesFormat, BytesPerSecondFormat, BytesPipe, CardDropEvent, CardOrganizerData, CardStack, CollectionUtil, ComparatorBuilder, ConfirmDialogConfig, ContinuableListing, CsvColumnSpec, CsvSerializer, CsvSpec, CsvStreamExporter, CsvStreamExporterBuilder, CsvStreamExporterBuilderService, Currency, CurrencyCode, CurrencyUnit, CurrencyUnitRegistry, CustomDateAdapter, DataContextActivePage, DataContextAutoStarter, DataContextBase, DataContextBuilder, DataContextContinuableBase, DataContextContinuablePaged, DataContextContinuableToken, DataContextLifeCycleBinding, DataContextSelectionDirective, DataContextSimple, DataContextSnapshot, DataContextSourceEventBinding, DataContextStateIndicatorComponent, DataContextStatus, DataSourceAdapter, DataSourceBase, DataSourceChangeEvent, DataSourceChangeType, DataSourceProcessor, DataTransferFactory, DataTransferProgress, DataTransferProgressAggregate, DataTransferState, DataTransferStatus, DataViewIframeAdapterDirective, DataViewIframeComponent, DataViewMessage, DataViewOptionsProviderBinding, DataViewSelection, DataViewSelectionInit, DateUtil, DelegateContinuableDataSource, DelegateDataSource, DelegateListDataSource, DelegatePagedDataSource, Dimensions, DrawerOutletBinding, DurationBucket, DurationFormat, ELDER_DATA_VIEW, ELDER_SELECT_BASE, ElderAccessDeniedComponent, ElderAccessDeniedModule, ElderAppHeaderComponent, ElderAuditModule, ElderAuditedEntityComponent, ElderAutoSelectFirstDirective, ElderAutocompleteComponent, ElderAutocompleteDirective, ElderAutocompleteManyDirective, ElderAutocompleteModule, ElderBadgeComponent, ElderBadgeDirective, ElderBadgeModule, ElderBlobViewerComponent, ElderBreadCrumbsComponent, ElderBreadCrumbsModule, ElderButtonGroupComponent, ElderButtonGroupModule, ElderCardComponent, ElderCardContentDirective, ElderCardHeaderActionsDirective, ElderCardHeaderComponent, ElderCardModule, ElderCardOrganizerComponent, ElderCardOrganizerModule, ElderCardPanelComponent, ElderCardStackComponent, ElderCardSubtitleDirective, ElderCardTitleDirective, ElderCheckboxState, ElderChipLabelDirective, ElderChipListSelectComponent, ElderChipListSelectModule, ElderChipsModule, ElderClearSelectDirective, ElderClipboardPutDirective, ElderClipboardService, ElderConfirmDialogComponent, ElderConnectivityModule, ElderConnectivityService, ElderContainersModule, ElderCsvExportBtnComponent, ElderCsvModule, ElderCurrencyModule, ElderCurrencyPipe, ElderDataCommonModule, ElderDataToolbarComponent, ElderDataTransferModule, ElderDataTransferService, ElderDataViewBaseComponent, ElderDataViewOptions, ElderDataViewOptionsProvider, ElderDateSwitcherComponent, ElderDateTimeInputComponent, ElderDelayedFocusDirective, ElderDeleteActiveDirective, ElderDialogConfig, ElderDialogModule, ElderDialogPanelComponent, ElderDialogService, ElderDimensionsInputComponent, ElderDropZoneComponent, ElderDurationInputComponent, ElderEntityValueAccessorUtil, ElderEnumTranslationService, ElderErrorModule, ElderEventSourceService, ElderExceptionDetailComponent, ElderExpandToggleButtonComponent, ElderExpandToggleButtonModule, ElderFileDropZoneDirective, ElderFileModule, ElderFileSelectComponent, ElderFileSelectDirective, ElderFileUploadComponent, ElderFormFieldControlBase, ElderFormFieldDenseDirective, ElderFormFieldLabelDirective, ElderFormFieldNoHintDirective, ElderFormFieldNoSpinnerDirective, ElderFormsDirectivesModule, ElderFormsModule, ElderFromFieldBase, ElderFromFieldEntityBase, ElderFromFieldMultiEntityBase, ElderGlobalSearchComponent, ElderGlobalSearchModule, ElderGlobalSearchService, ElderGridComponent, ElderGridModule, ElderGridTileDirective, ElderGridToolbarDirective, ElderHeaderComponent, ElderHeaderModule, ElderHttpClient, ElderI18nEntitiesModule, ElderIFrameModule, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, ElderInfiniteScrollModule, ElderInputPatternDirective, ElderIntervalInputComponent, ElderKeyEventDirective, ElderLabelInputComponent, ElderLabelsModule, ElderLanguageConfig, ElderLanguageInterceptor, ElderLanguageModule, ElderLanguageService, ElderLanguageSwitcherComponent, ElderLocalDateInputComponent, ElderLocalTimeInputComponent, ElderLocalesDeChModule, ElderLocalizedInputComponent, ElderLocalizedInputDialogComponent, ElderLocalizedInputDialogService, ElderLocalizedInputTableComponent, ElderLocalizedTextColumnDirective, ElderLocalizedTextsDirective, ElderMaxValidator, ElderMeasuresModule, ElderMinValidator, ElderMultiEntityValueAccessorUtil, ElderMultiSelectBase, ElderMultiSelectChipsComponent, ElderMultiSelectFormField, ElderMultipleOfUtil, ElderMultipleOfValidator, ElderNavGroupComponent, ElderNavLinkComponent, ElderNavListComponent, ElderNavModule, ElderNextFocusableDirective, ElderNumberCellDirective, ElderOfflineIndicatorComponent, ElderOverlayComponent, ElderOverlayModule, ElderOverlayOriginDirective, ElderOverlayTriggerDirective, ElderPaddingDirective, ElderPanelComponent, ElderPanelModule, ElderPeriodInputComponent, ElderPipesModule, ElderPlugParentFormDirective, ElderProgressBarComponent, ElderProgressBarModule, ElderQuantityFormFieldComponent, ElderQuantityInputControlComponent, ElderQuantityModule, ElderQuantityPipe, ElderQuantityRangeValidator, ElderQuantityService, ElderQuantityTransformPipe, ElderQuestionDialogComponent, ElderRepeatPipe, ElderRepeatPipeLegacy, ElderRequiredDimensionsValidator, ElderRequiredIgnoreZeroValidator, ElderRequiredQuantityValidator, ElderRoundPipe, ElderRouteOutletDrawerService, ElderRouterOutletService, ElderRouterService, ElderSafeUrlPipe, ElderScrollContainerComponent, ElderScrollbarDirective, ElderScrollbarModule, ElderSearchBoxComponent, ElderSearchContextDirective, ElderSearchInputDirective, ElderSearchModule, ElderSearchPanelComponent, ElderSelectBase, ElderSelectChipAvatarDirective, ElderSelectChipDirective, ElderSelectComponent, ElderSelectComponentState, ElderSelectCustomInputDirective, ElderSelectFormField, ElderSelectModule, ElderSelectOnTabDirective, ElderSelectValueDirective, ElderSelectionDialogComponent, ElderSelectionDialogDirective, ElderSelectionMasterCheckboxComponent, ElderSelectionPopupTriggerAdapterDirective, ElderShellCenterDirective, ElderShellComponent, ElderShellModule, ElderShellNavigationToggleComponent, ElderShellService, ElderShellSideLeftDirective, ElderShellSideRightDirective, ElderShellSlotDirective, ElderSimpleSelectionViewComponent, ElderSimpleSelectionViewModule, ElderSingleSortComponent, ElderStackCardDirective, ElderStopEventPropagationDirective, ElderSvgViewerComponent, ElderTabDirective, ElderTabFocusTrapDirective, ElderTabGroupRoutingDirective, ElderTabModule, ElderTableActivationDirective, ElderTableComponent, ElderTableExtensionDirective, ElderTableGroup, ElderTableModel, ElderTableModelCdkTableBinding, ElderTableModelQueryGroup, ElderTableModule, ElderTableProviders, ElderTableRootDirective, ElderTableSortDirective, ElderTableToolbarDirective, ElderThemeApplierDirective, ElderThemeDirective, ElderThemeModule, ElderThemePreferenceService, ElderThemeService, ElderThemeToggleComponent, ElderTimeModule, ElderToastModule, ElderToastService, ElderTogglePanelComponent, ElderTogglePanelPrimaryDirective, ElderTogglePanelSecondaryDirective, ElderTogglePanelTriggerDirective, ElderToolbarColumnDirective, ElderToolbarComponent, ElderToolbarContentDirective, ElderToolbarModule, ElderToolbarService, ElderToolbarTitleComponent, ElderToolbarTitleService, ElderTouchedDirective, ElderTrimPipe, ElderTripleStateCheckboxDirective, ElderTruncatePipe, ElderUnitSelectDirective, ElderUnitService, ElderUrlFragment, ElderUrlFragmentModule, ElderUrlFragmentParamsService, ElderUrlFragmentSwitcherComponent, ElderValidationErrorDirective, ElderViewersModule, EntitySetPatch, ErrorUtil, ExceptionDetailCtx, FileEntry, FileListingRx, FileUploadClient, Filter, FilterContext, FilterUtil, FormFieldBaseComponent, GlobalDragDropService, HttpClientBuilder, HttpClientPristine, HttpDataTransfer, HttpDataTransferAggregateComponent, HttpDataTransferComponent, HttpDataTransferIndicatorComponent, HttpDataTransferOverviewComponent, HttpParamsBuilder, I18nBase, I18nPickAsyncPipe, I18nPickPipe, I18nText, IFrameState, IframeCloseDirective, IframeDialogComponent, IframeHostComponent, IframeService, IframeSideContentComponent, IndexedEntities, InternalRestClientConfig, Interval, IsoDurationPipe, IsoIntervalParsePipe, IsoIntervalPipe, JsonMapUtil, KafentConfig, KafentEvent, KafentEventService, KafentEventStream, KafentEventStreamDisabled, KafentEventStreamSse, KafentEventTransport, KafentModule, KafentSseEventChannel, KafentTokenProvider, KafentTokenProviderSessionStorage, KafentTopicSse, KnownElderThemes, KnownLocaleType, LocalListDataSource, LocalPagedDataSource, LocalisationPickerService, MasterSelectionState, MatTableDataContextBinding, MatTableDataContextBindingBuilder, MultiModelBaseComponent, NextNumberUtil, Objects, OnlineStatus, Page, PageRequest, Pageable, ParseUtil, Path, PathNode, PeriodBucket, PeriodDuration, PeriodFormat, ProcessIterationContext, ProcessState, PropertyPathUtil, Quantity, QueryListBinding, QuestionDialogConfig, ReactiveEventSource, ReactiveMap, RefreshingEntity, RestClient, RestClientConfig, RestClientContinuable, RestClientList, RestClientPaged, SearchQuery, SelectionModel, SelectionModelPopupDirective, Sets, SimpleLocalisationPicker, Sort, SortOption, SortUtil, StandardToastComponent, SubBar, SuggestionProvider, TemplateCompositeControl, TemplatedSelectionDialogComponent, ThemeSpec, TimeAgoPipe, TimeDurationPipe, TimeUtil, ToIsoDateStringPipe, ToastType, TokenChunkRequest, ToolbarHeader, TranslatedEnumValue, TypedEventMessage, Unit, UnitDimension, UnitDimensionInfo, UnitInfo, UnitRegistry, UrlBuilder, UrlQueryParams, UuidUtil, ValueAccessorBase, ValueWrapper, ViewProviders, WeightPipe, alphaNumStringComparator, buildFormIntegrationProviders, createDataOptionsProvider, createSelectionModel, existingOrNewElderTableModel, isActivePagedDataContext, isContinuableDataContext, isContinuableDataSource, isDataContext, isDataSource, isElderEntityValueAccessor, isElderMultiEntityValueAccessor, isListDataSource, isPagedDataSource, lazySample, lazySampleTime, naturalValueComparator, newElderTableModel, proxyControlContainer, registerLocale, runInZone, themeInit };
29380
29571
  //# sourceMappingURL=elderbyte-ngx-starter.mjs.map