@sumaris-net/ngx-components 2.8.1-beta3 → 2.8.1-beta5

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.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Directive, Pipe, Injectable, EventEmitter, Output, Optional, Inject, NgModule, forwardRef, Component, ChangeDetectionStrategy, Input, ViewChildren, HostBinding, HostListener, ElementRef, ViewChild, ANIMATION_MODULE_TYPE, inject, ChangeDetectorRef, ContentChild, CUSTOM_ELEMENTS_SCHEMA, ViewEncapsulation, APP_INITIALIZER } from '@angular/core';
3
3
  import { firstValueFrom, shareReplay, tap, of, Subject, merge, timer, isObservable, from, Subscription, BehaviorSubject, fromEvent, noop as noop$a, Observable, forkJoin, defer, timeout, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, fromEventPattern, interval, combineLatest, mergeMap as mergeMap$1, EMPTY, switchMap as switchMap$1, delay } from 'rxjs';
4
- import { catchError, map, first, tap as tap$1, switchMap, takeUntil, filter, debounceTime, startWith, distinctUntilChanged, mergeMap, skip, throttleTime, bufferWhen, mapTo, distinctUntilKeyChanged, take } from 'rxjs/operators';
4
+ import { catchError, map, first, tap as tap$1, switchMap, takeUntil, filter, debounceTime, startWith, distinctUntilChanged, mergeMap, skip, finalize, throttleTime, bufferWhen, mapTo, distinctUntilKeyChanged, take } from 'rxjs/operators';
5
5
  import * as i3 from '@angular/common';
6
6
  import { CommonModule, DOCUMENT, Location } from '@angular/common';
7
7
  import { CdkTableModule } from '@angular/cdk/table';
@@ -4182,7 +4182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
4182
4182
  type: Pipe,
4183
4183
  args: [{ name: 'propertyGet' }]
4184
4184
  }] });
4185
- class PropertyFormatPipe {
4185
+ class AbstractValueFormatPipe {
4186
4186
  dateFormat;
4187
4187
  translate;
4188
4188
  _i18nYes;
@@ -4191,17 +4191,19 @@ class PropertyFormatPipe {
4191
4191
  this.dateFormat = dateFormat;
4192
4192
  this.translate = translate;
4193
4193
  }
4194
- transform(obj, keyOrDefinition) {
4195
- if (!obj)
4196
- return '';
4197
- const definition = keyOrDefinition && typeof keyOrDefinition === 'object' && keyOrDefinition;
4198
- const key = definition?.key || keyOrDefinition;
4199
- if (!key) {
4200
- // Should never occur
4201
- console.warn("Invalid use of pipe 'formatProperty': missing key or definition");
4202
- return '';
4194
+ get i18nYes() {
4195
+ if (!this._i18nYes) {
4196
+ this._i18nYes = this.translate.instant('COMMON.YES');
4203
4197
  }
4204
- const value = obj[key];
4198
+ return this._i18nYes;
4199
+ }
4200
+ get i18nNo() {
4201
+ if (!this._i18nNo) {
4202
+ this._i18nNo = this.translate.instant('COMMON.NO');
4203
+ }
4204
+ return this._i18nNo;
4205
+ }
4206
+ valueToString(value, definition) {
4205
4207
  if (isNil(value))
4206
4208
  return value;
4207
4209
  const type = definition?.type || typeof value;
@@ -4213,17 +4215,17 @@ class PropertyFormatPipe {
4213
4215
  case 'enum': {
4214
4216
  // DEBUG
4215
4217
  // console.debug('formatProperty by definition (type='enum', key=' +definition.key+ '):', value );
4216
- const item = (definition.values || [value]).find((item) => (isNotNil(item.key) ? item.key : item) === value);
4218
+ const item = (definition?.values || [value]).find((item) => (isNotNil(item.key) ? item.key : item) === value);
4217
4219
  return item.value || item;
4218
4220
  }
4219
4221
  case 'entity': {
4220
- if (definition.autocomplete?.displayWith) {
4221
- return definition.autocomplete.displayWith(value);
4222
+ if (definition?.autocomplete?.displayWith) {
4223
+ return definition?.autocomplete.displayWith(value);
4222
4224
  }
4223
- return joinPropertiesPath(value, definition.autocomplete?.attributes || ['label', 'name']) || undefined;
4225
+ return joinPropertiesPath(value, definition?.autocomplete?.attributes || ['label', 'name']) || undefined;
4224
4226
  }
4225
4227
  case 'boolean':
4226
- return obj === 1 || obj === true || obj === 'true' ? this.i18nYes : this.i18nNo;
4228
+ return value === 1 || value === true || value === 'true' ? this.i18nYes : this.i18nNo;
4227
4229
  case 'integer':
4228
4230
  case 'double':
4229
4231
  case 'string':
@@ -4231,17 +4233,23 @@ class PropertyFormatPipe {
4231
4233
  return value;
4232
4234
  }
4233
4235
  }
4234
- get i18nYes() {
4235
- if (!this._i18nYes) {
4236
- this._i18nYes = this.translate.instant('COMMON.YES');
4237
- }
4238
- return this._i18nYes;
4236
+ }
4237
+ class PropertyFormatPipe extends AbstractValueFormatPipe {
4238
+ constructor(dateFormat, translate) {
4239
+ super(dateFormat, translate);
4239
4240
  }
4240
- get i18nNo() {
4241
- if (!this._i18nNo) {
4242
- this._i18nNo = this.translate.instant('COMMON.NO');
4241
+ transform(obj, keyOrDefinition) {
4242
+ if (!obj)
4243
+ return '';
4244
+ const definition = keyOrDefinition && typeof keyOrDefinition === 'object' && keyOrDefinition;
4245
+ const key = definition?.key || keyOrDefinition;
4246
+ if (!key) {
4247
+ // Should never occur
4248
+ console.warn("Invalid use of pipe 'formatProperty': missing key or definition");
4249
+ return '';
4243
4250
  }
4244
- return this._i18nNo;
4251
+ const value = obj[key];
4252
+ return this.valueToString(value, definition);
4245
4253
  }
4246
4254
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PropertyFormatPipe, deps: [{ token: DateFormatService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
4247
4255
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: PropertyFormatPipe, name: "propertyFormat" });
@@ -4256,6 +4264,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
4256
4264
  type: Injectable,
4257
4265
  args: [{ providedIn: 'root' }]
4258
4266
  }], ctorParameters: () => [{ type: DateFormatService }, { type: i1$1.TranslateService }] });
4267
+ class ValueFormatPipe extends AbstractValueFormatPipe {
4268
+ constructor(dateFormat, translate) {
4269
+ super(dateFormat, translate);
4270
+ }
4271
+ transform(value, definition) {
4272
+ return this.valueToString(value, definition);
4273
+ }
4274
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, deps: [{ token: DateFormatService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
4275
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, name: "valueFormat" });
4276
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, providedIn: 'root' });
4277
+ }
4278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, decorators: [{
4279
+ type: Pipe,
4280
+ args: [{
4281
+ name: 'valueFormat',
4282
+ }]
4283
+ }, {
4284
+ type: Injectable,
4285
+ args: [{ providedIn: 'root' }]
4286
+ }], ctorParameters: () => [{ type: DateFormatService }, { type: i1$1.TranslateService }] });
4259
4287
 
4260
4288
  class MatColorPipe {
4261
4289
  transform(color) {
@@ -4617,10 +4645,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
4617
4645
  }]
4618
4646
  }] });
4619
4647
 
4648
+ const components$1 = [
4649
+ PropertyGetPipe,
4650
+ PropertyFormatPipe,
4651
+ ValueFormatPipe,
4652
+ DateFormatPipe,
4653
+ DateDiffDurationPipe,
4654
+ DurationPipe,
4655
+ DateFromNowPipe,
4656
+ LatLongFormatPipe,
4657
+ LatitudeFormatPipe,
4658
+ LongitudeFormatPipe,
4659
+ HighlightPipe,
4660
+ NumberFormatPipe,
4661
+ FileSizePipe,
4662
+ MathAbsPipe,
4663
+ OddPipe,
4664
+ EvenPipe,
4665
+ NotEmptyArrayPipe,
4666
+ EmptyArrayPipe,
4667
+ ArrayLengthPipe,
4668
+ ArrayFirstPipe,
4669
+ ArrayPluckPipe,
4670
+ ArrayIncludesPipe,
4671
+ ArrayFilterPipe,
4672
+ ArrayJoinPipe,
4673
+ MapGetPipe,
4674
+ MapKeysPipe,
4675
+ MapValuesPipe,
4676
+ IsNilOrBlankPipe,
4677
+ IsNotNilOrBlankPipe,
4678
+ IsNilOrNaNPipe,
4679
+ IsNotNilOrNaNPipe,
4680
+ IsNotNilPipe,
4681
+ IsNilPipe,
4682
+ ToStringPipe,
4683
+ CapitalizePipe,
4684
+ StrLengthPipe,
4685
+ StrIncludesPipe,
4686
+ TranslateContextPipe,
4687
+ TranslatablePipe,
4688
+ NgInitDirective,
4689
+ FormErrorTranslatePipe,
4690
+ FormGetPipe,
4691
+ FormGetControlPipe,
4692
+ FormGetArrayPipe,
4693
+ FormGetGroupPipe,
4694
+ FormGetValuePipe,
4695
+ MatColorPipe,
4696
+ AsAnyPipe,
4697
+ AsArrayPipe,
4698
+ AsObservablePipe,
4699
+ AsFloatLabelTypePipe,
4700
+ MaskitoPlaceholderPipe,
4701
+ IsSelectedPipe,
4702
+ IsNotEmptySelectionPipe,
4703
+ IsEmptySelectionPipe,
4704
+ SelectionLengthPipe,
4705
+ IsMultipleSelectionPipe,
4706
+ IsSingleSelectionPipe,
4707
+ BadgeNumberPipe,
4708
+ ];
4620
4709
  class SharedPipesModule {
4621
4710
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SharedPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4622
4711
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: SharedPipesModule, declarations: [PropertyGetPipe,
4623
4712
  PropertyFormatPipe,
4713
+ ValueFormatPipe,
4624
4714
  DateFormatPipe,
4625
4715
  DateDiffDurationPipe,
4626
4716
  DurationPipe,
@@ -4664,7 +4754,6 @@ class SharedPipesModule {
4664
4754
  FormGetArrayPipe,
4665
4755
  FormGetGroupPipe,
4666
4756
  FormGetValuePipe,
4667
- PropertyFormatPipe,
4668
4757
  MatColorPipe,
4669
4758
  AsAnyPipe,
4670
4759
  AsArrayPipe,
@@ -4679,10 +4768,11 @@ class SharedPipesModule {
4679
4768
  IsSingleSelectionPipe,
4680
4769
  BadgeNumberPipe], imports: [CommonModule, IonicModule, TranslateModule], exports: [PropertyGetPipe,
4681
4770
  PropertyFormatPipe,
4771
+ ValueFormatPipe,
4682
4772
  DateFormatPipe,
4683
- DateFromNowPipe,
4684
4773
  DateDiffDurationPipe,
4685
4774
  DurationPipe,
4775
+ DateFromNowPipe,
4686
4776
  LatLongFormatPipe,
4687
4777
  LatitudeFormatPipe,
4688
4778
  LongitudeFormatPipe,
@@ -4697,6 +4787,8 @@ class SharedPipesModule {
4697
4787
  ArrayLengthPipe,
4698
4788
  ArrayFirstPipe,
4699
4789
  ArrayPluckPipe,
4790
+ ArrayIncludesPipe,
4791
+ ArrayFilterPipe,
4700
4792
  ArrayJoinPipe,
4701
4793
  MapGetPipe,
4702
4794
  MapKeysPipe,
@@ -4711,8 +4803,6 @@ class SharedPipesModule {
4711
4803
  CapitalizePipe,
4712
4804
  StrLengthPipe,
4713
4805
  StrIncludesPipe,
4714
- ArrayIncludesPipe,
4715
- ArrayFilterPipe,
4716
4806
  TranslateContextPipe,
4717
4807
  TranslatablePipe,
4718
4808
  NgInitDirective,
@@ -4741,127 +4831,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
4741
4831
  type: NgModule,
4742
4832
  args: [{
4743
4833
  imports: [CommonModule, IonicModule, TranslateModule],
4744
- declarations: [
4745
- PropertyGetPipe,
4746
- PropertyFormatPipe,
4747
- DateFormatPipe,
4748
- DateDiffDurationPipe,
4749
- DurationPipe,
4750
- DateFromNowPipe,
4751
- LatLongFormatPipe,
4752
- LatitudeFormatPipe,
4753
- LongitudeFormatPipe,
4754
- HighlightPipe,
4755
- NumberFormatPipe,
4756
- FileSizePipe,
4757
- MathAbsPipe,
4758
- OddPipe,
4759
- EvenPipe,
4760
- NotEmptyArrayPipe,
4761
- EmptyArrayPipe,
4762
- ArrayLengthPipe,
4763
- ArrayFirstPipe,
4764
- ArrayPluckPipe,
4765
- ArrayIncludesPipe,
4766
- ArrayFilterPipe,
4767
- ArrayJoinPipe,
4768
- MapGetPipe,
4769
- MapKeysPipe,
4770
- MapValuesPipe,
4771
- IsNilOrBlankPipe,
4772
- IsNotNilOrBlankPipe,
4773
- IsNilOrNaNPipe,
4774
- IsNotNilOrNaNPipe,
4775
- IsNotNilPipe,
4776
- IsNilPipe,
4777
- ToStringPipe,
4778
- CapitalizePipe,
4779
- StrLengthPipe,
4780
- StrIncludesPipe,
4781
- TranslateContextPipe,
4782
- TranslatablePipe,
4783
- NgInitDirective,
4784
- FormErrorTranslatePipe,
4785
- FormGetPipe,
4786
- FormGetControlPipe,
4787
- FormGetArrayPipe,
4788
- FormGetGroupPipe,
4789
- FormGetValuePipe,
4790
- PropertyFormatPipe,
4791
- MatColorPipe,
4792
- AsAnyPipe,
4793
- AsArrayPipe,
4794
- AsObservablePipe,
4795
- AsFloatLabelTypePipe,
4796
- MaskitoPlaceholderPipe,
4797
- IsSelectedPipe,
4798
- IsNotEmptySelectionPipe,
4799
- IsEmptySelectionPipe,
4800
- SelectionLengthPipe,
4801
- IsMultipleSelectionPipe,
4802
- IsSingleSelectionPipe,
4803
- BadgeNumberPipe,
4804
- ],
4805
- exports: [
4806
- PropertyGetPipe,
4807
- PropertyFormatPipe,
4808
- DateFormatPipe,
4809
- DateFromNowPipe,
4810
- DateDiffDurationPipe,
4811
- DurationPipe,
4812
- LatLongFormatPipe,
4813
- LatitudeFormatPipe,
4814
- LongitudeFormatPipe,
4815
- HighlightPipe,
4816
- NumberFormatPipe,
4817
- FileSizePipe,
4818
- MathAbsPipe,
4819
- OddPipe,
4820
- EvenPipe,
4821
- NotEmptyArrayPipe,
4822
- EmptyArrayPipe,
4823
- ArrayLengthPipe,
4824
- ArrayFirstPipe,
4825
- ArrayPluckPipe,
4826
- ArrayJoinPipe,
4827
- MapGetPipe,
4828
- MapKeysPipe,
4829
- MapValuesPipe,
4830
- IsNilOrBlankPipe,
4831
- IsNotNilOrBlankPipe,
4832
- IsNilOrNaNPipe,
4833
- IsNotNilOrNaNPipe,
4834
- IsNotNilPipe,
4835
- IsNilPipe,
4836
- ToStringPipe,
4837
- CapitalizePipe,
4838
- StrLengthPipe,
4839
- StrIncludesPipe,
4840
- ArrayIncludesPipe,
4841
- ArrayFilterPipe,
4842
- TranslateContextPipe,
4843
- TranslatablePipe,
4844
- NgInitDirective,
4845
- FormErrorTranslatePipe,
4846
- FormGetPipe,
4847
- FormGetControlPipe,
4848
- FormGetArrayPipe,
4849
- FormGetGroupPipe,
4850
- FormGetValuePipe,
4851
- MatColorPipe,
4852
- AsAnyPipe,
4853
- AsArrayPipe,
4854
- AsObservablePipe,
4855
- AsFloatLabelTypePipe,
4856
- MaskitoPlaceholderPipe,
4857
- IsSelectedPipe,
4858
- IsNotEmptySelectionPipe,
4859
- IsEmptySelectionPipe,
4860
- SelectionLengthPipe,
4861
- IsMultipleSelectionPipe,
4862
- IsSingleSelectionPipe,
4863
- BadgeNumberPipe,
4864
- ],
4834
+ declarations: components$1,
4835
+ exports: components$1,
4865
4836
  }]
4866
4837
  }] });
4867
4838
 
@@ -13847,6 +13818,7 @@ class UploadFileComponent {
13847
13818
  deleteFn;
13848
13819
  maxParallelUpload;
13849
13820
  files = [];
13821
+ uploading = false;
13850
13822
  get processingFiles() {
13851
13823
  return this.files.filter((f) => !f.deleting && isNotNil(f.progress) && f.progress < 1);
13852
13824
  }
@@ -13938,6 +13910,7 @@ class UploadFileComponent {
13938
13910
  * Execute upload
13939
13911
  */
13940
13912
  async uploadFiles(files) {
13913
+ this.uploading = true;
13941
13914
  if (!files) {
13942
13915
  console.info('[upload-file] Uploading all files...');
13943
13916
  files = this.files;
@@ -14004,18 +13977,18 @@ class UploadFileComponent {
14004
13977
  })))));
14005
13978
  // Wait jobs to finish
14006
13979
  return forkJoin(jobs)
14007
- .pipe(tap$1((_) => $changes.complete()))
13980
+ .pipe(tap$1((_) => $changes.complete()), finalize(() => (this.uploading = false)))
14008
13981
  .toPromise();
14009
13982
  }
14010
13983
  waitIdle(opts) {
14011
13984
  return waitFor(() => this.processingFilesCount === 0, opts);
14012
13985
  }
14013
13986
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: UploadFileComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
14014
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: UploadFileComponent, selector: "app-upload-file", inputs: { fileExtension: "fileExtension", uniqueFile: "uniqueFile", instantUpload: "instantUpload", uploadFn: "uploadFn", deleteFn: "deleteFn", maxParallelUpload: "maxParallelUpload" }, viewQueries: [{ propertyName: "fileDropEl", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"!uniqueFile || files.length === 0\" class=\"container\" appDragAndDrop (fileDropped)=\"onFileDropped($event)\">\n <input\n type=\"file\"\n #fileDropRef\n id=\"fileDropRef\"\n [multiple]=\"!uniqueFile\"\n [accept]=\"fileExtension\"\n (change)=\"fileBrowseHandler($any($event.target).files)\"\n />\n <mat-icon style=\"font-size: xx-large\" color=\"accent\" class=\"text-size\">upload</mat-icon>\n <ion-label\n [innerHTML]=\"\n 'FILE.UPLOAD.DRAG_AND_DROP' | translate: { extension: !fileExtension ? '' : ' (' + fileExtension + ')' }\n \"\n ></ion-label>\n <ion-button>{{ 'FILE.UPLOAD.BROWSE' | translate }}</ion-button>\n</div>\n<div class=\"files-list\">\n <div *ngFor=\"let file of files; index as i\" class=\"single-file\" [class.deleting]=\"file.deleting\">\n <mat-icon>description</mat-icon>\n <div class=\"info\">\n <h4 class=\"name\">\n {{ file.name }}\n </h4>\n <p class=\"size\">\n {{ file.size | fileSize }}\n </p>\n <ion-progress-bar\n *ngIf=\"!file.error\"\n [value]=\"file.progress || 0\"\n [type]=\"file.deleting || file.progress === -1 ? 'indeterminate' : 'determinate'\"\n ></ion-progress-bar>\n <ion-label *ngIf=\"file.error\" color=\"danger\" [innerHTML]=\"file.error | translate\"></ion-label>\n </div>\n <!-- remote from list (before importation) -->\n <button *ngIf=\"!file.progress || file.error\" mat-icon-button (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n <!-- delete file (remotely - after importation) -->\n <button *ngIf=\"file.progress === 1 && !!deleteFn && !file.deleting\" mat-icon-button (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".container{width:calc(100% - 3rem);min-height:200px;padding:2rem;text-align:center;border:dashed 1px #979797;position:relative;margin:1.5rem}.container input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;top:0;left:0;cursor:pointer}.container ion-label{display:block;font-size:20px;font-weight:600;color:#38424c}.container label{display:inline-block;color:#fff;width:183px;height:44px;border-radius:21.5px;background-color:#db202f;padding:8px 16px}.fileover{border:solid 1px var(--ion-color-accent)}.files-list{max-height:300px;overflow:auto}.files-list .single-file{display:flex;flex-grow:1;padding:.5rem;justify-content:space-between;align-items:center;border:dashed 1px #979797;margin-bottom:1rem}.files-list .single-file.deleting .name{color:gray!important;font-style:italic!important}.files-list .single-file .name{font-size:14px;font-weight:500;color:#353f4a;margin:0}.files-list .single-file .size{font-size:12px;font-weight:500;color:#a4a4a4;margin:0 0 .25rem}.files-list .single-file .info{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2$1.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: DragAndDropDirective, selector: "[appDragAndDrop]", outputs: ["fileDropped"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }] });
13987
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: UploadFileComponent, selector: "app-upload-file", inputs: { fileExtension: "fileExtension", uniqueFile: "uniqueFile", instantUpload: "instantUpload", uploadFn: "uploadFn", deleteFn: "deleteFn", maxParallelUpload: "maxParallelUpload" }, viewQueries: [{ propertyName: "fileDropEl", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"!uniqueFile || files.length === 0\" class=\"container\" appDragAndDrop (fileDropped)=\"onFileDropped($event)\">\n <input\n type=\"file\"\n #fileDropRef\n id=\"fileDropRef\"\n [multiple]=\"!uniqueFile\"\n [accept]=\"fileExtension\"\n (change)=\"fileBrowseHandler($any($event.target).files)\"\n />\n <mat-icon style=\"font-size: xx-large\" color=\"accent\" class=\"text-size\">upload</mat-icon>\n <ion-label\n [innerHTML]=\"\n 'FILE.UPLOAD.DRAG_AND_DROP' | translate: { extension: !fileExtension ? '' : ' (' + fileExtension + ')' }\n \"\n ></ion-label>\n <ion-button>{{ 'FILE.UPLOAD.BROWSE' | translate }}</ion-button>\n</div>\n<div class=\"files-list\">\n <ion-list>\n @for (file of files; track file; let i = $index) {\n <ion-item>\n <mat-icon slot=\"start\">description</mat-icon>\n <div class=\"single-file\">\n <ion-label>\n <h4 class=\"name\" [class.deleting]=\"file.deleting\">\n {{ file.name }}\n </h4>\n <p>\n {{ file.size | fileSize }}\n </p>\n </ion-label>\n <ion-progress-bar\n *ngIf=\"uploading && !file.error\"\n [value]=\"file.progress || 0\"\n [type]=\"file.deleting || file.progress === -1 ? 'indeterminate' : 'determinate'\"\n ></ion-progress-bar>\n <ion-label *ngIf=\"file.error\" color=\"danger\" [innerHTML]=\"file.error | translate\"></ion-label>\n </div>\n <!-- remote from list (before importation) -->\n <button *ngIf=\"!file.progress || file.error\" mat-icon-button slot=\"end\" (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n <!-- delete file (remotely - after importation) -->\n <button\n *ngIf=\"file.progress === 1 && !!deleteFn && !file.deleting\"\n mat-icon-button\n slot=\"end\"\n (click)=\"deleteFile(i)\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </ion-item>\n }\n </ion-list>\n</div>\n", styles: [".container{width:calc(100% - 3rem);min-height:200px;padding:2rem;text-align:center;border:dashed 1px #979797;position:relative;margin:1.5rem}.container input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;top:0;left:0;cursor:pointer}.container ion-label{display:block;font-size:20px;font-weight:600;color:#38424c}.container label{display:inline-block;color:#fff;width:183px;height:44px;border-radius:21.5px;background-color:#db202f;padding:8px 16px}.fileover{border:solid 1px var(--ion-color-accent)}.files-list{max-height:300px;overflow:auto}.files-list .single-file{display:flex;flex-direction:column}.files-list .single-file .name{word-break:break-all}.files-list .single-file .name.deleting{color:gray!important;font-style:italic!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2$1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2$1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2$1.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: DragAndDropDirective, selector: "[appDragAndDrop]", outputs: ["fileDropped"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }] });
14015
13988
  }
14016
13989
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: UploadFileComponent, decorators: [{
14017
13990
  type: Component,
14018
- args: [{ selector: 'app-upload-file', template: "<div *ngIf=\"!uniqueFile || files.length === 0\" class=\"container\" appDragAndDrop (fileDropped)=\"onFileDropped($event)\">\n <input\n type=\"file\"\n #fileDropRef\n id=\"fileDropRef\"\n [multiple]=\"!uniqueFile\"\n [accept]=\"fileExtension\"\n (change)=\"fileBrowseHandler($any($event.target).files)\"\n />\n <mat-icon style=\"font-size: xx-large\" color=\"accent\" class=\"text-size\">upload</mat-icon>\n <ion-label\n [innerHTML]=\"\n 'FILE.UPLOAD.DRAG_AND_DROP' | translate: { extension: !fileExtension ? '' : ' (' + fileExtension + ')' }\n \"\n ></ion-label>\n <ion-button>{{ 'FILE.UPLOAD.BROWSE' | translate }}</ion-button>\n</div>\n<div class=\"files-list\">\n <div *ngFor=\"let file of files; index as i\" class=\"single-file\" [class.deleting]=\"file.deleting\">\n <mat-icon>description</mat-icon>\n <div class=\"info\">\n <h4 class=\"name\">\n {{ file.name }}\n </h4>\n <p class=\"size\">\n {{ file.size | fileSize }}\n </p>\n <ion-progress-bar\n *ngIf=\"!file.error\"\n [value]=\"file.progress || 0\"\n [type]=\"file.deleting || file.progress === -1 ? 'indeterminate' : 'determinate'\"\n ></ion-progress-bar>\n <ion-label *ngIf=\"file.error\" color=\"danger\" [innerHTML]=\"file.error | translate\"></ion-label>\n </div>\n <!-- remote from list (before importation) -->\n <button *ngIf=\"!file.progress || file.error\" mat-icon-button (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n <!-- delete file (remotely - after importation) -->\n <button *ngIf=\"file.progress === 1 && !!deleteFn && !file.deleting\" mat-icon-button (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".container{width:calc(100% - 3rem);min-height:200px;padding:2rem;text-align:center;border:dashed 1px #979797;position:relative;margin:1.5rem}.container input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;top:0;left:0;cursor:pointer}.container ion-label{display:block;font-size:20px;font-weight:600;color:#38424c}.container label{display:inline-block;color:#fff;width:183px;height:44px;border-radius:21.5px;background-color:#db202f;padding:8px 16px}.fileover{border:solid 1px var(--ion-color-accent)}.files-list{max-height:300px;overflow:auto}.files-list .single-file{display:flex;flex-grow:1;padding:.5rem;justify-content:space-between;align-items:center;border:dashed 1px #979797;margin-bottom:1rem}.files-list .single-file.deleting .name{color:gray!important;font-style:italic!important}.files-list .single-file .name{font-size:14px;font-weight:500;color:#353f4a;margin:0}.files-list .single-file .size{font-size:12px;font-weight:500;color:#a4a4a4;margin:0 0 .25rem}.files-list .single-file .info{width:100%}\n"] }]
13991
+ args: [{ selector: 'app-upload-file', template: "<div *ngIf=\"!uniqueFile || files.length === 0\" class=\"container\" appDragAndDrop (fileDropped)=\"onFileDropped($event)\">\n <input\n type=\"file\"\n #fileDropRef\n id=\"fileDropRef\"\n [multiple]=\"!uniqueFile\"\n [accept]=\"fileExtension\"\n (change)=\"fileBrowseHandler($any($event.target).files)\"\n />\n <mat-icon style=\"font-size: xx-large\" color=\"accent\" class=\"text-size\">upload</mat-icon>\n <ion-label\n [innerHTML]=\"\n 'FILE.UPLOAD.DRAG_AND_DROP' | translate: { extension: !fileExtension ? '' : ' (' + fileExtension + ')' }\n \"\n ></ion-label>\n <ion-button>{{ 'FILE.UPLOAD.BROWSE' | translate }}</ion-button>\n</div>\n<div class=\"files-list\">\n <ion-list>\n @for (file of files; track file; let i = $index) {\n <ion-item>\n <mat-icon slot=\"start\">description</mat-icon>\n <div class=\"single-file\">\n <ion-label>\n <h4 class=\"name\" [class.deleting]=\"file.deleting\">\n {{ file.name }}\n </h4>\n <p>\n {{ file.size | fileSize }}\n </p>\n </ion-label>\n <ion-progress-bar\n *ngIf=\"uploading && !file.error\"\n [value]=\"file.progress || 0\"\n [type]=\"file.deleting || file.progress === -1 ? 'indeterminate' : 'determinate'\"\n ></ion-progress-bar>\n <ion-label *ngIf=\"file.error\" color=\"danger\" [innerHTML]=\"file.error | translate\"></ion-label>\n </div>\n <!-- remote from list (before importation) -->\n <button *ngIf=\"!file.progress || file.error\" mat-icon-button slot=\"end\" (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n <!-- delete file (remotely - after importation) -->\n <button\n *ngIf=\"file.progress === 1 && !!deleteFn && !file.deleting\"\n mat-icon-button\n slot=\"end\"\n (click)=\"deleteFile(i)\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </ion-item>\n }\n </ion-list>\n</div>\n", styles: [".container{width:calc(100% - 3rem);min-height:200px;padding:2rem;text-align:center;border:dashed 1px #979797;position:relative;margin:1.5rem}.container input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;top:0;left:0;cursor:pointer}.container ion-label{display:block;font-size:20px;font-weight:600;color:#38424c}.container label{display:inline-block;color:#fff;width:183px;height:44px;border-radius:21.5px;background-color:#db202f;padding:8px 16px}.fileover{border:solid 1px var(--ion-color-accent)}.files-list{max-height:300px;overflow:auto}.files-list .single-file{display:flex;flex-direction:column}.files-list .single-file .name{word-break:break-all}.files-list .single-file .name.deleting{color:gray!important;font-style:italic!important}\n"] }]
14019
13992
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { fileDropEl: [{
14020
13993
  type: ViewChild,
14021
13994
  args: ['fileDropRef', { static: false }]
@@ -30424,108 +30397,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
30424
30397
  type: Output
30425
30398
  }] } });
30426
30399
 
30427
- class AbstractTableSelectionPipe extends AbstractSelectionModelPipe {
30428
- _onRowsChanges;
30429
- constructor(_ref) {
30430
- super(_ref);
30431
- }
30432
- transform(selectionOrTable, tableOrOpts, opts) {
30433
- // @ts-ignore
30434
- const _table = tableOrOpts instanceof (AppTable) ? tableOrOpts : selectionOrTable instanceof (AppTable) ? selectionOrTable : undefined;
30435
- // @ts-ignore
30436
- const _selection = _table?.selection || selectionOrTable;
30437
- // @ts-ignore
30438
- const _opts = opts || !(tableOrOpts instanceof (AppTable) && tableOrOpts);
30439
- return super.transform(_selection, _table, _opts);
30440
- }
30441
- _subscribe(selection, table, opts) {
30442
- this._onRowsChanges = table?.dataSource?.rowsSubject.subscribe((_) => {
30443
- const result = this._transform(selection, table, opts);
30444
- if (result !== this._result) {
30445
- this._result = result;
30446
- this._ref.markForCheck();
30447
- }
30448
- });
30449
- return super._subscribe(selection, table);
30450
- }
30451
- _dispose() {
30452
- super._dispose();
30453
- this._onRowsChanges?.unsubscribe();
30454
- this._onRowsChanges = null;
30455
- }
30456
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AbstractTableSelectionPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
30457
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: AbstractTableSelectionPipe, name: "abstract-table-selection" });
30458
- }
30459
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AbstractTableSelectionPipe, decorators: [{
30460
- type: Pipe,
30461
- args: [{
30462
- name: 'abstract-table-selection',
30463
- }]
30464
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
30465
- class IsAllSelectedPipe extends AbstractTableSelectionPipe {
30466
- constructor(_ref) {
30467
- super(_ref);
30468
- }
30469
- _transform(selection, table, countPropertyName = 'visibleRowCount') {
30470
- return selection.selected.length === table?.[countPropertyName];
30471
- }
30472
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
30473
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, name: "isAllSelected", pure: false });
30474
- }
30475
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, decorators: [{
30476
- type: Pipe,
30477
- args: [{
30478
- name: 'isAllSelected',
30479
- pure: false,
30480
- }]
30481
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
30482
- class IsNotAllSelectedPipe extends IsAllSelectedPipe {
30483
- constructor(_ref) {
30484
- super(_ref);
30485
- }
30486
- _transform(selection, table, countPropertyName = 'visibleRowCount') {
30487
- return selection.hasValue() && selection.selected.length !== table?.[countPropertyName];
30488
- }
30489
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
30490
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, name: "isNotAllSelected", pure: false });
30491
- }
30492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, decorators: [{
30493
- type: Pipe,
30494
- args: [{
30495
- name: 'isNotAllSelected',
30496
- pure: false,
30497
- }]
30498
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
30499
- class DisplayByDefinitionPipe {
30500
- translate = inject(TranslateService);
30501
- transform(value, definition) {
30502
- if (isNil(value))
30503
- return '';
30504
- switch (definition.type) {
30505
- case 'boolean':
30506
- return this.translate.instant(value === true ? 'COMMON.YES' : 'COMMON.NO');
30507
- case 'entity':
30508
- return referentialToString(value, definition?.autocomplete?.attributes || ['id', 'name']);
30509
- case 'entities':
30510
- return referentialsToString(value, definition?.autocomplete?.attributes || ['id', 'name']);
30511
- case 'date':
30512
- case 'dateTime':
30513
- return toDateISOString(value);
30514
- // todo: manage other types
30515
- }
30516
- return value;
30517
- }
30518
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DisplayByDefinitionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
30519
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: DisplayByDefinitionPipe, name: "displayByDefinition", pure: false });
30520
- }
30521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DisplayByDefinitionPipe, decorators: [{
30522
- type: Pipe,
30523
- args: [{
30524
- name: 'displayByDefinition',
30525
- pure: false,
30526
- }]
30527
- }] });
30528
-
30529
30400
  class AppRowField {
30530
30401
  cd;
30531
30402
  matTable;
@@ -30572,11 +30443,11 @@ class AppRowField {
30572
30443
  this.matTable.removeColumnDef(this.columnDef);
30573
30444
  }
30574
30445
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppRowField, deps: [{ token: i0.ChangeDetectorRef }, { token: i7$1.MatTable }], target: i0.ɵɵFactoryTarget.Component });
30575
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: AppRowField, selector: "app-row-field", inputs: { name: "name", definition: "definition", definitionFn: "definitionFn", headerI18n: "headerI18n", sortable: "sortable", resizable: "resizable", required: "required", readonly: "readonly", sticky: "sticky", draggable: "draggable", disabled: "disabled", placeholder: "placeholder", compact: "compact", floatLabel: "floatLabel", appearance: "appearance", tabindex: "tabindex", autofocus: "autofocus", clearable: "clearable", chipColor: "chipColor", classList: ["class", "classList"], debug: "debug" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: MatColumnDef, descendants: true }], ngImport: i0, template: "<ng-container [matColumnDef]=\"name\" [sticky]=\"sticky\">\n <th mat-header-cell *matHeaderCellDef cdkDrag [cdkDragDisabled]=\"sticky || !draggable\" [resizable]=\"resizable\">\n <!-- if sortable, wrap the header with a mat-sort-header -->\n @if (sortable) {\n <span mat-sort-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </span>\n } @else {\n <ion-label appAutoTitle>{{ headerI18n | translate }}</ion-label>\n @if (required) {\n <ion-label color=\"danger\" [innerHTML]=\"'&nbsp;*'\"></ion-label>\n }\n }\n <ng-template #headerTemplate>\n <ion-label appAutoTitle>{{ headerI18n | translate }}</ion-label>\n @if (required) {\n <ion-label color=\"danger\" [innerHTML]=\"'&nbsp;*'\"></ion-label>\n }\n </ng-template>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n @if (!readonly && row.editing) {\n <app-form-field\n [definition]=\"definition || definitionFn(row)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [formControl]=\"row.validator | formGetControl: name\"\n [placeholder]=\"placeholder\"\n [compact]=\"compact\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n [clearable]=\"clearable\"\n [chipColor]=\"chipColor\"\n [class]=\"classList\"\n [debug]=\"debug\"\n ></app-form-field>\n } @else {\n <ion-label appAutoTitle>\n {{\n (row.validator | formGetValue: name) || (row.currentData | propertyGet: name)\n | displayByDefinition: definition || definitionFn(row)\n }}\n </ion-label>\n }\n </td>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6$6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "directive", type: AutoTitleDirective, selector: "[appAutoTitle]" }, { kind: "component", type: AppFormField, selector: "app-form-field", inputs: ["definition", "required", "readonly", "disabled", "formControl", "formControlName", "placeholder", "compact", "floatLabel", "appearance", "tabindex", "autofocus", "clearable", "chipColor", "class", "debug"], outputs: ["keyup.enter"] }, { kind: "component", type: ResizableComponent, selector: "th[resizable]", inputs: ["resizable"], outputs: ["sizeChanged"] }, { kind: "directive", type: ResizableDirective, selector: "[resizable]", outputs: ["resizable", "fit"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: PropertyGetPipe, name: "propertyGet" }, { kind: "pipe", type: FormGetControlPipe, name: "formGetControl" }, { kind: "pipe", type: FormGetValuePipe, name: "formGetValue" }, { kind: "pipe", type: DisplayByDefinitionPipe, name: "displayByDefinition" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30446
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: AppRowField, selector: "app-row-field", inputs: { name: "name", definition: "definition", definitionFn: "definitionFn", headerI18n: "headerI18n", sortable: "sortable", resizable: "resizable", required: "required", readonly: "readonly", sticky: "sticky", draggable: "draggable", disabled: "disabled", placeholder: "placeholder", compact: "compact", floatLabel: "floatLabel", appearance: "appearance", tabindex: "tabindex", autofocus: "autofocus", clearable: "clearable", chipColor: "chipColor", classList: ["class", "classList"], debug: "debug" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: MatColumnDef, descendants: true }], ngImport: i0, template: "<ng-container [matColumnDef]=\"name\" [sticky]=\"sticky\">\n <th mat-header-cell *matHeaderCellDef cdkDrag [cdkDragDisabled]=\"sticky || !draggable\" [resizable]=\"resizable\">\n <!-- if sortable, wrap the header with a mat-sort-header -->\n @if (sortable) {\n <span mat-sort-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </span>\n } @else {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n }\n <ng-template #headerTemplate>\n <ion-label appAutoTitle>{{ headerI18n | translate }}</ion-label>\n @if (required) {\n <ion-label color=\"danger\" [innerHTML]=\"'&nbsp;*'\"></ion-label>\n }\n </ng-template>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n @if (!readonly && row.editing) {\n <app-form-field\n [definition]=\"definition || definitionFn(row)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [formControl]=\"row.validator | formGetControl: name\"\n [placeholder]=\"placeholder\"\n [compact]=\"compact\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n [clearable]=\"clearable\"\n [chipColor]=\"chipColor\"\n [class]=\"classList\"\n [debug]=\"debug\"\n ></app-form-field>\n } @else {\n <ion-label appAutoTitle>\n {{ row.currentData | propertyGet: name | valueFormat: definition || definitionFn(row) }}\n </ion-label>\n }\n </td>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6$6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "directive", type: AutoTitleDirective, selector: "[appAutoTitle]" }, { kind: "component", type: AppFormField, selector: "app-form-field", inputs: ["definition", "required", "readonly", "disabled", "formControl", "formControlName", "placeholder", "compact", "floatLabel", "appearance", "tabindex", "autofocus", "clearable", "chipColor", "class", "debug"], outputs: ["keyup.enter"] }, { kind: "component", type: ResizableComponent, selector: "th[resizable]", inputs: ["resizable"], outputs: ["sizeChanged"] }, { kind: "directive", type: ResizableDirective, selector: "[resizable]", outputs: ["resizable", "fit"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: PropertyGetPipe, name: "propertyGet" }, { kind: "pipe", type: ValueFormatPipe, name: "valueFormat" }, { kind: "pipe", type: FormGetControlPipe, name: "formGetControl" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30576
30447
  }
30577
30448
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppRowField, decorators: [{
30578
30449
  type: Component,
30579
- args: [{ selector: 'app-row-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [matColumnDef]=\"name\" [sticky]=\"sticky\">\n <th mat-header-cell *matHeaderCellDef cdkDrag [cdkDragDisabled]=\"sticky || !draggable\" [resizable]=\"resizable\">\n <!-- if sortable, wrap the header with a mat-sort-header -->\n @if (sortable) {\n <span mat-sort-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </span>\n } @else {\n <ion-label appAutoTitle>{{ headerI18n | translate }}</ion-label>\n @if (required) {\n <ion-label color=\"danger\" [innerHTML]=\"'&nbsp;*'\"></ion-label>\n }\n }\n <ng-template #headerTemplate>\n <ion-label appAutoTitle>{{ headerI18n | translate }}</ion-label>\n @if (required) {\n <ion-label color=\"danger\" [innerHTML]=\"'&nbsp;*'\"></ion-label>\n }\n </ng-template>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n @if (!readonly && row.editing) {\n <app-form-field\n [definition]=\"definition || definitionFn(row)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [formControl]=\"row.validator | formGetControl: name\"\n [placeholder]=\"placeholder\"\n [compact]=\"compact\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n [clearable]=\"clearable\"\n [chipColor]=\"chipColor\"\n [class]=\"classList\"\n [debug]=\"debug\"\n ></app-form-field>\n } @else {\n <ion-label appAutoTitle>\n {{\n (row.validator | formGetValue: name) || (row.currentData | propertyGet: name)\n | displayByDefinition: definition || definitionFn(row)\n }}\n </ion-label>\n }\n </td>\n</ng-container>\n" }]
30450
+ args: [{ selector: 'app-row-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [matColumnDef]=\"name\" [sticky]=\"sticky\">\n <th mat-header-cell *matHeaderCellDef cdkDrag [cdkDragDisabled]=\"sticky || !draggable\" [resizable]=\"resizable\">\n <!-- if sortable, wrap the header with a mat-sort-header -->\n @if (sortable) {\n <span mat-sort-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </span>\n } @else {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n }\n <ng-template #headerTemplate>\n <ion-label appAutoTitle>{{ headerI18n | translate }}</ion-label>\n @if (required) {\n <ion-label color=\"danger\" [innerHTML]=\"'&nbsp;*'\"></ion-label>\n }\n </ng-template>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n @if (!readonly && row.editing) {\n <app-form-field\n [definition]=\"definition || definitionFn(row)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [formControl]=\"row.validator | formGetControl: name\"\n [placeholder]=\"placeholder\"\n [compact]=\"compact\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n [clearable]=\"clearable\"\n [chipColor]=\"chipColor\"\n [class]=\"classList\"\n [debug]=\"debug\"\n ></app-form-field>\n } @else {\n <ion-label appAutoTitle>\n {{ row.currentData | propertyGet: name | valueFormat: definition || definitionFn(row) }}\n </ion-label>\n }\n </td>\n</ng-container>\n" }]
30580
30451
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i7$1.MatTable }], propDecorators: { columnDef: [{
30581
30452
  type: ViewChild,
30582
30453
  args: [MatColumnDef]
@@ -30855,6 +30726,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
30855
30726
  args: [MatExpansionPanel, { static: true }]
30856
30727
  }] } });
30857
30728
 
30729
+ class AbstractTableSelectionPipe extends AbstractSelectionModelPipe {
30730
+ _onRowsChanges;
30731
+ constructor(_ref) {
30732
+ super(_ref);
30733
+ }
30734
+ transform(selectionOrTable, tableOrOpts, opts) {
30735
+ // @ts-ignore
30736
+ const _table = tableOrOpts instanceof (AppTable) ? tableOrOpts : selectionOrTable instanceof (AppTable) ? selectionOrTable : undefined;
30737
+ // @ts-ignore
30738
+ const _selection = _table?.selection || selectionOrTable;
30739
+ // @ts-ignore
30740
+ const _opts = opts || !(tableOrOpts instanceof (AppTable) && tableOrOpts);
30741
+ return super.transform(_selection, _table, _opts);
30742
+ }
30743
+ _subscribe(selection, table, opts) {
30744
+ this._onRowsChanges = table?.dataSource?.rowsSubject.subscribe((_) => {
30745
+ const result = this._transform(selection, table, opts);
30746
+ if (result !== this._result) {
30747
+ this._result = result;
30748
+ this._ref.markForCheck();
30749
+ }
30750
+ });
30751
+ return super._subscribe(selection, table);
30752
+ }
30753
+ _dispose() {
30754
+ super._dispose();
30755
+ this._onRowsChanges?.unsubscribe();
30756
+ this._onRowsChanges = null;
30757
+ }
30758
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AbstractTableSelectionPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
30759
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: AbstractTableSelectionPipe, name: "abstract-table-selection" });
30760
+ }
30761
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AbstractTableSelectionPipe, decorators: [{
30762
+ type: Pipe,
30763
+ args: [{
30764
+ name: 'abstract-table-selection',
30765
+ }]
30766
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
30767
+ class IsAllSelectedPipe extends AbstractTableSelectionPipe {
30768
+ constructor(_ref) {
30769
+ super(_ref);
30770
+ }
30771
+ _transform(selection, table, countPropertyName = 'visibleRowCount') {
30772
+ return selection.selected.length === table?.[countPropertyName];
30773
+ }
30774
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
30775
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, name: "isAllSelected", pure: false });
30776
+ }
30777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsAllSelectedPipe, decorators: [{
30778
+ type: Pipe,
30779
+ args: [{
30780
+ name: 'isAllSelected',
30781
+ pure: false,
30782
+ }]
30783
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
30784
+ class IsNotAllSelectedPipe extends IsAllSelectedPipe {
30785
+ constructor(_ref) {
30786
+ super(_ref);
30787
+ }
30788
+ _transform(selection, table, countPropertyName = 'visibleRowCount') {
30789
+ return selection.hasValue() && selection.selected.length !== table?.[countPropertyName];
30790
+ }
30791
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
30792
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, name: "isNotAllSelected", pure: false });
30793
+ }
30794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IsNotAllSelectedPipe, decorators: [{
30795
+ type: Pipe,
30796
+ args: [{
30797
+ name: 'isNotAllSelected',
30798
+ pure: false,
30799
+ }]
30800
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
30801
+
30858
30802
  const components = [
30859
30803
  // Components
30860
30804
  TableSelectColumnsComponent,
@@ -30863,7 +30807,6 @@ const components = [
30863
30807
  // Pipes
30864
30808
  IsAllSelectedPipe,
30865
30809
  IsNotAllSelectedPipe,
30866
- DisplayByDefinitionPipe,
30867
30810
  ];
30868
30811
  class AppTableModule {
30869
30812
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -30874,16 +30817,14 @@ class AppTableModule {
30874
30817
  AppRowField,
30875
30818
  // Pipes
30876
30819
  IsAllSelectedPipe,
30877
- IsNotAllSelectedPipe,
30878
- DisplayByDefinitionPipe], imports: [SharedModule, i1$1.TranslateModule, ResizableModule], exports: [TranslateModule,
30820
+ IsNotAllSelectedPipe], imports: [SharedModule, i1$1.TranslateModule, ResizableModule], exports: [TranslateModule,
30879
30821
  // Components
30880
30822
  TableSelectColumnsComponent,
30881
30823
  ActionsColumnComponent,
30882
30824
  AppRowField,
30883
30825
  // Pipes
30884
30826
  IsAllSelectedPipe,
30885
- IsNotAllSelectedPipe,
30886
- DisplayByDefinitionPipe] });
30827
+ IsNotAllSelectedPipe] });
30887
30828
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppTableModule, imports: [SharedModule, TranslateModule.forChild(), ResizableModule, TranslateModule] });
30888
30829
  }
30889
30830
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppTableModule, decorators: [{
@@ -39928,14 +39869,15 @@ class UploadFileTestingPage {
39928
39869
  const loadStep = file.size / 10;
39929
39870
  let loaded = 0;
39930
39871
  return timer(0, 250).pipe(takeUntil($stop), map(() => {
39872
+ // pause in middle
39873
+ // if (loaded > 0) return { type: HttpEventType.UploadProgress, total: file.size, loaded };
39931
39874
  loaded += loadStep;
39932
39875
  // Return progression
39933
39876
  if (loaded < file.size) {
39934
- //return {type: HttpEventType.UploadProgress, total: file.size, loaded };
39935
- return { type: HttpEventType.UploadProgress, loaded: -1 };
39877
+ return { type: HttpEventType.UploadProgress, total: file.size, loaded };
39936
39878
  }
39937
39879
  // Stop the timer
39938
- setTimeout(() => $stop.next(), 100);
39880
+ setTimeout(() => $stop.next(), 1000);
39939
39881
  // Return final response
39940
39882
  return new HttpResponse({ body: { finalName: file.name } });
39941
39883
  }));
@@ -42027,5 +41969,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
42027
41969
  * Generated bundle index. Do not edit.
42028
41970
  */
42029
41971
 
42030
- export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_DEBUG_DATA_SERVICE, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_FRAGMENTS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_LOGGING_SERVICE, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_NAMED_FILTER_SERVICE, APP_PROGRESS_BAR_SERVICE, APP_SETTINGS_MENU_ITEMS, APP_STORAGE, APP_STORAGE_EXPLORER_PROTECTED_KEYS, APP_TESTING_PAGES, APP_USER_EVENT_LIST_INFINITE_SCROLL_THRESHOLD, APP_USER_EVENT_SERVICE, APP_USER_SETTINGS_OPTIONS, APP_USER_TOKEN_SCOPES, AboutModal, AbstractNamedFilterService, AbstractSelectionModelPipe, AbstractTableSelectionPipe, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, AccountUtils, ActionsColumnComponent, AdminModule, AdminRoutingModule, AdminUsersModule, Alerts, AndroidOsEnvironment, AppAboutModalModule, AppAccountModule, AppAsyncTable, AppAuthForm, AppAuthModal, AppAuthModule, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppEntityFormModule, AppForm, AppFormArray, AppFormButtonsBarModule, AppFormContainer, AppFormField, AppFormModule, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppHomePageModule, AppIconComponent, AppIconModule, AppImageGalleryComponent, AppInMemoryTable, AppInstallUpgradeCard, AppInstallUpgradeCardModule, AppListForm, AppListFormModule, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppPropertiesFormModule, AppPropertiesTable, AppRegisterModule, AppRowField, AppSelectPeerModule, AppSettingsPageModule, AppTabEditor, AppTabEditorOptions, AppTable, AppTableModule, AppTableUtils, AppTextPopoverModule, AppUpdateOfflineModeCard, AppUpdateOfflineModeCardModule, AppValidatorService, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayJoinPipe, ArrayLengthPipe, ArrayPluckPipe, AsAnyPipe, AsArrayPipe, AsFloatLabelTypePipe, AsObservablePipe, AudioProvider, AudioTestingModule, AudioTestingPage, AuthGuardService, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, BadgeDirective, BadgeNumberPipe, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, BooleanTestPage, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CapitalizePipe, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigFragments, ConfigService, Configuration, CoreModule, CorePipesModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_MATCH_REGEXP, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFormatService, DateFromNowPipe, DateShortTestPage, DateTestPage, DateTimeTestPage, DateUtils, DebugComponent, Department, DepartmentToStringPipe, DisplayByDefinitionPipe, DragAndDropDirective, DurationPipe, DurationTestPage, ED25519_SEED_LENGTH, EMPTY_PLACEHOLDER_CHAR, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesAsyncTableDataSource, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, EnvironmentHttpLoader, EnvironmentLoader, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, GalleryTestPage, GeolocationUtils, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, IMAGE_DEFAULTS, IPosition, ImageAttachment, ImageAttachmentFilter, ImageAttachmentService, ImageGalleryModule, ImageGalleryTestingModule, ImageModule, ImageService, ImagesUtils, InMemoryEntitiesService, IsAllSelectedPipe, IsEmptySelectionPipe, IsLoginAccountPipe, IsMultipleSelectionPipe, IsNilOrBlankPipe, IsNilOrNaNPipe, IsNilPipe, IsNotAllSelectedPipe, IsNotEmptySelectionPipe, IsNotNilOrBlankPipe, IsNotNilOrNaNPipe, IsNotNilPipe, IsOnDeskPipe, IsOnFieldPipe, IsSelectedPipe, IsSingleSelectionPipe, JobModule, JobProgression, JobProgressionComponent, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, JsonUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LogLevel, LogUtils, Logger, LoggingService, LoggingServiceModule, LongitudeFormatPipe, MAT_FORM_FIELD_DEFAULT_APPEARANCE, MAT_FORM_FIELD_DEFAULT_SUBSCRIPT_SIZING, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapValuesPipe, MaskitoPlaceholderPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatAutocompleteFieldUtils, MatBadgeTestPage, MatBooleanField, MatChipsField, MatColorPipe, MatCommonTestPage, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItem, MenuItems, MenuOptions, MenuService, MenuTestingModule, MenuTestingPage, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NETWORK_DEFAULT_CONNECTION_TIMEOUT, NamedFilter, NamedFilterFilter, NamedFilterSelector, NetworkService, NewTokenModal, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, ObservableTestPage, OddPipe, OtherMenuTestingPage, PEER_URL_REGEXP, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertiesFormTestPage, PropertiesFormTestingModule, PropertyEntity, PropertyEntityFilter, PropertyEntityValidator, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialToStringPipe, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, RegisterForm, RegisterModal, ResizableComponent, ResizableDirective, ResizableModule, RxStateModule, SCRYPT_PARAMS, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_STORAGE_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SelectionLengthPipe, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedBadgeModule, SharedDebugModule, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedNamedFilterModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedTextFormModule, SharedToolbarModule, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, StartableService, StatusById, StatusIds, StatusList, StorageDrivers, StorageExplorerComponent, StorageExplorerModule, StorageExplorerTestingModule, StorageExplorerTestingRoutingModule, StorageService, StrIncludesPipe, StrLengthPipe, SubMenuTabDirective, SwipeTestPage, Table2TestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TableValidatorService, TextForm, TextFormTestingPage, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, ToastTestingModule, ToastTestingPage, Toasts, TokenScope, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, TreeItemEntityUtils, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEventModule, UserEventNotificationIcon, UserEventNotificationList, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UserToken, UserTokenTable, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, collectByProperty, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, escapeRegExp, fadeInAnimation, fadeInOutAnimation, fadeInSlowAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, findParentWithClass, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, initArrayControlsFromValues, isAndroid, isBlankString, isCapacitor, isControlHasInput, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isOnFieldMode, isProgressEvent, isResponseEvent, isStartableService, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, maskitoPrefixPlugin, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setPropertyByPath, setTabIndex, sleep, slideInAnimation, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, undefinedIfNull, underscoreToChangeCase, updateValueAndValidity, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending };
41972
+ export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_DEBUG_DATA_SERVICE, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_FRAGMENTS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_LOGGING_SERVICE, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_NAMED_FILTER_SERVICE, APP_PROGRESS_BAR_SERVICE, APP_SETTINGS_MENU_ITEMS, APP_STORAGE, APP_STORAGE_EXPLORER_PROTECTED_KEYS, APP_TESTING_PAGES, APP_USER_EVENT_LIST_INFINITE_SCROLL_THRESHOLD, APP_USER_EVENT_SERVICE, APP_USER_SETTINGS_OPTIONS, APP_USER_TOKEN_SCOPES, AboutModal, AbstractNamedFilterService, AbstractSelectionModelPipe, AbstractTableSelectionPipe, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, AccountUtils, ActionsColumnComponent, AdminModule, AdminRoutingModule, AdminUsersModule, Alerts, AndroidOsEnvironment, AppAboutModalModule, AppAccountModule, AppAsyncTable, AppAuthForm, AppAuthModal, AppAuthModule, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppEntityFormModule, AppForm, AppFormArray, AppFormButtonsBarModule, AppFormContainer, AppFormField, AppFormModule, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppHomePageModule, AppIconComponent, AppIconModule, AppImageGalleryComponent, AppInMemoryTable, AppInstallUpgradeCard, AppInstallUpgradeCardModule, AppListForm, AppListFormModule, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppPropertiesFormModule, AppPropertiesTable, AppRegisterModule, AppRowField, AppSelectPeerModule, AppSettingsPageModule, AppTabEditor, AppTabEditorOptions, AppTable, AppTableModule, AppTableUtils, AppTextPopoverModule, AppUpdateOfflineModeCard, AppUpdateOfflineModeCardModule, AppValidatorService, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayJoinPipe, ArrayLengthPipe, ArrayPluckPipe, AsAnyPipe, AsArrayPipe, AsFloatLabelTypePipe, AsObservablePipe, AudioProvider, AudioTestingModule, AudioTestingPage, AuthGuardService, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, BadgeDirective, BadgeNumberPipe, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, BooleanTestPage, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CapitalizePipe, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigFragments, ConfigService, Configuration, CoreModule, CorePipesModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_MATCH_REGEXP, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFormatService, DateFromNowPipe, DateShortTestPage, DateTestPage, DateTimeTestPage, DateUtils, DebugComponent, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, DurationTestPage, ED25519_SEED_LENGTH, EMPTY_PLACEHOLDER_CHAR, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesAsyncTableDataSource, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, EnvironmentHttpLoader, EnvironmentLoader, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, GalleryTestPage, GeolocationUtils, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, IMAGE_DEFAULTS, IPosition, ImageAttachment, ImageAttachmentFilter, ImageAttachmentService, ImageGalleryModule, ImageGalleryTestingModule, ImageModule, ImageService, ImagesUtils, InMemoryEntitiesService, IsAllSelectedPipe, IsEmptySelectionPipe, IsLoginAccountPipe, IsMultipleSelectionPipe, IsNilOrBlankPipe, IsNilOrNaNPipe, IsNilPipe, IsNotAllSelectedPipe, IsNotEmptySelectionPipe, IsNotNilOrBlankPipe, IsNotNilOrNaNPipe, IsNotNilPipe, IsOnDeskPipe, IsOnFieldPipe, IsSelectedPipe, IsSingleSelectionPipe, JobModule, JobProgression, JobProgressionComponent, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, JsonUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LogLevel, LogUtils, Logger, LoggingService, LoggingServiceModule, LongitudeFormatPipe, MAT_FORM_FIELD_DEFAULT_APPEARANCE, MAT_FORM_FIELD_DEFAULT_SUBSCRIPT_SIZING, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapValuesPipe, MaskitoPlaceholderPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatAutocompleteFieldUtils, MatBadgeTestPage, MatBooleanField, MatChipsField, MatColorPipe, MatCommonTestPage, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItem, MenuItems, MenuOptions, MenuService, MenuTestingModule, MenuTestingPage, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NETWORK_DEFAULT_CONNECTION_TIMEOUT, NamedFilter, NamedFilterFilter, NamedFilterSelector, NetworkService, NewTokenModal, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, ObservableTestPage, OddPipe, OtherMenuTestingPage, PEER_URL_REGEXP, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertiesFormTestPage, PropertiesFormTestingModule, PropertyEntity, PropertyEntityFilter, PropertyEntityValidator, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialToStringPipe, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, RegisterForm, RegisterModal, ResizableComponent, ResizableDirective, ResizableModule, RxStateModule, SCRYPT_PARAMS, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_STORAGE_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SelectionLengthPipe, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedBadgeModule, SharedDebugModule, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedNamedFilterModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedTextFormModule, SharedToolbarModule, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, StartableService, StatusById, StatusIds, StatusList, StorageDrivers, StorageExplorerComponent, StorageExplorerModule, StorageExplorerTestingModule, StorageExplorerTestingRoutingModule, StorageService, StrIncludesPipe, StrLengthPipe, SubMenuTabDirective, SwipeTestPage, Table2TestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TableValidatorService, TextForm, TextFormTestingPage, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, ToastTestingModule, ToastTestingPage, Toasts, TokenScope, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, TreeItemEntityUtils, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEventModule, UserEventNotificationIcon, UserEventNotificationList, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UserToken, UserTokenTable, UsersPage, ValueFormatPipe, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, collectByProperty, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, escapeRegExp, fadeInAnimation, fadeInOutAnimation, fadeInSlowAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, findParentWithClass, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, initArrayControlsFromValues, isAndroid, isBlankString, isCapacitor, isControlHasInput, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isOnFieldMode, isProgressEvent, isResponseEvent, isStartableService, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, maskitoPrefixPlugin, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setPropertyByPath, setTabIndex, sleep, slideInAnimation, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, undefinedIfNull, underscoreToChangeCase, updateValueAndValidity, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending };
42031
41973
  //# sourceMappingURL=sumaris-net.ngx-components.mjs.map