@solidev/data 0.0.1-dev.0 → 0.0.1-dev.2
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/auth/auth-interceptor.service.mjs +13 -5
- package/esm2020/lib/auth/auth.service.mjs +1 -1
- package/esm2020/lib/data/data-backend.mjs +3 -3
- package/esm2020/lib/data/data-model.mjs +15 -15
- package/esm2020/lib/data/data-query.mjs +7 -3
- package/esm2020/lib/data/fields/datetime.mjs +21 -6
- package/esm2020/lib/data/fields/numbers.mjs +11 -1
- package/esm2020/lib/dispedit/choice.pipe.mjs +5 -4
- package/esm2020/lib/dispedit/dispedit/dispedit.component.mjs +16 -8
- package/esm2020/lib/dispedit/factor.pipe.mjs +48 -0
- package/esm2020/lib/dispedit/factorc.pipe.mjs +48 -0
- package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +10 -8
- package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +11 -9
- package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +8 -5
- package/esm2020/lib/messages/message-zone/message-zone.component.mjs +4 -4
- package/esm2020/lib/messages/message.service.mjs +3 -3
- package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +3 -3
- package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +3 -3
- package/esm2020/lib/modellist/model-list-fields/model-list-fields.mjs +13 -13
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +15 -11
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +1 -4
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +8 -9
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +2 -33
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +3 -3
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +3 -3
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +3 -3
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +24 -0
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +47 -5
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +8 -6
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +8 -6
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +2 -2
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +27 -15
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +12 -3
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +33 -5
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +9 -8
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +5 -5
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +3 -3
- package/esm2020/lib/modellist/model-list-filters/model-list-filter.mjs +119 -15
- package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +3 -3
- package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +5 -5
- package/esm2020/lib/modellist/model-list-filters/model-list-filters.mjs +2 -2
- package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +4 -4
- package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +3 -3
- package/esm2020/lib/modellist/model-list.service.mjs +36 -16
- package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2020/lib/uploader/ng-file-drop.directive.mjs +3 -3
- package/esm2020/lib/uploader/ng-file-select.directive.mjs +3 -3
- package/esm2020/lib/uploader/ngx-uploader.module.mjs +4 -4
- package/esm2020/lib/utils/tab-memory.service.mjs +3 -3
- package/esm2020/public-api.mjs +9 -2
- package/fesm2015/solidev-data.mjs +738 -446
- package/fesm2015/solidev-data.mjs.map +1 -1
- package/fesm2020/solidev-data.mjs +733 -445
- package/fesm2020/solidev-data.mjs.map +1 -1
- package/lib/auth/auth-interceptor.service.d.ts +2 -1
- package/lib/data/data-model.d.ts +8 -6
- package/lib/data/data-query.d.ts +1 -0
- package/lib/data/fields/datetime.d.ts +1 -1
- package/lib/data/fields/numbers.d.ts +4 -0
- package/lib/dispedit/choice.pipe.d.ts +1 -1
- package/lib/dispedit/dispedit/dispedit.component.d.ts +1 -1
- package/lib/dispedit/factor.pipe.d.ts +12 -0
- package/lib/dispedit/factorc.pipe.d.ts +11 -0
- package/lib/dispedit/fkselect/fkselect.component.d.ts +1 -1
- package/lib/dispedit/m2mselect/m2mselect.component.d.ts +1 -1
- package/lib/dispedit/sdelete/sdelete.component.d.ts +2 -1
- package/lib/modellist/model-list-fields/model-list-fields.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.d.ts +0 -2
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.d.ts +1 -8
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.d.ts +35 -0
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +16 -2
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.d.ts +17 -3
- package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +2 -2
- package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.d.ts +3 -3
- package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +11 -5
- package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.d.ts +5 -3
- package/lib/modellist/model-list-filters/model-list-filter.d.ts +27 -6
- package/lib/modellist/model-list.service.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +8 -1
- package/esm2020/lib/dispedit/dispedit.module.mjs +0 -60
- package/lib/dispedit/dispedit.module.d.ts +0 -20
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, Component, Input, ViewChild,
|
|
2
|
+
import { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, Component, Input, ViewChild, Pipe, LOCALE_ID, DEFAULT_CURRENCY_CODE, EventEmitter, Output, Directive, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import 'reflect-metadata';
|
|
4
|
-
import * as
|
|
4
|
+
import * as i2$2 from '@angular/forms';
|
|
5
5
|
import { FormControl, Validators, FormGroup, UntypedFormControl, ReactiveFormsModule, NG_VALUE_ACCESSOR, UntypedFormGroup } from '@angular/forms';
|
|
6
|
-
import { throwError, ReplaySubject, combineLatest, of, takeUntil, debounceTime, Subject, distinctUntilChanged,
|
|
7
|
-
import { tap, switchMap, map, mergeMap, finalize, catchError,
|
|
6
|
+
import { throwError, ReplaySubject, combineLatest, share, of, takeUntil, NEVER, debounceTime, Subject, distinctUntilChanged, isObservable, firstValueFrom, timer, Observable, BehaviorSubject } from 'rxjs';
|
|
7
|
+
import { tap, switchMap, map, filter, mergeMap, finalize, catchError, take } from 'rxjs/operators';
|
|
8
8
|
import * as i2 from '@angular/platform-browser';
|
|
9
9
|
import { makeStateKey } from '@angular/platform-browser';
|
|
10
10
|
import * as i1$1 from '@angular/common';
|
|
11
|
-
import { isPlatformServer, CommonModule } from '@angular/common';
|
|
11
|
+
import { isPlatformServer, CommonModule, formatNumber, getCurrencySymbol, formatCurrency } from '@angular/common';
|
|
12
12
|
import * as i1 from '@angular/common/http';
|
|
13
13
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
14
14
|
import * as i4 from '@angular/cdk/drag-drop';
|
|
@@ -18,7 +18,6 @@ import { NgbOffcanvasModule, NgbDropdownModule, NgbTypeaheadModule, NgbPaginatio
|
|
|
18
18
|
import * as i3 from '@angular/cdk/scrolling';
|
|
19
19
|
import { CdkScrollableModule } from '@angular/cdk/scrolling';
|
|
20
20
|
import { __awaiter, __decorate, __param } from 'tslib';
|
|
21
|
-
import { A11yModule } from '@angular/cdk/a11y';
|
|
22
21
|
import { trigger, transition, style, animate } from '@angular/animations';
|
|
23
22
|
import { provideAnimations } from '@angular/platform-browser/animations';
|
|
24
23
|
import jwt_decode from 'jwt-decode';
|
|
@@ -246,6 +245,20 @@ class DataModel {
|
|
|
246
245
|
set _collection(coll) {
|
|
247
246
|
this._coll = coll;
|
|
248
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* HashMap of fields metadata (type, name, manager, etc...)
|
|
250
|
+
*/
|
|
251
|
+
get F() {
|
|
252
|
+
// istanbul ignore if
|
|
253
|
+
if (!this._F) {
|
|
254
|
+
throw new Error('Invalid data model, fields metadata is missing');
|
|
255
|
+
}
|
|
256
|
+
return this._F;
|
|
257
|
+
}
|
|
258
|
+
// Return field names iterator
|
|
259
|
+
get FN() {
|
|
260
|
+
return this.F.keys();
|
|
261
|
+
}
|
|
249
262
|
/**
|
|
250
263
|
* Loads model data from json.
|
|
251
264
|
* If partial is true, only fields with matching data keys will be loaded
|
|
@@ -314,16 +327,6 @@ class DataModel {
|
|
|
314
327
|
return result;
|
|
315
328
|
}));
|
|
316
329
|
}
|
|
317
|
-
/**
|
|
318
|
-
* HashMap of fields metadata (type, name, manager, etc...)
|
|
319
|
-
*/
|
|
320
|
-
get F() {
|
|
321
|
-
// istanbul ignore if
|
|
322
|
-
if (!this._F) {
|
|
323
|
-
throw new Error('Invalid data model, fields metadata is missing');
|
|
324
|
-
}
|
|
325
|
-
return this._F;
|
|
326
|
-
}
|
|
327
330
|
// Called on model, returns the manager for a field.
|
|
328
331
|
FM(field) {
|
|
329
332
|
if (this.F.has(field)) {
|
|
@@ -335,10 +338,6 @@ class DataModel {
|
|
|
335
338
|
FV(field) {
|
|
336
339
|
return this[field];
|
|
337
340
|
}
|
|
338
|
-
// Return field names iterator
|
|
339
|
-
get FN() {
|
|
340
|
-
return this.F.keys();
|
|
341
|
-
}
|
|
342
341
|
/**
|
|
343
342
|
* Set field value. If check is true, only set value if all validators pass.
|
|
344
343
|
*
|
|
@@ -520,7 +519,10 @@ class Queryset {
|
|
|
520
519
|
}
|
|
521
520
|
/** Full results observable (results, loading, meta) */
|
|
522
521
|
get full() {
|
|
523
|
-
|
|
522
|
+
if (!this._full) {
|
|
523
|
+
this._full = combineLatest([this.results, this.loading, this.meta]);
|
|
524
|
+
}
|
|
525
|
+
return this._full.pipe(share());
|
|
524
526
|
}
|
|
525
527
|
/**
|
|
526
528
|
* Update current filter data. Null or undefined values are removed from filter data.
|
|
@@ -597,6 +599,7 @@ class Queryset {
|
|
|
597
599
|
return f;
|
|
598
600
|
}
|
|
599
601
|
get(refresh = true) {
|
|
602
|
+
console.log('queryset:get', this, refresh);
|
|
600
603
|
if (!refresh && !this._pristine) {
|
|
601
604
|
return this.results;
|
|
602
605
|
}
|
|
@@ -806,9 +809,9 @@ class DataBackend {
|
|
|
806
809
|
return this._cachedGet(collection, url, { headers, params });
|
|
807
810
|
}
|
|
808
811
|
}
|
|
809
|
-
DataBackend.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
810
|
-
DataBackend.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
811
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
812
|
+
DataBackend.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataBackend, deps: [{ token: i1.HttpClient }, { token: i2.TransferState }, { token: PLATFORM_ID }, { token: DATA_API_URL }, { token: DATA_MAX_TRANSFERSTATE_TIME, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
813
|
+
DataBackend.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataBackend, providedIn: 'root' });
|
|
814
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataBackend, decorators: [{
|
|
812
815
|
type: Injectable,
|
|
813
816
|
args: [{
|
|
814
817
|
providedIn: 'root',
|
|
@@ -860,7 +863,7 @@ class ModelListFields {
|
|
|
860
863
|
}
|
|
861
864
|
// Prepare allowed fields (all fields if not set or empty)
|
|
862
865
|
let allowed;
|
|
863
|
-
if ((params === null || params === void 0 ? void 0 : params.allowed) === undefined || (params === null || params === void 0 ? void 0 : params.allowed) ===
|
|
866
|
+
if ((params === null || params === void 0 ? void 0 : params.allowed) === undefined || (params === null || params === void 0 ? void 0 : params.allowed.length) === 0) {
|
|
864
867
|
allowed = Array.from(m.FN);
|
|
865
868
|
for (const c of custom) {
|
|
866
869
|
allowed.push(c.name);
|
|
@@ -1022,6 +1025,17 @@ class ModelListFields {
|
|
|
1022
1025
|
getAtPos(pos) {
|
|
1023
1026
|
return this.__fields[pos] || null;
|
|
1024
1027
|
}
|
|
1028
|
+
setPosition(fname, position) {
|
|
1029
|
+
const f = this.get(fname);
|
|
1030
|
+
if (f) {
|
|
1031
|
+
f.position = position;
|
|
1032
|
+
}
|
|
1033
|
+
else {
|
|
1034
|
+
console.error('Field not found', f);
|
|
1035
|
+
}
|
|
1036
|
+
this._update();
|
|
1037
|
+
return this._enabled;
|
|
1038
|
+
}
|
|
1025
1039
|
_update() {
|
|
1026
1040
|
this.__fields.sort((a, b) => a.position - b.position);
|
|
1027
1041
|
let i = 0;
|
|
@@ -1039,17 +1053,6 @@ class ModelListFields {
|
|
|
1039
1053
|
this._output.next(this._enabled);
|
|
1040
1054
|
this._fields.next(this.__fields);
|
|
1041
1055
|
}
|
|
1042
|
-
setPosition(fname, position) {
|
|
1043
|
-
const f = this.get(fname);
|
|
1044
|
-
if (f) {
|
|
1045
|
-
f.position = position;
|
|
1046
|
-
}
|
|
1047
|
-
else {
|
|
1048
|
-
console.error('Field not found', f);
|
|
1049
|
-
}
|
|
1050
|
-
this._update();
|
|
1051
|
-
return this._enabled;
|
|
1052
|
-
}
|
|
1053
1056
|
}
|
|
1054
1057
|
|
|
1055
1058
|
class ModelListPaginator {
|
|
@@ -1221,7 +1224,7 @@ class ModelListFilters {
|
|
|
1221
1224
|
const tmp = Array.from((params === null || params === void 0 ? void 0 : params.filters) || []);
|
|
1222
1225
|
// Prepare allowed filters (all filters if not set or empty)
|
|
1223
1226
|
let allowed = [];
|
|
1224
|
-
if ((params === null || params === void 0 ? void 0 : params.allowed) === undefined || (params === null || params === void 0 ? void 0 : params.allowed) ===
|
|
1227
|
+
if ((params === null || params === void 0 ? void 0 : params.allowed) === undefined || (params === null || params === void 0 ? void 0 : params.allowed.length) === 0) {
|
|
1225
1228
|
for (const f of tmp) {
|
|
1226
1229
|
allowed.push(f.name);
|
|
1227
1230
|
}
|
|
@@ -1298,16 +1301,36 @@ class ModelList {
|
|
|
1298
1301
|
this.name = name;
|
|
1299
1302
|
}
|
|
1300
1303
|
get results() {
|
|
1301
|
-
|
|
1304
|
+
if (!this._results) {
|
|
1305
|
+
this._results = this.queryset.results.pipe(
|
|
1306
|
+
// tap(() => console.log('RESULTS')),
|
|
1307
|
+
share(), takeUntil(this.unsubscribe || NEVER));
|
|
1308
|
+
}
|
|
1309
|
+
return this._results;
|
|
1302
1310
|
}
|
|
1303
1311
|
get meta() {
|
|
1304
|
-
|
|
1312
|
+
if (!this._meta) {
|
|
1313
|
+
this._meta = this.queryset.meta.pipe(
|
|
1314
|
+
// tap(() => console.log('META')),
|
|
1315
|
+
share(), takeUntil(this.unsubscribe || NEVER));
|
|
1316
|
+
}
|
|
1317
|
+
return this._meta;
|
|
1305
1318
|
}
|
|
1306
1319
|
get loading() {
|
|
1307
|
-
|
|
1320
|
+
if (!this._loading) {
|
|
1321
|
+
this._loading = this.queryset.loading.pipe(
|
|
1322
|
+
// tap(() => console.log('LOADING')),
|
|
1323
|
+
share(), takeUntil(this.unsubscribe || NEVER));
|
|
1324
|
+
}
|
|
1325
|
+
return this._loading;
|
|
1308
1326
|
}
|
|
1309
1327
|
get full() {
|
|
1310
|
-
|
|
1328
|
+
if (!this._full) {
|
|
1329
|
+
this._full = this.queryset.full.pipe(
|
|
1330
|
+
// tap(() => console.log('FULL')),
|
|
1331
|
+
share(), takeUntil(this.unsubscribe || NEVER));
|
|
1332
|
+
}
|
|
1333
|
+
return this._full;
|
|
1311
1334
|
}
|
|
1312
1335
|
start(params) {
|
|
1313
1336
|
let filter$;
|
|
@@ -1328,7 +1351,7 @@ class ModelList {
|
|
|
1328
1351
|
this.sorter.output,
|
|
1329
1352
|
this.fields.output,
|
|
1330
1353
|
])
|
|
1331
|
-
.pipe(
|
|
1354
|
+
.pipe(debounceTime(200), switchMap(([reload, filter, manualFilter, paginator, sorter, fields]) => {
|
|
1332
1355
|
this.queryset
|
|
1333
1356
|
.filter(filter)
|
|
1334
1357
|
.filter(manualFilter || {}, true)
|
|
@@ -1337,14 +1360,14 @@ class ModelList {
|
|
|
1337
1360
|
.sort(...sorter)
|
|
1338
1361
|
.setFields(fields);
|
|
1339
1362
|
return this.queryset.get(true);
|
|
1340
|
-
}))
|
|
1363
|
+
}), takeUntil(this.unsubscribe || NEVER))
|
|
1341
1364
|
.subscribe({
|
|
1342
1365
|
next: (results) => { },
|
|
1343
1366
|
error: (error) => {
|
|
1344
1367
|
console.error('Error while getting model list results : ', error);
|
|
1345
1368
|
},
|
|
1346
1369
|
complete: () => {
|
|
1347
|
-
console.log('modellist:completed', this.name);
|
|
1370
|
+
// console.log('modellist:completed', this.name);
|
|
1348
1371
|
this.started = false;
|
|
1349
1372
|
},
|
|
1350
1373
|
});
|
|
@@ -1354,11 +1377,11 @@ class ModelList {
|
|
|
1354
1377
|
}
|
|
1355
1378
|
class ModelListService {
|
|
1356
1379
|
constructor() {
|
|
1357
|
-
this._instances =
|
|
1380
|
+
this._instances = new Map();
|
|
1358
1381
|
}
|
|
1359
1382
|
get(name, collection, defaults) {
|
|
1360
1383
|
let ml;
|
|
1361
|
-
if (!name || !this._instances
|
|
1384
|
+
if (!name || !this._instances.has(name) || !defaults.keep) {
|
|
1362
1385
|
ml = new ModelList(name);
|
|
1363
1386
|
ml.queryset = collection.queryset();
|
|
1364
1387
|
ml.fields = new ModelListFields(collection, defaults.fields);
|
|
@@ -1366,11 +1389,11 @@ class ModelListService {
|
|
|
1366
1389
|
ml.paginator = new ModelListPaginator(defaults.paginator);
|
|
1367
1390
|
ml.filters = new ModelListFilters(defaults.filters);
|
|
1368
1391
|
if (defaults.keep) {
|
|
1369
|
-
this._instances
|
|
1392
|
+
this._instances.set(name, ml);
|
|
1370
1393
|
}
|
|
1371
1394
|
}
|
|
1372
1395
|
else {
|
|
1373
|
-
ml = this._instances
|
|
1396
|
+
ml = this._instances.get(name);
|
|
1374
1397
|
}
|
|
1375
1398
|
if (!ml.started) {
|
|
1376
1399
|
if (defaults.reload) {
|
|
@@ -1390,9 +1413,9 @@ class ModelListService {
|
|
|
1390
1413
|
return ml;
|
|
1391
1414
|
}
|
|
1392
1415
|
}
|
|
1393
|
-
ModelListService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1394
|
-
ModelListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
1395
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1416
|
+
ModelListService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1417
|
+
ModelListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListService, providedIn: 'root' });
|
|
1418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListService, decorators: [{
|
|
1396
1419
|
type: Injectable,
|
|
1397
1420
|
args: [{
|
|
1398
1421
|
providedIn: 'root',
|
|
@@ -1435,9 +1458,9 @@ class ModelListFieldsSelectorComponent {
|
|
|
1435
1458
|
}
|
|
1436
1459
|
}
|
|
1437
1460
|
}
|
|
1438
|
-
ModelListFieldsSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1439
|
-
ModelListFieldsSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1440
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1461
|
+
ModelListFieldsSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFieldsSelectorComponent, deps: [{ token: i2$1.NgbOffcanvas }], target: i0.ɵɵFactoryTarget.Component });
|
|
1462
|
+
ModelListFieldsSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListFieldsSelectorComponent, isStandalone: true, selector: "data-model-list-fields-selector", inputs: { list: "list" }, providers: [{ provide: CDK_DRAG_CONFIG, useValue: DragConfig }], viewQueries: [{ propertyName: "ofctpl", first: true, predicate: ["selector"], descendants: true, static: true }], ngImport: i0, template: "<i class=\"bi bi-list-ul\" (click)=\"open()\" role=\"button\"></i>\n<ng-template #selector let-offcanvas>\n <div class=\"offcanvas-header\">\n <h4 class=\"offcanvas-title\">Choix des champs</h4>\n <button class=\"btn-close\" type=\"button\" aria-label=\"Close\" (click)=\"offcanvas.dismiss('x')\"></button>\n </div>\n <div class=\"offcanvas-body\" cdkScrollable>\n <div class=\"fields-list\" cdkDropList cdkDropListLockAxis=\"y\" (cdkDropListDropped)=\"drop($event)\" *ngIf=\"list.fields.fields|async as fields\">\n <ng-container *ngFor=\"let f of fields\">\n <div class=\"field-box\" cdkDrag (click)=\"toggle(f)\" [cdkDragData]=\"f.name\" [class.enabled]=\"f.enabled\" [class.compact]=\"fields.length>30\">{{f.label}}</div>\n </ng-container>\n </div>\n </div>\n</ng-template>", styles: [".fields-list{width:100%;max-width:100%;border:var(--bs-border-style) var(--bs-border-width) var(--bs-border-color);min-height:50px;display:block;background:var(--bs-body-bg-rgb);border-radius:var(--bs-border-radius-sm);overflow:hidden}.field-box{padding:.5rem 1rem;border-bottom:solid 1px #ccc;color:var(--bs-secondary);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:white;font-size:var(--bs-body-font-size)}.field-box.compact{padding:.2rem 1rem;font-size:.8rem}.field-box.enabled{background-color:#90ee90;color:var(--bs-black)}.cdk-drag-preview{box-sizing:border-box;border-radius:var(--bs-border-radius-sm);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)}.field-box:last-child{border:none}.fields-list.cdk-drop-list-dragging .field-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: i4.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: i4.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: "ngmodule", type: CdkScrollableModule }, { kind: "ngmodule", type: NgbOffcanvasModule }] });
|
|
1463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFieldsSelectorComponent, decorators: [{
|
|
1441
1464
|
type: Component,
|
|
1442
1465
|
args: [{ selector: 'data-model-list-fields-selector', standalone: true, imports: [
|
|
1443
1466
|
CommonModule,
|
|
@@ -1486,9 +1509,9 @@ class ModelListSorterComponent {
|
|
|
1486
1509
|
this.list.sorter.unset(this.field);
|
|
1487
1510
|
}
|
|
1488
1511
|
}
|
|
1489
|
-
ModelListSorterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1490
|
-
ModelListSorterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1491
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1512
|
+
ModelListSorterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListSorterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1513
|
+
ModelListSorterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListSorterComponent, isStandalone: true, selector: "data-model-list-sorter", inputs: { list: "list", field: "field" }, ngImport: i0, template: "<span class=\"dirs\"><span *ngIf=\"getOrder()>=0 || getCount()>1\" (click)=\"cancel()\" role=\"button\"><span class=\"count\" *ngIf=\"getCount()>1\"> {{getOrder()}}</span><span class=\"bi bi-x\"></span></span><span class=\"bi bi-sort-down-alt\" (click)=\"setUp()\" [class.active]=\"isUp()\" role=\"button\"></span><span class=\"bi bi-sort-down\" (click)=\"setDown()\" [class.active]=\"isDown()\" role=\"button\"></span> </span>\n<ng-content></ng-content>", styles: [".dirs{color:#d3d3d3}.dirs .count{font-size:.7rem;margin-right:-.1rem;vertical-align:super}.active{color:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
1514
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListSorterComponent, decorators: [{
|
|
1492
1515
|
type: Component,
|
|
1493
1516
|
args: [{ selector: 'data-model-list-sorter', standalone: true, imports: [CommonModule], template: "<span class=\"dirs\"><span *ngIf=\"getOrder()>=0 || getCount()>1\" (click)=\"cancel()\" role=\"button\"><span class=\"count\" *ngIf=\"getCount()>1\"> {{getOrder()}}</span><span class=\"bi bi-x\"></span></span><span class=\"bi bi-sort-down-alt\" (click)=\"setUp()\" [class.active]=\"isUp()\" role=\"button\"></span><span class=\"bi bi-sort-down\" (click)=\"setDown()\" [class.active]=\"isDown()\" role=\"button\"></span> </span>\n<ng-content></ng-content>", styles: [".dirs{color:#d3d3d3}.dirs .count{font-size:.7rem;margin-right:-.1rem;vertical-align:super}.active{color:#000}\n"] }]
|
|
1494
1517
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1509,9 +1532,9 @@ class ModelListFieldHeaderComponent {
|
|
|
1509
1532
|
this.list.fields.enable(f.name);
|
|
1510
1533
|
}
|
|
1511
1534
|
}
|
|
1512
|
-
ModelListFieldHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1513
|
-
ModelListFieldHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1514
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1535
|
+
ModelListFieldHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFieldHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1536
|
+
ModelListFieldHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListFieldHeaderComponent, isStandalone: true, selector: "data-model-list-field-header", inputs: { list: "list", field: "field", sort: "sort", sortField: "sortField" }, ngImport: i0, template: "\n<ng-template #label><span #ref>\n <ng-content></ng-content></span><span *ngIf=\"!ref.children.length\">{{list.fields.get(field)?.label||field}}</span></ng-template>\n<div class=\"d-flex flex-row justify-content-between slabel\" [class.active]=\"mnu.isOpen()\">\n <div class=\"flex-grow-1\">\n <data-model-list-sorter [list]=\"list\" [field]=\"sortField||field\" *ngIf=\"sort\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </data-model-list-sorter>\n <ng-container *ngIf=\"!sort\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </ng-container>\n </div>\n <div class=\"navicons d-flex flex-row\"><i class=\"bi bi-caret-left-fill\" role=\"button\" (click)=\"list.fields.move(field, 'before')\"></i>\n <div ngbDropdown #mnu=\"ngbDropdown\"><i class=\"bi bi-record\" ngbDropdownToggle></i>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"disable()\"><i class=\"bi bi-trash me-2\"></i>Supprimer</button>\n <h6 class=\"dropdown-header\">Ajouter une colonne apr\u00E8s</h6>\n <ng-container *ngFor=\"let f of list.fields.fields|async\">\n <ng-container *ngIf=\"f.allowed && !f.enabled\">\n <button ngbDropdownItem (click)=\"enable(f)\"><i class=\"bi bi-plus-circle me-2\"></i>{{f.label||f.name}}</button>\n </ng-container>\n </ng-container>\n </div>\n </div><i class=\"bi bi-caret-right-fill\" role=\"button\" (click)=\"list.fields.move(field, 'after')\"></i>\n </div>\n</div>", styles: [".slabel .navicons{opacity:0}.slabel:hover .navicons,.slabel.active .navicons{opacity:1!important}.dropdown-toggle:after{display:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i2$1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i2$1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i2$1.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i2$1.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: ModelListSorterComponent, selector: "data-model-list-sorter", inputs: ["list", "field"] }] });
|
|
1537
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFieldHeaderComponent, decorators: [{
|
|
1515
1538
|
type: Component,
|
|
1516
1539
|
args: [{ selector: 'data-model-list-field-header', standalone: true, imports: [CommonModule, NgbDropdownModule, ModelListSorterComponent], template: "\n<ng-template #label><span #ref>\n <ng-content></ng-content></span><span *ngIf=\"!ref.children.length\">{{list.fields.get(field)?.label||field}}</span></ng-template>\n<div class=\"d-flex flex-row justify-content-between slabel\" [class.active]=\"mnu.isOpen()\">\n <div class=\"flex-grow-1\">\n <data-model-list-sorter [list]=\"list\" [field]=\"sortField||field\" *ngIf=\"sort\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </data-model-list-sorter>\n <ng-container *ngIf=\"!sort\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </ng-container>\n </div>\n <div class=\"navicons d-flex flex-row\"><i class=\"bi bi-caret-left-fill\" role=\"button\" (click)=\"list.fields.move(field, 'before')\"></i>\n <div ngbDropdown #mnu=\"ngbDropdown\"><i class=\"bi bi-record\" ngbDropdownToggle></i>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"disable()\"><i class=\"bi bi-trash me-2\"></i>Supprimer</button>\n <h6 class=\"dropdown-header\">Ajouter une colonne apr\u00E8s</h6>\n <ng-container *ngFor=\"let f of list.fields.fields|async\">\n <ng-container *ngIf=\"f.allowed && !f.enabled\">\n <button ngbDropdownItem (click)=\"enable(f)\"><i class=\"bi bi-plus-circle me-2\"></i>{{f.label||f.name}}</button>\n </ng-container>\n </ng-container>\n </div>\n </div><i class=\"bi bi-caret-right-fill\" role=\"button\" (click)=\"list.fields.move(field, 'after')\"></i>\n </div>\n</div>", styles: [".slabel .navicons{opacity:0}.slabel:hover .navicons,.slabel.active .navicons{opacity:1!important}.dropdown-toggle:after{display:none!important}\n"] }]
|
|
1517
1540
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1535,11 +1558,11 @@ class ModelListFiltersSelectComponent {
|
|
|
1535
1558
|
this.list.filters.update();
|
|
1536
1559
|
}
|
|
1537
1560
|
}
|
|
1538
|
-
ModelListFiltersSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1539
|
-
ModelListFiltersSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1540
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1561
|
+
ModelListFiltersSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFiltersSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1562
|
+
ModelListFiltersSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListFiltersSelectComponent, isStandalone: true, selector: "data-model-list-filters-select", inputs: { list: "list", containerClasses: "containerClasses", itemActiveClasses: "itemActiveClasses", itemInactiveClasses: "itemInactiveClasses" }, ngImport: i0, template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] });
|
|
1563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFiltersSelectComponent, decorators: [{
|
|
1541
1564
|
type: Component,
|
|
1542
|
-
args: [{ selector: 'data-model-list-filters-select', standalone: true, imports: [CommonModule], template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>" }]
|
|
1565
|
+
args: [{ selector: 'data-model-list-filters-select', standalone: true, imports: [CommonModule], template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>" }]
|
|
1543
1566
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1544
1567
|
type: Input
|
|
1545
1568
|
}], containerClasses: [{
|
|
@@ -1557,7 +1580,7 @@ class ModelListTextFilterComponent {
|
|
|
1557
1580
|
}
|
|
1558
1581
|
ngOnInit() {
|
|
1559
1582
|
this.filter.valueChanges.subscribe((val) => {
|
|
1560
|
-
this.fc.setValue(val, { emitEvent: false });
|
|
1583
|
+
this.fc.setValue(val.value, { emitEvent: false });
|
|
1561
1584
|
});
|
|
1562
1585
|
this.fc.valueChanges.pipe(debounceTime(250)).subscribe((val) => {
|
|
1563
1586
|
if (this.filter.set(val, val)) {
|
|
@@ -1570,9 +1593,9 @@ class ModelListTextFilterComponent {
|
|
|
1570
1593
|
this.list.filters.update();
|
|
1571
1594
|
}
|
|
1572
1595
|
}
|
|
1573
|
-
ModelListTextFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1574
|
-
ModelListTextFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1575
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1596
|
+
ModelListTextFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListTextFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1597
|
+
ModelListTextFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListTextFilterComponent, isStandalone: true, selector: "data-model-list-text-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"text\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
1598
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListTextFilterComponent, decorators: [{
|
|
1576
1599
|
type: Component,
|
|
1577
1600
|
args: [{ selector: 'data-model-list-text-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" type=\"text\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n</div>" }]
|
|
1578
1601
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1593,12 +1616,12 @@ class ModelListAutocompleteFilterComponent {
|
|
|
1593
1616
|
}
|
|
1594
1617
|
ngOnInit() {
|
|
1595
1618
|
this._setDisplay();
|
|
1596
|
-
this.filter.valueChanges.subscribe((val) => {
|
|
1597
|
-
this.fc.setValue(val, { emitEvent: false });
|
|
1598
|
-
});
|
|
1599
1619
|
this.fc.valueChanges.pipe(debounceTime(250)).subscribe((val) => {
|
|
1600
|
-
if (
|
|
1601
|
-
this.
|
|
1620
|
+
if (val) {
|
|
1621
|
+
console.log('value changed', val, this._display(val));
|
|
1622
|
+
if (this.filter.set(val.id, this._display(val))) {
|
|
1623
|
+
this.list.filters.update();
|
|
1624
|
+
}
|
|
1602
1625
|
}
|
|
1603
1626
|
});
|
|
1604
1627
|
}
|
|
@@ -1650,24 +1673,28 @@ class ModelListAutocompleteFilterComponent {
|
|
|
1650
1673
|
return '';
|
|
1651
1674
|
}
|
|
1652
1675
|
_search(text$) {
|
|
1653
|
-
return text$.pipe(
|
|
1676
|
+
return text$.pipe(debounceTime(750), distinctUntilChanged(), switchMap((term) => {
|
|
1654
1677
|
var _a;
|
|
1655
1678
|
const f = {};
|
|
1679
|
+
// Generate filter
|
|
1656
1680
|
for (const k of Object.keys(this.filter.filter)) {
|
|
1657
1681
|
if (this.filter.filter[k] !== null ||
|
|
1658
1682
|
this.filter.filter[k] !== undefined) {
|
|
1659
1683
|
f[k] = this.filter.filter[k];
|
|
1660
1684
|
}
|
|
1661
1685
|
}
|
|
1686
|
+
// Add search param
|
|
1662
1687
|
f[this.filter.searchparam] = term;
|
|
1688
|
+
// Update queryset filter
|
|
1663
1689
|
(_a = this.filter.queryset) === null || _a === void 0 ? void 0 : _a.filter(f);
|
|
1690
|
+
// Launch queryset
|
|
1664
1691
|
return this.filter.queryset.get();
|
|
1665
|
-
}));
|
|
1692
|
+
}), takeUntil(this._subscription));
|
|
1666
1693
|
}
|
|
1667
1694
|
}
|
|
1668
|
-
ModelListAutocompleteFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1669
|
-
ModelListAutocompleteFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1670
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1695
|
+
ModelListAutocompleteFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListAutocompleteFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1696
|
+
ModelListAutocompleteFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListAutocompleteFilterComponent, isStandalone: true, selector: "data-model-list-autocomplete-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i2$1.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
1697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListAutocompleteFilterComponent, decorators: [{
|
|
1671
1698
|
type: Component,
|
|
1672
1699
|
args: [{ selector: 'data-model-list-autocomplete-filter', standalone: true, imports: [CommonModule, NgbTypeaheadModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n</div>" }]
|
|
1673
1700
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1679,17 +1706,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1679
1706
|
}] } });
|
|
1680
1707
|
|
|
1681
1708
|
class ModelListAutocompleteMultiFilterComponent extends ModelListAutocompleteFilterComponent {
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
}
|
|
1709
|
+
unset(value, desc) {
|
|
1710
|
+
this.filter.unset(value, desc);
|
|
1711
|
+
this.list.filters.update();
|
|
1686
1712
|
}
|
|
1687
1713
|
}
|
|
1688
|
-
ModelListAutocompleteMultiFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1689
|
-
ModelListAutocompleteMultiFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1714
|
+
ModelListAutocompleteMultiFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListAutocompleteMultiFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1715
|
+
ModelListAutocompleteMultiFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListAutocompleteMultiFilterComponent, isStandalone: true, selector: "data-model-list-autocomplete-multi-filter", inputs: { filter: "filter" }, usesInheritance: true, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i2$1.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
1716
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListAutocompleteMultiFilterComponent, decorators: [{
|
|
1691
1717
|
type: Component,
|
|
1692
|
-
args: [{ selector: 'data-model-list-autocomplete-multi-filter', standalone: true, imports: [CommonModule, NgbTypeaheadModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n <div class=\"mt-1\"
|
|
1718
|
+
args: [{ selector: 'data-model-list-autocomplete-multi-filter', standalone: true, imports: [CommonModule, NgbTypeaheadModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>" }]
|
|
1693
1719
|
}], propDecorators: { filter: [{
|
|
1694
1720
|
type: Input
|
|
1695
1721
|
}] } });
|
|
@@ -1699,9 +1725,9 @@ class ModelListDatetimeFilterComponent {
|
|
|
1699
1725
|
this.classes = '';
|
|
1700
1726
|
}
|
|
1701
1727
|
}
|
|
1702
|
-
ModelListDatetimeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1703
|
-
ModelListDatetimeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1704
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1728
|
+
ModelListDatetimeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListDatetimeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1729
|
+
ModelListDatetimeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListDatetimeFilterComponent, isStandalone: true, selector: "data-model-list-datetime-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "<p>model-list-datetime-filter works!</p>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
1730
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListDatetimeFilterComponent, decorators: [{
|
|
1705
1731
|
type: Component,
|
|
1706
1732
|
args: [{ selector: 'data-model-list-datetime-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-datetime-filter works!</p>" }]
|
|
1707
1733
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1717,9 +1743,9 @@ class ModelListDatetimeRangeFilterComponent {
|
|
|
1717
1743
|
this.classes = '';
|
|
1718
1744
|
}
|
|
1719
1745
|
}
|
|
1720
|
-
ModelListDatetimeRangeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1721
|
-
ModelListDatetimeRangeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1722
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1746
|
+
ModelListDatetimeRangeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListDatetimeRangeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1747
|
+
ModelListDatetimeRangeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListDatetimeRangeFilterComponent, isStandalone: true, selector: "data-model-list-datetime-range-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "<p>model-list-datetime-range-filter works!</p>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
1748
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListDatetimeRangeFilterComponent, decorators: [{
|
|
1723
1749
|
type: Component,
|
|
1724
1750
|
args: [{ selector: 'data-model-list-datetime-range-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-datetime-range-filter works!</p>" }]
|
|
1725
1751
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1735,9 +1761,9 @@ class ModelListFlagsFilterComponent {
|
|
|
1735
1761
|
this.classes = '';
|
|
1736
1762
|
}
|
|
1737
1763
|
}
|
|
1738
|
-
ModelListFlagsFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1739
|
-
ModelListFlagsFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1740
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1764
|
+
ModelListFlagsFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFlagsFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1765
|
+
ModelListFlagsFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListFlagsFilterComponent, isStandalone: true, selector: "data-model-list-flags-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "<p>model-list-flags-filter works!</p>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
1766
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFlagsFilterComponent, decorators: [{
|
|
1741
1767
|
type: Component,
|
|
1742
1768
|
args: [{ selector: 'data-model-list-flags-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-flags-filter works!</p>" }]
|
|
1743
1769
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1751,13 +1777,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1751
1777
|
class ModelListGeodistanceFilterComponent {
|
|
1752
1778
|
constructor() {
|
|
1753
1779
|
this.classes = '';
|
|
1780
|
+
this.fc = new FormControl();
|
|
1781
|
+
this.fd = new FormControl('');
|
|
1782
|
+
this.search = this._search.bind(this);
|
|
1783
|
+
this.display = this._display.bind(this);
|
|
1784
|
+
this._subscription = new Subject();
|
|
1785
|
+
}
|
|
1786
|
+
ngOnInit() {
|
|
1787
|
+
const address = this.fc.valueChanges.pipe(debounceTime(250), filter((val) => !!val));
|
|
1788
|
+
const distance = this.fd.valueChanges.pipe(filter((d) => !!d));
|
|
1789
|
+
combineLatest([address, distance]).subscribe(([val, dist]) => {
|
|
1790
|
+
if (this.filter.set(`${dist},${val.lng},${val.lat}`, val.label)) {
|
|
1791
|
+
this.list.filters.update();
|
|
1792
|
+
}
|
|
1793
|
+
});
|
|
1794
|
+
}
|
|
1795
|
+
disable() {
|
|
1796
|
+
this.filter.enabled = false;
|
|
1797
|
+
this.list.filters.update();
|
|
1798
|
+
}
|
|
1799
|
+
ngOnDestroy() {
|
|
1800
|
+
this._subscription.next();
|
|
1801
|
+
this._subscription.complete();
|
|
1802
|
+
}
|
|
1803
|
+
_display(x) {
|
|
1804
|
+
return `${x.label}`;
|
|
1805
|
+
}
|
|
1806
|
+
_search(text$) {
|
|
1807
|
+
return text$.pipe(debounceTime(750), distinctUntilChanged(), switchMap((term) => this.filter.geolocator(term)));
|
|
1808
|
+
}
|
|
1809
|
+
scrollAction($event) {
|
|
1810
|
+
if (!this.filter.scroll) {
|
|
1811
|
+
return;
|
|
1812
|
+
}
|
|
1813
|
+
const elem = $event.currentTarget.nextElementSibling.getElementsByClassName('active')[0];
|
|
1814
|
+
elem.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
1754
1815
|
}
|
|
1755
1816
|
}
|
|
1756
|
-
ModelListGeodistanceFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1757
|
-
ModelListGeodistanceFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1758
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1817
|
+
ModelListGeodistanceFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListGeodistanceFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1818
|
+
ModelListGeodistanceFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListGeodistanceFilterComponent, isStandalone: true, selector: "data-model-list-geodistance-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"row g-1\">\n <div class=\"col-4\">\n <select class=\"form-select\" [formControl]=\"fd\">\n <option value=\"\">Distance</option>\n <option value=\"lte,10\">< 10 km</option>\n <option value=\"lte,20\">< 20 km</option>\n <option value=\"lte,30\">< 30 km</option>\n <option value=\"lte,50\">< 50 km</option>\n <option value=\"lte,80\">< 80 km</option>\n <option value=\"lte,100\">< 100 km</option>\n <option value=\"lte,150\">< 150 km</option>\n <option value=\"lte,200\">< 200 km</option>\n <option value=\"lte,250\">< 250 km</option>\n <option value=\"lte,300\">< 300 km</option>\n <option value=\"lte,500\">< 500 km</option>\n <option value=\"lte,1000\">< 1000 km</option>\n </select>\n </div>\n <div class=\"col-8\">\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i2$1.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.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: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
1819
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListGeodistanceFilterComponent, decorators: [{
|
|
1759
1820
|
type: Component,
|
|
1760
|
-
args: [{ selector: 'data-model-list-geodistance-filter', standalone: true, imports: [CommonModule], template: "<
|
|
1821
|
+
args: [{ selector: 'data-model-list-geodistance-filter', standalone: true, imports: [CommonModule, NgbTypeaheadModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <div class=\"row g-1\">\n <div class=\"col-4\">\n <select class=\"form-select\" [formControl]=\"fd\">\n <option value=\"\">Distance</option>\n <option value=\"lte,10\">< 10 km</option>\n <option value=\"lte,20\">< 20 km</option>\n <option value=\"lte,30\">< 30 km</option>\n <option value=\"lte,50\">< 50 km</option>\n <option value=\"lte,80\">< 80 km</option>\n <option value=\"lte,100\">< 100 km</option>\n <option value=\"lte,150\">< 150 km</option>\n <option value=\"lte,200\">< 200 km</option>\n <option value=\"lte,250\">< 250 km</option>\n <option value=\"lte,300\">< 300 km</option>\n <option value=\"lte,500\">< 500 km</option>\n <option value=\"lte,1000\">< 1000 km</option>\n </select>\n </div>\n <div class=\"col-8\">\n <input class=\"form-control\" [formControl]=\"fc\" [ngbTypeahead]=\"search\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"display\" [resultFormatter]=\"display\" [placeholder]=\"filter.help\" (keyup.arrowDown)=\"scrollAction($event)\" (keyup.arrowUp)=\"scrollAction($event)\" #th=\"ngbTypeahead\" [class.tascroll]=\"filter.scroll\">\n </div>\n </div>\n</div>" }]
|
|
1761
1822
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1762
1823
|
type: Input
|
|
1763
1824
|
}], filter: [{
|
|
@@ -1769,18 +1830,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1769
1830
|
class ModelListSelectFilterComponent {
|
|
1770
1831
|
constructor() {
|
|
1771
1832
|
this.classes = '';
|
|
1772
|
-
this.fc = new
|
|
1833
|
+
this.fc = new FormControl(null);
|
|
1773
1834
|
}
|
|
1774
1835
|
ngOnInit() {
|
|
1775
1836
|
this.filter.valueChanges.subscribe((val) => {
|
|
1776
|
-
|
|
1837
|
+
console.log('Changing value', val);
|
|
1838
|
+
this.fc.setValue(val ? val.value : null, {
|
|
1839
|
+
emitEvent: false,
|
|
1840
|
+
});
|
|
1777
1841
|
});
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1842
|
+
combineLatest([
|
|
1843
|
+
this.filter.choices,
|
|
1844
|
+
this.fc.valueChanges.pipe(debounceTime(250)),
|
|
1845
|
+
]).subscribe(([choices, val]) => {
|
|
1846
|
+
if (val === null) {
|
|
1847
|
+
this.filter.clear();
|
|
1848
|
+
this.list.filters.update();
|
|
1849
|
+
}
|
|
1850
|
+
else {
|
|
1851
|
+
for (const ch of choices) {
|
|
1852
|
+
if (ch.value === val) {
|
|
1853
|
+
if (this.filter.set(ch.value, ch.desc)) {
|
|
1854
|
+
this.list.filters.update();
|
|
1855
|
+
break;
|
|
1856
|
+
}
|
|
1784
1857
|
}
|
|
1785
1858
|
}
|
|
1786
1859
|
}
|
|
@@ -1791,11 +1864,11 @@ class ModelListSelectFilterComponent {
|
|
|
1791
1864
|
this.list.filters.update();
|
|
1792
1865
|
}
|
|
1793
1866
|
}
|
|
1794
|
-
ModelListSelectFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1795
|
-
ModelListSelectFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1796
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1867
|
+
ModelListSelectFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListSelectFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1868
|
+
ModelListSelectFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListSelectFilterComponent, isStandalone: true, selector: "data-model-list-select-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
1869
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListSelectFilterComponent, decorators: [{
|
|
1797
1870
|
type: Component,
|
|
1798
|
-
args: [{ selector: 'data-model-list-select-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option *ngFor=\"let c of filter.choices\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n</div>" }]
|
|
1871
|
+
args: [{ selector: 'data-model-list-select-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n</div>" }]
|
|
1799
1872
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1800
1873
|
type: Input
|
|
1801
1874
|
}], filter: [{
|
|
@@ -1807,13 +1880,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1807
1880
|
class ModelListSelectMultiFilterComponent {
|
|
1808
1881
|
constructor() {
|
|
1809
1882
|
this.classes = '';
|
|
1883
|
+
this.fc = new FormControl(null);
|
|
1884
|
+
}
|
|
1885
|
+
ngOnInit() {
|
|
1886
|
+
combineLatest([
|
|
1887
|
+
this.filter.choices,
|
|
1888
|
+
this.fc.valueChanges.pipe(debounceTime(250)),
|
|
1889
|
+
]).subscribe(([choices, val]) => {
|
|
1890
|
+
for (const ch of choices) {
|
|
1891
|
+
if (ch.value === val) {
|
|
1892
|
+
if (this.filter.set(ch.value, ch.desc)) {
|
|
1893
|
+
this.list.filters.update();
|
|
1894
|
+
break;
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
});
|
|
1899
|
+
}
|
|
1900
|
+
unset(value, desc) {
|
|
1901
|
+
this.filter.unset(value, desc);
|
|
1902
|
+
this.list.filters.update();
|
|
1903
|
+
}
|
|
1904
|
+
disable() {
|
|
1905
|
+
this.filter.enabled = false;
|
|
1906
|
+
this.list.filters.update();
|
|
1810
1907
|
}
|
|
1811
1908
|
}
|
|
1812
|
-
ModelListSelectMultiFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1813
|
-
ModelListSelectMultiFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1814
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1909
|
+
ModelListSelectMultiFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListSelectMultiFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1910
|
+
ModelListSelectMultiFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListSelectMultiFilterComponent, isStandalone: true, selector: "data-model-list-select-multi-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
1911
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListSelectMultiFilterComponent, decorators: [{
|
|
1815
1912
|
type: Component,
|
|
1816
|
-
args: [{ selector: 'data-model-list-select-multi-filter', standalone: true, imports: [CommonModule], template: "<
|
|
1913
|
+
args: [{ selector: 'data-model-list-select-multi-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\"><i class=\"bi bi-trash\"></i></div>\n <label>{{filter.label}}</label>\n <select class=\"form-select\" [formControl]=\"fc\">\n <option [ngValue]=\"null\">-- {{filter.help}} --</option>\n <option *ngFor=\"let c of filter.choices|async\" [ngValue]=\"c.value\">{{c.desc}}</option>\n </select>\n <div class=\"enabled mt-1\">\n <div *ngFor=\"let e of filter.mcurrent$|async\"><i class=\"bi bi-trash me-2\" (click)=\"unset(e.value, e.desc)\" role=\"button\"></i>{{e.desc}}</div>\n </div>\n</div>" }]
|
|
1817
1914
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1818
1915
|
type: Input
|
|
1819
1916
|
}], filter: [{
|
|
@@ -1827,9 +1924,9 @@ class ModelListTreeFilterComponent {
|
|
|
1827
1924
|
this.classes = '';
|
|
1828
1925
|
}
|
|
1829
1926
|
}
|
|
1830
|
-
ModelListTreeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1831
|
-
ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1832
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1927
|
+
ModelListTreeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListTreeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1928
|
+
ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListTreeFilterComponent, isStandalone: true, selector: "data-model-list-tree-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "<p>model-list-tree-filter works!</p>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
1929
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListTreeFilterComponent, decorators: [{
|
|
1833
1930
|
type: Component,
|
|
1834
1931
|
args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-tree-filter works!</p>" }]
|
|
1835
1932
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1847,7 +1944,7 @@ class ModelListNumberFilterComponent {
|
|
|
1847
1944
|
}
|
|
1848
1945
|
ngOnInit() {
|
|
1849
1946
|
this.filter.valueChanges.subscribe((val) => {
|
|
1850
|
-
this.fc.setValue(val, { emitEvent: false });
|
|
1947
|
+
this.fc.setValue(val.value, { emitEvent: false });
|
|
1851
1948
|
});
|
|
1852
1949
|
this.fc.valueChanges.pipe(debounceTime(250)).subscribe((val) => {
|
|
1853
1950
|
if (this.filter.set(val, val)) {
|
|
@@ -1864,11 +1961,11 @@ class ModelListNumberFilterComponent {
|
|
|
1864
1961
|
this.list.filters.update();
|
|
1865
1962
|
}
|
|
1866
1963
|
}
|
|
1867
|
-
ModelListNumberFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1868
|
-
ModelListNumberFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1869
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1964
|
+
ModelListNumberFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListNumberFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1965
|
+
ModelListNumberFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListNumberFilterComponent, isStandalone: true, selector: "data-model-list-number-filter", inputs: { list: "list", filter: "filter", classes: "classes" }, ngImport: i0, template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\">\n <div class=\"bi bi-trash\"></div>\n </div>\n <label>{{filter.label}}</label>\n <div class=\"input-group\" ngbDropdown>\n <button class=\"btn btn-outline-secondary\" type=\"button\" ngbDropdownToggle><span class=\"me-2\">{{filter.operator.label}}</span>\n <div class=\"dropdown-menu\" ngbDropdownMenu>\n <button ngbDropdownItem *ngFor=\"let op of filter.operations\" (click)=\"selectOp(op.operator)\" [class.text-primary]=\"op.operator === filter.operator.operator\">{{op.label}}</button>\n </div>\n </button>\n <input class=\"form-control\" type=\"number\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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: i2$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i2$1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i2$1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i2$1.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i2$1.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }] });
|
|
1966
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListNumberFilterComponent, decorators: [{
|
|
1870
1967
|
type: Component,
|
|
1871
|
-
args: [{ selector: 'data-model-list-number-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\">\n <div class=\"bi bi-trash\"></div>\n </div>\n <label>{{filter.label}}</label>\n <div class=\"input-group\" ngbDropdown>\n <button class=\"btn btn-outline-secondary\" type=\"button\" ngbDropdownToggle><span class=\"me-2\">{{filter.operator.label}}</span>\n <div class=\"dropdown-menu\" ngbDropdownMenu>\n <button ngbDropdownItem *ngFor=\"let op of filter.operations\" (click)=\"selectOp(op.operator)\" [class.text-primary]=\"op.operator === filter.operator.operator\">{{op.label}}</button>\n </div>\n </button>\n <input class=\"form-control\" type=\"number\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n </div>\n</div>" }]
|
|
1968
|
+
args: [{ selector: 'data-model-list-number-filter', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbDropdownModule], template: "\n<div class=\"filteritem\" [ngClass]=\"filter.displayClasses || classes\">\n <div class=\"trash float-end\" (click)=\"disable()\">\n <div class=\"bi bi-trash\"></div>\n </div>\n <label>{{filter.label}}</label>\n <div class=\"input-group\" ngbDropdown>\n <button class=\"btn btn-outline-secondary\" type=\"button\" ngbDropdownToggle><span class=\"me-2\">{{filter.operator.label}}</span>\n <div class=\"dropdown-menu\" ngbDropdownMenu>\n <button ngbDropdownItem *ngFor=\"let op of filter.operations\" (click)=\"selectOp(op.operator)\" [class.text-primary]=\"op.operator === filter.operator.operator\">{{op.label}}</button>\n </div>\n </button>\n <input class=\"form-control\" type=\"number\" [formControl]=\"fc\" [placeholder]=\"filter.help\">\n </div>\n</div>" }]
|
|
1872
1969
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1873
1970
|
type: Input
|
|
1874
1971
|
}], filter: [{
|
|
@@ -1884,9 +1981,9 @@ class ModelListFiltersComponent {
|
|
|
1884
1981
|
this.itemClasses = '';
|
|
1885
1982
|
}
|
|
1886
1983
|
}
|
|
1887
|
-
ModelListFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1888
|
-
ModelListFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1889
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
1984
|
+
ModelListFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1985
|
+
ModelListFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListFiltersComponent, isStandalone: true, selector: "data-model-list-filters", inputs: { list: "list", containerClasses: "containerClasses", itemClasses: "itemClasses" }, ngImport: i0, template: "\n<div [ngClass]=\"containerClasses\">\n <ng-container *ngFor=\"let f of list.filters.enabled|async\">\n <ng-container [ngSwitch]=\"f.type\">\n <data-model-list-autocomplete-filter *ngSwitchCase=\"'autocomplete'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-autocomplete-filter>\n <data-model-list-autocomplete-multi-filter *ngSwitchCase=\"'autocompletemulti'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-autocomplete-multi-filter>\n <data-model-list-datetime-filter *ngSwitchCase=\"'datetime'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-datetime-filter>\n <data-model-list-datetime-range-filter *ngSwitchCase=\"'datetimerange'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-datetime-range-filter>\n <data-model-list-flags-filter *ngSwitchCase=\"'flags'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-flags-filter>\n <data-model-list-geodistance-filter *ngSwitchCase=\"'geodistance'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-geodistance-filter>\n <data-model-list-number-filter *ngSwitchCase=\"'number'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-number-filter>\n <data-model-list-select-filter *ngSwitchCase=\"'select'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-select-filter>\n <data-model-list-select-multi-filter *ngSwitchCase=\"'selectmulti'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-select-multi-filter>\n <data-model-list-text-filter *ngSwitchCase=\"'text'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-text-filter>\n <data-model-list-tree-filter *ngSwitchCase=\"'tree'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-tree-filter>\n </ng-container>\n </ng-container>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "component", type: ModelListTextFilterComponent, selector: "data-model-list-text-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListNumberFilterComponent, selector: "data-model-list-number-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListAutocompleteFilterComponent, selector: "data-model-list-autocomplete-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListAutocompleteMultiFilterComponent, selector: "data-model-list-autocomplete-multi-filter", inputs: ["filter"] }, { kind: "component", type: ModelListDatetimeFilterComponent, selector: "data-model-list-datetime-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListDatetimeRangeFilterComponent, selector: "data-model-list-datetime-range-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListFlagsFilterComponent, selector: "data-model-list-flags-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListGeodistanceFilterComponent, selector: "data-model-list-geodistance-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListSelectFilterComponent, selector: "data-model-list-select-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListSelectMultiFilterComponent, selector: "data-model-list-select-multi-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListTreeFilterComponent, selector: "data-model-list-tree-filter", inputs: ["list", "filter", "classes"] }] });
|
|
1986
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListFiltersComponent, decorators: [{
|
|
1890
1987
|
type: Component,
|
|
1891
1988
|
args: [{ selector: 'data-model-list-filters', standalone: true, imports: [
|
|
1892
1989
|
CommonModule,
|
|
@@ -1913,40 +2010,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1913
2010
|
class ModelListFilter {
|
|
1914
2011
|
constructor(params) {
|
|
1915
2012
|
this.pristine = true;
|
|
1916
|
-
this.
|
|
2013
|
+
this.multi = false;
|
|
2014
|
+
/** Single current value */
|
|
2015
|
+
this._value = null;
|
|
2016
|
+
/** Multiple current value */
|
|
2017
|
+
this._mvalue = new Map();
|
|
2018
|
+
/** Single current value observable */
|
|
2019
|
+
this._current = new ReplaySubject(1);
|
|
2020
|
+
/** Multiple current value observable */
|
|
2021
|
+
this._mcurrent = new ReplaySubject(1);
|
|
1917
2022
|
this.name = params.name;
|
|
1918
2023
|
this.field = params.field;
|
|
1919
2024
|
this.label = params.label || '';
|
|
1920
2025
|
this.help = params.help || '';
|
|
1921
|
-
this.value = params.value;
|
|
1922
2026
|
this.desc = params.desc;
|
|
1923
2027
|
this.displayClasses = params.displayClasses;
|
|
1924
2028
|
this.allowed = false;
|
|
1925
2029
|
this.enabled = false;
|
|
1926
2030
|
this.type = 'text';
|
|
2031
|
+
// FIXME: add value init
|
|
2032
|
+
}
|
|
2033
|
+
get mcurrent$() {
|
|
2034
|
+
return this._mcurrent.asObservable();
|
|
2035
|
+
}
|
|
2036
|
+
get current$() {
|
|
2037
|
+
return this._current.asObservable();
|
|
2038
|
+
}
|
|
2039
|
+
updateFilter(filter) {
|
|
2040
|
+
if (this.multi && this._mvalue.size > 0) {
|
|
2041
|
+
filter[this.field] = this.getMultiValue();
|
|
2042
|
+
}
|
|
2043
|
+
else if (!this.multi &&
|
|
2044
|
+
this._value !== undefined &&
|
|
2045
|
+
this._value !== null) {
|
|
2046
|
+
filter[this.field] = this.getValue();
|
|
2047
|
+
}
|
|
1927
2048
|
}
|
|
1928
2049
|
get valueChanges() {
|
|
1929
|
-
|
|
2050
|
+
if (this.multi) {
|
|
2051
|
+
return this._mcurrent.asObservable();
|
|
2052
|
+
}
|
|
2053
|
+
return this._current.asObservable();
|
|
2054
|
+
}
|
|
2055
|
+
clear(notify = true) {
|
|
2056
|
+
if (this.multi) {
|
|
2057
|
+
this._mvalue = new Map();
|
|
2058
|
+
}
|
|
2059
|
+
else {
|
|
2060
|
+
this._value = null;
|
|
2061
|
+
}
|
|
2062
|
+
this.notify(notify);
|
|
1930
2063
|
}
|
|
1931
2064
|
set(value, desc, notify = true) {
|
|
1932
|
-
if (
|
|
1933
|
-
this.desc
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
2065
|
+
if (this.multi) {
|
|
2066
|
+
return this.mset(value, desc, notify);
|
|
2067
|
+
}
|
|
2068
|
+
return this.sset(value, desc, notify);
|
|
2069
|
+
}
|
|
2070
|
+
unset(value, desc, notify = true) {
|
|
2071
|
+
if (this.multi) {
|
|
2072
|
+
return this.munset(value, desc, notify);
|
|
2073
|
+
}
|
|
2074
|
+
return this.sunset(value, desc, notify);
|
|
2075
|
+
}
|
|
2076
|
+
toggle(value, desc, notify = true) {
|
|
2077
|
+
if (this.multi) {
|
|
2078
|
+
return this.mtoggle(value, desc, notify);
|
|
2079
|
+
}
|
|
2080
|
+
return this.stoggle(value, desc, notify);
|
|
2081
|
+
}
|
|
2082
|
+
mtoggle(value, desc, notify = true) {
|
|
2083
|
+
if (this._mvalue.has(`${value}`)) {
|
|
2084
|
+
this._mvalue.delete(`${value}`);
|
|
2085
|
+
}
|
|
2086
|
+
else {
|
|
2087
|
+
this._mvalue.set(`${value}`, desc);
|
|
2088
|
+
}
|
|
2089
|
+
this.notify(notify);
|
|
2090
|
+
return true;
|
|
2091
|
+
}
|
|
2092
|
+
mset(value, desc, notify = true) {
|
|
2093
|
+
if (!this._mvalue.has(`${value}`)) {
|
|
2094
|
+
this._mvalue.set(`${value}`, desc);
|
|
2095
|
+
this.notify(notify);
|
|
1939
2096
|
return true;
|
|
1940
2097
|
}
|
|
1941
2098
|
return false;
|
|
1942
2099
|
}
|
|
1943
|
-
|
|
1944
|
-
if (this.
|
|
1945
|
-
|
|
2100
|
+
munset(value, desc, notify = true) {
|
|
2101
|
+
if (this._mvalue.has(`${value}`)) {
|
|
2102
|
+
this._mvalue.delete(`${value}`);
|
|
2103
|
+
this.notify(notify);
|
|
2104
|
+
return true;
|
|
1946
2105
|
}
|
|
2106
|
+
return false;
|
|
2107
|
+
}
|
|
2108
|
+
stoggle(value, desc, notify = true) {
|
|
2109
|
+
if (this._value !== null && this._value.value === value) {
|
|
2110
|
+
this._value = null;
|
|
2111
|
+
}
|
|
2112
|
+
else {
|
|
2113
|
+
this._value = { value, desc };
|
|
2114
|
+
}
|
|
2115
|
+
this.notify(notify);
|
|
2116
|
+
return true;
|
|
2117
|
+
}
|
|
2118
|
+
sset(value, desc, notify = true) {
|
|
2119
|
+
if (!(this._value !== null && this._value.value === value)) {
|
|
2120
|
+
this._value = { value, desc };
|
|
2121
|
+
this.notify(notify);
|
|
2122
|
+
return true;
|
|
2123
|
+
}
|
|
2124
|
+
return false;
|
|
2125
|
+
}
|
|
2126
|
+
sunset(value, desc, notify = true) {
|
|
2127
|
+
if (this._value !== null) {
|
|
2128
|
+
this._value = null;
|
|
2129
|
+
this.notify(notify);
|
|
2130
|
+
return true;
|
|
2131
|
+
}
|
|
2132
|
+
return false;
|
|
2133
|
+
}
|
|
2134
|
+
getMultiValue() {
|
|
2135
|
+
return Array.from(this._mvalue.keys()).join(',');
|
|
1947
2136
|
}
|
|
1948
2137
|
getValue() {
|
|
1949
|
-
|
|
2138
|
+
var _a;
|
|
2139
|
+
return `${(_a = this._value) === null || _a === void 0 ? void 0 : _a.value}`;
|
|
2140
|
+
}
|
|
2141
|
+
notify(notify = true) {
|
|
2142
|
+
if (notify) {
|
|
2143
|
+
if (this.multi) {
|
|
2144
|
+
this._mcurrent.next(Array.from(this._mvalue.entries()).map(([k, v]) => {
|
|
2145
|
+
return { desc: v, value: k };
|
|
2146
|
+
}));
|
|
2147
|
+
}
|
|
2148
|
+
else {
|
|
2149
|
+
this._current.next(this._value);
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
1950
2152
|
}
|
|
1951
2153
|
}
|
|
1952
2154
|
|
|
@@ -1975,49 +2177,14 @@ class ModelListAutocompleteFilter extends ModelListFilter {
|
|
|
1975
2177
|
this.help = 'Recherche par texte';
|
|
1976
2178
|
}
|
|
1977
2179
|
}
|
|
1978
|
-
getValue() {
|
|
1979
|
-
var _a;
|
|
1980
|
-
return `${(_a = this.value) === null || _a === void 0 ? void 0 : _a.id}`;
|
|
1981
|
-
}
|
|
1982
2180
|
}
|
|
1983
2181
|
|
|
1984
2182
|
class ModelListAutocompleteMultiFilter extends ModelListAutocompleteFilter {
|
|
1985
2183
|
constructor(params) {
|
|
1986
2184
|
super(params);
|
|
1987
|
-
this.
|
|
2185
|
+
this.multi = true;
|
|
1988
2186
|
this.type = 'autocompletemulti';
|
|
1989
2187
|
}
|
|
1990
|
-
set(value, desc, notify = false) {
|
|
1991
|
-
const res = super.set(value, desc, false);
|
|
1992
|
-
if (res && this.value && this._getValuePos(this.value) === -1) {
|
|
1993
|
-
this.values.push({ value: this.value, desc: this.desc });
|
|
1994
|
-
}
|
|
1995
|
-
return res;
|
|
1996
|
-
}
|
|
1997
|
-
unset(value) {
|
|
1998
|
-
const found = this._getValuePos(value);
|
|
1999
|
-
if (found !== -1) {
|
|
2000
|
-
this.values.splice(found, 1);
|
|
2001
|
-
return true;
|
|
2002
|
-
}
|
|
2003
|
-
return false;
|
|
2004
|
-
}
|
|
2005
|
-
getValue() {
|
|
2006
|
-
const ids = [];
|
|
2007
|
-
for (const vl of this.values) {
|
|
2008
|
-
ids.push(vl.value.id);
|
|
2009
|
-
}
|
|
2010
|
-
return ids.join(',');
|
|
2011
|
-
}
|
|
2012
|
-
_getValuePos(value) {
|
|
2013
|
-
let found = -1;
|
|
2014
|
-
for (let i = 0; i < this.values.length; i++) {
|
|
2015
|
-
if (this.values[i].value.id === value.id) {
|
|
2016
|
-
found = i;
|
|
2017
|
-
}
|
|
2018
|
-
}
|
|
2019
|
-
return found;
|
|
2020
|
-
}
|
|
2021
2188
|
}
|
|
2022
2189
|
|
|
2023
2190
|
class ModelListDatetimeFilter extends ModelListFilter {
|
|
@@ -2062,13 +2229,15 @@ class ModelListFlagsFilter extends ModelListFilter {
|
|
|
2062
2229
|
class ModelListGeodistanceFilter extends ModelListFilter {
|
|
2063
2230
|
constructor(params) {
|
|
2064
2231
|
super(params);
|
|
2065
|
-
this.type =
|
|
2066
|
-
|
|
2232
|
+
this.type = 'geodistance';
|
|
2233
|
+
this.geolocator = params.geolocator;
|
|
2234
|
+
if (this.label == '') {
|
|
2067
2235
|
this.label = "Par distance autour d'un point";
|
|
2068
2236
|
}
|
|
2069
|
-
if (this.help ==
|
|
2070
|
-
this.help =
|
|
2237
|
+
if (this.help == '') {
|
|
2238
|
+
this.help = 'Ville & distance';
|
|
2071
2239
|
}
|
|
2240
|
+
this.scroll = params.scroll !== undefined ? params.scroll : true;
|
|
2072
2241
|
}
|
|
2073
2242
|
}
|
|
2074
2243
|
|
|
@@ -2114,7 +2283,7 @@ class ModelListNumberFilter extends ModelListFilter {
|
|
|
2114
2283
|
}
|
|
2115
2284
|
}
|
|
2116
2285
|
updateFilter(filter) {
|
|
2117
|
-
if (this.
|
|
2286
|
+
if (this._value !== undefined && this._value !== null) {
|
|
2118
2287
|
filter[`${this.field}${this.operator.operator}`] = this.getValue();
|
|
2119
2288
|
}
|
|
2120
2289
|
}
|
|
@@ -2128,7 +2297,7 @@ class ModelListSelectFilter extends ModelListFilter {
|
|
|
2128
2297
|
this.label = 'Sélectionnez un élément';
|
|
2129
2298
|
}
|
|
2130
2299
|
if (this.help == '') {
|
|
2131
|
-
this.help = '
|
|
2300
|
+
this.help = 'Choix par liste déroulante';
|
|
2132
2301
|
}
|
|
2133
2302
|
if (!params.choices && !params.model) {
|
|
2134
2303
|
throw 'Missing choices for select filter';
|
|
@@ -2140,20 +2309,29 @@ class ModelListSelectFilter extends ModelListFilter {
|
|
|
2140
2309
|
if (!ch) {
|
|
2141
2310
|
throw 'No choices found for model/field';
|
|
2142
2311
|
}
|
|
2143
|
-
this.choices = ch;
|
|
2312
|
+
this.choices = of(ch);
|
|
2313
|
+
}
|
|
2314
|
+
else {
|
|
2315
|
+
if (!isObservable(params.choices)) {
|
|
2316
|
+
this.choices = of(params.choices);
|
|
2317
|
+
}
|
|
2318
|
+
else {
|
|
2319
|
+
this.choices = params.choices;
|
|
2320
|
+
}
|
|
2144
2321
|
}
|
|
2145
2322
|
}
|
|
2146
2323
|
}
|
|
2147
2324
|
|
|
2148
|
-
class ModelListSelectMultiFilter extends
|
|
2325
|
+
class ModelListSelectMultiFilter extends ModelListSelectFilter {
|
|
2149
2326
|
constructor(params) {
|
|
2150
2327
|
super(params);
|
|
2151
|
-
this.
|
|
2152
|
-
|
|
2153
|
-
|
|
2328
|
+
this.multi = true;
|
|
2329
|
+
this.type = 'selectmulti';
|
|
2330
|
+
if (this.label == '') {
|
|
2331
|
+
this.label = 'Sélectionnez un élément';
|
|
2154
2332
|
}
|
|
2155
|
-
if (this.help ==
|
|
2156
|
-
this.help =
|
|
2333
|
+
if (this.help == '') {
|
|
2334
|
+
this.help = 'Choix par liste déroulante (multiple)';
|
|
2157
2335
|
}
|
|
2158
2336
|
}
|
|
2159
2337
|
}
|
|
@@ -2184,6 +2362,29 @@ class ModelListTreeFilter extends ModelListFilter {
|
|
|
2184
2362
|
}
|
|
2185
2363
|
}
|
|
2186
2364
|
|
|
2365
|
+
class BanAdapter {
|
|
2366
|
+
constructor(_http, _baseUrl) {
|
|
2367
|
+
this._http = _http;
|
|
2368
|
+
this._baseUrl = _baseUrl;
|
|
2369
|
+
}
|
|
2370
|
+
search(text) {
|
|
2371
|
+
return this._http
|
|
2372
|
+
.get(`${this._baseUrl}`, { params: { q: text } })
|
|
2373
|
+
.pipe(map((r) => {
|
|
2374
|
+
const out = [];
|
|
2375
|
+
for (const f of r.features) {
|
|
2376
|
+
out.push({
|
|
2377
|
+
score: f.properties.score,
|
|
2378
|
+
label: `${f.properties.label} (${f.properties.context})`,
|
|
2379
|
+
lat: f.geometry.coordinates[1],
|
|
2380
|
+
lng: f.geometry.coordinates[0],
|
|
2381
|
+
});
|
|
2382
|
+
}
|
|
2383
|
+
return out;
|
|
2384
|
+
}));
|
|
2385
|
+
}
|
|
2386
|
+
}
|
|
2387
|
+
|
|
2187
2388
|
class ModelListPaginatorComponent {
|
|
2188
2389
|
constructor() {
|
|
2189
2390
|
this.maxPages = 200;
|
|
@@ -2232,9 +2433,9 @@ class ModelListPaginatorComponent {
|
|
|
2232
2433
|
}
|
|
2233
2434
|
}
|
|
2234
2435
|
}
|
|
2235
|
-
ModelListPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
2236
|
-
ModelListPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
2237
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
2436
|
+
ModelListPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2437
|
+
ModelListPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: ModelListPaginatorComponent, isStandalone: true, selector: "data-model-list-paginator", inputs: { list: "list", maxPages: "maxPages", hide: "hide" }, usesOnChanges: true, ngImport: i0, template: "\n<div class=\"row\" *ngIf=\"!hide\">\n <div class=\"col-sm-4\">\n <select class=\"form-select perpage\" [formControl]=\"perPageControl\">\n <option value=\"10\" *ngIf=\"maxPages>=10\">10 / page</option>\n <option value=\"20\" *ngIf=\"maxPages>=20\">20 / page</option>\n <option value=\"50\" *ngIf=\"maxPages>=50\">50 / page</option>\n <option value=\"100\" *ngIf=\"maxPages>=100\">100 / page</option>\n <option value=\"200\" *ngIf=\"maxPages>=200\">200 / page</option>\n <option value=\"500\" *ngIf=\"maxPages>=500\">500 / page</option>\n <option value=\"1000\" *ngIf=\"maxPages>=1000\">1000 / page</option>\n <option value=\"2000\" *ngIf=\"maxPages>=2000\">2000 / page</option>\n <option value=\"5000\" *ngIf=\"maxPages>=5000\">5000 / page</option>\n <option value=\"10000\" *ngIf=\"maxPages>=10000\">10000 / page</option>\n </select>\n </div>\n <div class=\"col-sm-5 pagination\" *ngIf=\"list\">\n <div class=\"text-xs-center\">\n <ngb-pagination [pageSize]=\"pageSize\" [collectionSize]=\"curCount\" [page]=\"curPage\" (pageChange)=\"onPageChange($event)\" [maxSize]=\"5\" [rotate]=\"true\"></ngb-pagination>\n </div>\n </div>\n <div class=\"col-sm-3 results\">\n <div>{{curCount}} r\u00E9sultats -<span (click)=\"showDirectAccess=!showDirectAccess\" role=\"button\">acces direct</span></div>\n <div *ngIf=\"showDirectAccess\">\n <input class=\"form-control\" [formControl]=\"directAccess\" type=\"number\" placeholder=\"Aller \u00E0 la page\">\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.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: i2$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbPaginationModule }, { kind: "component", type: i2$1.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }] });
|
|
2438
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ModelListPaginatorComponent, decorators: [{
|
|
2238
2439
|
type: Component,
|
|
2239
2440
|
args: [{ selector: 'data-model-list-paginator', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbPaginationModule], template: "\n<div class=\"row\" *ngIf=\"!hide\">\n <div class=\"col-sm-4\">\n <select class=\"form-select perpage\" [formControl]=\"perPageControl\">\n <option value=\"10\" *ngIf=\"maxPages>=10\">10 / page</option>\n <option value=\"20\" *ngIf=\"maxPages>=20\">20 / page</option>\n <option value=\"50\" *ngIf=\"maxPages>=50\">50 / page</option>\n <option value=\"100\" *ngIf=\"maxPages>=100\">100 / page</option>\n <option value=\"200\" *ngIf=\"maxPages>=200\">200 / page</option>\n <option value=\"500\" *ngIf=\"maxPages>=500\">500 / page</option>\n <option value=\"1000\" *ngIf=\"maxPages>=1000\">1000 / page</option>\n <option value=\"2000\" *ngIf=\"maxPages>=2000\">2000 / page</option>\n <option value=\"5000\" *ngIf=\"maxPages>=5000\">5000 / page</option>\n <option value=\"10000\" *ngIf=\"maxPages>=10000\">10000 / page</option>\n </select>\n </div>\n <div class=\"col-sm-5 pagination\" *ngIf=\"list\">\n <div class=\"text-xs-center\">\n <ngb-pagination [pageSize]=\"pageSize\" [collectionSize]=\"curCount\" [page]=\"curPage\" (pageChange)=\"onPageChange($event)\" [maxSize]=\"5\" [rotate]=\"true\"></ngb-pagination>\n </div>\n </div>\n <div class=\"col-sm-3 results\">\n <div>{{curCount}} r\u00E9sultats -<span (click)=\"showDirectAccess=!showDirectAccess\" role=\"button\">acces direct</span></div>\n <div *ngIf=\"showDirectAccess\">\n <input class=\"form-control\" [formControl]=\"directAccess\" type=\"number\" placeholder=\"Aller \u00E0 la page\">\n </div>\n </div>\n</div>" }]
|
|
2240
2441
|
}], propDecorators: { list: [{
|
|
@@ -2245,153 +2446,133 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
2245
2446
|
type: Input
|
|
2246
2447
|
}] } });
|
|
2247
2448
|
|
|
2248
|
-
|
|
2249
|
-
(
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["WARNING"] = 10000] = "WARNING";
|
|
2253
|
-
DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["DANGER"] = 30000] = "DANGER";
|
|
2254
|
-
})(DEFAULT_TIMEOUTS || (DEFAULT_TIMEOUTS = {}));
|
|
2255
|
-
var STATUS;
|
|
2256
|
-
(function (STATUS) {
|
|
2257
|
-
STATUS[STATUS["UNDISP"] = 0] = "UNDISP";
|
|
2258
|
-
STATUS[STATUS["DISP"] = 1] = "DISP";
|
|
2259
|
-
STATUS[STATUS["ACK"] = 2] = "ACK";
|
|
2260
|
-
})(STATUS || (STATUS = {}));
|
|
2261
|
-
const DEFAULT_MESSAGE_TIMEOUT = 5000;
|
|
2262
|
-
const DATA_MESSAGE_SOUNDS = new InjectionToken("data.message.sounds");
|
|
2263
|
-
class Message {
|
|
2264
|
-
constructor(title, type = 1 /* TYPE.INFO */, message = "", trace = null, ttl = DEFAULT_MESSAGE_TIMEOUT) {
|
|
2265
|
-
this.title = title;
|
|
2266
|
-
this.type = type;
|
|
2267
|
-
this.message = message;
|
|
2268
|
-
this.trace = trace;
|
|
2269
|
-
this.ttl = ttl;
|
|
2270
|
-
this.status = STATUS[STATUS.UNDISP];
|
|
2271
|
-
this.showTrace = false;
|
|
2272
|
-
}
|
|
2273
|
-
get style() {
|
|
2274
|
-
if (this.type === 3 /* TYPE.DANGER */) {
|
|
2275
|
-
return "alert alert-dismissible alert-danger";
|
|
2449
|
+
class ChoicePipe {
|
|
2450
|
+
transform(value, field, mode = 'desc') {
|
|
2451
|
+
if (!value) {
|
|
2452
|
+
return '-';
|
|
2276
2453
|
}
|
|
2277
|
-
|
|
2278
|
-
|
|
2454
|
+
const fvalue = value[field];
|
|
2455
|
+
if (mode === 'code') {
|
|
2456
|
+
return `${fvalue}`;
|
|
2279
2457
|
}
|
|
2280
|
-
|
|
2281
|
-
|
|
2458
|
+
const manager = value.FM(field);
|
|
2459
|
+
const choices = manager.choices;
|
|
2460
|
+
if (!choices) {
|
|
2461
|
+
return `${fvalue}`;
|
|
2282
2462
|
}
|
|
2283
|
-
|
|
2284
|
-
|
|
2463
|
+
for (const ch of choices) {
|
|
2464
|
+
if (ch.value === fvalue) {
|
|
2465
|
+
if (mode === 'desc') {
|
|
2466
|
+
return ch.desc;
|
|
2467
|
+
}
|
|
2468
|
+
else {
|
|
2469
|
+
return `[${fvalue}] ${ch.desc}`;
|
|
2470
|
+
}
|
|
2471
|
+
}
|
|
2285
2472
|
}
|
|
2286
|
-
return
|
|
2287
|
-
}
|
|
2288
|
-
ack() {
|
|
2289
|
-
this.status = STATUS[STATUS.ACK];
|
|
2473
|
+
return `[${fvalue}] ??`;
|
|
2290
2474
|
}
|
|
2291
2475
|
}
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
for (const m of this._messages) {
|
|
2310
|
-
m.ttl -= 500;
|
|
2311
|
-
if (m.ttl <= 0) {
|
|
2312
|
-
changed = true;
|
|
2313
|
-
}
|
|
2314
|
-
}
|
|
2315
|
-
if (changed) {
|
|
2316
|
-
this.ngZone.run(() => {
|
|
2317
|
-
const out = [];
|
|
2318
|
-
for (const m of this._messages) {
|
|
2319
|
-
if (m.ttl >= 0) {
|
|
2320
|
-
out.push(m);
|
|
2321
|
-
}
|
|
2322
|
-
}
|
|
2323
|
-
this._messages = out;
|
|
2324
|
-
this._notify();
|
|
2325
|
-
});
|
|
2326
|
-
}
|
|
2327
|
-
});
|
|
2328
|
-
});
|
|
2329
|
-
}
|
|
2330
|
-
}
|
|
2331
|
-
close() {
|
|
2332
|
-
this._subscription.unsubscribe();
|
|
2333
|
-
}
|
|
2334
|
-
success(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.SUCCESS) {
|
|
2335
|
-
this._messages.push(new Message(title, 0 /* TYPE.SUCCESS */, message, trace, timeout));
|
|
2336
|
-
this.play("success");
|
|
2337
|
-
this._notify();
|
|
2338
|
-
}
|
|
2339
|
-
info(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.INFO) {
|
|
2340
|
-
this._messages.push(new Message(title, 1 /* TYPE.INFO */, message, trace, timeout));
|
|
2341
|
-
this.play("info");
|
|
2342
|
-
this._notify();
|
|
2343
|
-
}
|
|
2344
|
-
warning(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.WARNING) {
|
|
2345
|
-
this._messages.push(new Message(title, 2 /* TYPE.WARNING */, message, trace, timeout));
|
|
2346
|
-
this.play("warning");
|
|
2347
|
-
this._notify();
|
|
2348
|
-
}
|
|
2349
|
-
danger(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.DANGER) {
|
|
2350
|
-
this._messages.push(new Message(title, 3 /* TYPE.DANGER */, message, trace, DEFAULT_TIMEOUTS.DANGER));
|
|
2351
|
-
this.play("error");
|
|
2352
|
-
this._notify();
|
|
2476
|
+
ChoicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ChoicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2477
|
+
ChoicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: ChoicePipe, isStandalone: true, name: "choice" });
|
|
2478
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ChoicePipe, decorators: [{
|
|
2479
|
+
type: Pipe,
|
|
2480
|
+
args: [{
|
|
2481
|
+
name: 'choice',
|
|
2482
|
+
standalone: true,
|
|
2483
|
+
}]
|
|
2484
|
+
}] });
|
|
2485
|
+
|
|
2486
|
+
function isValue(value) {
|
|
2487
|
+
return !(value == null || value === '' || value !== value);
|
|
2488
|
+
}
|
|
2489
|
+
function strToNumber(value) {
|
|
2490
|
+
// Convert strings to numbers
|
|
2491
|
+
if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {
|
|
2492
|
+
return Number(value);
|
|
2353
2493
|
}
|
|
2354
|
-
|
|
2355
|
-
|
|
2494
|
+
if (typeof value !== 'number') {
|
|
2495
|
+
throw new Error(`${value} is not a number`);
|
|
2356
2496
|
}
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
this._notify();
|
|
2497
|
+
return value;
|
|
2498
|
+
}
|
|
2499
|
+
class FactorPipe {
|
|
2500
|
+
constructor(_locale) {
|
|
2501
|
+
this._locale = _locale;
|
|
2363
2502
|
}
|
|
2364
|
-
|
|
2365
|
-
if (
|
|
2366
|
-
|
|
2367
|
-
audio.play();
|
|
2503
|
+
transform(value, field, digitsInfo, locale) {
|
|
2504
|
+
if (!value) {
|
|
2505
|
+
return null;
|
|
2368
2506
|
}
|
|
2507
|
+
locale = locale || this._locale;
|
|
2508
|
+
const fvalue = value[field];
|
|
2509
|
+
if (!isValue(fvalue))
|
|
2510
|
+
return null;
|
|
2511
|
+
const manager = value.FM(field);
|
|
2512
|
+
let factor = manager.factor;
|
|
2513
|
+
factor = factor || 1;
|
|
2514
|
+
const num = strToNumber(fvalue);
|
|
2515
|
+
return formatNumber(num / factor, locale, digitsInfo);
|
|
2516
|
+
}
|
|
2517
|
+
}
|
|
2518
|
+
FactorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FactorPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2519
|
+
FactorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: FactorPipe, isStandalone: true, name: "factor" });
|
|
2520
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FactorPipe, decorators: [{
|
|
2521
|
+
type: Pipe,
|
|
2522
|
+
args: [{
|
|
2523
|
+
name: 'factor',
|
|
2524
|
+
standalone: true,
|
|
2525
|
+
}]
|
|
2526
|
+
}], ctorParameters: function () {
|
|
2527
|
+
return [{ type: undefined, decorators: [{
|
|
2528
|
+
type: Inject,
|
|
2529
|
+
args: [LOCALE_ID]
|
|
2530
|
+
}] }];
|
|
2531
|
+
} });
|
|
2532
|
+
|
|
2533
|
+
class FactorcPipe {
|
|
2534
|
+
constructor(_locale, _defaultCurrencyCode = 'USD') {
|
|
2535
|
+
this._locale = _locale;
|
|
2536
|
+
this._defaultCurrencyCode = _defaultCurrencyCode;
|
|
2369
2537
|
}
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2538
|
+
transform(value, field, currencyCode, display, digitsInfo, locale) {
|
|
2539
|
+
if (!value)
|
|
2540
|
+
return null;
|
|
2541
|
+
const fvalue = value[field];
|
|
2542
|
+
if (!isValue(fvalue))
|
|
2543
|
+
return null;
|
|
2544
|
+
locale = locale || this._locale;
|
|
2545
|
+
let currency = currencyCode || this._defaultCurrencyCode;
|
|
2546
|
+
if (display !== 'code') {
|
|
2547
|
+
if (display === 'symbol' || display === 'symbol-narrow') {
|
|
2548
|
+
currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);
|
|
2549
|
+
}
|
|
2550
|
+
else {
|
|
2551
|
+
currency = display;
|
|
2377
2552
|
}
|
|
2378
2553
|
}
|
|
2379
|
-
|
|
2554
|
+
const manager = value.FM(field);
|
|
2555
|
+
let factor = manager.factor;
|
|
2556
|
+
factor = factor || 1;
|
|
2557
|
+
const num = strToNumber(fvalue);
|
|
2558
|
+
return formatCurrency(num, locale, currency, currencyCode, digitsInfo);
|
|
2380
2559
|
}
|
|
2381
2560
|
}
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
2385
|
-
type:
|
|
2561
|
+
FactorcPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FactorcPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2562
|
+
FactorcPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: FactorcPipe, isStandalone: true, name: "factorc" });
|
|
2563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FactorcPipe, decorators: [{
|
|
2564
|
+
type: Pipe,
|
|
2386
2565
|
args: [{
|
|
2387
|
-
|
|
2566
|
+
name: 'factorc',
|
|
2567
|
+
standalone: true,
|
|
2388
2568
|
}]
|
|
2389
2569
|
}], ctorParameters: function () {
|
|
2390
|
-
return [{ type:
|
|
2391
|
-
type: Optional
|
|
2392
|
-
}, {
|
|
2570
|
+
return [{ type: undefined, decorators: [{
|
|
2393
2571
|
type: Inject,
|
|
2394
|
-
args: [
|
|
2572
|
+
args: [LOCALE_ID]
|
|
2573
|
+
}] }, { type: undefined, decorators: [{
|
|
2574
|
+
type: Inject,
|
|
2575
|
+
args: [DEFAULT_CURRENCY_CODE]
|
|
2395
2576
|
}] }];
|
|
2396
2577
|
} });
|
|
2397
2578
|
|
|
@@ -2486,11 +2667,11 @@ class FkselectComponent {
|
|
|
2486
2667
|
}));
|
|
2487
2668
|
}
|
|
2488
2669
|
}
|
|
2489
|
-
FkselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
2490
|
-
FkselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
2491
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
2670
|
+
FkselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FkselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2671
|
+
FkselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: FkselectComponent, isStandalone: true, selector: "data-fkselect", inputs: { model: "model", field: "field", edit: "edit", value: "value", queryset: "queryset", collection: "collection", update: "update", filter: "filter", mode: "mode", display: "display", search: "search", label: "label", placeholder: "placeholder", inputClasses: "inputClasses" }, outputs: { selected: "selected", cancelled: "cancelled", cleared: "cleared" }, ngImport: i0, template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"clearAction()\"></i></div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i2$1.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }] });
|
|
2672
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FkselectComponent, decorators: [{
|
|
2492
2673
|
type: Component,
|
|
2493
|
-
args: [{ selector: 'data-fkselect', template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"clearAction()\"></i></div>\n </div>\n</div>" }]
|
|
2674
|
+
args: [{ selector: 'data-fkselect', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbTypeaheadModule], template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"clearAction()\"></i></div>\n </div>\n</div>" }]
|
|
2494
2675
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
2495
2676
|
type: Input
|
|
2496
2677
|
}], field: [{
|
|
@@ -2780,15 +2961,15 @@ class M2mselectComponent {
|
|
|
2780
2961
|
}));
|
|
2781
2962
|
}
|
|
2782
2963
|
}
|
|
2783
|
-
M2mselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
2784
|
-
M2mselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
2964
|
+
M2mselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: M2mselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2965
|
+
M2mselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: M2mselectComponent, isStandalone: true, selector: "data-m2mselect", inputs: { model: "model", field: "field", edit: "edit", values: "values", queryset: "queryset", collection: "collection", filter: "filter", mode: "mode", display: "display", search: "search", label: "label", placeholder: "placeholder", emptyLabel: "emptyLabel", inputClasses: "inputClasses" }, outputs: { added: "added", removed: "removed", cancelled: "cancelled", cleared: "cleared", detailsChanged: "detailsChanged", changed: "changed" }, providers: [
|
|
2785
2966
|
{
|
|
2786
2967
|
provide: NG_VALUE_ACCESSOR,
|
|
2787
2968
|
multi: true,
|
|
2788
2969
|
useExisting: M2mselectComponent,
|
|
2789
2970
|
},
|
|
2790
|
-
], ngImport: i0, template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"cleared.emit()\"></i></div>\n </div>\n <div *ngFor=\"let i of values\"><i class=\"bi bi-trash ms-2 float-end\" (click)=\"onRemove(i)\"></i>{{displayFn(i)}}</div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "
|
|
2791
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
2971
|
+
], ngImport: i0, template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"cleared.emit()\"></i></div>\n </div>\n <div *ngFor=\"let i of values\"><i class=\"bi bi-trash ms-2 float-end\" (click)=\"onRemove(i)\"></i>{{displayFn(i)}}</div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbTypeaheadModule }, { kind: "directive", type: i2$1.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }] });
|
|
2972
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: M2mselectComponent, decorators: [{
|
|
2792
2973
|
type: Component,
|
|
2793
2974
|
args: [{ selector: 'data-m2mselect', providers: [
|
|
2794
2975
|
{
|
|
@@ -2796,7 +2977,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
2796
2977
|
multi: true,
|
|
2797
2978
|
useExisting: M2mselectComponent,
|
|
2798
2979
|
},
|
|
2799
|
-
], template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"cleared.emit()\"></i></div>\n </div>\n <div *ngFor=\"let i of values\"><i class=\"bi bi-trash ms-2 float-end\" (click)=\"onRemove(i)\"></i>{{displayFn(i)}}</div>\n</div>" }]
|
|
2980
|
+
], standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbTypeaheadModule], template: "\n<div class=\"form-group\">\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <input class=\"form-control\" [formControl]=\"fc\" [placeholder]=\"placeholder\" [ngbTypeahead]=\"searchFn\" [editable]=\"false\" [focusFirst]=\"true\" [inputFormatter]=\"displayFn\" [resultFormatter]=\"displayFn\" (keyup.escape)=\"cancelled.emit()\">\n <div class=\"input-group-text\"><i class=\"bi bi-trash float-end pointer\" (click)=\"cleared.emit()\"></i></div>\n </div>\n <div *ngFor=\"let i of values\"><i class=\"bi bi-trash ms-2 float-end\" (click)=\"onRemove(i)\"></i>{{displayFn(i)}}</div>\n</div>" }]
|
|
2800
2981
|
}], propDecorators: { model: [{
|
|
2801
2982
|
type: Input
|
|
2802
2983
|
}], field: [{
|
|
@@ -2839,6 +3020,156 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
2839
3020
|
type: Output
|
|
2840
3021
|
}] } });
|
|
2841
3022
|
|
|
3023
|
+
var DEFAULT_TIMEOUTS;
|
|
3024
|
+
(function (DEFAULT_TIMEOUTS) {
|
|
3025
|
+
DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["SUCCESS"] = 3000] = "SUCCESS";
|
|
3026
|
+
DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["INFO"] = 4000] = "INFO";
|
|
3027
|
+
DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["WARNING"] = 10000] = "WARNING";
|
|
3028
|
+
DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["DANGER"] = 30000] = "DANGER";
|
|
3029
|
+
})(DEFAULT_TIMEOUTS || (DEFAULT_TIMEOUTS = {}));
|
|
3030
|
+
var STATUS;
|
|
3031
|
+
(function (STATUS) {
|
|
3032
|
+
STATUS[STATUS["UNDISP"] = 0] = "UNDISP";
|
|
3033
|
+
STATUS[STATUS["DISP"] = 1] = "DISP";
|
|
3034
|
+
STATUS[STATUS["ACK"] = 2] = "ACK";
|
|
3035
|
+
})(STATUS || (STATUS = {}));
|
|
3036
|
+
const DEFAULT_MESSAGE_TIMEOUT = 5000;
|
|
3037
|
+
const DATA_MESSAGE_SOUNDS = new InjectionToken("data.message.sounds");
|
|
3038
|
+
class Message {
|
|
3039
|
+
constructor(title, type = 1 /* TYPE.INFO */, message = "", trace = null, ttl = DEFAULT_MESSAGE_TIMEOUT) {
|
|
3040
|
+
this.title = title;
|
|
3041
|
+
this.type = type;
|
|
3042
|
+
this.message = message;
|
|
3043
|
+
this.trace = trace;
|
|
3044
|
+
this.ttl = ttl;
|
|
3045
|
+
this.status = STATUS[STATUS.UNDISP];
|
|
3046
|
+
this.showTrace = false;
|
|
3047
|
+
}
|
|
3048
|
+
get style() {
|
|
3049
|
+
if (this.type === 3 /* TYPE.DANGER */) {
|
|
3050
|
+
return "alert alert-dismissible alert-danger";
|
|
3051
|
+
}
|
|
3052
|
+
if (this.type === 1 /* TYPE.INFO */) {
|
|
3053
|
+
return "alert alert-dismissible alert-info";
|
|
3054
|
+
}
|
|
3055
|
+
if (this.type === 2 /* TYPE.WARNING */) {
|
|
3056
|
+
return "alert alert-dismissible alert-warning";
|
|
3057
|
+
}
|
|
3058
|
+
if (this.type === 0 /* TYPE.SUCCESS */) {
|
|
3059
|
+
return "alert alert-dismissible alert-success";
|
|
3060
|
+
}
|
|
3061
|
+
return "alert alert-dismissible alert-success";
|
|
3062
|
+
}
|
|
3063
|
+
ack() {
|
|
3064
|
+
this.status = STATUS[STATUS.ACK];
|
|
3065
|
+
}
|
|
3066
|
+
}
|
|
3067
|
+
class DataMessageService {
|
|
3068
|
+
constructor(ngZone, sounds) {
|
|
3069
|
+
this.ngZone = ngZone;
|
|
3070
|
+
this.sounds = sounds;
|
|
3071
|
+
this._messages$ = new ReplaySubject(1);
|
|
3072
|
+
this._messages = [];
|
|
3073
|
+
this.init();
|
|
3074
|
+
}
|
|
3075
|
+
get current() {
|
|
3076
|
+
return this._messages$.asObservable();
|
|
3077
|
+
}
|
|
3078
|
+
init() {
|
|
3079
|
+
let changed = false;
|
|
3080
|
+
if (!this._timer) {
|
|
3081
|
+
this.ngZone.runOutsideAngular(() => {
|
|
3082
|
+
this._timer = timer(500, 500);
|
|
3083
|
+
this._subscription = this._timer.subscribe(() => {
|
|
3084
|
+
for (const m of this._messages) {
|
|
3085
|
+
m.ttl -= 500;
|
|
3086
|
+
if (m.ttl <= 0) {
|
|
3087
|
+
changed = true;
|
|
3088
|
+
}
|
|
3089
|
+
}
|
|
3090
|
+
if (changed) {
|
|
3091
|
+
this.ngZone.run(() => {
|
|
3092
|
+
const out = [];
|
|
3093
|
+
for (const m of this._messages) {
|
|
3094
|
+
if (m.ttl >= 0) {
|
|
3095
|
+
out.push(m);
|
|
3096
|
+
}
|
|
3097
|
+
}
|
|
3098
|
+
this._messages = out;
|
|
3099
|
+
this._notify();
|
|
3100
|
+
});
|
|
3101
|
+
}
|
|
3102
|
+
});
|
|
3103
|
+
});
|
|
3104
|
+
}
|
|
3105
|
+
}
|
|
3106
|
+
close() {
|
|
3107
|
+
this._subscription.unsubscribe();
|
|
3108
|
+
}
|
|
3109
|
+
success(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.SUCCESS) {
|
|
3110
|
+
this._messages.push(new Message(title, 0 /* TYPE.SUCCESS */, message, trace, timeout));
|
|
3111
|
+
this.play("success");
|
|
3112
|
+
this._notify();
|
|
3113
|
+
}
|
|
3114
|
+
info(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.INFO) {
|
|
3115
|
+
this._messages.push(new Message(title, 1 /* TYPE.INFO */, message, trace, timeout));
|
|
3116
|
+
this.play("info");
|
|
3117
|
+
this._notify();
|
|
3118
|
+
}
|
|
3119
|
+
warning(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.WARNING) {
|
|
3120
|
+
this._messages.push(new Message(title, 2 /* TYPE.WARNING */, message, trace, timeout));
|
|
3121
|
+
this.play("warning");
|
|
3122
|
+
this._notify();
|
|
3123
|
+
}
|
|
3124
|
+
danger(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.DANGER) {
|
|
3125
|
+
this._messages.push(new Message(title, 3 /* TYPE.DANGER */, message, trace, DEFAULT_TIMEOUTS.DANGER));
|
|
3126
|
+
this.play("error");
|
|
3127
|
+
this._notify();
|
|
3128
|
+
}
|
|
3129
|
+
error(title, message = "", trace = null) {
|
|
3130
|
+
this.danger(title, message, trace);
|
|
3131
|
+
}
|
|
3132
|
+
debug(title, message = "", trace = null) {
|
|
3133
|
+
console.log(title, message, trace);
|
|
3134
|
+
}
|
|
3135
|
+
ack(message) {
|
|
3136
|
+
message.ack();
|
|
3137
|
+
this._notify();
|
|
3138
|
+
}
|
|
3139
|
+
play(type = "notify") {
|
|
3140
|
+
if (this.sounds && this.sounds[type]) {
|
|
3141
|
+
const audio = new Audio(this.sounds[type]);
|
|
3142
|
+
audio.play();
|
|
3143
|
+
}
|
|
3144
|
+
}
|
|
3145
|
+
_notify() {
|
|
3146
|
+
const out = [];
|
|
3147
|
+
for (const message of this._messages) {
|
|
3148
|
+
if ((message.status === STATUS[STATUS.UNDISP]) ||
|
|
3149
|
+
(message.status === STATUS[STATUS.DISP])) {
|
|
3150
|
+
message.status = STATUS[STATUS.DISP];
|
|
3151
|
+
out.push(message);
|
|
3152
|
+
}
|
|
3153
|
+
}
|
|
3154
|
+
this._messages$.next(out);
|
|
3155
|
+
}
|
|
3156
|
+
}
|
|
3157
|
+
DataMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataMessageService, deps: [{ token: i0.NgZone }, { token: DATA_MESSAGE_SOUNDS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3158
|
+
DataMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataMessageService, providedIn: "root" });
|
|
3159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataMessageService, decorators: [{
|
|
3160
|
+
type: Injectable,
|
|
3161
|
+
args: [{
|
|
3162
|
+
providedIn: "root"
|
|
3163
|
+
}]
|
|
3164
|
+
}], ctorParameters: function () {
|
|
3165
|
+
return [{ type: i0.NgZone }, { type: undefined, decorators: [{
|
|
3166
|
+
type: Optional
|
|
3167
|
+
}, {
|
|
3168
|
+
type: Inject,
|
|
3169
|
+
args: [DATA_MESSAGE_SOUNDS]
|
|
3170
|
+
}] }];
|
|
3171
|
+
} });
|
|
3172
|
+
|
|
2842
3173
|
class DispeditComponent {
|
|
2843
3174
|
/**
|
|
2844
3175
|
* Constructor, can be given DATA_DISPLAY_CONFIG injection token to override display classes.
|
|
@@ -3251,11 +3582,17 @@ class DispeditComponent {
|
|
|
3251
3582
|
}
|
|
3252
3583
|
_setDisplayClasses() { }
|
|
3253
3584
|
}
|
|
3254
|
-
DispeditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
3255
|
-
DispeditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: DispeditComponent, selector: "data-dispedit", inputs: { model: "model", field: "field", form: "form", edit: "edit", mode: "mode", choices: "choices", inputClasses: "inputClasses", editor: "editor", viewer: "viewer", default: "default", placeholder: "placeholder", help: "help", hideLabel: "hideLabel", queryset: "queryset", collection: "collection", display: "display", filter: "filter" }, outputs: { changed: "changed" }, usesOnChanges: true, ngImport: i0, template: "\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<ng-template #dispTpl>\n <ng-container [ngSwitch]=\"realDisplay\"><span class=\"editable disp-text\" *ngSwitchCase=\"'text'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-choice\" *ngSwitchCase=\"'choice'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-decimal\" *ngSwitchCase=\"'decimal'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-boolean\" *ngSwitchCase=\"'boolean'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-fkdetails\" *ngSwitchCase=\"'fkdetails'\" (click)=\"enableEditMode()\">\n <div class=\"fkitem\">{{txtValue}}</div></span><span class=\"editable disp-m2mdetails\" *ngSwitchCase=\"'m2mdetails'\" (click)=\"enableEditMode()\">\n <div class=\"m2mitem\" *ngFor=\"let v of txtValues\">{{v}}</div></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'datetime'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'short'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'date'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'shortDate'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span>\n <!--span.editable.disp-quill(*ngSwitchCase=\"'quill'\", (click)=\"enableEditMode()\")-->\n <!-- quill-view-html([content]=\"txtValue||''\")-->\n </ng-container>\n</ng-template>\n<ng-template #editTpl let-form=\"form\">\n <ng-container [ngSwitch]=\"realEditor\">\n <ng-container *ngSwitchCase=\"'input.text'\">\n <input type=\"text\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.email'\">\n <input type=\"email\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['email']\">Format d'email invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.password'\">\n <input type=\"password\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.datetime'\">\n <input type=\"datetime-local\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.date'\">\n <input type=\"date\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.number'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.decimal'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.checkbox'\">\n <input class=\"form-check-input\" type=\"checkbox\" [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'textarea'\">\n <textarea [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" [ngClass]=\"inputClasses\" (keyup.control.enter)=\"update()\" [placeholder]=\"realPlaceholder\"></textarea>\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <!--ng-container(*ngSwitchCase=\"'quill'\")-->\n <!-- quill-editor([formControl]=\"form.get(field)\")-->\n <!-- .form-text(*ngIf=\"realHelp\") {{realHelp}}-->\n <!-- span.ms-1(*ngIf=\"required\") (requis)-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\") Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\") Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\") Format invalide...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\") Ce champ est requis...-->\n <!-- button([ngClass]=\"inputClasses\") Enregistrer-->\n <ng-container *ngSwitchCase=\"'fkselect'\">\n <data-fkselect [collection]=\"collection\" [filter]=\"filter\" (selected)=\"selectedRefItem($event)\" [placeholder]=\"placeholder\" (cancelled)=\"unsetEdit()\" (cleared)=\"selectedRefItem(null)\"></data-fkselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'m2mselect'\">\n <data-m2mselect [collection]=\"collection\" [filter]=\"filter\" (changed)=\"update()\" [formControl]=\"form.get(field)\" (detailsChanged)=\"onM2MValuesChanges($event)\" [model]=\"model\" [field]=\"field\" [placeholder]=\"placeholder\"></data-m2mselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <select [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\" [ngClass]=\"inputClasses\">\n <option *ngFor=\"let c of realChoices\" [ngValue]=\"c.value ? c.value : c\">{{c.desc ? c.desc : c}}</option>\n </select>\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Disp/edit toggler-->\n<ng-template #dispeditTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"fg\">\n <form [formGroup]=\"fg\" (submit)=\"update()\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: fg}\"></ng-container>\n </form>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- DispEdit noform-->\n<ng-template #dispeditFormTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"form\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: form}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Dd display-->\n<ng-container *ngIf=\"mode==='dd'\">\n <dt [class.required]=\"required\" *ngIf=\"!hideLabel\"><span class=\"editable\" (click)=\"toggleEdit()\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span></dt>\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n </dd>\n</ng-container>\n<!-- Inline display-->\n<ng-container *ngIf=\"mode==='inline'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n</ng-container>\n<!-- Form display-->\n<ng-container *ngIf=\"mode==='form'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditFormTpl\"></ng-container>\n</ng-container>", styles: [".editable{cursor:pointer}form.inline{display:inline-block}.required{font-weight:700}.required:after{content:\" (*)\"}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.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$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FkselectComponent, selector: "data-fkselect", inputs: ["model", "field", "edit", "value", "queryset", "collection", "update", "filter", "mode", "display", "search", "label", "placeholder", "inputClasses"], outputs: ["selected", "cancelled", "cleared"] }, { kind: "component", type: M2mselectComponent, selector: "data-m2mselect", inputs: ["model", "field", "edit", "values", "queryset", "collection", "filter", "mode", "display", "search", "label", "placeholder", "emptyLabel", "inputClasses"], outputs: ["added", "removed", "cancelled", "cleared", "detailsChanged", "changed"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }] });
|
|
3256
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
3585
|
+
DispeditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DispeditComponent, deps: [{ token: DATA_DISPLAY_CONFIG, optional: true }, { token: DataMessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3586
|
+
DispeditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: DispeditComponent, isStandalone: true, selector: "data-dispedit", inputs: { model: "model", field: "field", form: "form", edit: "edit", mode: "mode", choices: "choices", inputClasses: "inputClasses", editor: "editor", viewer: "viewer", default: "default", placeholder: "placeholder", help: "help", hideLabel: "hideLabel", queryset: "queryset", collection: "collection", display: "display", filter: "filter" }, outputs: { changed: "changed" }, usesOnChanges: true, ngImport: i0, template: "\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<ng-template #dispTpl>\n <ng-container [ngSwitch]=\"realDisplay\"><span class=\"editable disp-text\" *ngSwitchCase=\"'text'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-choice\" *ngSwitchCase=\"'choice'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-decimal\" *ngSwitchCase=\"'decimal'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-boolean\" *ngSwitchCase=\"'boolean'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-fkdetails\" *ngSwitchCase=\"'fkdetails'\" (click)=\"enableEditMode()\">\n <div class=\"fkitem\">{{txtValue}}</div></span><span class=\"editable disp-m2mdetails\" *ngSwitchCase=\"'m2mdetails'\" (click)=\"enableEditMode()\">\n <div class=\"m2mitem\" *ngFor=\"let v of txtValues\">{{v}}</div></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'datetime'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'short'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'date'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'shortDate'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span>\n <!--span.editable.disp-quill(*ngSwitchCase=\"'quill'\", (click)=\"enableEditMode()\")-->\n <!-- quill-view-html([content]=\"txtValue||''\")-->\n </ng-container>\n</ng-template>\n<ng-template #editTpl let-form=\"form\">\n <ng-container [ngSwitch]=\"realEditor\">\n <ng-container *ngSwitchCase=\"'input.text'\">\n <input type=\"text\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.email'\">\n <input type=\"email\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['email']\">Format d'email invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.password'\">\n <input type=\"password\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.datetime'\">\n <input type=\"datetime-local\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.date'\">\n <input type=\"date\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.number'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.decimal'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.checkbox'\">\n <input class=\"form-check-input\" type=\"checkbox\" [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'textarea'\">\n <textarea [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" [ngClass]=\"inputClasses\" (keyup.control.enter)=\"update()\" [placeholder]=\"realPlaceholder\"></textarea>\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <!--ng-container(*ngSwitchCase=\"'quill'\")-->\n <!-- quill-editor([formControl]=\"form.get(field)\")-->\n <!-- .form-text(*ngIf=\"realHelp\") {{realHelp}}-->\n <!-- span.ms-1(*ngIf=\"required\") (requis)-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\") Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\") Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\") Format invalide...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\") Ce champ est requis...-->\n <!-- button([ngClass]=\"inputClasses\") Enregistrer-->\n <ng-container *ngSwitchCase=\"'fkselect'\">\n <data-fkselect [collection]=\"collection\" [filter]=\"filter\" (selected)=\"selectedRefItem($event)\" [placeholder]=\"placeholder\" (cancelled)=\"unsetEdit()\" (cleared)=\"selectedRefItem(null)\"></data-fkselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'m2mselect'\">\n <data-m2mselect [collection]=\"collection\" [filter]=\"filter\" (changed)=\"update()\" [formControl]=\"form.get(field)\" (detailsChanged)=\"onM2MValuesChanges($event)\" [model]=\"model\" [field]=\"field\" [placeholder]=\"placeholder\"></data-m2mselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <select [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\" [ngClass]=\"inputClasses\">\n <option *ngFor=\"let c of realChoices\" [ngValue]=\"c.value ? c.value : c\">{{c.desc ? c.desc : c}}</option>\n </select>\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Disp/edit toggler-->\n<ng-template #dispeditTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"fg\">\n <form [formGroup]=\"fg\" (submit)=\"update()\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: fg}\"></ng-container>\n </form>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- DispEdit noform-->\n<ng-template #dispeditFormTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"form\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: form}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Dd display-->\n<ng-container *ngIf=\"mode==='dd'\">\n <dt [class.required]=\"required\" *ngIf=\"!hideLabel\"><span class=\"editable\" (click)=\"toggleEdit()\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span></dt>\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n </dd>\n</ng-container>\n<!-- Inline display-->\n<ng-container *ngIf=\"mode==='inline'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n</ng-container>\n<!-- Form display-->\n<ng-container *ngIf=\"mode==='form'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditFormTpl\"></ng-container>\n</ng-container>", styles: [".editable{cursor:pointer}form.inline{display:inline-block}.required{font-weight:700}.required:after{content:\" (*)\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.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: i2$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FkselectComponent, selector: "data-fkselect", inputs: ["model", "field", "edit", "value", "queryset", "collection", "update", "filter", "mode", "display", "search", "label", "placeholder", "inputClasses"], outputs: ["selected", "cancelled", "cleared"] }, { kind: "component", type: M2mselectComponent, selector: "data-m2mselect", inputs: ["model", "field", "edit", "values", "queryset", "collection", "filter", "mode", "display", "search", "label", "placeholder", "emptyLabel", "inputClasses"], outputs: ["added", "removed", "cancelled", "cleared", "detailsChanged", "changed"] }] });
|
|
3587
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DispeditComponent, decorators: [{
|
|
3257
3588
|
type: Component,
|
|
3258
|
-
args: [{ selector: 'data-dispedit', template: "\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<ng-template #dispTpl>\n <ng-container [ngSwitch]=\"realDisplay\"><span class=\"editable disp-text\" *ngSwitchCase=\"'text'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-choice\" *ngSwitchCase=\"'choice'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-decimal\" *ngSwitchCase=\"'decimal'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-boolean\" *ngSwitchCase=\"'boolean'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-fkdetails\" *ngSwitchCase=\"'fkdetails'\" (click)=\"enableEditMode()\">\n <div class=\"fkitem\">{{txtValue}}</div></span><span class=\"editable disp-m2mdetails\" *ngSwitchCase=\"'m2mdetails'\" (click)=\"enableEditMode()\">\n <div class=\"m2mitem\" *ngFor=\"let v of txtValues\">{{v}}</div></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'datetime'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'short'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'date'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'shortDate'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span>\n <!--span.editable.disp-quill(*ngSwitchCase=\"'quill'\", (click)=\"enableEditMode()\")-->\n <!-- quill-view-html([content]=\"txtValue||''\")-->\n </ng-container>\n</ng-template>\n<ng-template #editTpl let-form=\"form\">\n <ng-container [ngSwitch]=\"realEditor\">\n <ng-container *ngSwitchCase=\"'input.text'\">\n <input type=\"text\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.email'\">\n <input type=\"email\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['email']\">Format d'email invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.password'\">\n <input type=\"password\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.datetime'\">\n <input type=\"datetime-local\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.date'\">\n <input type=\"date\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.number'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.decimal'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.checkbox'\">\n <input class=\"form-check-input\" type=\"checkbox\" [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'textarea'\">\n <textarea [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" [ngClass]=\"inputClasses\" (keyup.control.enter)=\"update()\" [placeholder]=\"realPlaceholder\"></textarea>\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <!--ng-container(*ngSwitchCase=\"'quill'\")-->\n <!-- quill-editor([formControl]=\"form.get(field)\")-->\n <!-- .form-text(*ngIf=\"realHelp\") {{realHelp}}-->\n <!-- span.ms-1(*ngIf=\"required\") (requis)-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\") Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\") Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\") Format invalide...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\") Ce champ est requis...-->\n <!-- button([ngClass]=\"inputClasses\") Enregistrer-->\n <ng-container *ngSwitchCase=\"'fkselect'\">\n <data-fkselect [collection]=\"collection\" [filter]=\"filter\" (selected)=\"selectedRefItem($event)\" [placeholder]=\"placeholder\" (cancelled)=\"unsetEdit()\" (cleared)=\"selectedRefItem(null)\"></data-fkselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'m2mselect'\">\n <data-m2mselect [collection]=\"collection\" [filter]=\"filter\" (changed)=\"update()\" [formControl]=\"form.get(field)\" (detailsChanged)=\"onM2MValuesChanges($event)\" [model]=\"model\" [field]=\"field\" [placeholder]=\"placeholder\"></data-m2mselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <select [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\" [ngClass]=\"inputClasses\">\n <option *ngFor=\"let c of realChoices\" [ngValue]=\"c.value ? c.value : c\">{{c.desc ? c.desc : c}}</option>\n </select>\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Disp/edit toggler-->\n<ng-template #dispeditTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"fg\">\n <form [formGroup]=\"fg\" (submit)=\"update()\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: fg}\"></ng-container>\n </form>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- DispEdit noform-->\n<ng-template #dispeditFormTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"form\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: form}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Dd display-->\n<ng-container *ngIf=\"mode==='dd'\">\n <dt [class.required]=\"required\" *ngIf=\"!hideLabel\"><span class=\"editable\" (click)=\"toggleEdit()\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span></dt>\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n </dd>\n</ng-container>\n<!-- Inline display-->\n<ng-container *ngIf=\"mode==='inline'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n</ng-container>\n<!-- Form display-->\n<ng-container *ngIf=\"mode==='form'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditFormTpl\"></ng-container>\n</ng-container>", styles: [".editable{cursor:pointer}form.inline{display:inline-block}.required{font-weight:700}.required:after{content:\" (*)\"}\n"] }]
|
|
3589
|
+
args: [{ selector: 'data-dispedit', standalone: true, imports: [
|
|
3590
|
+
CommonModule,
|
|
3591
|
+
ReactiveFormsModule,
|
|
3592
|
+
FkselectComponent,
|
|
3593
|
+
M2mselectComponent,
|
|
3594
|
+
ChoicePipe,
|
|
3595
|
+
], template: "\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<ng-template #dispTpl>\n <ng-container [ngSwitch]=\"realDisplay\"><span class=\"editable disp-text\" *ngSwitchCase=\"'text'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-choice\" *ngSwitchCase=\"'choice'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-decimal\" *ngSwitchCase=\"'decimal'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-boolean\" *ngSwitchCase=\"'boolean'\" (click)=\"enableEditMode()\">{{txtValue}}</span><span class=\"editable disp-fkdetails\" *ngSwitchCase=\"'fkdetails'\" (click)=\"enableEditMode()\">\n <div class=\"fkitem\">{{txtValue}}</div></span><span class=\"editable disp-m2mdetails\" *ngSwitchCase=\"'m2mdetails'\" (click)=\"enableEditMode()\">\n <div class=\"m2mitem\" *ngFor=\"let v of txtValues\">{{v}}</div></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'datetime'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'short'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span><span class=\"editable disp-datetime\" *ngSwitchCase=\"'date'\" (click)=\"enableEditMode()\">\n <ng-container *ngIf=\"dispValue\">{{txtValue|date:'shortDate'}}</ng-container>\n <ng-container *ngIf=\"!dispValue\">{{txtValue}}</ng-container></span>\n <!--span.editable.disp-quill(*ngSwitchCase=\"'quill'\", (click)=\"enableEditMode()\")-->\n <!-- quill-view-html([content]=\"txtValue||''\")-->\n </ng-container>\n</ng-template>\n<ng-template #editTpl let-form=\"form\">\n <ng-container [ngSwitch]=\"realEditor\">\n <ng-container *ngSwitchCase=\"'input.text'\">\n <input type=\"text\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.email'\">\n <input type=\"email\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['email']\">Format d'email invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.password'\">\n <input type=\"password\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.datetime'\">\n <input type=\"datetime-local\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.date'\">\n <input type=\"date\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" (keyup.enter)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minDate']\">Doit \u00EAtre post\u00E9rieur \u00E0 {{$any(manager).min|date:'short'}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxDate']\">Doit \u00EAtre ant\u00E9rieur \u00E0 {{$any(manager).max|date:'short'}}...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.number'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.decimal'\">\n <input type=\"number\" [formControl]=\"form.get(field)\" [ngClass]=\"inputClasses\" (keyup.escape)=\"unsetEdit()\" [placeholder]=\"realPlaceholder\">\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['min']\">Trop petit : minimum {{$any(manager).min}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['max']\">Trop grand : maximum {{$any(manager).max}}...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'input.checkbox'\">\n <input class=\"form-check-input\" type=\"checkbox\" [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\">\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'textarea'\">\n <textarea [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" [ngClass]=\"inputClasses\" (keyup.control.enter)=\"update()\" [placeholder]=\"realPlaceholder\"></textarea>\n <div class=\"form-text\" *ngIf=\"realHelp\">{{realHelp}}<span class=\"ms-1\" *ngIf=\"required\">(requis)</span></div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\">Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\">Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\">Format invalide...</div>\n <div class=\"invalid-feedback mt-0\" [class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\">Ce champ est requis...</div>\n </ng-container>\n <!--ng-container(*ngSwitchCase=\"'quill'\")-->\n <!-- quill-editor([formControl]=\"form.get(field)\")-->\n <!-- .form-text(*ngIf=\"realHelp\") {{realHelp}}-->\n <!-- span.ms-1(*ngIf=\"required\") (requis)-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['minlength']\") Trop court : {{$any(manager).minLength}} caract\u00E8res minimum...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['maxlength']\") Trop long : {{$any(manager).maxLength}} caract\u00E8res maximum...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['pattern']\") Format invalide...-->\n <!-- .invalid-feedback.mt-0([class.d-block]=\"form && !form.controls[field].pristine && form.controls[field].errors?.['required']\") Ce champ est requis...-->\n <!-- button([ngClass]=\"inputClasses\") Enregistrer-->\n <ng-container *ngSwitchCase=\"'fkselect'\">\n <data-fkselect [collection]=\"collection\" [filter]=\"filter\" (selected)=\"selectedRefItem($event)\" [placeholder]=\"placeholder\" (cancelled)=\"unsetEdit()\" (cleared)=\"selectedRefItem(null)\"></data-fkselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'m2mselect'\">\n <data-m2mselect [collection]=\"collection\" [filter]=\"filter\" (changed)=\"update()\" [formControl]=\"form.get(field)\" (detailsChanged)=\"onM2MValuesChanges($event)\" [model]=\"model\" [field]=\"field\" [placeholder]=\"placeholder\"></data-m2mselect>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <select [formControl]=\"form.get(field)\" (keyup.escape)=\"unsetEdit()\" (change)=\"update()\" [ngClass]=\"inputClasses\">\n <option *ngFor=\"let c of realChoices\" [ngValue]=\"c.value ? c.value : c\">{{c.desc ? c.desc : c}}</option>\n </select>\n <div class=\"form-text\">{{realHelp}}</div>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Disp/edit toggler-->\n<ng-template #dispeditTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"fg\">\n <form [formGroup]=\"fg\" (submit)=\"update()\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: fg}\"></ng-container>\n </form>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- DispEdit noform-->\n<ng-template #dispeditFormTpl>\n <ng-container *ngIf=\"!edit\">\n <ng-container *ngTemplateOutlet=\"dispTpl\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"edit\">\n <ng-container *ngIf=\"form\">\n <ng-container *ngTemplateOutlet=\"editTpl; context: {form: form}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n<!-- Dd display-->\n<ng-container *ngIf=\"mode==='dd'\">\n <dt [class.required]=\"required\" *ngIf=\"!hideLabel\"><span class=\"editable\" (click)=\"toggleEdit()\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span></dt>\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n </dd>\n</ng-container>\n<!-- Inline display-->\n<ng-container *ngIf=\"mode==='inline'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditTpl\"></ng-container>\n</ng-container>\n<!-- Form display-->\n<ng-container *ngIf=\"mode==='form'\">\n <ng-container *ngIf=\"!hideLabel\"><span class=\"pointer float-end\" (click)=\"setDefault()\" *ngIf=\"realDefault!== undefined && edit\"><i class=\"bi bi-trash ms-2\"></i></span>\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"dispeditFormTpl\"></ng-container>\n</ng-container>", styles: [".editable{cursor:pointer}form.inline{display:inline-block}.required{font-weight:700}.required:after{content:\" (*)\"}\n"] }]
|
|
3259
3596
|
}], ctorParameters: function () {
|
|
3260
3597
|
return [{ type: undefined, decorators: [{
|
|
3261
3598
|
type: Optional
|
|
@@ -3301,47 +3638,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
3301
3638
|
type: Output
|
|
3302
3639
|
}] } });
|
|
3303
3640
|
|
|
3304
|
-
class ChoicePipe {
|
|
3305
|
-
transform(value, field, mode = 'desc') {
|
|
3306
|
-
if (!value) {
|
|
3307
|
-
return '-';
|
|
3308
|
-
}
|
|
3309
|
-
const fvalue = value[field];
|
|
3310
|
-
if (mode === 'code') {
|
|
3311
|
-
return `${fvalue}`;
|
|
3312
|
-
}
|
|
3313
|
-
const manager = value.FM(field);
|
|
3314
|
-
const choices = manager.choices;
|
|
3315
|
-
if (!choices) {
|
|
3316
|
-
return `${fvalue}`;
|
|
3317
|
-
}
|
|
3318
|
-
for (const ch of choices) {
|
|
3319
|
-
if (ch.value === fvalue) {
|
|
3320
|
-
if (mode === 'desc') {
|
|
3321
|
-
return ch.desc;
|
|
3322
|
-
}
|
|
3323
|
-
else {
|
|
3324
|
-
return `[${fvalue}] ${ch.desc}`;
|
|
3325
|
-
}
|
|
3326
|
-
}
|
|
3327
|
-
}
|
|
3328
|
-
return `[${fvalue}] ??`;
|
|
3329
|
-
}
|
|
3330
|
-
}
|
|
3331
|
-
ChoicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
3332
|
-
ChoicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, name: "choice" });
|
|
3333
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, decorators: [{
|
|
3334
|
-
type: Pipe,
|
|
3335
|
-
args: [{
|
|
3336
|
-
name: 'choice',
|
|
3337
|
-
}]
|
|
3338
|
-
}] });
|
|
3339
|
-
|
|
3340
3641
|
class SafeDeleteComponent {
|
|
3341
3642
|
constructor(_ofc) {
|
|
3342
3643
|
this._ofc = _ofc;
|
|
3343
3644
|
this.checks = {};
|
|
3344
3645
|
this.deleted = new EventEmitter();
|
|
3646
|
+
this.display = 'button';
|
|
3345
3647
|
}
|
|
3346
3648
|
checkDelete(model) {
|
|
3347
3649
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -3360,11 +3662,11 @@ class SafeDeleteComponent {
|
|
|
3360
3662
|
});
|
|
3361
3663
|
}
|
|
3362
3664
|
}
|
|
3363
|
-
SafeDeleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
3364
|
-
SafeDeleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
3365
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
3665
|
+
SafeDeleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: SafeDeleteComponent, deps: [{ token: i2$1.NgbOffcanvas }], target: i0.ɵɵFactoryTarget.Component });
|
|
3666
|
+
SafeDeleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: SafeDeleteComponent, isStandalone: true, selector: "data-safe-delete", inputs: { model: "model", service: "service", checks: "checks", display: "display" }, outputs: { deleted: "deleted" }, viewQueries: [{ propertyName: "_dialogRef", first: true, predicate: ["dialog"], descendants: true, static: true }], ngImport: i0, template: "\n<ng-template #dialog let-offcanvas>\n <div class=\"offcanvas-header\">\n <h2 class=\"offcanvas-title text-danger text-center\"><i class=\"bi bi-trash me-2\"></i>Supprimer r\u00E9ellement ??</h2>\n </div>\n <div class=\"offcanvas-body text-danger\" *ngIf=\"result\">\n <div class=\"text-center my-4 fs-1\"><i class=\"bi bi-exclamation-diamond my-5\"></i></div>\n <div class=\"fs-4\">\n <p>La suppression de cet \u00E9l\u00E9ment supprimera {{result.count}} \u00E9l\u00E9ments dans la base de donn\u00E9es..</p>\n </div>\n <table class=\"table table-sm table-striped table-danger\">\n <thead>\n <tr>\n <th>Type d'\u00E9l\u00E9ment</th>\n <th>Nombre</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let rl of result.details\">\n <tr>\n <td>{{checks[rl[0]] ? checks[rl[0]] : rl[0]}}</td>\n <td>{{rl[1]}}</td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <button class=\"w-100 btn btn-lg btn-danger\" (click)=\"reallyDelete()\"><i class=\"bi bi-trash me-2\"></i>Je confirme la suppression</button>\n <button class=\"w-100 btn btn-outline-secondary my-3\" (click)=\"offcanvas.close()\"><i class=\"bi bi-door-open me-2\"></i>Je renonce \u00E0 la suppression</button>\n </div>\n</ng-template>\n<button class=\"btn btn-sm btn-outline-danger float-end\" (click)=\"checkDelete(model)\" *ngIf=\"display==='button'\"><i class=\"bi bi-trash mx-2\"></i></button><i class=\"bi bi-trash mx-2\" (click)=\"checkDelete(model)\" *ngIf=\"display==='icon'\" role=\"button\"></i>\n<div (click)=\"checkDelete(model)\" *ngIf=\"display==='custom'\" role=\"button\">\n <ng-content></ng-content>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NgbOffcanvasModule }] });
|
|
3667
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: SafeDeleteComponent, decorators: [{
|
|
3366
3668
|
type: Component,
|
|
3367
|
-
args: [{ selector: 'data-safe-delete', standalone: true, imports: [CommonModule, NgbOffcanvasModule], template: "\n<ng-template #dialog let-offcanvas>\n <div class=\"offcanvas-header\">\n <h2 class=\"offcanvas-title text-danger text-center\"><i class=\"bi bi-trash me-2\"></i>Supprimer r\u00E9ellement ??</h2>\n </div>\n <div class=\"offcanvas-body text-danger\" *ngIf=\"result\">\n <div class=\"text-center my-4 fs-1\"><i class=\"bi bi-exclamation-diamond my-5\"></i></div>\n <div class=\"fs-4\">\n <p>La suppression de cet \u00E9l\u00E9ment supprimera {{result.count}} \u00E9l\u00E9ments dans la base de donn\u00E9es..</p>\n </div>\n <table class=\"table table-sm table-striped table-danger\">\n <thead>\n <tr>\n <th>Type d'\u00E9l\u00E9ment</th>\n <th>Nombre</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let rl of result.details\">\n <tr>\n <td>{{checks[rl[0]] ? checks[rl[0]] : rl[0]}}</td>\n <td>{{rl[1]}}</td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <button class=\"w-100 btn btn-lg btn-danger\" (click)=\"reallyDelete()\"><i class=\"bi bi-trash me-2\"></i>Je confirme la suppression</button>\n <button class=\"w-100 btn btn-outline-secondary my-3\" (click)=\"offcanvas.close()\"><i class=\"bi bi-door-open me-2\"></i>Je renonce \u00E0 la suppression</button>\n </div>\n</ng-template>\n<button class=\"btn btn-sm btn-outline-danger float-end\" (click)=\"checkDelete(model)\"><i class=\"bi bi-trash mx-2\"></i></button>" }]
|
|
3669
|
+
args: [{ selector: 'data-safe-delete', standalone: true, imports: [CommonModule, NgbOffcanvasModule], template: "\n<ng-template #dialog let-offcanvas>\n <div class=\"offcanvas-header\">\n <h2 class=\"offcanvas-title text-danger text-center\"><i class=\"bi bi-trash me-2\"></i>Supprimer r\u00E9ellement ??</h2>\n </div>\n <div class=\"offcanvas-body text-danger\" *ngIf=\"result\">\n <div class=\"text-center my-4 fs-1\"><i class=\"bi bi-exclamation-diamond my-5\"></i></div>\n <div class=\"fs-4\">\n <p>La suppression de cet \u00E9l\u00E9ment supprimera {{result.count}} \u00E9l\u00E9ments dans la base de donn\u00E9es..</p>\n </div>\n <table class=\"table table-sm table-striped table-danger\">\n <thead>\n <tr>\n <th>Type d'\u00E9l\u00E9ment</th>\n <th>Nombre</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let rl of result.details\">\n <tr>\n <td>{{checks[rl[0]] ? checks[rl[0]] : rl[0]}}</td>\n <td>{{rl[1]}}</td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <button class=\"w-100 btn btn-lg btn-danger\" (click)=\"reallyDelete()\"><i class=\"bi bi-trash me-2\"></i>Je confirme la suppression</button>\n <button class=\"w-100 btn btn-outline-secondary my-3\" (click)=\"offcanvas.close()\"><i class=\"bi bi-door-open me-2\"></i>Je renonce \u00E0 la suppression</button>\n </div>\n</ng-template>\n<button class=\"btn btn-sm btn-outline-danger float-end\" (click)=\"checkDelete(model)\" *ngIf=\"display==='button'\"><i class=\"bi bi-trash mx-2\"></i></button><i class=\"bi bi-trash mx-2\" (click)=\"checkDelete(model)\" *ngIf=\"display==='icon'\" role=\"button\"></i>\n<div (click)=\"checkDelete(model)\" *ngIf=\"display==='custom'\" role=\"button\">\n <ng-content></ng-content>\n</div>" }]
|
|
3368
3670
|
}], ctorParameters: function () { return [{ type: i2$1.NgbOffcanvas }]; }, propDecorators: { model: [{
|
|
3369
3671
|
type: Input
|
|
3370
3672
|
}], service: [{
|
|
@@ -3373,55 +3675,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
3373
3675
|
type: Input
|
|
3374
3676
|
}], deleted: [{
|
|
3375
3677
|
type: Output
|
|
3678
|
+
}], display: [{
|
|
3679
|
+
type: Input
|
|
3376
3680
|
}], _dialogRef: [{
|
|
3377
3681
|
type: ViewChild,
|
|
3378
3682
|
args: ['dialog', { static: true }]
|
|
3379
3683
|
}] } });
|
|
3380
3684
|
|
|
3381
|
-
class DispeditModule {
|
|
3382
|
-
}
|
|
3383
|
-
DispeditModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DispeditModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3384
|
-
DispeditModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: DispeditModule, declarations: [DispeditComponent,
|
|
3385
|
-
FkselectComponent,
|
|
3386
|
-
M2mselectComponent,
|
|
3387
|
-
ChoicePipe], imports: [CommonModule,
|
|
3388
|
-
NgbTypeaheadModule,
|
|
3389
|
-
NgbOffcanvasModule,
|
|
3390
|
-
ReactiveFormsModule,
|
|
3391
|
-
A11yModule], exports: [DispeditComponent,
|
|
3392
|
-
FkselectComponent,
|
|
3393
|
-
M2mselectComponent,
|
|
3394
|
-
ChoicePipe] });
|
|
3395
|
-
DispeditModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DispeditModule, imports: [CommonModule,
|
|
3396
|
-
NgbTypeaheadModule,
|
|
3397
|
-
NgbOffcanvasModule,
|
|
3398
|
-
ReactiveFormsModule,
|
|
3399
|
-
A11yModule] });
|
|
3400
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DispeditModule, decorators: [{
|
|
3401
|
-
type: NgModule,
|
|
3402
|
-
args: [{
|
|
3403
|
-
declarations: [
|
|
3404
|
-
DispeditComponent,
|
|
3405
|
-
FkselectComponent,
|
|
3406
|
-
M2mselectComponent,
|
|
3407
|
-
ChoicePipe,
|
|
3408
|
-
],
|
|
3409
|
-
exports: [
|
|
3410
|
-
DispeditComponent,
|
|
3411
|
-
FkselectComponent,
|
|
3412
|
-
M2mselectComponent,
|
|
3413
|
-
ChoicePipe,
|
|
3414
|
-
],
|
|
3415
|
-
imports: [
|
|
3416
|
-
CommonModule,
|
|
3417
|
-
NgbTypeaheadModule,
|
|
3418
|
-
NgbOffcanvasModule,
|
|
3419
|
-
ReactiveFormsModule,
|
|
3420
|
-
A11yModule,
|
|
3421
|
-
],
|
|
3422
|
-
}]
|
|
3423
|
-
}] });
|
|
3424
|
-
|
|
3425
3685
|
class CharFieldManager extends BaseFieldManager {
|
|
3426
3686
|
constructor(params) {
|
|
3427
3687
|
super(params);
|
|
@@ -3552,18 +3812,26 @@ class DateFieldManager extends BaseFieldManager {
|
|
|
3552
3812
|
return v;
|
|
3553
3813
|
}
|
|
3554
3814
|
fromJson(data) {
|
|
3555
|
-
if (data === null) {
|
|
3815
|
+
if (data === null || data === undefined) {
|
|
3556
3816
|
return null;
|
|
3557
3817
|
}
|
|
3558
|
-
|
|
3818
|
+
const date = new Date(data);
|
|
3819
|
+
if (date instanceof Date && !isNaN(date)) {
|
|
3820
|
+
return date;
|
|
3821
|
+
}
|
|
3822
|
+
return null;
|
|
3559
3823
|
}
|
|
3560
3824
|
toJson(data) {
|
|
3561
3825
|
if (data === null || data === undefined) {
|
|
3562
3826
|
return null;
|
|
3563
3827
|
}
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3828
|
+
if (typeof data === 'string') {
|
|
3829
|
+
const d = this.fromJson(data);
|
|
3830
|
+
if (d === null) {
|
|
3831
|
+
return null;
|
|
3832
|
+
}
|
|
3833
|
+
data = d;
|
|
3834
|
+
}
|
|
3567
3835
|
return `${data.getUTCFullYear()}-${data.getUTCMonth() + 1}-${data.getUTCDate()}`;
|
|
3568
3836
|
}
|
|
3569
3837
|
/**
|
|
@@ -3595,6 +3863,13 @@ class DatetimeFieldManager extends DateFieldManager {
|
|
|
3595
3863
|
if (data === null || data === undefined) {
|
|
3596
3864
|
return null;
|
|
3597
3865
|
}
|
|
3866
|
+
if (typeof data === 'string') {
|
|
3867
|
+
const d = this.fromJson(data);
|
|
3868
|
+
if (d === null) {
|
|
3869
|
+
return null;
|
|
3870
|
+
}
|
|
3871
|
+
data = d;
|
|
3872
|
+
}
|
|
3598
3873
|
try {
|
|
3599
3874
|
return data.toISOString();
|
|
3600
3875
|
}
|
|
@@ -3697,6 +3972,11 @@ class BooleanFieldManager extends BaseFieldManager {
|
|
|
3697
3972
|
const booleanField = (updates = {}) => genericDataField(updates, 'booleanField', BooleanFieldManager);
|
|
3698
3973
|
|
|
3699
3974
|
class IntegerFieldManager extends BaseFieldManager {
|
|
3975
|
+
constructor() {
|
|
3976
|
+
super(...arguments);
|
|
3977
|
+
this.displayType = 'text';
|
|
3978
|
+
this.editorType = 'input.number';
|
|
3979
|
+
}
|
|
3700
3980
|
get validators() {
|
|
3701
3981
|
const v = super.getValidators();
|
|
3702
3982
|
if (this.min !== undefined) {
|
|
@@ -3709,6 +3989,11 @@ class IntegerFieldManager extends BaseFieldManager {
|
|
|
3709
3989
|
}
|
|
3710
3990
|
}
|
|
3711
3991
|
class FloatFieldManager extends IntegerFieldManager {
|
|
3992
|
+
constructor() {
|
|
3993
|
+
super(...arguments);
|
|
3994
|
+
this.displayType = 'text';
|
|
3995
|
+
this.editorType = 'input.number';
|
|
3996
|
+
}
|
|
3712
3997
|
}
|
|
3713
3998
|
class DecimalFieldManager extends IntegerFieldManager {
|
|
3714
3999
|
constructor() {
|
|
@@ -3740,8 +4025,8 @@ class MessageZoneComponent {
|
|
|
3740
4025
|
this._subscriptions$.complete();
|
|
3741
4026
|
}
|
|
3742
4027
|
}
|
|
3743
|
-
MessageZoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
3744
|
-
MessageZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
4028
|
+
MessageZoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: MessageZoneComponent, deps: [{ token: DataMessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4029
|
+
MessageZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: MessageZoneComponent, isStandalone: true, selector: "data-message-zone", inputs: { filter: "filter" }, providers: [provideAnimations()], ngImport: i0, template: "\n<div class=\"messagezone\">\n <div class=\"alert\" *ngFor=\"let message of current\" [@dispStatus]=\"message.status\" [class]=\"message.style\" (click)=\"message.showTrace=!message.showTrace\">\n <button class=\"btn-close\" type=\"button\" (click)=\"messages.ack(message)\" aria-label=\"Close\"></button><strong>{{message.title}}</strong> {{message.message}}\n <div class=\"pretrace\" *ngIf=\"message.showTrace\">{{message.trace}}</div>\n </div>\n</div>", styles: [".messagezone{position:fixed;top:30px;right:40px;width:35vw;height:auto;z-index:1050}.messagezone .pretrace{white-space:pre-wrap;font-family:monospace;font-size:.7rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
|
|
3745
4030
|
trigger('dispStatus', [
|
|
3746
4031
|
transition('void => *', [
|
|
3747
4032
|
style({ opacity: 0 }),
|
|
@@ -3753,7 +4038,7 @@ MessageZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
3753
4038
|
]),
|
|
3754
4039
|
]),
|
|
3755
4040
|
] });
|
|
3756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4041
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: MessageZoneComponent, decorators: [{
|
|
3757
4042
|
type: Component,
|
|
3758
4043
|
args: [{ selector: 'data-message-zone', standalone: true, imports: [CommonModule], providers: [provideAnimations()], animations: [
|
|
3759
4044
|
trigger('dispStatus', [
|
|
@@ -4219,9 +4504,9 @@ class NgFileDropDirective {
|
|
|
4219
4504
|
this.uploadOutput.emit(event);
|
|
4220
4505
|
}
|
|
4221
4506
|
}
|
|
4222
|
-
NgFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4223
|
-
NgFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
4224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4507
|
+
NgFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgFileDropDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
4508
|
+
NgFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: NgFileDropDirective, selector: "[dataFileDrop]", inputs: { options: "options", uploadInput: "uploadInput" }, outputs: { uploadOutput: "uploadOutput" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" } }, ngImport: i0 });
|
|
4509
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgFileDropDirective, decorators: [{
|
|
4225
4510
|
type: Directive,
|
|
4226
4511
|
args: [{
|
|
4227
4512
|
selector: "[dataFileDrop]"
|
|
@@ -4276,9 +4561,9 @@ class NgFileSelectDirective {
|
|
|
4276
4561
|
}
|
|
4277
4562
|
}
|
|
4278
4563
|
}
|
|
4279
|
-
NgFileSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4280
|
-
NgFileSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
4281
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4564
|
+
NgFileSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgFileSelectDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
4565
|
+
NgFileSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: NgFileSelectDirective, selector: "[dataFileSelect]", inputs: { options: "options", uploadInput: "uploadInput" }, outputs: { uploadOutput: "uploadOutput" }, ngImport: i0 });
|
|
4566
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgFileSelectDirective, decorators: [{
|
|
4282
4567
|
type: Directive,
|
|
4283
4568
|
args: [{
|
|
4284
4569
|
selector: "[dataFileSelect]"
|
|
@@ -4293,10 +4578,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
4293
4578
|
|
|
4294
4579
|
class NgxUploaderModule {
|
|
4295
4580
|
}
|
|
4296
|
-
NgxUploaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4297
|
-
NgxUploaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
4298
|
-
NgxUploaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
|
4299
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4581
|
+
NgxUploaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgxUploaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
4582
|
+
NgxUploaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: NgxUploaderModule, declarations: [NgFileDropDirective, NgFileSelectDirective], exports: [NgFileDropDirective, NgFileSelectDirective] });
|
|
4583
|
+
NgxUploaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgxUploaderModule });
|
|
4584
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: NgxUploaderModule, decorators: [{
|
|
4300
4585
|
type: NgModule,
|
|
4301
4586
|
args: [{
|
|
4302
4587
|
declarations: [NgFileDropDirective, NgFileSelectDirective],
|
|
@@ -4434,8 +4719,9 @@ AuthServiceBase = __decorate([
|
|
|
4434
4719
|
|
|
4435
4720
|
const DATA_AUTH_SERVICE = new InjectionToken('data.auth.service');
|
|
4436
4721
|
class AuthInterceptor {
|
|
4437
|
-
constructor(_auth) {
|
|
4722
|
+
constructor(_auth, _apiUrl) {
|
|
4438
4723
|
this._auth = _auth;
|
|
4724
|
+
this._apiUrl = _apiUrl;
|
|
4439
4725
|
this._isRefreshing = false;
|
|
4440
4726
|
this._refreshTokenSubject = new BehaviorSubject(null);
|
|
4441
4727
|
}
|
|
@@ -4443,6 +4729,9 @@ class AuthInterceptor {
|
|
|
4443
4729
|
if (this._auth.isAnonymous) {
|
|
4444
4730
|
return next.handle(req);
|
|
4445
4731
|
}
|
|
4732
|
+
if (!req.url.startsWith(this._apiUrl)) {
|
|
4733
|
+
return next.handle(req);
|
|
4734
|
+
}
|
|
4446
4735
|
if (!this._auth.isAnonymous) {
|
|
4447
4736
|
req = this._addToken(req, this._auth.accessToken);
|
|
4448
4737
|
}
|
|
@@ -4487,9 +4776,9 @@ class AuthInterceptor {
|
|
|
4487
4776
|
});
|
|
4488
4777
|
}
|
|
4489
4778
|
}
|
|
4490
|
-
AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4491
|
-
AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
4492
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4779
|
+
AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthInterceptor, deps: [{ token: DATA_AUTH_SERVICE }, { token: DATA_API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4780
|
+
AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthInterceptor, providedIn: 'root' });
|
|
4781
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
4493
4782
|
type: Injectable,
|
|
4494
4783
|
args: [{
|
|
4495
4784
|
providedIn: 'root',
|
|
@@ -4498,6 +4787,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
4498
4787
|
return [{ type: AuthServiceBase, decorators: [{
|
|
4499
4788
|
type: Inject,
|
|
4500
4789
|
args: [DATA_AUTH_SERVICE]
|
|
4790
|
+
}] }, { type: undefined, decorators: [{
|
|
4791
|
+
type: Inject,
|
|
4792
|
+
args: [DATA_API_URL]
|
|
4501
4793
|
}] }];
|
|
4502
4794
|
} });
|
|
4503
4795
|
|
|
@@ -4683,9 +4975,9 @@ class BreadcrumbComponent {
|
|
|
4683
4975
|
return '';
|
|
4684
4976
|
}
|
|
4685
4977
|
}
|
|
4686
|
-
BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4687
|
-
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
4688
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4978
|
+
BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
4979
|
+
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: BreadcrumbComponent, isStandalone: true, selector: "data-breadcrumb", inputs: { data: "data", icons: "icons" }, usesOnChanges: true, ngImport: i0, template: "\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <ng-container *ngFor=\"let p of tree\">\n <li class=\"breadcrumb-item\" *ngIf=\"!p.current\"><a class=\"breadcrumb-item\" [routerLink]=\"p.path\">\n <ng-container *ngIf=\"icons && p.icon\"><i class=\"me-2\" [ngClass]=\"p.icon\"></i>{{p.title}}</ng-container>\n <ng-container *ngIf=\"!(icons && p.icon)\">{{p.title}}</ng-container></a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\" *ngIf=\"p.current\">\n <ng-container *ngIf=\"icons && p.icon\"><i class=\"me-1\" [ngClass]=\"p.icon\"></i>{{p.title}}</ng-container>\n <ng-container *ngIf=\"!(icons && p.icon)\">{{p.title}}</ng-container>\n </li>\n </ng-container>\n </ol>\n</nav>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
4980
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
4689
4981
|
type: Component,
|
|
4690
4982
|
args: [{ selector: 'data-breadcrumb', standalone: true, imports: [CommonModule, RouterModule], template: "\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <ng-container *ngFor=\"let p of tree\">\n <li class=\"breadcrumb-item\" *ngIf=\"!p.current\"><a class=\"breadcrumb-item\" [routerLink]=\"p.path\">\n <ng-container *ngIf=\"icons && p.icon\"><i class=\"me-2\" [ngClass]=\"p.icon\"></i>{{p.title}}</ng-container>\n <ng-container *ngIf=\"!(icons && p.icon)\">{{p.title}}</ng-container></a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\" *ngIf=\"p.current\">\n <ng-container *ngIf=\"icons && p.icon\"><i class=\"me-1\" [ngClass]=\"p.icon\"></i>{{p.title}}</ng-container>\n <ng-container *ngIf=\"!(icons && p.icon)\">{{p.title}}</ng-container>\n </li>\n </ng-container>\n </ol>\n</nav>" }]
|
|
4691
4983
|
}], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }]; }, propDecorators: { data: [{
|
|
@@ -4754,9 +5046,9 @@ class TabMemoryService {
|
|
|
4754
5046
|
return null;
|
|
4755
5047
|
}
|
|
4756
5048
|
}
|
|
4757
|
-
TabMemoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4758
|
-
TabMemoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
4759
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
5049
|
+
TabMemoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: TabMemoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5050
|
+
TabMemoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: TabMemoryService, providedIn: 'root' });
|
|
5051
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: TabMemoryService, decorators: [{
|
|
4760
5052
|
type: Injectable,
|
|
4761
5053
|
args: [{
|
|
4762
5054
|
providedIn: 'root',
|
|
@@ -4787,5 +5079,5 @@ const slugify = (str) => {
|
|
|
4787
5079
|
* Generated bundle index. Do not edit.
|
|
4788
5080
|
*/
|
|
4789
5081
|
|
|
4790
|
-
export { AuthInterceptor, AuthServiceBase, BootstrapDataDisplayConfig, BreadcrumbComponent, ChoicePipe, Collection, CollectionMock, DATA_API_URL, DATA_AUTH_PARAMS, DATA_AUTH_SERVICE, DATA_AUTH_USER_SERVICE, DATA_DISPLAY_CONFIG, DATA_MAX_TRANSFERSTATE_TIME, DATA_MESSAGE_SOUNDS, DEFAULT_TIMEOUTS, DataBackend, DataMessageService, DataModel, DataUploaderService, DispeditComponent,
|
|
5082
|
+
export { AuthInterceptor, AuthServiceBase, BanAdapter, BootstrapDataDisplayConfig, BreadcrumbComponent, ChoicePipe, Collection, CollectionMock, DATA_API_URL, DATA_AUTH_PARAMS, DATA_AUTH_SERVICE, DATA_AUTH_USER_SERVICE, DATA_DISPLAY_CONFIG, DATA_MAX_TRANSFERSTATE_TIME, DATA_MESSAGE_SOUNDS, DEFAULT_TIMEOUTS, DataBackend, DataMessageService, DataModel, DataUploaderService, DispeditComponent, FactorPipe, FactorcPipe, FkselectComponent, Jwt, Link, M2mselectComponent, Message, MessageZoneComponent, ModelList, ModelListAutocompleteFilter, ModelListAutocompleteMultiFilter, ModelListDatetimeFilter, ModelListDatetimerangeFilter, ModelListFieldHeaderComponent, ModelListFieldsSelectorComponent, ModelListFilters, ModelListFiltersComponent, ModelListFiltersSelectComponent, ModelListFlagsFilter, ModelListGeodistanceFilter, ModelListNumberFilter, ModelListNumberOperations, ModelListPaginatorComponent, ModelListSelectFilter, ModelListSelectMultiFilter, ModelListService, ModelListSorterComponent, ModelListTextFilter, ModelListTreeFilter, NavDriver, NgFileDropDirective, NgFileSelectDirective, NgxUploaderModule, Queryset, RData, STATUS, SafeDeleteComponent, TabMemoryService, UploadStatus, booleanField, charField, dateField, datetimeField, decimalField, detailsField, emailField, floatField, foreignKeyField, humanizeBytes, integerField, isValue, manyToManyField, passwordField, primaryField, reverseForeignKeyField, slugify, strToNumber, textField };
|
|
4791
5083
|
//# sourceMappingURL=solidev-data.mjs.map
|