@solidev/data 0.0.1-dev.1 → 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/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 +3 -3
- package/esm2020/lib/messages/message-zone/message-zone.component.mjs +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +679 -429
- package/fesm2015/solidev-data.mjs.map +1 -1
- package/fesm2020/solidev-data.mjs +673 -427
- 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/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/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/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, share, of, takeUntil, NEVER, 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
|
*
|
|
@@ -810,9 +809,9 @@ class DataBackend {
|
|
|
810
809
|
return this._cachedGet(collection, url, { headers, params });
|
|
811
810
|
}
|
|
812
811
|
}
|
|
813
|
-
DataBackend.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
814
|
-
DataBackend.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
815
|
-
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: [{
|
|
816
815
|
type: Injectable,
|
|
817
816
|
args: [{
|
|
818
817
|
providedIn: 'root',
|
|
@@ -864,7 +863,7 @@ class ModelListFields {
|
|
|
864
863
|
}
|
|
865
864
|
// Prepare allowed fields (all fields if not set or empty)
|
|
866
865
|
let allowed;
|
|
867
|
-
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) {
|
|
868
867
|
allowed = Array.from(m.FN);
|
|
869
868
|
for (const c of custom) {
|
|
870
869
|
allowed.push(c.name);
|
|
@@ -1026,6 +1025,17 @@ class ModelListFields {
|
|
|
1026
1025
|
getAtPos(pos) {
|
|
1027
1026
|
return this.__fields[pos] || null;
|
|
1028
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
|
+
}
|
|
1029
1039
|
_update() {
|
|
1030
1040
|
this.__fields.sort((a, b) => a.position - b.position);
|
|
1031
1041
|
let i = 0;
|
|
@@ -1043,17 +1053,6 @@ class ModelListFields {
|
|
|
1043
1053
|
this._output.next(this._enabled);
|
|
1044
1054
|
this._fields.next(this.__fields);
|
|
1045
1055
|
}
|
|
1046
|
-
setPosition(fname, position) {
|
|
1047
|
-
const f = this.get(fname);
|
|
1048
|
-
if (f) {
|
|
1049
|
-
f.position = position;
|
|
1050
|
-
}
|
|
1051
|
-
else {
|
|
1052
|
-
console.error('Field not found', f);
|
|
1053
|
-
}
|
|
1054
|
-
this._update();
|
|
1055
|
-
return this._enabled;
|
|
1056
|
-
}
|
|
1057
1056
|
}
|
|
1058
1057
|
|
|
1059
1058
|
class ModelListPaginator {
|
|
@@ -1225,7 +1224,7 @@ class ModelListFilters {
|
|
|
1225
1224
|
const tmp = Array.from((params === null || params === void 0 ? void 0 : params.filters) || []);
|
|
1226
1225
|
// Prepare allowed filters (all filters if not set or empty)
|
|
1227
1226
|
let allowed = [];
|
|
1228
|
-
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) {
|
|
1229
1228
|
for (const f of tmp) {
|
|
1230
1229
|
allowed.push(f.name);
|
|
1231
1230
|
}
|
|
@@ -1414,9 +1413,9 @@ class ModelListService {
|
|
|
1414
1413
|
return ml;
|
|
1415
1414
|
}
|
|
1416
1415
|
}
|
|
1417
|
-
ModelListService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1418
|
-
ModelListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
1419
|
-
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: [{
|
|
1420
1419
|
type: Injectable,
|
|
1421
1420
|
args: [{
|
|
1422
1421
|
providedIn: 'root',
|
|
@@ -1459,9 +1458,9 @@ class ModelListFieldsSelectorComponent {
|
|
|
1459
1458
|
}
|
|
1460
1459
|
}
|
|
1461
1460
|
}
|
|
1462
|
-
ModelListFieldsSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1463
|
-
ModelListFieldsSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1464
|
-
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: [{
|
|
1465
1464
|
type: Component,
|
|
1466
1465
|
args: [{ selector: 'data-model-list-fields-selector', standalone: true, imports: [
|
|
1467
1466
|
CommonModule,
|
|
@@ -1510,9 +1509,9 @@ class ModelListSorterComponent {
|
|
|
1510
1509
|
this.list.sorter.unset(this.field);
|
|
1511
1510
|
}
|
|
1512
1511
|
}
|
|
1513
|
-
ModelListSorterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1514
|
-
ModelListSorterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1515
|
-
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: [{
|
|
1516
1515
|
type: Component,
|
|
1517
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"] }]
|
|
1518
1517
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1533,9 +1532,9 @@ class ModelListFieldHeaderComponent {
|
|
|
1533
1532
|
this.list.fields.enable(f.name);
|
|
1534
1533
|
}
|
|
1535
1534
|
}
|
|
1536
|
-
ModelListFieldHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1537
|
-
ModelListFieldHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1538
|
-
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: [{
|
|
1539
1538
|
type: Component,
|
|
1540
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"] }]
|
|
1541
1540
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1559,11 +1558,11 @@ class ModelListFiltersSelectComponent {
|
|
|
1559
1558
|
this.list.filters.update();
|
|
1560
1559
|
}
|
|
1561
1560
|
}
|
|
1562
|
-
ModelListFiltersSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1563
|
-
ModelListFiltersSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1564
|
-
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: [{
|
|
1565
1564
|
type: Component,
|
|
1566
|
-
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>" }]
|
|
1567
1566
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1568
1567
|
type: Input
|
|
1569
1568
|
}], containerClasses: [{
|
|
@@ -1581,7 +1580,7 @@ class ModelListTextFilterComponent {
|
|
|
1581
1580
|
}
|
|
1582
1581
|
ngOnInit() {
|
|
1583
1582
|
this.filter.valueChanges.subscribe((val) => {
|
|
1584
|
-
this.fc.setValue(val, { emitEvent: false });
|
|
1583
|
+
this.fc.setValue(val.value, { emitEvent: false });
|
|
1585
1584
|
});
|
|
1586
1585
|
this.fc.valueChanges.pipe(debounceTime(250)).subscribe((val) => {
|
|
1587
1586
|
if (this.filter.set(val, val)) {
|
|
@@ -1594,9 +1593,9 @@ class ModelListTextFilterComponent {
|
|
|
1594
1593
|
this.list.filters.update();
|
|
1595
1594
|
}
|
|
1596
1595
|
}
|
|
1597
|
-
ModelListTextFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1598
|
-
ModelListTextFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1599
|
-
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: [{
|
|
1600
1599
|
type: Component,
|
|
1601
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>" }]
|
|
1602
1601
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1617,12 +1616,12 @@ class ModelListAutocompleteFilterComponent {
|
|
|
1617
1616
|
}
|
|
1618
1617
|
ngOnInit() {
|
|
1619
1618
|
this._setDisplay();
|
|
1620
|
-
this.filter.valueChanges.subscribe((val) => {
|
|
1621
|
-
this.fc.setValue(val, { emitEvent: false });
|
|
1622
|
-
});
|
|
1623
1619
|
this.fc.valueChanges.pipe(debounceTime(250)).subscribe((val) => {
|
|
1624
|
-
if (
|
|
1625
|
-
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
|
+
}
|
|
1626
1625
|
}
|
|
1627
1626
|
});
|
|
1628
1627
|
}
|
|
@@ -1674,24 +1673,28 @@ class ModelListAutocompleteFilterComponent {
|
|
|
1674
1673
|
return '';
|
|
1675
1674
|
}
|
|
1676
1675
|
_search(text$) {
|
|
1677
|
-
return text$.pipe(
|
|
1676
|
+
return text$.pipe(debounceTime(750), distinctUntilChanged(), switchMap((term) => {
|
|
1678
1677
|
var _a;
|
|
1679
1678
|
const f = {};
|
|
1679
|
+
// Generate filter
|
|
1680
1680
|
for (const k of Object.keys(this.filter.filter)) {
|
|
1681
1681
|
if (this.filter.filter[k] !== null ||
|
|
1682
1682
|
this.filter.filter[k] !== undefined) {
|
|
1683
1683
|
f[k] = this.filter.filter[k];
|
|
1684
1684
|
}
|
|
1685
1685
|
}
|
|
1686
|
+
// Add search param
|
|
1686
1687
|
f[this.filter.searchparam] = term;
|
|
1688
|
+
// Update queryset filter
|
|
1687
1689
|
(_a = this.filter.queryset) === null || _a === void 0 ? void 0 : _a.filter(f);
|
|
1690
|
+
// Launch queryset
|
|
1688
1691
|
return this.filter.queryset.get();
|
|
1689
|
-
}));
|
|
1692
|
+
}), takeUntil(this._subscription));
|
|
1690
1693
|
}
|
|
1691
1694
|
}
|
|
1692
|
-
ModelListAutocompleteFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1693
|
-
ModelListAutocompleteFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1694
|
-
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: [{
|
|
1695
1698
|
type: Component,
|
|
1696
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>" }]
|
|
1697
1700
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1703,17 +1706,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1703
1706
|
}] } });
|
|
1704
1707
|
|
|
1705
1708
|
class ModelListAutocompleteMultiFilterComponent extends ModelListAutocompleteFilterComponent {
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
}
|
|
1709
|
+
unset(value, desc) {
|
|
1710
|
+
this.filter.unset(value, desc);
|
|
1711
|
+
this.list.filters.update();
|
|
1710
1712
|
}
|
|
1711
1713
|
}
|
|
1712
|
-
ModelListAutocompleteMultiFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1713
|
-
ModelListAutocompleteMultiFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1714
|
-
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: [{
|
|
1715
1717
|
type: Component,
|
|
1716
|
-
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>" }]
|
|
1717
1719
|
}], propDecorators: { filter: [{
|
|
1718
1720
|
type: Input
|
|
1719
1721
|
}] } });
|
|
@@ -1723,9 +1725,9 @@ class ModelListDatetimeFilterComponent {
|
|
|
1723
1725
|
this.classes = '';
|
|
1724
1726
|
}
|
|
1725
1727
|
}
|
|
1726
|
-
ModelListDatetimeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1727
|
-
ModelListDatetimeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1728
|
-
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: [{
|
|
1729
1731
|
type: Component,
|
|
1730
1732
|
args: [{ selector: 'data-model-list-datetime-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-datetime-filter works!</p>" }]
|
|
1731
1733
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1741,9 +1743,9 @@ class ModelListDatetimeRangeFilterComponent {
|
|
|
1741
1743
|
this.classes = '';
|
|
1742
1744
|
}
|
|
1743
1745
|
}
|
|
1744
|
-
ModelListDatetimeRangeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1745
|
-
ModelListDatetimeRangeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1746
|
-
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: [{
|
|
1747
1749
|
type: Component,
|
|
1748
1750
|
args: [{ selector: 'data-model-list-datetime-range-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-datetime-range-filter works!</p>" }]
|
|
1749
1751
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1759,9 +1761,9 @@ class ModelListFlagsFilterComponent {
|
|
|
1759
1761
|
this.classes = '';
|
|
1760
1762
|
}
|
|
1761
1763
|
}
|
|
1762
|
-
ModelListFlagsFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1763
|
-
ModelListFlagsFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1764
|
-
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: [{
|
|
1765
1767
|
type: Component,
|
|
1766
1768
|
args: [{ selector: 'data-model-list-flags-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-flags-filter works!</p>" }]
|
|
1767
1769
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1775,13 +1777,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1775
1777
|
class ModelListGeodistanceFilterComponent {
|
|
1776
1778
|
constructor() {
|
|
1777
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' });
|
|
1778
1815
|
}
|
|
1779
1816
|
}
|
|
1780
|
-
ModelListGeodistanceFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1781
|
-
ModelListGeodistanceFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1782
|
-
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: [{
|
|
1783
1820
|
type: Component,
|
|
1784
|
-
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>" }]
|
|
1785
1822
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1786
1823
|
type: Input
|
|
1787
1824
|
}], filter: [{
|
|
@@ -1793,18 +1830,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1793
1830
|
class ModelListSelectFilterComponent {
|
|
1794
1831
|
constructor() {
|
|
1795
1832
|
this.classes = '';
|
|
1796
|
-
this.fc = new
|
|
1833
|
+
this.fc = new FormControl(null);
|
|
1797
1834
|
}
|
|
1798
1835
|
ngOnInit() {
|
|
1799
1836
|
this.filter.valueChanges.subscribe((val) => {
|
|
1800
|
-
|
|
1837
|
+
console.log('Changing value', val);
|
|
1838
|
+
this.fc.setValue(val ? val.value : null, {
|
|
1839
|
+
emitEvent: false,
|
|
1840
|
+
});
|
|
1801
1841
|
});
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
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
|
+
}
|
|
1808
1857
|
}
|
|
1809
1858
|
}
|
|
1810
1859
|
}
|
|
@@ -1815,11 +1864,11 @@ class ModelListSelectFilterComponent {
|
|
|
1815
1864
|
this.list.filters.update();
|
|
1816
1865
|
}
|
|
1817
1866
|
}
|
|
1818
|
-
ModelListSelectFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1819
|
-
ModelListSelectFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1820
|
-
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: [{
|
|
1821
1870
|
type: Component,
|
|
1822
|
-
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>" }]
|
|
1823
1872
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1824
1873
|
type: Input
|
|
1825
1874
|
}], filter: [{
|
|
@@ -1831,13 +1880,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1831
1880
|
class ModelListSelectMultiFilterComponent {
|
|
1832
1881
|
constructor() {
|
|
1833
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();
|
|
1834
1907
|
}
|
|
1835
1908
|
}
|
|
1836
|
-
ModelListSelectMultiFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1837
|
-
ModelListSelectMultiFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1838
|
-
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: [{
|
|
1839
1912
|
type: Component,
|
|
1840
|
-
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>" }]
|
|
1841
1914
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1842
1915
|
type: Input
|
|
1843
1916
|
}], filter: [{
|
|
@@ -1851,9 +1924,9 @@ class ModelListTreeFilterComponent {
|
|
|
1851
1924
|
this.classes = '';
|
|
1852
1925
|
}
|
|
1853
1926
|
}
|
|
1854
|
-
ModelListTreeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1855
|
-
ModelListTreeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1856
|
-
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: [{
|
|
1857
1930
|
type: Component,
|
|
1858
1931
|
args: [{ selector: 'data-model-list-tree-filter', standalone: true, imports: [CommonModule], template: "<p>model-list-tree-filter works!</p>" }]
|
|
1859
1932
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
@@ -1871,7 +1944,7 @@ class ModelListNumberFilterComponent {
|
|
|
1871
1944
|
}
|
|
1872
1945
|
ngOnInit() {
|
|
1873
1946
|
this.filter.valueChanges.subscribe((val) => {
|
|
1874
|
-
this.fc.setValue(val, { emitEvent: false });
|
|
1947
|
+
this.fc.setValue(val.value, { emitEvent: false });
|
|
1875
1948
|
});
|
|
1876
1949
|
this.fc.valueChanges.pipe(debounceTime(250)).subscribe((val) => {
|
|
1877
1950
|
if (this.filter.set(val, val)) {
|
|
@@ -1888,11 +1961,11 @@ class ModelListNumberFilterComponent {
|
|
|
1888
1961
|
this.list.filters.update();
|
|
1889
1962
|
}
|
|
1890
1963
|
}
|
|
1891
|
-
ModelListNumberFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1892
|
-
ModelListNumberFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1893
|
-
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: [{
|
|
1894
1967
|
type: Component,
|
|
1895
|
-
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>" }]
|
|
1896
1969
|
}], ctorParameters: function () { return []; }, propDecorators: { list: [{
|
|
1897
1970
|
type: Input
|
|
1898
1971
|
}], filter: [{
|
|
@@ -1908,9 +1981,9 @@ class ModelListFiltersComponent {
|
|
|
1908
1981
|
this.itemClasses = '';
|
|
1909
1982
|
}
|
|
1910
1983
|
}
|
|
1911
|
-
ModelListFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
1912
|
-
ModelListFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
1913
|
-
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: [{
|
|
1914
1987
|
type: Component,
|
|
1915
1988
|
args: [{ selector: 'data-model-list-filters', standalone: true, imports: [
|
|
1916
1989
|
CommonModule,
|
|
@@ -1937,40 +2010,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
1937
2010
|
class ModelListFilter {
|
|
1938
2011
|
constructor(params) {
|
|
1939
2012
|
this.pristine = true;
|
|
1940
|
-
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);
|
|
1941
2022
|
this.name = params.name;
|
|
1942
2023
|
this.field = params.field;
|
|
1943
2024
|
this.label = params.label || '';
|
|
1944
2025
|
this.help = params.help || '';
|
|
1945
|
-
this.value = params.value;
|
|
1946
2026
|
this.desc = params.desc;
|
|
1947
2027
|
this.displayClasses = params.displayClasses;
|
|
1948
2028
|
this.allowed = false;
|
|
1949
2029
|
this.enabled = false;
|
|
1950
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
|
+
}
|
|
1951
2048
|
}
|
|
1952
2049
|
get valueChanges() {
|
|
1953
|
-
|
|
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);
|
|
1954
2063
|
}
|
|
1955
2064
|
set(value, desc, notify = true) {
|
|
1956
|
-
if (
|
|
1957
|
-
this.desc
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
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);
|
|
1963
2096
|
return true;
|
|
1964
2097
|
}
|
|
1965
2098
|
return false;
|
|
1966
2099
|
}
|
|
1967
|
-
|
|
1968
|
-
if (this.
|
|
1969
|
-
|
|
2100
|
+
munset(value, desc, notify = true) {
|
|
2101
|
+
if (this._mvalue.has(`${value}`)) {
|
|
2102
|
+
this._mvalue.delete(`${value}`);
|
|
2103
|
+
this.notify(notify);
|
|
2104
|
+
return true;
|
|
2105
|
+
}
|
|
2106
|
+
return false;
|
|
2107
|
+
}
|
|
2108
|
+
stoggle(value, desc, notify = true) {
|
|
2109
|
+
if (this._value !== null && this._value.value === value) {
|
|
2110
|
+
this._value = null;
|
|
1970
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(',');
|
|
1971
2136
|
}
|
|
1972
2137
|
getValue() {
|
|
1973
|
-
|
|
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
|
+
}
|
|
1974
2152
|
}
|
|
1975
2153
|
}
|
|
1976
2154
|
|
|
@@ -1999,49 +2177,14 @@ class ModelListAutocompleteFilter extends ModelListFilter {
|
|
|
1999
2177
|
this.help = 'Recherche par texte';
|
|
2000
2178
|
}
|
|
2001
2179
|
}
|
|
2002
|
-
getValue() {
|
|
2003
|
-
var _a;
|
|
2004
|
-
return `${(_a = this.value) === null || _a === void 0 ? void 0 : _a.id}`;
|
|
2005
|
-
}
|
|
2006
2180
|
}
|
|
2007
2181
|
|
|
2008
2182
|
class ModelListAutocompleteMultiFilter extends ModelListAutocompleteFilter {
|
|
2009
2183
|
constructor(params) {
|
|
2010
2184
|
super(params);
|
|
2011
|
-
this.
|
|
2185
|
+
this.multi = true;
|
|
2012
2186
|
this.type = 'autocompletemulti';
|
|
2013
2187
|
}
|
|
2014
|
-
set(value, desc, notify = false) {
|
|
2015
|
-
const res = super.set(value, desc, false);
|
|
2016
|
-
if (res && this.value && this._getValuePos(this.value) === -1) {
|
|
2017
|
-
this.values.push({ value: this.value, desc: this.desc });
|
|
2018
|
-
}
|
|
2019
|
-
return res;
|
|
2020
|
-
}
|
|
2021
|
-
unset(value) {
|
|
2022
|
-
const found = this._getValuePos(value);
|
|
2023
|
-
if (found !== -1) {
|
|
2024
|
-
this.values.splice(found, 1);
|
|
2025
|
-
return true;
|
|
2026
|
-
}
|
|
2027
|
-
return false;
|
|
2028
|
-
}
|
|
2029
|
-
getValue() {
|
|
2030
|
-
const ids = [];
|
|
2031
|
-
for (const vl of this.values) {
|
|
2032
|
-
ids.push(vl.value.id);
|
|
2033
|
-
}
|
|
2034
|
-
return ids.join(',');
|
|
2035
|
-
}
|
|
2036
|
-
_getValuePos(value) {
|
|
2037
|
-
let found = -1;
|
|
2038
|
-
for (let i = 0; i < this.values.length; i++) {
|
|
2039
|
-
if (this.values[i].value.id === value.id) {
|
|
2040
|
-
found = i;
|
|
2041
|
-
}
|
|
2042
|
-
}
|
|
2043
|
-
return found;
|
|
2044
|
-
}
|
|
2045
2188
|
}
|
|
2046
2189
|
|
|
2047
2190
|
class ModelListDatetimeFilter extends ModelListFilter {
|
|
@@ -2086,13 +2229,15 @@ class ModelListFlagsFilter extends ModelListFilter {
|
|
|
2086
2229
|
class ModelListGeodistanceFilter extends ModelListFilter {
|
|
2087
2230
|
constructor(params) {
|
|
2088
2231
|
super(params);
|
|
2089
|
-
this.type =
|
|
2090
|
-
|
|
2232
|
+
this.type = 'geodistance';
|
|
2233
|
+
this.geolocator = params.geolocator;
|
|
2234
|
+
if (this.label == '') {
|
|
2091
2235
|
this.label = "Par distance autour d'un point";
|
|
2092
2236
|
}
|
|
2093
|
-
if (this.help ==
|
|
2094
|
-
this.help =
|
|
2237
|
+
if (this.help == '') {
|
|
2238
|
+
this.help = 'Ville & distance';
|
|
2095
2239
|
}
|
|
2240
|
+
this.scroll = params.scroll !== undefined ? params.scroll : true;
|
|
2096
2241
|
}
|
|
2097
2242
|
}
|
|
2098
2243
|
|
|
@@ -2138,7 +2283,7 @@ class ModelListNumberFilter extends ModelListFilter {
|
|
|
2138
2283
|
}
|
|
2139
2284
|
}
|
|
2140
2285
|
updateFilter(filter) {
|
|
2141
|
-
if (this.
|
|
2286
|
+
if (this._value !== undefined && this._value !== null) {
|
|
2142
2287
|
filter[`${this.field}${this.operator.operator}`] = this.getValue();
|
|
2143
2288
|
}
|
|
2144
2289
|
}
|
|
@@ -2152,7 +2297,7 @@ class ModelListSelectFilter extends ModelListFilter {
|
|
|
2152
2297
|
this.label = 'Sélectionnez un élément';
|
|
2153
2298
|
}
|
|
2154
2299
|
if (this.help == '') {
|
|
2155
|
-
this.help = '
|
|
2300
|
+
this.help = 'Choix par liste déroulante';
|
|
2156
2301
|
}
|
|
2157
2302
|
if (!params.choices && !params.model) {
|
|
2158
2303
|
throw 'Missing choices for select filter';
|
|
@@ -2164,20 +2309,29 @@ class ModelListSelectFilter extends ModelListFilter {
|
|
|
2164
2309
|
if (!ch) {
|
|
2165
2310
|
throw 'No choices found for model/field';
|
|
2166
2311
|
}
|
|
2167
|
-
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
|
+
}
|
|
2168
2321
|
}
|
|
2169
2322
|
}
|
|
2170
2323
|
}
|
|
2171
2324
|
|
|
2172
|
-
class ModelListSelectMultiFilter extends
|
|
2325
|
+
class ModelListSelectMultiFilter extends ModelListSelectFilter {
|
|
2173
2326
|
constructor(params) {
|
|
2174
2327
|
super(params);
|
|
2175
|
-
this.
|
|
2176
|
-
|
|
2177
|
-
|
|
2328
|
+
this.multi = true;
|
|
2329
|
+
this.type = 'selectmulti';
|
|
2330
|
+
if (this.label == '') {
|
|
2331
|
+
this.label = 'Sélectionnez un élément';
|
|
2178
2332
|
}
|
|
2179
|
-
if (this.help ==
|
|
2180
|
-
this.help =
|
|
2333
|
+
if (this.help == '') {
|
|
2334
|
+
this.help = 'Choix par liste déroulante (multiple)';
|
|
2181
2335
|
}
|
|
2182
2336
|
}
|
|
2183
2337
|
}
|
|
@@ -2208,6 +2362,29 @@ class ModelListTreeFilter extends ModelListFilter {
|
|
|
2208
2362
|
}
|
|
2209
2363
|
}
|
|
2210
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
|
+
|
|
2211
2388
|
class ModelListPaginatorComponent {
|
|
2212
2389
|
constructor() {
|
|
2213
2390
|
this.maxPages = 200;
|
|
@@ -2256,9 +2433,9 @@ class ModelListPaginatorComponent {
|
|
|
2256
2433
|
}
|
|
2257
2434
|
}
|
|
2258
2435
|
}
|
|
2259
|
-
ModelListPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
2260
|
-
ModelListPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
2261
|
-
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: [{
|
|
2262
2439
|
type: Component,
|
|
2263
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>" }]
|
|
2264
2441
|
}], propDecorators: { list: [{
|
|
@@ -2269,153 +2446,133 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
2269
2446
|
type: Input
|
|
2270
2447
|
}] } });
|
|
2271
2448
|
|
|
2272
|
-
|
|
2273
|
-
(
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["WARNING"] = 10000] = "WARNING";
|
|
2277
|
-
DEFAULT_TIMEOUTS[DEFAULT_TIMEOUTS["DANGER"] = 30000] = "DANGER";
|
|
2278
|
-
})(DEFAULT_TIMEOUTS || (DEFAULT_TIMEOUTS = {}));
|
|
2279
|
-
var STATUS;
|
|
2280
|
-
(function (STATUS) {
|
|
2281
|
-
STATUS[STATUS["UNDISP"] = 0] = "UNDISP";
|
|
2282
|
-
STATUS[STATUS["DISP"] = 1] = "DISP";
|
|
2283
|
-
STATUS[STATUS["ACK"] = 2] = "ACK";
|
|
2284
|
-
})(STATUS || (STATUS = {}));
|
|
2285
|
-
const DEFAULT_MESSAGE_TIMEOUT = 5000;
|
|
2286
|
-
const DATA_MESSAGE_SOUNDS = new InjectionToken("data.message.sounds");
|
|
2287
|
-
class Message {
|
|
2288
|
-
constructor(title, type = 1 /* TYPE.INFO */, message = "", trace = null, ttl = DEFAULT_MESSAGE_TIMEOUT) {
|
|
2289
|
-
this.title = title;
|
|
2290
|
-
this.type = type;
|
|
2291
|
-
this.message = message;
|
|
2292
|
-
this.trace = trace;
|
|
2293
|
-
this.ttl = ttl;
|
|
2294
|
-
this.status = STATUS[STATUS.UNDISP];
|
|
2295
|
-
this.showTrace = false;
|
|
2296
|
-
}
|
|
2297
|
-
get style() {
|
|
2298
|
-
if (this.type === 3 /* TYPE.DANGER */) {
|
|
2299
|
-
return "alert alert-dismissible alert-danger";
|
|
2449
|
+
class ChoicePipe {
|
|
2450
|
+
transform(value, field, mode = 'desc') {
|
|
2451
|
+
if (!value) {
|
|
2452
|
+
return '-';
|
|
2300
2453
|
}
|
|
2301
|
-
|
|
2302
|
-
|
|
2454
|
+
const fvalue = value[field];
|
|
2455
|
+
if (mode === 'code') {
|
|
2456
|
+
return `${fvalue}`;
|
|
2303
2457
|
}
|
|
2304
|
-
|
|
2305
|
-
|
|
2458
|
+
const manager = value.FM(field);
|
|
2459
|
+
const choices = manager.choices;
|
|
2460
|
+
if (!choices) {
|
|
2461
|
+
return `${fvalue}`;
|
|
2306
2462
|
}
|
|
2307
|
-
|
|
2308
|
-
|
|
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
|
+
}
|
|
2309
2472
|
}
|
|
2310
|
-
return
|
|
2311
|
-
}
|
|
2312
|
-
ack() {
|
|
2313
|
-
this.status = STATUS[STATUS.ACK];
|
|
2473
|
+
return `[${fvalue}] ??`;
|
|
2314
2474
|
}
|
|
2315
2475
|
}
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
for (const m of this._messages) {
|
|
2334
|
-
m.ttl -= 500;
|
|
2335
|
-
if (m.ttl <= 0) {
|
|
2336
|
-
changed = true;
|
|
2337
|
-
}
|
|
2338
|
-
}
|
|
2339
|
-
if (changed) {
|
|
2340
|
-
this.ngZone.run(() => {
|
|
2341
|
-
const out = [];
|
|
2342
|
-
for (const m of this._messages) {
|
|
2343
|
-
if (m.ttl >= 0) {
|
|
2344
|
-
out.push(m);
|
|
2345
|
-
}
|
|
2346
|
-
}
|
|
2347
|
-
this._messages = out;
|
|
2348
|
-
this._notify();
|
|
2349
|
-
});
|
|
2350
|
-
}
|
|
2351
|
-
});
|
|
2352
|
-
});
|
|
2353
|
-
}
|
|
2354
|
-
}
|
|
2355
|
-
close() {
|
|
2356
|
-
this._subscription.unsubscribe();
|
|
2357
|
-
}
|
|
2358
|
-
success(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.SUCCESS) {
|
|
2359
|
-
this._messages.push(new Message(title, 0 /* TYPE.SUCCESS */, message, trace, timeout));
|
|
2360
|
-
this.play("success");
|
|
2361
|
-
this._notify();
|
|
2362
|
-
}
|
|
2363
|
-
info(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.INFO) {
|
|
2364
|
-
this._messages.push(new Message(title, 1 /* TYPE.INFO */, message, trace, timeout));
|
|
2365
|
-
this.play("info");
|
|
2366
|
-
this._notify();
|
|
2367
|
-
}
|
|
2368
|
-
warning(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.WARNING) {
|
|
2369
|
-
this._messages.push(new Message(title, 2 /* TYPE.WARNING */, message, trace, timeout));
|
|
2370
|
-
this.play("warning");
|
|
2371
|
-
this._notify();
|
|
2372
|
-
}
|
|
2373
|
-
danger(title, message = "", trace = null, timeout = DEFAULT_TIMEOUTS.DANGER) {
|
|
2374
|
-
this._messages.push(new Message(title, 3 /* TYPE.DANGER */, message, trace, DEFAULT_TIMEOUTS.DANGER));
|
|
2375
|
-
this.play("error");
|
|
2376
|
-
this._notify();
|
|
2377
|
-
}
|
|
2378
|
-
error(title, message = "", trace = null) {
|
|
2379
|
-
this.danger(title, message, trace);
|
|
2380
|
-
}
|
|
2381
|
-
debug(title, message = "", trace = null) {
|
|
2382
|
-
console.log(title, message, trace);
|
|
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);
|
|
2383
2493
|
}
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
this._notify();
|
|
2494
|
+
if (typeof value !== 'number') {
|
|
2495
|
+
throw new Error(`${value} is not a number`);
|
|
2387
2496
|
}
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2497
|
+
return value;
|
|
2498
|
+
}
|
|
2499
|
+
class FactorPipe {
|
|
2500
|
+
constructor(_locale) {
|
|
2501
|
+
this._locale = _locale;
|
|
2502
|
+
}
|
|
2503
|
+
transform(value, field, digitsInfo, locale) {
|
|
2504
|
+
if (!value) {
|
|
2505
|
+
return null;
|
|
2392
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);
|
|
2393
2516
|
}
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
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;
|
|
2537
|
+
}
|
|
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;
|
|
2401
2552
|
}
|
|
2402
2553
|
}
|
|
2403
|
-
|
|
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);
|
|
2404
2559
|
}
|
|
2405
2560
|
}
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
2409
|
-
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,
|
|
2410
2565
|
args: [{
|
|
2411
|
-
|
|
2566
|
+
name: 'factorc',
|
|
2567
|
+
standalone: true,
|
|
2412
2568
|
}]
|
|
2413
2569
|
}], ctorParameters: function () {
|
|
2414
|
-
return [{ type:
|
|
2415
|
-
type: Optional
|
|
2416
|
-
}, {
|
|
2570
|
+
return [{ type: undefined, decorators: [{
|
|
2417
2571
|
type: Inject,
|
|
2418
|
-
args: [
|
|
2572
|
+
args: [LOCALE_ID]
|
|
2573
|
+
}] }, { type: undefined, decorators: [{
|
|
2574
|
+
type: Inject,
|
|
2575
|
+
args: [DEFAULT_CURRENCY_CODE]
|
|
2419
2576
|
}] }];
|
|
2420
2577
|
} });
|
|
2421
2578
|
|
|
@@ -2510,11 +2667,11 @@ class FkselectComponent {
|
|
|
2510
2667
|
}));
|
|
2511
2668
|
}
|
|
2512
2669
|
}
|
|
2513
|
-
FkselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
2514
|
-
FkselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
2515
|
-
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: [{
|
|
2516
2673
|
type: Component,
|
|
2517
|
-
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>" }]
|
|
2518
2675
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
2519
2676
|
type: Input
|
|
2520
2677
|
}], field: [{
|
|
@@ -2804,15 +2961,15 @@ class M2mselectComponent {
|
|
|
2804
2961
|
}));
|
|
2805
2962
|
}
|
|
2806
2963
|
}
|
|
2807
|
-
M2mselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
2808
|
-
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: [
|
|
2809
2966
|
{
|
|
2810
2967
|
provide: NG_VALUE_ACCESSOR,
|
|
2811
2968
|
multi: true,
|
|
2812
2969
|
useExisting: M2mselectComponent,
|
|
2813
2970
|
},
|
|
2814
|
-
], 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: "
|
|
2815
|
-
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: [{
|
|
2816
2973
|
type: Component,
|
|
2817
2974
|
args: [{ selector: 'data-m2mselect', providers: [
|
|
2818
2975
|
{
|
|
@@ -2820,7 +2977,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
2820
2977
|
multi: true,
|
|
2821
2978
|
useExisting: M2mselectComponent,
|
|
2822
2979
|
},
|
|
2823
|
-
], 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>" }]
|
|
2824
2981
|
}], propDecorators: { model: [{
|
|
2825
2982
|
type: Input
|
|
2826
2983
|
}], field: [{
|
|
@@ -2863,6 +3020,156 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
2863
3020
|
type: Output
|
|
2864
3021
|
}] } });
|
|
2865
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
|
+
|
|
2866
3173
|
class DispeditComponent {
|
|
2867
3174
|
/**
|
|
2868
3175
|
* Constructor, can be given DATA_DISPLAY_CONFIG injection token to override display classes.
|
|
@@ -3275,11 +3582,17 @@ class DispeditComponent {
|
|
|
3275
3582
|
}
|
|
3276
3583
|
_setDisplayClasses() { }
|
|
3277
3584
|
}
|
|
3278
|
-
DispeditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
3279
|
-
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" }] });
|
|
3280
|
-
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: [{
|
|
3281
3588
|
type: Component,
|
|
3282
|
-
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"] }]
|
|
3283
3596
|
}], ctorParameters: function () {
|
|
3284
3597
|
return [{ type: undefined, decorators: [{
|
|
3285
3598
|
type: Optional
|
|
@@ -3325,42 +3638,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
3325
3638
|
type: Output
|
|
3326
3639
|
}] } });
|
|
3327
3640
|
|
|
3328
|
-
class ChoicePipe {
|
|
3329
|
-
transform(value, field, mode = 'desc') {
|
|
3330
|
-
if (!value) {
|
|
3331
|
-
return '-';
|
|
3332
|
-
}
|
|
3333
|
-
const fvalue = value[field];
|
|
3334
|
-
if (mode === 'code') {
|
|
3335
|
-
return `${fvalue}`;
|
|
3336
|
-
}
|
|
3337
|
-
const manager = value.FM(field);
|
|
3338
|
-
const choices = manager.choices;
|
|
3339
|
-
if (!choices) {
|
|
3340
|
-
return `${fvalue}`;
|
|
3341
|
-
}
|
|
3342
|
-
for (const ch of choices) {
|
|
3343
|
-
if (ch.value === fvalue) {
|
|
3344
|
-
if (mode === 'desc') {
|
|
3345
|
-
return ch.desc;
|
|
3346
|
-
}
|
|
3347
|
-
else {
|
|
3348
|
-
return `[${fvalue}] ${ch.desc}`;
|
|
3349
|
-
}
|
|
3350
|
-
}
|
|
3351
|
-
}
|
|
3352
|
-
return `[${fvalue}] ??`;
|
|
3353
|
-
}
|
|
3354
|
-
}
|
|
3355
|
-
ChoicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
3356
|
-
ChoicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, name: "choice" });
|
|
3357
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, decorators: [{
|
|
3358
|
-
type: Pipe,
|
|
3359
|
-
args: [{
|
|
3360
|
-
name: 'choice',
|
|
3361
|
-
}]
|
|
3362
|
-
}] });
|
|
3363
|
-
|
|
3364
3641
|
class SafeDeleteComponent {
|
|
3365
3642
|
constructor(_ofc) {
|
|
3366
3643
|
this._ofc = _ofc;
|
|
@@ -3385,9 +3662,9 @@ class SafeDeleteComponent {
|
|
|
3385
3662
|
});
|
|
3386
3663
|
}
|
|
3387
3664
|
}
|
|
3388
|
-
SafeDeleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
3389
|
-
SafeDeleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
3390
|
-
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: [{
|
|
3391
3668
|
type: Component,
|
|
3392
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>" }]
|
|
3393
3670
|
}], ctorParameters: function () { return [{ type: i2$1.NgbOffcanvas }]; }, propDecorators: { model: [{
|
|
@@ -3405,50 +3682,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
3405
3682
|
args: ['dialog', { static: true }]
|
|
3406
3683
|
}] } });
|
|
3407
3684
|
|
|
3408
|
-
class DispeditModule {
|
|
3409
|
-
}
|
|
3410
|
-
DispeditModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DispeditModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3411
|
-
DispeditModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: DispeditModule, declarations: [DispeditComponent,
|
|
3412
|
-
FkselectComponent,
|
|
3413
|
-
M2mselectComponent,
|
|
3414
|
-
ChoicePipe], imports: [CommonModule,
|
|
3415
|
-
NgbTypeaheadModule,
|
|
3416
|
-
NgbOffcanvasModule,
|
|
3417
|
-
ReactiveFormsModule,
|
|
3418
|
-
A11yModule], exports: [DispeditComponent,
|
|
3419
|
-
FkselectComponent,
|
|
3420
|
-
M2mselectComponent,
|
|
3421
|
-
ChoicePipe] });
|
|
3422
|
-
DispeditModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DispeditModule, imports: [CommonModule,
|
|
3423
|
-
NgbTypeaheadModule,
|
|
3424
|
-
NgbOffcanvasModule,
|
|
3425
|
-
ReactiveFormsModule,
|
|
3426
|
-
A11yModule] });
|
|
3427
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: DispeditModule, decorators: [{
|
|
3428
|
-
type: NgModule,
|
|
3429
|
-
args: [{
|
|
3430
|
-
declarations: [
|
|
3431
|
-
DispeditComponent,
|
|
3432
|
-
FkselectComponent,
|
|
3433
|
-
M2mselectComponent,
|
|
3434
|
-
ChoicePipe,
|
|
3435
|
-
],
|
|
3436
|
-
exports: [
|
|
3437
|
-
DispeditComponent,
|
|
3438
|
-
FkselectComponent,
|
|
3439
|
-
M2mselectComponent,
|
|
3440
|
-
ChoicePipe,
|
|
3441
|
-
],
|
|
3442
|
-
imports: [
|
|
3443
|
-
CommonModule,
|
|
3444
|
-
NgbTypeaheadModule,
|
|
3445
|
-
NgbOffcanvasModule,
|
|
3446
|
-
ReactiveFormsModule,
|
|
3447
|
-
A11yModule,
|
|
3448
|
-
],
|
|
3449
|
-
}]
|
|
3450
|
-
}] });
|
|
3451
|
-
|
|
3452
3685
|
class CharFieldManager extends BaseFieldManager {
|
|
3453
3686
|
constructor(params) {
|
|
3454
3687
|
super(params);
|
|
@@ -3739,6 +3972,11 @@ class BooleanFieldManager extends BaseFieldManager {
|
|
|
3739
3972
|
const booleanField = (updates = {}) => genericDataField(updates, 'booleanField', BooleanFieldManager);
|
|
3740
3973
|
|
|
3741
3974
|
class IntegerFieldManager extends BaseFieldManager {
|
|
3975
|
+
constructor() {
|
|
3976
|
+
super(...arguments);
|
|
3977
|
+
this.displayType = 'text';
|
|
3978
|
+
this.editorType = 'input.number';
|
|
3979
|
+
}
|
|
3742
3980
|
get validators() {
|
|
3743
3981
|
const v = super.getValidators();
|
|
3744
3982
|
if (this.min !== undefined) {
|
|
@@ -3751,6 +3989,11 @@ class IntegerFieldManager extends BaseFieldManager {
|
|
|
3751
3989
|
}
|
|
3752
3990
|
}
|
|
3753
3991
|
class FloatFieldManager extends IntegerFieldManager {
|
|
3992
|
+
constructor() {
|
|
3993
|
+
super(...arguments);
|
|
3994
|
+
this.displayType = 'text';
|
|
3995
|
+
this.editorType = 'input.number';
|
|
3996
|
+
}
|
|
3754
3997
|
}
|
|
3755
3998
|
class DecimalFieldManager extends IntegerFieldManager {
|
|
3756
3999
|
constructor() {
|
|
@@ -3782,8 +4025,8 @@ class MessageZoneComponent {
|
|
|
3782
4025
|
this._subscriptions$.complete();
|
|
3783
4026
|
}
|
|
3784
4027
|
}
|
|
3785
|
-
MessageZoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
3786
|
-
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: [
|
|
3787
4030
|
trigger('dispStatus', [
|
|
3788
4031
|
transition('void => *', [
|
|
3789
4032
|
style({ opacity: 0 }),
|
|
@@ -3795,7 +4038,7 @@ MessageZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
3795
4038
|
]),
|
|
3796
4039
|
]),
|
|
3797
4040
|
] });
|
|
3798
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
4041
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: MessageZoneComponent, decorators: [{
|
|
3799
4042
|
type: Component,
|
|
3800
4043
|
args: [{ selector: 'data-message-zone', standalone: true, imports: [CommonModule], providers: [provideAnimations()], animations: [
|
|
3801
4044
|
trigger('dispStatus', [
|
|
@@ -4261,9 +4504,9 @@ class NgFileDropDirective {
|
|
|
4261
4504
|
this.uploadOutput.emit(event);
|
|
4262
4505
|
}
|
|
4263
4506
|
}
|
|
4264
|
-
NgFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4265
|
-
NgFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
4266
|
-
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: [{
|
|
4267
4510
|
type: Directive,
|
|
4268
4511
|
args: [{
|
|
4269
4512
|
selector: "[dataFileDrop]"
|
|
@@ -4318,9 +4561,9 @@ class NgFileSelectDirective {
|
|
|
4318
4561
|
}
|
|
4319
4562
|
}
|
|
4320
4563
|
}
|
|
4321
|
-
NgFileSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4322
|
-
NgFileSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
4323
|
-
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: [{
|
|
4324
4567
|
type: Directive,
|
|
4325
4568
|
args: [{
|
|
4326
4569
|
selector: "[dataFileSelect]"
|
|
@@ -4335,10 +4578,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
4335
4578
|
|
|
4336
4579
|
class NgxUploaderModule {
|
|
4337
4580
|
}
|
|
4338
|
-
NgxUploaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4339
|
-
NgxUploaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
4340
|
-
NgxUploaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
|
4341
|
-
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: [{
|
|
4342
4585
|
type: NgModule,
|
|
4343
4586
|
args: [{
|
|
4344
4587
|
declarations: [NgFileDropDirective, NgFileSelectDirective],
|
|
@@ -4476,8 +4719,9 @@ AuthServiceBase = __decorate([
|
|
|
4476
4719
|
|
|
4477
4720
|
const DATA_AUTH_SERVICE = new InjectionToken('data.auth.service');
|
|
4478
4721
|
class AuthInterceptor {
|
|
4479
|
-
constructor(_auth) {
|
|
4722
|
+
constructor(_auth, _apiUrl) {
|
|
4480
4723
|
this._auth = _auth;
|
|
4724
|
+
this._apiUrl = _apiUrl;
|
|
4481
4725
|
this._isRefreshing = false;
|
|
4482
4726
|
this._refreshTokenSubject = new BehaviorSubject(null);
|
|
4483
4727
|
}
|
|
@@ -4485,6 +4729,9 @@ class AuthInterceptor {
|
|
|
4485
4729
|
if (this._auth.isAnonymous) {
|
|
4486
4730
|
return next.handle(req);
|
|
4487
4731
|
}
|
|
4732
|
+
if (!req.url.startsWith(this._apiUrl)) {
|
|
4733
|
+
return next.handle(req);
|
|
4734
|
+
}
|
|
4488
4735
|
if (!this._auth.isAnonymous) {
|
|
4489
4736
|
req = this._addToken(req, this._auth.accessToken);
|
|
4490
4737
|
}
|
|
@@ -4529,9 +4776,9 @@ class AuthInterceptor {
|
|
|
4529
4776
|
});
|
|
4530
4777
|
}
|
|
4531
4778
|
}
|
|
4532
|
-
AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4533
|
-
AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
4534
|
-
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: [{
|
|
4535
4782
|
type: Injectable,
|
|
4536
4783
|
args: [{
|
|
4537
4784
|
providedIn: 'root',
|
|
@@ -4540,6 +4787,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
4540
4787
|
return [{ type: AuthServiceBase, decorators: [{
|
|
4541
4788
|
type: Inject,
|
|
4542
4789
|
args: [DATA_AUTH_SERVICE]
|
|
4790
|
+
}] }, { type: undefined, decorators: [{
|
|
4791
|
+
type: Inject,
|
|
4792
|
+
args: [DATA_API_URL]
|
|
4543
4793
|
}] }];
|
|
4544
4794
|
} });
|
|
4545
4795
|
|
|
@@ -4725,9 +4975,9 @@ class BreadcrumbComponent {
|
|
|
4725
4975
|
return '';
|
|
4726
4976
|
}
|
|
4727
4977
|
}
|
|
4728
|
-
BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4729
|
-
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
4730
|
-
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: [{
|
|
4731
4981
|
type: Component,
|
|
4732
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>" }]
|
|
4733
4983
|
}], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }]; }, propDecorators: { data: [{
|
|
@@ -4796,9 +5046,9 @@ class TabMemoryService {
|
|
|
4796
5046
|
return null;
|
|
4797
5047
|
}
|
|
4798
5048
|
}
|
|
4799
|
-
TabMemoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
4800
|
-
TabMemoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
4801
|
-
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: [{
|
|
4802
5052
|
type: Injectable,
|
|
4803
5053
|
args: [{
|
|
4804
5054
|
providedIn: 'root',
|
|
@@ -4829,5 +5079,5 @@ const slugify = (str) => {
|
|
|
4829
5079
|
* Generated bundle index. Do not edit.
|
|
4830
5080
|
*/
|
|
4831
5081
|
|
|
4832
|
-
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 };
|
|
4833
5083
|
//# sourceMappingURL=solidev-data.mjs.map
|