@bizdoc/core 3.6.6 → 3.6.8

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.
@@ -563,6 +563,7 @@
563
563
  "type": "boolean",
564
564
  "default": false
565
565
  },
566
+ "Ordinal": { "type": "integer" },
566
567
  "ResourceType": {
567
568
  "type": "string"
568
569
  }
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Inject, Injectable, Pipe, Directive, Component, Injector, ElementRef, HostListener, TemplateRef, ViewContainerRef, ViewChild, Input, HostBinding, Output, Optional, Self, EventEmitter, NgModule, ViewChildren, inject, Host, SkipSelf, ContentChild, ContentChildren, provideAppInitializer } from '@angular/core';
3
- import { Subject, firstValueFrom, forkJoin, BehaviorSubject, merge, takeUntil as takeUntil$1, shareReplay as shareReplay$1, map as map$1, of, Observable, filter as filter$1, from, interval, switchMap as switchMap$1, isObservable, catchError as catchError$1, startWith as startWith$1, EMPTY, debounceTime as debounceTime$1 } from 'rxjs';
4
- import { map, tap, shareReplay, filter, startWith, takeUntil, debounceTime, switchMap, catchError, first, take, finalize, delay } from 'rxjs/operators';
3
+ import { Subject, firstValueFrom, of, forkJoin, BehaviorSubject, merge, takeUntil as takeUntil$1, shareReplay as shareReplay$1, map as map$1, Observable, filter as filter$1, from, interval, switchMap as switchMap$1, isObservable, catchError as catchError$1, startWith as startWith$1, EMPTY, debounceTime as debounceTime$1 } from 'rxjs';
4
+ import { map, tap, catchError, shareReplay, filter, startWith, takeUntil, debounceTime, switchMap, first, take, finalize, delay } from 'rxjs/operators';
5
5
  import * as i4 from '@angular/material/chips';
6
6
  import { MatChipInput, MatChipsModule, MatChipListbox } from '@angular/material/chips';
7
7
  import { ENTER, COMMA, SEMICOLON } from '@angular/cdk/keycodes';
@@ -14,7 +14,7 @@ import { Loader } from '@googlemaps/js-api-loader';
14
14
  import * as firebase from 'firebase/app';
15
15
  import { getMessaging, deleteToken, getToken } from 'firebase/messaging';
16
16
  import * as i1 from '@angular/common/http';
17
- import { HttpRequest, HttpResponse, HttpEventType, HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
17
+ import { HttpRequest, HttpResponse, HttpEventType, HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi, withFetch } from '@angular/common/http';
18
18
  import * as i2 from 'ngx-cookie-service';
19
19
  import { CookieService } from 'ngx-cookie-service';
20
20
  import * as i7 from '@angular/material/icon';
@@ -1105,12 +1105,16 @@ function SessionProviderFactory(provider) {
1105
1105
  return () => provider.prepare();
1106
1106
  }
1107
1107
  class SessionService {
1108
+ /**
1109
+ *
1110
+ * @returns
1111
+ */
1108
1112
  prepare() {
1109
- ('serviceWorker' in navigator) && this._loadServiceWorker();
1110
1113
  const promises = [];
1114
+ ('serviceWorker' in navigator) && this._loadServiceWorker();
1111
1115
  this._config.maps && promises.push(this._loadGoogleMaps());
1112
1116
  promises.push(this._changeTheme(this.theme));
1113
- return promises.length ? Promise.all(promises) : Promise.resolve();
1117
+ return Promise.all(promises);
1114
1118
  }
1115
1119
  constructor(_config, _http, _cookies, _hub, iconRegistry, sanitizer) {
1116
1120
  this._config = _config;
@@ -1217,9 +1221,9 @@ class SessionService {
1217
1221
  get isOutOfOffice() {
1218
1222
  const options = this.profile.options.outOfOffice;
1219
1223
  if (options && options.active) {
1220
- const today = dayjs().startOf('day');
1221
- return (!options.from || dayjs(options.from).startOf('day') <= today)
1222
- && (!options.to || dayjs(options.to).startOf('day') > today);
1224
+ const today = new Date();
1225
+ return (!options.from || new Date(options.from) <= today)
1226
+ && (!options.to || new Date(options.to) > today);
1223
1227
  }
1224
1228
  else
1225
1229
  return false;
@@ -2630,9 +2634,10 @@ const STRINGS = {
2630
2634
  }
2631
2635
  };
2632
2636
 
2633
- const CLDR_FILES$1 = ['cldr-data/main/{0}/ca-gregorian.json', 'cldr-data/main/{0}/numbers.json', 'cldr-data/main/{0}/timeZoneNames.json'];
2637
+ const CLDR_FILES = ['cldr-data/main/{0}/ca-gregorian.json', 'cldr-data/main/{0}/numbers.json', 'cldr-data/main/{0}/timeZoneNames.json',
2638
+ 'cldr-data/main/{0}/currencies.json', 'cldr-data/supplemental/numberingSystems.json'];
2634
2639
  function TranslateProviderFactory(provider) {
2635
- return () => provider.cldr(provider.culture, CLDR_FILES$1);
2640
+ return () => provider.cldr();
2636
2641
  }
2637
2642
  class TranslateService {
2638
2643
  static set(resources) {
@@ -2683,10 +2688,10 @@ class TranslateService {
2683
2688
  });
2684
2689
  _session.loaded.subscribe(() => this._gender = this._session.gender);
2685
2690
  }
2686
- cldr(culture, files) {
2691
+ cldr() {
2687
2692
  if ('en' === this._session.language)
2688
2693
  return Promise.resolve();
2689
- const observables = files.map(f => this._http.get('/assets/i18n/' + f.replace('{0}', culture)).pipe(tap(loadCldr)));
2694
+ const observables = CLDR_FILES.map(f => this._http.get('/assets/i18n/' + f.replace('{0}', this.culture)).pipe(tap(loadCldr), catchError(error => of(undefined))));
2690
2695
  return firstValueFrom(forkJoin(observables));
2691
2696
  }
2692
2697
  get(key, ...args) {
@@ -3651,6 +3656,15 @@ class OptionsComponent {
3651
3656
  };
3652
3657
  return null;
3653
3658
  };
3659
+ this._laterThan = (control) => {
3660
+ const parent = control.parent;
3661
+ if (parent && parent.controls['from'].value && new Date(parent.controls['from'].value) ===
3662
+ new Date(control.value))
3663
+ return {
3664
+ later: true
3665
+ };
3666
+ return null;
3667
+ };
3654
3668
  this.grantUserIds = this._fb.control([]);
3655
3669
  this.oooId = this._fb.control(null);
3656
3670
  this.form = this._fb.group({
@@ -6311,7 +6325,6 @@ const AXIS_SPECIAL_CHARS = /[\.;#\-,\!]/;
6311
6325
  /** allowed characters for axis value / collection / range / pattern. */
6312
6326
  //\pL
6313
6327
  const AXIS_VALUE_PATTERN = /^((!?\w+(\,\w+)*)|(!?\w+\-\w+)|(!?[\w\.\*\#]+))([;]((!?\w+(\,\w+)*)|(!?\w+\-\w+)|(!?[\w\.\*\#]+)))*$/;
6314
- const CLDR_FILES = ['cldr-data/main/{0}/currencies.json', 'cldr-data/main/{0}/ca-gregorian.json', 'cldr-data/main/{0}/numbers.json', 'cldr-data/main/{0}/timeZoneNames.json', 'cldr-data/supplemental/numberingSystems.json'];
6315
6328
  /** query cube */
6316
6329
  class CubeService {
6317
6330
  // ctor
@@ -8687,6 +8700,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImpor
8687
8700
  type: Input
8688
8701
  }] } });
8689
8702
 
8703
+ class DateFormatPipe {
8704
+ transform(value, ...args) {
8705
+ return dayjs(value).format(args[0]);
8706
+ }
8707
+ constructor() {
8708
+ dayjs.extend(localizedFormat);
8709
+ }
8710
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: DateFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8711
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.0", ngImport: i0, type: DateFormatPipe, isStandalone: false, name: "amDateFormat" }); }
8712
+ }
8713
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: DateFormatPipe, decorators: [{
8714
+ type: Pipe,
8715
+ args: [{
8716
+ standalone: false,
8717
+ name: 'amDateFormat'
8718
+ }]
8719
+ }], ctorParameters: () => [] });
8720
+
8690
8721
  class CalendarPipe {
8691
8722
  static { this.refs = 0; }
8692
8723
  static { this.timer = null; }
@@ -8759,8 +8790,9 @@ function getMillisecondsUntilUpdate() {
8759
8790
  /** mail-attachments component*/
8760
8791
  class AttachmentsComponent {
8761
8792
  /** mail-attachments ctor */
8762
- constructor(_mailbox, _session, _vc, _sb, _overlay, _injector, _dir) {
8793
+ constructor(_mailbox, _translate, _session, _vc, _sb, _overlay, _injector, _dir) {
8763
8794
  this._mailbox = _mailbox;
8795
+ this._translate = _translate;
8764
8796
  this._session = _session;
8765
8797
  this._vc = _vc;
8766
8798
  this._sb = _sb;
@@ -8769,6 +8801,12 @@ class AttachmentsComponent {
8769
8801
  this._dir = _dir;
8770
8802
  this.viewedIndicator = true;
8771
8803
  this.includeDeleted = false;
8804
+ this.CALENDAR_SPEC = {
8805
+ lastDay: this._translate.get('YesterdayAt', 'HH:mm'),
8806
+ lastWeek: 'dddd HH:mm',
8807
+ sameDay: this._translate.get('TodayAt', 'HH:mm'),
8808
+ sameElse: 'MMM D HH:mm'
8809
+ };
8772
8810
  }
8773
8811
  ngOnChanges() {
8774
8812
  const distinct = [];
@@ -8852,13 +8890,13 @@ class AttachmentsComponent {
8852
8890
  else
8853
8891
  this._sb.ask('DeleteFileAsk', 'DeleteFile', { color: 'warn' }).subscribe(ok => ok && task());
8854
8892
  }
8855
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: AttachmentsComponent, deps: [{ token: MailboxService }, { token: SessionService }, { token: i0.ViewContainerRef }, { token: PromptService }, { token: i2$3.Overlay }, { token: i0.Injector }, { token: i7$2.Directionality }], target: i0.ɵɵFactoryTarget.Component }); }
8856
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.0", type: AttachmentsComponent, isStandalone: false, selector: "bizdoc-attachments", inputs: { model: "model", viewedIndicator: "viewedIndicator", includeDeleted: "includeDeleted" }, usesOnChanges: true, ngImport: i0, template: "@for (a of attachments; track a) {\r\n <div>\r\n <button mat-button class=\"attachment-link\" [matMenuTriggerFor]=\"attachment\" [bizdocTooltip]=\"a.time | amCalendar\"\r\n [progressIndicator]=\"a.progress\">\r\n @if (viewedIndicator && a.viewed) {\r\n <mat-icon>done_all</mat-icon>\r\n }\r\n <!--[bizdocTooltip]=\"a.viewed | amCalendar\"-->\r\n <mat-icon>attachment</mat-icon>&nbsp;\r\n <span [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\">{{a.fileName}}</span>\r\n </button>\r\n <mat-menu #attachment>\r\n @if (!a.failed) {\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n @if (canPreview(a)) {\r\n <button mat-menu-item (click)=\"preview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n }\r\n @if (hasVersion(a)) {\r\n <mat-divider></mat-divider>\r\n @for (v of getVersions(a); track v) {\r\n <button mat-menu-item (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n }\r\n }\r\n @if (canDelete(a)) {\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n }\r\n }\r\n @if (a.failed) {\r\n <button mat-menu-item (click)=\"cancel(a)\">{{\"Cancel\" | translate}}</button>\r\n }\r\n </mat-menu>\r\n </div>\r\n}\r\n", styles: [":host{display:flex;flex-flow:wrap;position:relative;z-index:0}.attachment-link.failed{color:red}.attachment-link .deleted{text-decoration:line-through}::ng-deep button .progress{background-color:#696969;position:absolute;height:100%}\n"], dependencies: [{ kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
8893
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: AttachmentsComponent, deps: [{ token: MailboxService }, { token: TranslateService }, { token: SessionService }, { token: i0.ViewContainerRef }, { token: PromptService }, { token: i2$3.Overlay }, { token: i0.Injector }, { token: i7$2.Directionality }], target: i0.ɵɵFactoryTarget.Component }); }
8894
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.0", type: AttachmentsComponent, isStandalone: false, selector: "bizdoc-attachments", inputs: { model: "model", viewedIndicator: "viewedIndicator", includeDeleted: "includeDeleted" }, usesOnChanges: true, ngImport: i0, template: "@for (a of attachments; track a) {\r\n <div>\r\n <button mat-button class=\"attachment-link\" [matMenuTriggerFor]=\"attachment\" [bizdocTooltip]=\"a.time | amDateFormat: 'lll'\"\r\n [progressIndicator]=\"a.progress\">\r\n @if (viewedIndicator && a.viewed) {\r\n <mat-icon>done_all</mat-icon>\r\n }\r\n <!--[bizdocTooltip]=\"a.viewed | amCalendar\"-->\r\n <mat-icon>attachment</mat-icon>&nbsp;\r\n <span [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\">{{a.fileName}}</span>\r\n </button>\r\n <mat-menu #attachment>\r\n @if (!a.failed) {\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n @if (canPreview(a)) {\r\n <button mat-menu-item (click)=\"preview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n }\r\n @if (hasVersion(a)) {\r\n <mat-divider></mat-divider>\r\n @for (v of getVersions(a); track v) {\r\n <button mat-menu-item (click)=\"previewOrDownload(v)\">{{v.time | amCalendar: null : CALENDAR_SPEC}}</button>\r\n }\r\n }\r\n @if (canDelete(a)) {\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n }\r\n }\r\n @if (a.failed) {\r\n <button mat-menu-item (click)=\"cancel(a)\">{{\"Cancel\" | translate}}</button>\r\n }\r\n </mat-menu>\r\n </div>\r\n}\r\n", styles: [":host{display:flex;flex-flow:wrap;position:relative;z-index:0}.attachment-link.failed{color:red}.attachment-link .deleted{text-decoration:line-through}::ng-deep button .progress{background-color:#696969;position:absolute;height:100%}\n"], dependencies: [{ kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
8857
8895
  }
8858
8896
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: AttachmentsComponent, decorators: [{
8859
8897
  type: Component,
8860
- args: [{ standalone: false, selector: 'bizdoc-attachments', template: "@for (a of attachments; track a) {\r\n <div>\r\n <button mat-button class=\"attachment-link\" [matMenuTriggerFor]=\"attachment\" [bizdocTooltip]=\"a.time | amCalendar\"\r\n [progressIndicator]=\"a.progress\">\r\n @if (viewedIndicator && a.viewed) {\r\n <mat-icon>done_all</mat-icon>\r\n }\r\n <!--[bizdocTooltip]=\"a.viewed | amCalendar\"-->\r\n <mat-icon>attachment</mat-icon>&nbsp;\r\n <span [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\">{{a.fileName}}</span>\r\n </button>\r\n <mat-menu #attachment>\r\n @if (!a.failed) {\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n @if (canPreview(a)) {\r\n <button mat-menu-item (click)=\"preview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n }\r\n @if (hasVersion(a)) {\r\n <mat-divider></mat-divider>\r\n @for (v of getVersions(a); track v) {\r\n <button mat-menu-item (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n }\r\n }\r\n @if (canDelete(a)) {\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n }\r\n }\r\n @if (a.failed) {\r\n <button mat-menu-item (click)=\"cancel(a)\">{{\"Cancel\" | translate}}</button>\r\n }\r\n </mat-menu>\r\n </div>\r\n}\r\n", styles: [":host{display:flex;flex-flow:wrap;position:relative;z-index:0}.attachment-link.failed{color:red}.attachment-link .deleted{text-decoration:line-through}::ng-deep button .progress{background-color:#696969;position:absolute;height:100%}\n"] }]
8861
- }], ctorParameters: () => [{ type: MailboxService }, { type: SessionService }, { type: i0.ViewContainerRef }, { type: PromptService }, { type: i2$3.Overlay }, { type: i0.Injector }, { type: i7$2.Directionality }], propDecorators: { model: [{
8898
+ args: [{ standalone: false, selector: 'bizdoc-attachments', template: "@for (a of attachments; track a) {\r\n <div>\r\n <button mat-button class=\"attachment-link\" [matMenuTriggerFor]=\"attachment\" [bizdocTooltip]=\"a.time | amDateFormat: 'lll'\"\r\n [progressIndicator]=\"a.progress\">\r\n @if (viewedIndicator && a.viewed) {\r\n <mat-icon>done_all</mat-icon>\r\n }\r\n <!--[bizdocTooltip]=\"a.viewed | amCalendar\"-->\r\n <mat-icon>attachment</mat-icon>&nbsp;\r\n <span [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\">{{a.fileName}}</span>\r\n </button>\r\n <mat-menu #attachment>\r\n @if (!a.failed) {\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n @if (canPreview(a)) {\r\n <button mat-menu-item (click)=\"preview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n }\r\n @if (hasVersion(a)) {\r\n <mat-divider></mat-divider>\r\n @for (v of getVersions(a); track v) {\r\n <button mat-menu-item (click)=\"previewOrDownload(v)\">{{v.time | amCalendar: null : CALENDAR_SPEC}}</button>\r\n }\r\n }\r\n @if (canDelete(a)) {\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n }\r\n }\r\n @if (a.failed) {\r\n <button mat-menu-item (click)=\"cancel(a)\">{{\"Cancel\" | translate}}</button>\r\n }\r\n </mat-menu>\r\n </div>\r\n}\r\n", styles: [":host{display:flex;flex-flow:wrap;position:relative;z-index:0}.attachment-link.failed{color:red}.attachment-link .deleted{text-decoration:line-through}::ng-deep button .progress{background-color:#696969;position:absolute;height:100%}\n"] }]
8899
+ }], ctorParameters: () => [{ type: MailboxService }, { type: TranslateService }, { type: SessionService }, { type: i0.ViewContainerRef }, { type: PromptService }, { type: i2$3.Overlay }, { type: i0.Injector }, { type: i7$2.Directionality }], propDecorators: { model: [{
8862
8900
  type: Input
8863
8901
  }], viewedIndicator: [{
8864
8902
  type: Input
@@ -9227,6 +9265,12 @@ class BrowseItemsComponent {
9227
9265
  this._config = _config;
9228
9266
  this.onopen = new EventEmitter();
9229
9267
  this.onInsights = new EventEmitter();
9268
+ this.CALENDAR_SPEC = {
9269
+ lastDay: this._translate.get('Yesterday'),
9270
+ lastWeek: 'dddd',
9271
+ sameDay: this._translate.get('Today'),
9272
+ sameElse: 'MMM D, yy'
9273
+ };
9230
9274
  this.sharedActions = [];
9231
9275
  this.dragDisabled = true;
9232
9276
  this.PAGE_SIZE = SIZE;
@@ -9630,7 +9674,7 @@ class BrowseItemsComponent {
9630
9674
  this._destroy.complete();
9631
9675
  }
9632
9676
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: BrowseItemsComponent, deps: [{ token: MailboxService }, { token: AccountService }, { token: CubeService }, { token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: i0.ChangeDetectorRef }, { token: RouterImpl }, { token: HubService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
9633
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.0", type: BrowseItemsComponent, isStandalone: false, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onInsights: "insights" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n@if (dataSource?.data.length === 0) {\r\n <bizdoc-none title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n}\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag hide-xs\" aria-disabled=\"true\">\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n</ng-container>\r\n<!-- Number column -->\r\n<ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.number}} </mat-cell>\r\n</ng-container>\r\n\r\n<!-- Subject column -->\r\n<ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.subject}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @if (item.ownerId) {\r\n <bizdoc-identity-name [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n }\r\n </mat-cell>\r\n</ng-container>\r\n<ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @if (item.senderId) {\r\n <bizdoc-identity-name [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n }\r\n </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.received | amCalendar}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.replied | amCalendar}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.issued | amCalendar}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n</ng-container>\r\n\r\n@if (customColumns) {\r\n @for (c of customColumns; track c) {\r\n <ng-container [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @switch (c.type) {\r\n @case ('Date') {\r\n <span>\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n }\r\n @case ('Decimal') {\r\n <span>\r\n {{item.model[c.name] | number }}\r\n </span>\r\n }\r\n @case ('Boolean') {\r\n <span>\r\n <bizdoc-checkbox [checked]=\"item.model[c.name]\"></bizdoc-checkbox>\r\n </span>\r\n }\r\n @default {\r\n <span>\r\n {{item.model[c.name]}}z\r\n </span>\r\n }\r\n }\r\n </mat-cell>\r\n </ng-container>\r\n }\r\n}\r\n\r\n<!-- Value column -->\r\n<ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n</ng-container>\r\n\r\n<!-- options column -->\r\n<ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.filled]=\"item.flag\">star</mat-icon></button>\r\n @if (enableViews) {\r\n <button mat-icon-button (click)=\"insights(item, $event)\" [bizdocTooltip]=\"'Insights' | translate\" [attr.aria-label]=\"'Insight' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n }\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool hide-xs\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n</ng-container>\r\n<!-- Expanded Content Column -->\r\n<ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n @if (item == expandedElement) {\r\n <bizdoc-expanded-item [model]=\"item\" (sent)=\"onActionTaken($event)\"></bizdoc-expanded-item>\r\n }\r\n </div>\r\n </mat-cell>\r\n</ng-container>\r\n<mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n<mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selected-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n</mat-row>\r\n<mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selected-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-mdc-row .tool{opacity:.05}.mat-mdc-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$8.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i2$8.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i12.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i5$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i6$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7$4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i7$5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: CheckboxComponent, selector: "bizdoc-checkbox", inputs: ["checked", "color", "icon"] }, { kind: "directive", type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "component", type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "component", type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "component", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["model"], outputs: ["sent"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.CurrencyPipe, name: "currency" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [
9677
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.0", type: BrowseItemsComponent, isStandalone: false, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onInsights: "insights" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n@if (dataSource?.data.length === 0) {\r\n <bizdoc-none title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n}\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag hide-xs\" aria-disabled=\"true\">\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n</ng-container>\r\n<!-- Number column -->\r\n<ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.number}} </mat-cell>\r\n</ng-container>\r\n\r\n<!-- Subject column -->\r\n<ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.subject}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @if (item.ownerId) {\r\n <bizdoc-identity-name [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n }\r\n </mat-cell>\r\n</ng-container>\r\n<ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @if (item.senderId) {\r\n <bizdoc-identity-name [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n }\r\n </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.received | amCalendar : null : CALENDAR_SPEC}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" [bizdocTooltip]=\"item.received | amDateFormat: 'lll'\">{{item.received | amTimeAgo}}</mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.replied | amCalendar : null : CALENDAR_SPEC}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.issued | amCalendar : null : CALENDAR_SPEC }} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" [bizdocTooltip]=\"item.issued | amDateFormat: 'lll'\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n</ng-container>\r\n\r\n@if (customColumns) {\r\n @for (c of customColumns; track c) {\r\n <ng-container [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @switch (c.type) {\r\n @case ('Date') {\r\n <span>\r\n {{item.model[c.name] | amCalendar : null : CALENDAR_SPEC}}\r\n </span>\r\n }\r\n @case ('Decimal') {\r\n <span>\r\n {{item.model[c.name] | number }}\r\n </span>\r\n }\r\n @case ('Boolean') {\r\n <span>\r\n <bizdoc-checkbox [checked]=\"item.model[c.name]\"></bizdoc-checkbox>\r\n </span>\r\n }\r\n @default {\r\n <span>\r\n {{item.model[c.name]}}z\r\n </span>\r\n }\r\n }\r\n </mat-cell>\r\n </ng-container>\r\n }\r\n}\r\n\r\n<!-- Value column -->\r\n<ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n</ng-container>\r\n\r\n<!-- options column -->\r\n<ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.filled]=\"item.flag\">star</mat-icon></button>\r\n @if (enableViews) {\r\n <button mat-icon-button (click)=\"insights(item, $event)\" [bizdocTooltip]=\"'Insights' | translate\" [attr.aria-label]=\"'Insight' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n }\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool hide-xs\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n</ng-container>\r\n<!-- Expanded Content Column -->\r\n<ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n @if (item == expandedElement) {\r\n <bizdoc-expanded-item [model]=\"item\" (sent)=\"onActionTaken($event)\"></bizdoc-expanded-item>\r\n }\r\n </div>\r\n </mat-cell>\r\n</ng-container>\r\n<mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n<mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selected-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n</mat-row>\r\n<mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selected-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-mdc-row .tool{opacity:.05}.mat-mdc-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$8.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i2$8.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i12.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i5$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i6$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7$4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i7$5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: CheckboxComponent, selector: "bizdoc-checkbox", inputs: ["checked", "color", "icon"] }, { kind: "directive", type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "component", type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "component", type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "component", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["model"], outputs: ["sent"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.CurrencyPipe, name: "currency" }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [
9634
9678
  listAnimation,
9635
9679
  itemAnimation,
9636
9680
  expandListItemAnimation,
@@ -9644,7 +9688,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImpor
9644
9688
  itemAnimation,
9645
9689
  expandListItemAnimation,
9646
9690
  listItemUpdatedAnimation
9647
- ], template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n@if (dataSource?.data.length === 0) {\r\n <bizdoc-none title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n}\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag hide-xs\" aria-disabled=\"true\">\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n</ng-container>\r\n<!-- Number column -->\r\n<ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.number}} </mat-cell>\r\n</ng-container>\r\n\r\n<!-- Subject column -->\r\n<ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.subject}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @if (item.ownerId) {\r\n <bizdoc-identity-name [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n }\r\n </mat-cell>\r\n</ng-container>\r\n<ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @if (item.senderId) {\r\n <bizdoc-identity-name [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n }\r\n </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.received | amCalendar}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.replied | amCalendar}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.issued | amCalendar}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n</ng-container>\r\n\r\n@if (customColumns) {\r\n @for (c of customColumns; track c) {\r\n <ng-container [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @switch (c.type) {\r\n @case ('Date') {\r\n <span>\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n }\r\n @case ('Decimal') {\r\n <span>\r\n {{item.model[c.name] | number }}\r\n </span>\r\n }\r\n @case ('Boolean') {\r\n <span>\r\n <bizdoc-checkbox [checked]=\"item.model[c.name]\"></bizdoc-checkbox>\r\n </span>\r\n }\r\n @default {\r\n <span>\r\n {{item.model[c.name]}}z\r\n </span>\r\n }\r\n }\r\n </mat-cell>\r\n </ng-container>\r\n }\r\n}\r\n\r\n<!-- Value column -->\r\n<ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n</ng-container>\r\n\r\n<!-- options column -->\r\n<ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.filled]=\"item.flag\">star</mat-icon></button>\r\n @if (enableViews) {\r\n <button mat-icon-button (click)=\"insights(item, $event)\" [bizdocTooltip]=\"'Insights' | translate\" [attr.aria-label]=\"'Insight' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n }\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool hide-xs\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n</ng-container>\r\n<!-- Expanded Content Column -->\r\n<ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n @if (item == expandedElement) {\r\n <bizdoc-expanded-item [model]=\"item\" (sent)=\"onActionTaken($event)\"></bizdoc-expanded-item>\r\n }\r\n </div>\r\n </mat-cell>\r\n</ng-container>\r\n<mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n<mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selected-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n</mat-row>\r\n<mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selected-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-mdc-row .tool{opacity:.05}.mat-mdc-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
9691
+ ], template: "<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n@if (dataSource?.data.length === 0) {\r\n <bizdoc-none title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n}\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag hide-xs\" aria-disabled=\"true\">\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n</ng-container>\r\n<!-- Number column -->\r\n<ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.number}} </mat-cell>\r\n</ng-container>\r\n\r\n<!-- Subject column -->\r\n<ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.subject}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @if (item.ownerId) {\r\n <bizdoc-identity-name [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n }\r\n </mat-cell>\r\n</ng-container>\r\n<ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @if (item.senderId) {\r\n <bizdoc-identity-name [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n }\r\n </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.received | amCalendar : null : CALENDAR_SPEC}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" [bizdocTooltip]=\"item.received | amDateFormat: 'lll'\">{{item.received | amTimeAgo}}</mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.replied | amCalendar : null : CALENDAR_SPEC}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.issued | amCalendar : null : CALENDAR_SPEC }} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" [bizdocTooltip]=\"item.issued | amDateFormat: 'lll'\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n</ng-container>\r\n\r\n<ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n</ng-container>\r\n\r\n@if (customColumns) {\r\n @for (c of customColumns; track c) {\r\n <ng-container [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n @switch (c.type) {\r\n @case ('Date') {\r\n <span>\r\n {{item.model[c.name] | amCalendar : null : CALENDAR_SPEC}}\r\n </span>\r\n }\r\n @case ('Decimal') {\r\n <span>\r\n {{item.model[c.name] | number }}\r\n </span>\r\n }\r\n @case ('Boolean') {\r\n <span>\r\n <bizdoc-checkbox [checked]=\"item.model[c.name]\"></bizdoc-checkbox>\r\n </span>\r\n }\r\n @default {\r\n <span>\r\n {{item.model[c.name]}}z\r\n </span>\r\n }\r\n }\r\n </mat-cell>\r\n </ng-container>\r\n }\r\n}\r\n\r\n<!-- Value column -->\r\n<ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n</ng-container>\r\n\r\n<!-- options column -->\r\n<ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.filled]=\"item.flag\">star</mat-icon></button>\r\n @if (enableViews) {\r\n <button mat-icon-button (click)=\"insights(item, $event)\" [bizdocTooltip]=\"'Insights' | translate\" [attr.aria-label]=\"'Insight' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n }\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool hide-xs\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n</ng-container>\r\n<!-- Expanded Content Column -->\r\n<ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n @if (item == expandedElement) {\r\n <bizdoc-expanded-item [model]=\"item\" (sent)=\"onActionTaken($event)\"></bizdoc-expanded-item>\r\n }\r\n </div>\r\n </mat-cell>\r\n</ng-container>\r\n<mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n<mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selected-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n</mat-row>\r\n<mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selected-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-mdc-row .tool{opacity:.05}.mat-mdc-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
9648
9692
  }], ctorParameters: () => [{ type: MailboxService }, { type: AccountService }, { type: CubeService }, { type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: i0.ChangeDetectorRef }, { type: RouterImpl }, { type: HubService }, { type: undefined, decorators: [{
9649
9693
  type: Inject,
9650
9694
  args: [BIZDOC_CONFIG]
@@ -11803,8 +11847,6 @@ class CubePivotComponent {
11803
11847
  this.explore.emit({ axes });
11804
11848
  }
11805
11849
  async exportToExcel(title) {
11806
- if (this.currencyCode && this.currencyCode !== DEFAULT_CURRENCY)
11807
- await this._translate.cldr(this._session.language, CLDR_FILES);
11808
11850
  if (this.chartType)
11809
11851
  this._exportExcel(title);
11810
11852
  else
@@ -13892,24 +13934,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImpor
13892
13934
  type: Output
13893
13935
  }] } });
13894
13936
 
13895
- class DateFormatPipe {
13896
- transform(value, ...args) {
13897
- return dayjs(value).format(args[0]);
13898
- }
13899
- constructor() {
13900
- dayjs.extend(localizedFormat);
13901
- }
13902
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: DateFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
13903
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.0", ngImport: i0, type: DateFormatPipe, isStandalone: false, name: "amDateFormat" }); }
13904
- }
13905
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImport: i0, type: DateFormatPipe, decorators: [{
13906
- type: Pipe,
13907
- args: [{
13908
- standalone: false,
13909
- name: 'amDateFormat'
13910
- }]
13911
- }], ctorParameters: () => [] });
13912
-
13913
13937
  const PAGE_SIZE$2 = 14;
13914
13938
  /** drill-down component*/
13915
13939
  class ExploreItemsComponent {
@@ -21731,7 +21755,7 @@ class BizDocApp {
21731
21755
  const doc = document.getElementsByTagName('html')[0], body = doc.getElementsByTagName('body')[0];
21732
21756
  doc.lang = _session.language;
21733
21757
  if (_session.inverse) {
21734
- document.dir = doc.dir = body.dir = 'rtl';
21758
+ document.dir = doc.dir = body.dir = _session.direction;
21735
21759
  enableRtl();
21736
21760
  }
21737
21761
  this._session.refresh().subscribe(this._initialize.bind(this));
@@ -21746,7 +21770,8 @@ class BizDocApp {
21746
21770
  this._refresh.next();
21747
21771
  });
21748
21772
  //window.addEventListener('offline', () => this._online = false);
21749
- window.addEventListener('online', () => this._refresh.next());
21773
+ // window.addEventListener('online', () =>
21774
+ // this._refresh.next());
21750
21775
  }
21751
21776
  ngOnInit() {
21752
21777
  const meta = document.querySelector('meta[name=theme-color]');
@@ -31450,12 +31475,12 @@ class SharedModule {
31450
31475
  AccountService, ChatService, ChatInfo,
31451
31476
  GuideService,
31452
31477
  BizDocComponentFactoryResolver, PromptService, TranslateService,
31453
- provideHttpClient(withInterceptorsFromDi()),
31478
+ provideHttpClient(withInterceptorsFromDi(), withFetch()),
31454
31479
  //{ provide: LOCALE_ID, useClass: SessionService.getLocale() },
31455
31480
  { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { appearance: 'outline' } },
31456
31481
  { provide: HTTP_INTERCEPTORS, useClass: AppHttpInterceptor, multi: true },
31457
- provideAppInitializer(async () => TranslateProviderFactory(inject(TranslateService))),
31458
- provideAppInitializer(async () => SessionProviderFactory(inject(SessionService))),
31482
+ provideAppInitializer(() => inject(TranslateService).cldr()),
31483
+ provideAppInitializer(() => inject(SessionService).prepare()),
31459
31484
  ], imports: [
31460
31485
  //SpContainer,
31461
31486
  DayJsModule,
@@ -31594,12 +31619,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.0", ngImpor
31594
31619
  AccountService, ChatService, ChatInfo,
31595
31620
  GuideService,
31596
31621
  BizDocComponentFactoryResolver, PromptService, TranslateService,
31597
- provideHttpClient(withInterceptorsFromDi()),
31622
+ provideHttpClient(withInterceptorsFromDi(), withFetch()),
31598
31623
  //{ provide: LOCALE_ID, useClass: SessionService.getLocale() },
31599
31624
  { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { appearance: 'outline' } },
31600
31625
  { provide: HTTP_INTERCEPTORS, useClass: AppHttpInterceptor, multi: true },
31601
- provideAppInitializer(async () => TranslateProviderFactory(inject(TranslateService))),
31602
- provideAppInitializer(async () => SessionProviderFactory(inject(SessionService))),
31626
+ provideAppInitializer(() => inject(TranslateService).cldr()),
31627
+ provideAppInitializer(() => inject(SessionService).prepare()),
31603
31628
  ],
31604
31629
  exports: [
31605
31630
  OptionsComponent, //SpContainer,