@elderbyte/ngx-starter 15.10.4 → 15.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/common/arrays.mjs +29 -0
- package/esm2020/lib/common/public_api.mjs +6 -4
- package/esm2020/lib/common/rxjs/operators/lazy-sample.mjs +34 -0
- package/esm2020/lib/common/rxjs/public_api.mjs +2 -0
- package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +4 -4
- package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +1 -1
- package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +4 -4
- package/esm2020/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +3 -3
- package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +8 -7
- package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +5 -16
- package/esm2020/lib/components/select/elder-select.module.mjs +19 -7
- package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +12 -6
- package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +24 -11
- package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +5 -5
- package/fesm2015/elderbyte-ngx-starter.mjs +298 -221
- package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
- package/fesm2020/elderbyte-ngx-starter.mjs +296 -219
- package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/arrays.d.ts +11 -0
- package/lib/common/public_api.d.ts +5 -3
- package/lib/common/rxjs/operators/lazy-sample.d.ts +14 -0
- package/lib/common/rxjs/public_api.d.ts +1 -0
- package/lib/components/infinitescroll/elder-infinite-scroll.directive.d.ts +1 -1
- package/lib/components/infinitescroll/elder-infinite-scroll.module.d.ts +1 -9
- package/lib/components/select/elder-select.module.d.ts +12 -11
- package/lib/components/select/multi/elder-multi-select-base.d.ts +2 -0
- package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +5 -1
- package/package.json +1 -1
- package/src/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.scss +2 -2
- package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +26 -0
|
@@ -5,8 +5,8 @@ import { Pipe, Injectable, LOCALE_ID, Inject, NgModule, Optional, SkipSelf, Dire
|
|
|
5
5
|
import * as i1 from '@angular/platform-browser';
|
|
6
6
|
import { Duration, Period, TemporalQueries, LocalTime, Instant, LocalDate, nativeJs, ZoneId, ZonedDateTime, Temporal } from '@js-joda/core';
|
|
7
7
|
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
8
|
-
import { BehaviorSubject, Subject, EMPTY, combineLatest, merge, of, forkJoin, throwError, mergeWith, switchMap as switchMap$1, Observable, zip, mergeMap as mergeMap$1, fromEvent,
|
|
9
|
-
import {
|
|
8
|
+
import { timer, defer, ReplaySubject, concat, finalize, exhaustMap, BehaviorSubject, Subject, EMPTY, combineLatest, merge, of, forkJoin, throwError, mergeWith, switchMap as switchMap$1, Observable, zip, mergeMap as mergeMap$1, fromEvent, NEVER } from 'rxjs';
|
|
9
|
+
import { tap, takeUntil, takeWhile, map, filter, distinctUntilChanged, debounceTime, catchError, first, take, switchMap, mergeMap, expand, reduce, startWith, skip, delay, share, combineLatestWith, timeout, skipWhile } from 'rxjs/operators';
|
|
10
10
|
import * as i1$2 from '@angular/common/http';
|
|
11
11
|
import { HttpParams, HttpEventType, HttpRequest, HttpClient, HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
12
12
|
import { DataSource } from '@angular/cdk/collections';
|
|
@@ -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';
|
|
@@ -2034,6 +2034,169 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
2034
2034
|
}]
|
|
2035
2035
|
}] });
|
|
2036
2036
|
|
|
2037
|
+
/**
|
|
2038
|
+
* Provides common used object utils
|
|
2039
|
+
*/
|
|
2040
|
+
class Objects {
|
|
2041
|
+
/**
|
|
2042
|
+
* Checks if the given value is non null / nun undefined
|
|
2043
|
+
*/
|
|
2044
|
+
static nonNull(value) {
|
|
2045
|
+
return value !== null && value !== undefined;
|
|
2046
|
+
}
|
|
2047
|
+
/**
|
|
2048
|
+
* Checks if the given value is null or undefined
|
|
2049
|
+
*/
|
|
2050
|
+
static isNull(value) {
|
|
2051
|
+
return value === null || value === undefined;
|
|
2052
|
+
}
|
|
2053
|
+
/**
|
|
2054
|
+
* Creates a copy of the object data.
|
|
2055
|
+
*/
|
|
2056
|
+
static cloneData(src) {
|
|
2057
|
+
if (!src) {
|
|
2058
|
+
return src;
|
|
2059
|
+
}
|
|
2060
|
+
try {
|
|
2061
|
+
const json = JSON.stringify(src);
|
|
2062
|
+
return JSON.parse(json);
|
|
2063
|
+
}
|
|
2064
|
+
catch (err) {
|
|
2065
|
+
throw new Error('Failed to clone object! ' + err.message);
|
|
2066
|
+
}
|
|
2067
|
+
}
|
|
2068
|
+
/**
|
|
2069
|
+
* Checks if the two given objects have the same data
|
|
2070
|
+
*/
|
|
2071
|
+
static dataEquals(a, b) {
|
|
2072
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
2073
|
+
}
|
|
2074
|
+
}
|
|
2075
|
+
Objects.logger = LoggerFactory.getLogger('Objects');
|
|
2076
|
+
|
|
2077
|
+
class Arrays {
|
|
2078
|
+
/**
|
|
2079
|
+
* Checks if the two given arrays have the same content in the exact same order.
|
|
2080
|
+
* If order is not relevant, use Sets.equalContent.
|
|
2081
|
+
*
|
|
2082
|
+
* @param arrayA
|
|
2083
|
+
* @param arrayB
|
|
2084
|
+
* @param equalsFn Optional Equality Operator. If omitted, reference equality is used.
|
|
2085
|
+
*/
|
|
2086
|
+
static equalContentAndOrder(arrayA, arrayB, equalsFn = (a, b) => a === b) {
|
|
2087
|
+
if (!(arrayA === null || arrayA === void 0 ? void 0 : arrayA.length) && !(arrayB === null || arrayB === void 0 ? void 0 : arrayB.length)) {
|
|
2088
|
+
return true;
|
|
2089
|
+
}
|
|
2090
|
+
if (!arrayA || !arrayB) {
|
|
2091
|
+
return false;
|
|
2092
|
+
}
|
|
2093
|
+
if (arrayA.length !== arrayB.length) {
|
|
2094
|
+
return false;
|
|
2095
|
+
}
|
|
2096
|
+
// Comparing each element of your array
|
|
2097
|
+
for (var i = 0; i < arrayA.length; i++) {
|
|
2098
|
+
if (!equalsFn(arrayA[i], arrayB[i])) {
|
|
2099
|
+
return false;
|
|
2100
|
+
}
|
|
2101
|
+
}
|
|
2102
|
+
return true;
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
2105
|
+
|
|
2106
|
+
class Sets {
|
|
2107
|
+
/**
|
|
2108
|
+
* Compares the content of two sets for equality in O(n).
|
|
2109
|
+
* @param as
|
|
2110
|
+
* @param bs
|
|
2111
|
+
*/
|
|
2112
|
+
static equals(as, bs) {
|
|
2113
|
+
if (as.size !== bs.size) {
|
|
2114
|
+
return false;
|
|
2115
|
+
}
|
|
2116
|
+
if (as !== bs) { // Same reference?
|
|
2117
|
+
return Sets.containsEvery(bs, Array.from(as.values()));
|
|
2118
|
+
}
|
|
2119
|
+
return true;
|
|
2120
|
+
}
|
|
2121
|
+
/**
|
|
2122
|
+
* Checks if the two given arrays have the same content.
|
|
2123
|
+
* They are handled as "Sets" and order of the items is not relevant for the check.
|
|
2124
|
+
*
|
|
2125
|
+
* @param idsA
|
|
2126
|
+
* @param idsB
|
|
2127
|
+
*/
|
|
2128
|
+
static equalContent(idsA, idsB) {
|
|
2129
|
+
if (!(idsA === null || idsA === void 0 ? void 0 : idsA.length) && !(idsB === null || idsB === void 0 ? void 0 : idsB.length)) {
|
|
2130
|
+
return true;
|
|
2131
|
+
}
|
|
2132
|
+
if (!idsA || !idsB) {
|
|
2133
|
+
return false;
|
|
2134
|
+
}
|
|
2135
|
+
if (idsA.length !== idsB.length) {
|
|
2136
|
+
return false;
|
|
2137
|
+
}
|
|
2138
|
+
// Both element lists have content and the same length
|
|
2139
|
+
return Sets.containsEvery(new Set(idsA), idsB);
|
|
2140
|
+
}
|
|
2141
|
+
/**
|
|
2142
|
+
* Checks if the given set contains every given element
|
|
2143
|
+
*/
|
|
2144
|
+
static containsEvery(set, elements) {
|
|
2145
|
+
const predicateFn = (e) => set.has(e); // aot does not like lambdas
|
|
2146
|
+
return elements.every(predicateFn);
|
|
2147
|
+
}
|
|
2148
|
+
}
|
|
2149
|
+
|
|
2150
|
+
class JsonMapUtil {
|
|
2151
|
+
static toJsonMap(esMap) {
|
|
2152
|
+
const entries = Array.from(esMap.entries());
|
|
2153
|
+
const jsonMap = {};
|
|
2154
|
+
entries.reduce((o, [key, value]) => {
|
|
2155
|
+
o[key] = value;
|
|
2156
|
+
return o;
|
|
2157
|
+
}, jsonMap);
|
|
2158
|
+
return jsonMap;
|
|
2159
|
+
}
|
|
2160
|
+
static toMap(jsonMap, toIdFn = key => key) {
|
|
2161
|
+
const map = new Map();
|
|
2162
|
+
Object.keys(jsonMap)
|
|
2163
|
+
.forEach(k => map.set(toIdFn(k), jsonMap[k]));
|
|
2164
|
+
return map;
|
|
2165
|
+
}
|
|
2166
|
+
}
|
|
2167
|
+
|
|
2168
|
+
/**
|
|
2169
|
+
* Similar to sampleTime, but emits the first event and optionally the last event as-well.
|
|
2170
|
+
* @param intervalDuration
|
|
2171
|
+
* @param includeFinal
|
|
2172
|
+
*/
|
|
2173
|
+
function lazySampleTime(intervalDuration, includeFinal = true) {
|
|
2174
|
+
return lazySample(() => timer(0, intervalDuration), includeFinal);
|
|
2175
|
+
}
|
|
2176
|
+
/**
|
|
2177
|
+
*
|
|
2178
|
+
* @see https://medium.com/@jan.benscheid/rxjs-rate-limiting-and-the-quest-for-the-perfect-throttle-836612c88eb7
|
|
2179
|
+
* @param notifierSelector
|
|
2180
|
+
* @param includeFinal
|
|
2181
|
+
*/
|
|
2182
|
+
function lazySample(notifierSelector, includeFinal = true) {
|
|
2183
|
+
return (source) => defer(() => {
|
|
2184
|
+
const finalValue = new ReplaySubject();
|
|
2185
|
+
let hasValue = false;
|
|
2186
|
+
let lastValue = null;
|
|
2187
|
+
return concat(source.pipe(tap((val) => {
|
|
2188
|
+
lastValue = val;
|
|
2189
|
+
hasValue = true;
|
|
2190
|
+
}), finalize(() => {
|
|
2191
|
+
finalValue.next(lastValue);
|
|
2192
|
+
finalValue.complete();
|
|
2193
|
+
}), exhaustMap((value) => notifierSelector(value).pipe(takeUntil(finalValue), takeWhile(() => hasValue), map(() => {
|
|
2194
|
+
hasValue = false;
|
|
2195
|
+
return lastValue;
|
|
2196
|
+
})))), finalValue.pipe(filter(() => hasValue && includeFinal)));
|
|
2197
|
+
});
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2037
2200
|
class BytesPerSecondFormat {
|
|
2038
2201
|
static formatBytesPerSecond(bytesPerSecond, precision = null) {
|
|
2039
2202
|
const KBPerSecond = bytesPerSecond / 1000;
|
|
@@ -2168,46 +2331,6 @@ DateUtil.IsoDateDelimiter = '-';
|
|
|
2168
2331
|
DateUtil.IsoTimeDelimiter = ':';
|
|
2169
2332
|
DateUtil.DateTimeSeparator = 'T';
|
|
2170
2333
|
|
|
2171
|
-
/**
|
|
2172
|
-
* Provides common used object utils
|
|
2173
|
-
*/
|
|
2174
|
-
class Objects {
|
|
2175
|
-
/**
|
|
2176
|
-
* Checks if the given value is non null / nun undefined
|
|
2177
|
-
*/
|
|
2178
|
-
static nonNull(value) {
|
|
2179
|
-
return value !== null && value !== undefined;
|
|
2180
|
-
}
|
|
2181
|
-
/**
|
|
2182
|
-
* Checks if the given value is null or undefined
|
|
2183
|
-
*/
|
|
2184
|
-
static isNull(value) {
|
|
2185
|
-
return value === null || value === undefined;
|
|
2186
|
-
}
|
|
2187
|
-
/**
|
|
2188
|
-
* Creates a copy of the object data.
|
|
2189
|
-
*/
|
|
2190
|
-
static cloneData(src) {
|
|
2191
|
-
if (!src) {
|
|
2192
|
-
return src;
|
|
2193
|
-
}
|
|
2194
|
-
try {
|
|
2195
|
-
const json = JSON.stringify(src);
|
|
2196
|
-
return JSON.parse(json);
|
|
2197
|
-
}
|
|
2198
|
-
catch (err) {
|
|
2199
|
-
throw new Error('Failed to clone object! ' + err.message);
|
|
2200
|
-
}
|
|
2201
|
-
}
|
|
2202
|
-
/**
|
|
2203
|
-
* Checks if the two given objects have the same data
|
|
2204
|
-
*/
|
|
2205
|
-
static dataEquals(a, b) {
|
|
2206
|
-
return JSON.stringify(a) === JSON.stringify(b);
|
|
2207
|
-
}
|
|
2208
|
-
}
|
|
2209
|
-
Objects.logger = LoggerFactory.getLogger('Objects');
|
|
2210
|
-
|
|
2211
2334
|
// @dynamic
|
|
2212
2335
|
class CollectionUtil {
|
|
2213
2336
|
static flatten(groups) {
|
|
@@ -2630,24 +2753,6 @@ class Pageable {
|
|
|
2630
2753
|
}
|
|
2631
2754
|
}
|
|
2632
2755
|
|
|
2633
|
-
class JsonMapUtil {
|
|
2634
|
-
static toJsonMap(esMap) {
|
|
2635
|
-
const entries = Array.from(esMap.entries());
|
|
2636
|
-
const jsonMap = {};
|
|
2637
|
-
entries.reduce((o, [key, value]) => {
|
|
2638
|
-
o[key] = value;
|
|
2639
|
-
return o;
|
|
2640
|
-
}, jsonMap);
|
|
2641
|
-
return jsonMap;
|
|
2642
|
-
}
|
|
2643
|
-
static toMap(jsonMap, toIdFn = key => key) {
|
|
2644
|
-
const map = new Map();
|
|
2645
|
-
Object.keys(jsonMap)
|
|
2646
|
-
.forEach(k => map.set(toIdFn(k), jsonMap[k]));
|
|
2647
|
-
return map;
|
|
2648
|
-
}
|
|
2649
|
-
}
|
|
2650
|
-
|
|
2651
2756
|
class EntitySetPatch {
|
|
2652
2757
|
/***************************************************************************
|
|
2653
2758
|
* *
|
|
@@ -8489,50 +8594,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
8489
8594
|
}]
|
|
8490
8595
|
}], ctorParameters: function () { return [{ type: i1$3.Router }, { type: i1$4.Location }]; } });
|
|
8491
8596
|
|
|
8492
|
-
class Sets {
|
|
8493
|
-
/**
|
|
8494
|
-
* Compares the content of two sets for equality in O(n).
|
|
8495
|
-
* @param as
|
|
8496
|
-
* @param bs
|
|
8497
|
-
*/
|
|
8498
|
-
static equals(as, bs) {
|
|
8499
|
-
if (as.size !== bs.size) {
|
|
8500
|
-
return false;
|
|
8501
|
-
}
|
|
8502
|
-
if (as !== bs) { // Same reference?
|
|
8503
|
-
return Sets.containsEvery(bs, Array.from(as.values()));
|
|
8504
|
-
}
|
|
8505
|
-
return true;
|
|
8506
|
-
}
|
|
8507
|
-
/**
|
|
8508
|
-
* Checks if the two given arrays have the same content.
|
|
8509
|
-
* They are handled as "Sets" and order of the items is not relevant for the check.
|
|
8510
|
-
*
|
|
8511
|
-
* @param idsA
|
|
8512
|
-
* @param idsB
|
|
8513
|
-
*/
|
|
8514
|
-
static equalContent(idsA, idsB) {
|
|
8515
|
-
if (!(idsA === null || idsA === void 0 ? void 0 : idsA.length) && !(idsB === null || idsB === void 0 ? void 0 : idsB.length)) {
|
|
8516
|
-
return true;
|
|
8517
|
-
}
|
|
8518
|
-
if (!idsA || !idsB) {
|
|
8519
|
-
return false;
|
|
8520
|
-
}
|
|
8521
|
-
if (idsA.length !== idsB.length) {
|
|
8522
|
-
return false;
|
|
8523
|
-
}
|
|
8524
|
-
// Both element lists have content and the same length
|
|
8525
|
-
return Sets.containsEvery(new Set(idsA), idsB);
|
|
8526
|
-
}
|
|
8527
|
-
/**
|
|
8528
|
-
* Checks if the given set contains every given element
|
|
8529
|
-
*/
|
|
8530
|
-
static containsEvery(set, elements) {
|
|
8531
|
-
const predicateFn = (e) => set.has(e); // aot does not like lambdas
|
|
8532
|
-
return elements.every(predicateFn);
|
|
8533
|
-
}
|
|
8534
|
-
}
|
|
8535
|
-
|
|
8536
8597
|
class SuggestionProvider {
|
|
8537
8598
|
constructor(provider) {
|
|
8538
8599
|
this.provider = provider;
|
|
@@ -10757,10 +10818,10 @@ class ElderDropZoneComponent {
|
|
|
10757
10818
|
}
|
|
10758
10819
|
}
|
|
10759
10820
|
ElderDropZoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDropZoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10760
|
-
ElderDropZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ElderDropZoneComponent, selector: "elder-drop-zone", inputs: { icon: "icon", prompt: "prompt" }, outputs: { filesDropped: "filesDropped", dragOver: "dragOver", dragEnd: "dragEnd" }, ngImport: i0, template: "<div class=\"
|
|
10821
|
+
ElderDropZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ElderDropZoneComponent, selector: "elder-drop-zone", inputs: { icon: "icon", prompt: "prompt" }, outputs: { filesDropped: "filesDropped", dragOver: "dragOver", dragEnd: "dragEnd" }, ngImport: i0, template: "<div class=\"layout-col full elder-drop-zone\"\n elderFileDropZone\n (dropFiles)=\"filesDropped.emit($event)\"\n (dragOver)=\"dragOver.emit($event)\"\n (dragEnd)=\"dragEnd.emit($event)\"\n>\n <div class=\"layout-col flex\">\n <ng-content></ng-content>\n <!-- Default content -->\n <div class=\"layout-col flex place-center-center gap-sm elder-default-content\">\n <mat-icon class=\"elder-drop-zone-icon\">{{icon}}</mat-icon>\n <span class=\"elder-drop-zone-prompt\">{{prompt | translate}}</span>\n </div>\n </div>\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ElderFileDropZoneDirective, selector: "[elderFileDropZone]", inputs: ["dragOverClass"], outputs: ["dragEnter", "dragOver", "dragEnd", "dragEnterFiles", "dropFiles", "elderFileDropZoneChange"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10761
10822
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDropZoneComponent, decorators: [{
|
|
10762
10823
|
type: Component,
|
|
10763
|
-
args: [{ selector: 'elder-drop-zone', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"
|
|
10824
|
+
args: [{ selector: 'elder-drop-zone', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-col full elder-drop-zone\"\n elderFileDropZone\n (dropFiles)=\"filesDropped.emit($event)\"\n (dragOver)=\"dragOver.emit($event)\"\n (dragEnd)=\"dragEnd.emit($event)\"\n>\n <div class=\"layout-col flex\">\n <ng-content></ng-content>\n <!-- Default content -->\n <div class=\"layout-col flex place-center-center gap-sm elder-default-content\">\n <mat-icon class=\"elder-drop-zone-icon\">{{icon}}</mat-icon>\n <span class=\"elder-drop-zone-prompt\">{{prompt | translate}}</span>\n </div>\n </div>\n</div>\n\n\n" }]
|
|
10764
10825
|
}], ctorParameters: function () { return []; }, propDecorators: { filesDropped: [{
|
|
10765
10826
|
type: Output
|
|
10766
10827
|
}], dragOver: [{
|
|
@@ -14044,7 +14105,7 @@ class ElderInfiniteScrollDirective {
|
|
|
14044
14105
|
this._zonedoutScrollEvents = new Subject();
|
|
14045
14106
|
this._closeToEndSubject = new ReplaySubject(1);
|
|
14046
14107
|
this._scrollingSubject = new BehaviorSubject(false);
|
|
14047
|
-
this.
|
|
14108
|
+
this.destroy$ = new Subject();
|
|
14048
14109
|
/**
|
|
14049
14110
|
* Scroll event handler, invoked outside of angular zone.
|
|
14050
14111
|
*/
|
|
@@ -14055,8 +14116,8 @@ class ElderInfiniteScrollDirective {
|
|
|
14055
14116
|
this._zonedoutScrollEvents.next(ev);
|
|
14056
14117
|
};
|
|
14057
14118
|
this.scrollEventListenerOptions = { capture: true, passive: true };
|
|
14058
|
-
const scrollEvents$ = this._zonedoutScrollEvents.pipe(takeUntil(this.
|
|
14059
|
-
scrollEvents$.pipe(
|
|
14119
|
+
const scrollEvents$ = this._zonedoutScrollEvents.pipe(takeUntil(this.destroy$), filter(ev => !!ev.target));
|
|
14120
|
+
scrollEvents$.pipe(lazySampleTime(this.eventThrottle, true)).subscribe(event => {
|
|
14060
14121
|
const eventTarget = event.target;
|
|
14061
14122
|
if (this.isCloseToEnd(eventTarget)) {
|
|
14062
14123
|
// The zoned out events are not tracked by angular change detection for performance.
|
|
@@ -14085,8 +14146,8 @@ class ElderInfiniteScrollDirective {
|
|
|
14085
14146
|
}
|
|
14086
14147
|
}
|
|
14087
14148
|
ngOnDestroy() {
|
|
14088
|
-
this.
|
|
14089
|
-
this.
|
|
14149
|
+
this.destroy$.next();
|
|
14150
|
+
this.destroy$.complete();
|
|
14090
14151
|
this.unregister(this._scrollContainer);
|
|
14091
14152
|
}
|
|
14092
14153
|
/***************************************************************************
|
|
@@ -14174,95 +14235,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
14174
14235
|
type: Input
|
|
14175
14236
|
}] } });
|
|
14176
14237
|
|
|
14177
|
-
class ElderInfiniteAutocompleteDirective {
|
|
14178
|
-
/***************************************************************************
|
|
14179
|
-
* *
|
|
14180
|
-
* Constructor *
|
|
14181
|
-
* *
|
|
14182
|
-
**************************************************************************/
|
|
14183
|
-
constructor(autoComplete, infiniteScroll) {
|
|
14184
|
-
this.autoComplete = autoComplete;
|
|
14185
|
-
this.infiniteScroll = infiniteScroll;
|
|
14186
|
-
/***************************************************************************
|
|
14187
|
-
* *
|
|
14188
|
-
* Fields *
|
|
14189
|
-
* *
|
|
14190
|
-
**************************************************************************/
|
|
14191
|
-
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
14192
|
-
this.unsubscribe$ = new Subject();
|
|
14193
|
-
this.infiniteScroll.listenToHost = false; // We find the scroll container with our own logic
|
|
14194
|
-
this.autoComplete.opened.pipe(takeUntil(this.unsubscribe$), tap(() => {
|
|
14195
|
-
// Note: When autocomplete raises opened, panel is not yet created (by Overlay)
|
|
14196
|
-
// Note: The panel will be available on next tick
|
|
14197
|
-
// Note: The panel wil NOT open if there are no options to display
|
|
14198
|
-
setTimeout(() => {
|
|
14199
|
-
this.logger.debug('Assigning auto-complete panel to infinite-scroll handler:', this.autoComplete.panel.nativeElement);
|
|
14200
|
-
this.infiniteScroll.scrollContainer = this.autoComplete.panel.nativeElement;
|
|
14201
|
-
});
|
|
14202
|
-
})).subscribe();
|
|
14203
|
-
this.autoComplete.closed.pipe(takeUntil(this.unsubscribe$), tap(() => {
|
|
14204
|
-
this.infiniteScroll.scrollContainer = null;
|
|
14205
|
-
})).subscribe();
|
|
14206
|
-
}
|
|
14207
|
-
/***************************************************************************
|
|
14208
|
-
* *
|
|
14209
|
-
* Life-Cycle Hooks *
|
|
14210
|
-
* *
|
|
14211
|
-
**************************************************************************/
|
|
14212
|
-
ngOnInit() { }
|
|
14213
|
-
ngOnDestroy() {
|
|
14214
|
-
this.unsubscribe$.next();
|
|
14215
|
-
this.unsubscribe$.complete();
|
|
14216
|
-
}
|
|
14217
|
-
}
|
|
14218
|
-
ElderInfiniteAutocompleteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteAutocompleteDirective, deps: [{ token: i1$5.MatAutocomplete, host: true }, { token: ElderInfiniteScrollDirective, host: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
14219
|
-
ElderInfiniteAutocompleteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderInfiniteAutocompleteDirective, selector: "mat-autocomplete[elderElderInfiniteAutocomplete]", ngImport: i0 });
|
|
14220
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteAutocompleteDirective, decorators: [{
|
|
14221
|
-
type: Directive,
|
|
14222
|
-
args: [{
|
|
14223
|
-
selector: 'mat-autocomplete[elderElderInfiniteAutocomplete]'
|
|
14224
|
-
}]
|
|
14225
|
-
}], ctorParameters: function () {
|
|
14226
|
-
return [{ type: i1$5.MatAutocomplete, decorators: [{
|
|
14227
|
-
type: Host
|
|
14228
|
-
}] }, { type: ElderInfiniteScrollDirective, decorators: [{
|
|
14229
|
-
type: Host
|
|
14230
|
-
}] }];
|
|
14231
|
-
} });
|
|
14232
|
-
|
|
14233
|
-
/**
|
|
14234
|
-
* @deprecated Please switch to ElderInfiniteScrollDirective
|
|
14235
|
-
*/
|
|
14236
|
-
class ElderInfiniteScrollLegacyDirective extends ElderInfiniteScrollDirective {
|
|
14237
|
-
}
|
|
14238
|
-
ElderInfiniteScrollLegacyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollLegacyDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
14239
|
-
ElderInfiniteScrollLegacyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderInfiniteScrollLegacyDirective, selector: "[infiniteScroll]", usesInheritance: true, ngImport: i0 });
|
|
14240
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollLegacyDirective, decorators: [{
|
|
14241
|
-
type: Directive,
|
|
14242
|
-
args: [{ selector: '[infiniteScroll]' }]
|
|
14243
|
-
}] });
|
|
14244
|
-
class ElderInfiniteScrollModule {
|
|
14245
|
-
}
|
|
14246
|
-
ElderInfiniteScrollModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14247
|
-
ElderInfiniteScrollModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollModule, declarations: [ElderInfiniteScrollDirective, ElderInfiniteScrollLegacyDirective, ElderInfiniteAutocompleteDirective], imports: [CommonModule], exports: [ElderInfiniteScrollDirective, ElderInfiniteScrollLegacyDirective, ElderInfiniteAutocompleteDirective] });
|
|
14248
|
-
ElderInfiniteScrollModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollModule, imports: [CommonModule] });
|
|
14249
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollModule, decorators: [{
|
|
14250
|
-
type: NgModule,
|
|
14251
|
-
args: [{
|
|
14252
|
-
declarations: [
|
|
14253
|
-
ElderInfiniteScrollDirective,
|
|
14254
|
-
ElderInfiniteScrollLegacyDirective,
|
|
14255
|
-
ElderInfiniteAutocompleteDirective
|
|
14256
|
-
],
|
|
14257
|
-
exports: [
|
|
14258
|
-
ElderInfiniteScrollDirective,
|
|
14259
|
-
ElderInfiniteScrollLegacyDirective,
|
|
14260
|
-
ElderInfiniteAutocompleteDirective
|
|
14261
|
-
],
|
|
14262
|
-
imports: [CommonModule]
|
|
14263
|
-
}]
|
|
14264
|
-
}] });
|
|
14265
|
-
|
|
14266
14238
|
class ElderTableComponent extends ElderDataViewBaseComponent {
|
|
14267
14239
|
/***************************************************************************
|
|
14268
14240
|
* *
|
|
@@ -14482,7 +14454,7 @@ ElderTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
14482
14454
|
provide: ELDER_DATA_VIEW,
|
|
14483
14455
|
useExisting: forwardRef(() => ElderTableComponent)
|
|
14484
14456
|
}
|
|
14485
|
-
], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col scrollable elder-table-scroll\"\n
|
|
14457
|
+
], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n </div>\n</mat-card>\n", styles: [".elder-table-scroll{height:100%}.elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity: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: i1$8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { 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: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i11.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i11.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: ["elderTableRow"], exportAs: ["elderTableRow"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14486
14458
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderTableComponent, decorators: [{
|
|
14487
14459
|
type: Component,
|
|
14488
14460
|
args: [{ selector: 'elder-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
@@ -14491,7 +14463,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
14491
14463
|
provide: ELDER_DATA_VIEW,
|
|
14492
14464
|
useExisting: forwardRef(() => ElderTableComponent)
|
|
14493
14465
|
}
|
|
14494
|
-
], template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col scrollable elder-table-scroll\"\n
|
|
14466
|
+
], template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n </div>\n</mat-card>\n", styles: [".elder-table-scroll{height:100%}.elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"] }]
|
|
14495
14467
|
}], ctorParameters: function () {
|
|
14496
14468
|
return [{ type: ElderTableModel }, { type: SelectionModel, decorators: [{
|
|
14497
14469
|
type: Optional
|
|
@@ -14549,6 +14521,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
14549
14521
|
type: Input
|
|
14550
14522
|
}] } });
|
|
14551
14523
|
|
|
14524
|
+
class ElderInfiniteAutocompleteDirective {
|
|
14525
|
+
/***************************************************************************
|
|
14526
|
+
* *
|
|
14527
|
+
* Constructor *
|
|
14528
|
+
* *
|
|
14529
|
+
**************************************************************************/
|
|
14530
|
+
constructor(autoComplete, infiniteScroll) {
|
|
14531
|
+
this.autoComplete = autoComplete;
|
|
14532
|
+
this.infiniteScroll = infiniteScroll;
|
|
14533
|
+
/***************************************************************************
|
|
14534
|
+
* *
|
|
14535
|
+
* Fields *
|
|
14536
|
+
* *
|
|
14537
|
+
**************************************************************************/
|
|
14538
|
+
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
14539
|
+
this.unsubscribe$ = new Subject();
|
|
14540
|
+
this.infiniteScroll.listenToHost = false; // We find the scroll container with our own logic
|
|
14541
|
+
this.autoComplete.opened.pipe(takeUntil(this.unsubscribe$), tap(() => {
|
|
14542
|
+
// Note: When autocomplete raises opened, panel is not yet created (by Overlay)
|
|
14543
|
+
// Note: The panel will be available on next tick
|
|
14544
|
+
// Note: The panel wil NOT open if there are no options to display
|
|
14545
|
+
setTimeout(() => {
|
|
14546
|
+
this.logger.debug('Assigning auto-complete panel to infinite-scroll handler:', this.autoComplete.panel.nativeElement);
|
|
14547
|
+
this.infiniteScroll.scrollContainer = this.autoComplete.panel.nativeElement;
|
|
14548
|
+
});
|
|
14549
|
+
})).subscribe();
|
|
14550
|
+
this.autoComplete.closed.pipe(takeUntil(this.unsubscribe$), tap(() => {
|
|
14551
|
+
this.infiniteScroll.scrollContainer = null;
|
|
14552
|
+
})).subscribe();
|
|
14553
|
+
}
|
|
14554
|
+
/***************************************************************************
|
|
14555
|
+
* *
|
|
14556
|
+
* Life-Cycle Hooks *
|
|
14557
|
+
* *
|
|
14558
|
+
**************************************************************************/
|
|
14559
|
+
ngOnInit() { }
|
|
14560
|
+
ngOnDestroy() {
|
|
14561
|
+
this.unsubscribe$.next();
|
|
14562
|
+
this.unsubscribe$.complete();
|
|
14563
|
+
}
|
|
14564
|
+
}
|
|
14565
|
+
ElderInfiniteAutocompleteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteAutocompleteDirective, deps: [{ token: i1$5.MatAutocomplete, host: true }, { token: ElderInfiniteScrollDirective, host: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
14566
|
+
ElderInfiniteAutocompleteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderInfiniteAutocompleteDirective, selector: "mat-autocomplete[elderElderInfiniteAutocomplete]", ngImport: i0 });
|
|
14567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteAutocompleteDirective, decorators: [{
|
|
14568
|
+
type: Directive,
|
|
14569
|
+
args: [{
|
|
14570
|
+
selector: 'mat-autocomplete[elderElderInfiniteAutocomplete]'
|
|
14571
|
+
}]
|
|
14572
|
+
}], ctorParameters: function () {
|
|
14573
|
+
return [{ type: i1$5.MatAutocomplete, decorators: [{
|
|
14574
|
+
type: Host
|
|
14575
|
+
}] }, { type: ElderInfiniteScrollDirective, decorators: [{
|
|
14576
|
+
type: Host
|
|
14577
|
+
}] }];
|
|
14578
|
+
} });
|
|
14579
|
+
|
|
14580
|
+
class ElderInfiniteScrollModule {
|
|
14581
|
+
}
|
|
14582
|
+
ElderInfiniteScrollModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14583
|
+
ElderInfiniteScrollModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollModule, declarations: [ElderInfiniteScrollDirective,
|
|
14584
|
+
ElderInfiniteAutocompleteDirective], imports: [CommonModule], exports: [ElderInfiniteScrollDirective,
|
|
14585
|
+
ElderInfiniteAutocompleteDirective] });
|
|
14586
|
+
ElderInfiniteScrollModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollModule, imports: [CommonModule] });
|
|
14587
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderInfiniteScrollModule, decorators: [{
|
|
14588
|
+
type: NgModule,
|
|
14589
|
+
args: [{
|
|
14590
|
+
declarations: [
|
|
14591
|
+
ElderInfiniteScrollDirective,
|
|
14592
|
+
ElderInfiniteAutocompleteDirective
|
|
14593
|
+
],
|
|
14594
|
+
exports: [
|
|
14595
|
+
ElderInfiniteScrollDirective,
|
|
14596
|
+
ElderInfiniteAutocompleteDirective
|
|
14597
|
+
],
|
|
14598
|
+
imports: [CommonModule]
|
|
14599
|
+
}]
|
|
14600
|
+
}] });
|
|
14601
|
+
|
|
14552
14602
|
class ElderPaginatorIntl extends MatPaginatorIntl {
|
|
14553
14603
|
/***************************************************************************
|
|
14554
14604
|
* *
|
|
@@ -16874,7 +16924,7 @@ ElderGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
16874
16924
|
provide: ELDER_DATA_VIEW,
|
|
16875
16925
|
useExisting: forwardRef(() => ElderGridComponent)
|
|
16876
16926
|
}
|
|
16877
|
-
], queries: [{ propertyName: "tileTemplateQuery", first: true, predicate: ElderGridTileDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "toolbarTemplateQuery", first: true, predicate: ElderGridToolbarDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "virtualScrollViewPort", first: true, predicate: ["virtualScrollViewPort"], descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <!-- Grid Browser -->\n <div class=\"layout-col full elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n class=\"layout-row place-start-center flex-none elder-grid-toolbar\">\n\n <div class=\"layout-col flex-none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox class=\"flex-none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n class=\"flex-none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"layout-col flex elder-grid-browser\"\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n infiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <mat-card appearance=\"outlined\" *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay elder-click-through\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </mat-card>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"layout-row place-end-center gap-md flex-none elder-grid-footer\"\n *ngIf=\"footerVisible\"\n style=\"padding-right: 12px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</mat-card>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" class=\"layout-col place-center-center flex\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.elder-grid-tile-overlay{position:absolute;inset:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-click-through{pointer-events:none}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}\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: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i4$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { 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: i9.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i9.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i9.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: ElderSingleSortComponent, selector: "elder-single-sort", inputs: ["availableSorts", "translationPrefix", "sort"], outputs: ["sortChange"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollLegacyDirective, selector: "[infiniteScroll]" }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16927
|
+
], queries: [{ propertyName: "tileTemplateQuery", first: true, predicate: ElderGridTileDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "toolbarTemplateQuery", first: true, predicate: ElderGridToolbarDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "virtualScrollViewPort", first: true, predicate: ["virtualScrollViewPort"], descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <!-- Grid Browser -->\n <div class=\"layout-col full elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n class=\"layout-row place-start-center flex-none elder-grid-toolbar\">\n\n <div class=\"layout-col flex-none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox class=\"flex-none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n class=\"flex-none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"layout-col flex elder-grid-browser\"\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n elderInfiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <mat-card appearance=\"outlined\" *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay elder-click-through\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </mat-card>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"layout-row place-end-center gap-md flex-none elder-grid-footer\"\n *ngIf=\"footerVisible\"\n style=\"padding-right: 12px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</mat-card>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" class=\"layout-col place-center-center flex\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.elder-grid-tile-overlay{position:absolute;inset:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-click-through{pointer-events:none}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}\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: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i4$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { 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: i9.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i9.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i9.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: ElderSingleSortComponent, selector: "elder-single-sort", inputs: ["availableSorts", "translationPrefix", "sort"], outputs: ["sortChange"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16878
16928
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderGridComponent, decorators: [{
|
|
16879
16929
|
type: Component,
|
|
16880
16930
|
args: [{ selector: 'elder-grid', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
@@ -16882,7 +16932,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
16882
16932
|
provide: ELDER_DATA_VIEW,
|
|
16883
16933
|
useExisting: forwardRef(() => ElderGridComponent)
|
|
16884
16934
|
}
|
|
16885
|
-
], template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <!-- Grid Browser -->\n <div class=\"layout-col full elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n class=\"layout-row place-start-center flex-none elder-grid-toolbar\">\n\n <div class=\"layout-col flex-none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox class=\"flex-none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n class=\"flex-none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"layout-col flex elder-grid-browser\"\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n
|
|
16935
|
+
], template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <!-- Grid Browser -->\n <div class=\"layout-col full elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n class=\"layout-row place-start-center flex-none elder-grid-toolbar\">\n\n <div class=\"layout-col flex-none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox class=\"flex-none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n class=\"flex-none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"layout-col flex elder-grid-browser\"\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n elderInfiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <mat-card appearance=\"outlined\" *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay elder-click-through\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </mat-card>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"layout-row place-end-center gap-md flex-none elder-grid-footer\"\n *ngIf=\"footerVisible\"\n style=\"padding-right: 12px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</mat-card>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" class=\"layout-col place-center-center flex\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.elder-grid-tile-overlay{position:absolute;inset:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-click-through{pointer-events:none}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}\n"] }]
|
|
16886
16936
|
}], ctorParameters: function () {
|
|
16887
16937
|
return [{ type: SelectionModel, decorators: [{
|
|
16888
16938
|
type: Optional
|
|
@@ -24218,7 +24268,7 @@ ElderSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
24218
24268
|
provide: ELDER_SELECT_BASE,
|
|
24219
24269
|
useExisting: forwardRef(() => ElderSelectComponent)
|
|
24220
24270
|
}
|
|
24221
|
-
], 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:
|
|
24271
|
+
], 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 });
|
|
24222
24272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderSelectComponent, decorators: [{
|
|
24223
24273
|
type: Component,
|
|
24224
24274
|
args: [{ selector: 'elder-select', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
@@ -24627,16 +24677,15 @@ class ElderMultiSelectBase extends ElderSelectBase {
|
|
|
24627
24677
|
return this._entityIds$;
|
|
24628
24678
|
}
|
|
24629
24679
|
set entities(entities) {
|
|
24630
|
-
if (!this.
|
|
24631
|
-
|
|
24632
|
-
this.writeValueInternal(this.entitiesToValues(entities));
|
|
24680
|
+
if (!this.equalEntitiesExactOrder(this.entities, entities)) {
|
|
24681
|
+
this.writeValueInternal(this.entitiesToValues(this.writeEntitiesSorted(entities)));
|
|
24633
24682
|
}
|
|
24634
24683
|
}
|
|
24635
24684
|
get entities() {
|
|
24636
24685
|
return this._entities$.getValue();
|
|
24637
24686
|
}
|
|
24638
24687
|
set entityIds(ids) {
|
|
24639
|
-
if (!this.
|
|
24688
|
+
if (!this.equalIdsExactOrder(this.entityIds, ids)) {
|
|
24640
24689
|
if (this.valueAsId) {
|
|
24641
24690
|
this.writeValueInternal(ids);
|
|
24642
24691
|
}
|
|
@@ -24740,7 +24789,7 @@ class ElderMultiSelectBase extends ElderSelectBase {
|
|
|
24740
24789
|
* *
|
|
24741
24790
|
**************************************************************************/
|
|
24742
24791
|
valuesEquals(a, b) {
|
|
24743
|
-
return this.
|
|
24792
|
+
return this.equalIdsExactOrder(this.entityIdsFromValues(a), this.entityIdsFromValues(b));
|
|
24744
24793
|
}
|
|
24745
24794
|
onDataContextChanged(data) {
|
|
24746
24795
|
if (this.valueAsId) {
|
|
@@ -24815,9 +24864,15 @@ class ElderMultiSelectBase extends ElderSelectBase {
|
|
|
24815
24864
|
equalIds(idsA, idsB) {
|
|
24816
24865
|
return Sets.equalContent(idsA, idsB);
|
|
24817
24866
|
}
|
|
24867
|
+
equalIdsExactOrder(idsA, idsB) {
|
|
24868
|
+
return Arrays.equalContentAndOrder(idsA, idsB);
|
|
24869
|
+
}
|
|
24818
24870
|
equalEntities(entitiesA, entitiesB) {
|
|
24819
24871
|
return this.equalIds(this.getEntityIds(entitiesA), this.getEntityIds(entitiesB));
|
|
24820
24872
|
}
|
|
24873
|
+
equalEntitiesExactOrder(entitiesA, entitiesB) {
|
|
24874
|
+
return this.equalIdsExactOrder(this.getEntityIds(entitiesA), this.getEntityIds(entitiesB));
|
|
24875
|
+
}
|
|
24821
24876
|
selectEntitiesByIds(ids) {
|
|
24822
24877
|
const currentEntities = this.entities;
|
|
24823
24878
|
this.logger.info('selectEntitiesByIds: ids: ' + ids + ', current entities:', currentEntities);
|
|
@@ -25032,6 +25087,8 @@ class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
|
|
|
25032
25087
|
this.avatarSpecFn = e => this.defaultAvatarSpec;
|
|
25033
25088
|
this.selectable = true;
|
|
25034
25089
|
this.allowRemove = true;
|
|
25090
|
+
this.allowSorting = false;
|
|
25091
|
+
this.stacked = false;
|
|
25035
25092
|
this.chipTemplate$ = new BehaviorSubject(null);
|
|
25036
25093
|
this.chipAvatarTemplate$ = new BehaviorSubject(null);
|
|
25037
25094
|
this.customInputTemplate$ = new BehaviorSubject(null);
|
|
@@ -25135,6 +25192,11 @@ class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
|
|
|
25135
25192
|
* Public API *
|
|
25136
25193
|
* *
|
|
25137
25194
|
**************************************************************************/
|
|
25195
|
+
drop(event) {
|
|
25196
|
+
const reordered = [...this.entities];
|
|
25197
|
+
moveItemInArray(reordered, event.previousIndex, event.currentIndex);
|
|
25198
|
+
this.entities = reordered;
|
|
25199
|
+
}
|
|
25138
25200
|
resolveChipValue(e1) {
|
|
25139
25201
|
return this.getEntityId(e1);
|
|
25140
25202
|
}
|
|
@@ -25188,13 +25250,13 @@ class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
|
|
|
25188
25250
|
}
|
|
25189
25251
|
}
|
|
25190
25252
|
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 });
|
|
25191
|
-
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: [
|
|
25253
|
+
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: [
|
|
25192
25254
|
{ provide: MatFormFieldControl, useExisting: ElderMultiSelectChipsComponent },
|
|
25193
25255
|
{
|
|
25194
25256
|
provide: ELDER_SELECT_BASE,
|
|
25195
25257
|
useExisting: forwardRef(() => ElderMultiSelectChipsComponent)
|
|
25196
25258
|
}
|
|
25197
|
-
], 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
|
|
25259
|
+
], 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 });
|
|
25198
25260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMultiSelectChipsComponent, decorators: [{
|
|
25199
25261
|
type: Component,
|
|
25200
25262
|
args: [{ selector: 'elder-multi-select-chips', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
@@ -25203,7 +25265,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
25203
25265
|
provide: ELDER_SELECT_BASE,
|
|
25204
25266
|
useExisting: forwardRef(() => ElderMultiSelectChipsComponent)
|
|
25205
25267
|
}
|
|
25206
|
-
], template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n
|
|
25268
|
+
], 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"] }]
|
|
25207
25269
|
}], ctorParameters: function () {
|
|
25208
25270
|
return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.FocusMonitor }, { type: i2.TranslateService }, { type: ElderDialogService }, { type: i3.NgControl, decorators: [{
|
|
25209
25271
|
type: Optional
|
|
@@ -25216,6 +25278,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
25216
25278
|
type: Input
|
|
25217
25279
|
}], allowRemove: [{
|
|
25218
25280
|
type: Input
|
|
25281
|
+
}], allowSorting: [{
|
|
25282
|
+
type: Input
|
|
25283
|
+
}], stacked: [{
|
|
25284
|
+
type: Input
|
|
25219
25285
|
}], _customChipInput: [{
|
|
25220
25286
|
type: ContentChild,
|
|
25221
25287
|
args: [MatFormFieldControl]
|
|
@@ -25432,9 +25498,13 @@ ElderSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
25432
25498
|
MatDialogModule, MatButtonModule,
|
|
25433
25499
|
MatInputModule, MatAutocompleteModule,
|
|
25434
25500
|
MatToolbarModule, MatProgressBarModule,
|
|
25435
|
-
MatProgressSpinnerModule,
|
|
25501
|
+
MatProgressSpinnerModule, MatChipsModule,
|
|
25502
|
+
MatTooltipModule,
|
|
25503
|
+
CdkDropList, CdkDrag,
|
|
25436
25504
|
TranslateModule,
|
|
25437
|
-
ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
|
|
25505
|
+
ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
|
|
25506
|
+
ElderAutocompleteModule,
|
|
25507
|
+
ElderPipesModule, ElderThemeModule, ElderChipsModule], exports: [ElderSelectComponent,
|
|
25438
25508
|
ElderSelectValueDirective,
|
|
25439
25509
|
TemplatedSelectionDialogComponent,
|
|
25440
25510
|
SelectionModelPopupDirective,
|
|
@@ -25452,9 +25522,12 @@ ElderSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
|
|
|
25452
25522
|
MatDialogModule, MatButtonModule,
|
|
25453
25523
|
MatInputModule, MatAutocompleteModule,
|
|
25454
25524
|
MatToolbarModule, MatProgressBarModule,
|
|
25455
|
-
MatProgressSpinnerModule,
|
|
25525
|
+
MatProgressSpinnerModule, MatChipsModule,
|
|
25526
|
+
MatTooltipModule,
|
|
25456
25527
|
TranslateModule,
|
|
25457
|
-
ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
|
|
25528
|
+
ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
|
|
25529
|
+
ElderAutocompleteModule,
|
|
25530
|
+
ElderPipesModule, ElderThemeModule, ElderChipsModule] });
|
|
25458
25531
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderSelectModule, decorators: [{
|
|
25459
25532
|
type: NgModule,
|
|
25460
25533
|
args: [{
|
|
@@ -25466,9 +25539,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
25466
25539
|
MatDialogModule, MatButtonModule,
|
|
25467
25540
|
MatInputModule, MatAutocompleteModule,
|
|
25468
25541
|
MatToolbarModule, MatProgressBarModule,
|
|
25469
|
-
MatProgressSpinnerModule,
|
|
25542
|
+
MatProgressSpinnerModule, MatChipsModule,
|
|
25543
|
+
MatTooltipModule,
|
|
25544
|
+
CdkDropList, CdkDrag,
|
|
25470
25545
|
TranslateModule,
|
|
25471
|
-
ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
|
|
25546
|
+
ElderFormsDirectivesModule, ElderTableModule, ElderInfiniteScrollModule,
|
|
25547
|
+
ElderAutocompleteModule,
|
|
25548
|
+
ElderPipesModule, ElderThemeModule, ElderChipsModule
|
|
25472
25549
|
],
|
|
25473
25550
|
declarations: [
|
|
25474
25551
|
ElderSelectComponent,
|
|
@@ -29525,5 +29602,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
29525
29602
|
* Generated bundle index. Do not edit.
|
|
29526
29603
|
*/
|
|
29527
29604
|
|
|
29528
|
-
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, ElderInfiniteScrollLegacyDirective, 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, naturalValueComparator, newElderTableModel, proxyControlContainer, registerLocale, runInZone, themeInit };
|
|
29605
|
+
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, 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 };
|
|
29529
29606
|
//# sourceMappingURL=elderbyte-ngx-starter.mjs.map
|