@bizdoc/core 3.6.3 → 3.6.5

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, 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, Observable, firstValueFrom, forkJoin, BehaviorSubject, merge, takeUntil as takeUntil$1, shareReplay as shareReplay$1, map as map$1, of, 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 } from 'rxjs/operators';
3
+ import { Subject, from, of, firstValueFrom, forkJoin, BehaviorSubject, merge, takeUntil as takeUntil$1, shareReplay as shareReplay$1, map as map$1, Observable, filter as filter$1, 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, switchMap, shareReplay, filter, startWith, takeUntil, debounceTime, catchError, 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';
@@ -1146,12 +1146,6 @@ class SessionService {
1146
1146
  this.profile.options.notificationsView !== undefined &&
1147
1147
  this.profile.options.notificationsView < date;
1148
1148
  }
1149
- _constructpalette(color) {
1150
- const palette = MATERIAL_PALETTES[color];
1151
- return [palette['100'], palette['300'], palette['500'], palette['700'], palette['900'],
1152
- palette['200'], palette['400'], palette['600'], palette['800'], palette['hex'],
1153
- palette['a100'], palette['a400'], palette['a200'], palette['a700']];
1154
- }
1155
1149
  get primeryPalette() {
1156
1150
  return this._primarypalette;
1157
1151
  }
@@ -1205,10 +1199,10 @@ class SessionService {
1205
1199
  return this.profile.system;
1206
1200
  }
1207
1201
  /** online or set in profile */
1208
- get state() {
1202
+ get availabilityState() {
1209
1203
  return this.profile.available || 'Online';
1210
1204
  }
1211
- set state(value) {
1205
+ set availabilityState(value) {
1212
1206
  this.profile.available = value === 'Online' ? null : value;
1213
1207
  this._http.put(`/api/account/available?mode=${this.profile.available || ''}`, {}).subscribe();
1214
1208
  }
@@ -1224,17 +1218,17 @@ class SessionService {
1224
1218
  if (options && options.active) {
1225
1219
  const today = dayjs().startOf('day');
1226
1220
  return (!options.from || dayjs(options.from).startOf('day') <= today)
1227
- && (!options.to || dayjs(options.to).startOf('day') >= today);
1221
+ && (!options.to || dayjs(options.to).startOf('day') > today);
1228
1222
  }
1229
1223
  else
1230
1224
  return false;
1231
1225
  }
1232
1226
  /** update profile */
1233
- update(profile) {
1227
+ updateProfile(profile) {
1234
1228
  return this._http.put('/api/account/update', profile).pipe(tap(() => Object.assign(this._profile.options, profile)));
1235
1229
  }
1236
1230
  /** mark guide as visited in profile */
1237
- guide(name) {
1231
+ markGuideAsRead(name) {
1238
1232
  return this._http.put(`/api/account/guide/${encodeURIComponent(name)}`, {}, { headers: { 'no-progress': 'true' } }).pipe(tap(() => {
1239
1233
  const guide = this._profile.guides.find(g => g.name === name);
1240
1234
  if (guide)
@@ -1244,25 +1238,14 @@ class SessionService {
1244
1238
  }
1245
1239
  /** get profile */
1246
1240
  refresh() {
1247
- return new Observable(observe => {
1248
- const complete = (profile) => {
1249
- this._profile = profile;
1250
- observe.next();
1251
- this._loaded.next();
1252
- };
1253
- this._http.get('/api/account/refresh').subscribe({
1254
- next: r => {
1255
- if (!this._profile) // 1st time
1256
- this._changeTheme(this.theme).
1257
- then(() => complete(r));
1258
- else
1259
- complete(r);
1260
- this._hub.state !== HubConnectionState.Connected && this._hub.start();
1261
- this._firebase.state !== FirebaseState.Activated &&
1262
- this._firebase.activate();
1263
- }, error: observe.error.bind(this)
1264
- });
1265
- });
1241
+ const ok = this.ok;
1242
+ return this._http.get('/api/account/refresh').pipe(tap(profile => {
1243
+ this._profile = profile;
1244
+ this._hub.state !== HubConnectionState.Connected && this._hub.start();
1245
+ this._firebase.state !== FirebaseState.Activated &&
1246
+ this._firebase.activate();
1247
+ }), switchMap(() => !ok ? // 1st time
1248
+ from(this._changeTheme(this.theme)) : of(undefined)), tap(this._loaded.next.bind(this)));
1266
1249
  }
1267
1250
  getProfileExtra(name) {
1268
1251
  return this._http.get(`/api/account/extra/${name}`);
@@ -1294,18 +1277,24 @@ class SessionService {
1294
1277
  userId
1295
1278
  });
1296
1279
  }
1297
- inboxTouch() {
1280
+ markInboxAsTouched() {
1298
1281
  return firstValueFrom(this._http.put('/api/account/inboxview', {}, { headers: { 'no-progress': 'true' } }).pipe(tap(e => {
1299
1282
  this.profile.inboxCount = 0;
1300
1283
  this.profile.options.inboxView = e.time;
1301
1284
  })));
1302
1285
  }
1303
- notificationsTouch() {
1286
+ markNotificationsAsTouched() {
1304
1287
  return firstValueFrom(this._http.put('/api/account/notificationsView', {}, { headers: { 'no-progress': 'true' } }).pipe(tap(e => {
1305
1288
  this.profile.messagesCount = 0;
1306
1289
  this.profile.options.notificationsView = e.time;
1307
1290
  })));
1308
1291
  }
1292
+ _constructPalette(color) {
1293
+ const palette = MATERIAL_PALETTES[color];
1294
+ return [palette['100'], palette['300'], palette['500'], palette['700'], palette['900'],
1295
+ palette['200'], palette['400'], palette['600'], palette['800'], palette['hex'],
1296
+ palette['a100'], palette['a400'], palette['a200'], palette['a700']];
1297
+ }
1309
1298
  _getBrowserLang() {
1310
1299
  let lang = navigator.language;
1311
1300
  if (this.languages.indexOf(lang) > -1)
@@ -1331,8 +1320,8 @@ class SessionService {
1331
1320
  */
1332
1321
  _changeTheme(theme) {
1333
1322
  return new Promise((resolve) => {
1334
- this._accentpalette = this._constructpalette(this.theme.accent);
1335
- this._primarypalette = this._constructpalette(this.theme.primary);
1323
+ this._accentpalette = this._constructPalette(this.theme.accent);
1324
+ this._primarypalette = this._constructPalette(this.theme.primary);
1336
1325
  let style = document.getElementById('bizdoc-theme');
1337
1326
  // remove
1338
1327
  if (style)
@@ -1833,10 +1822,10 @@ const STRINGS = {
1833
1822
  Commented: '{0} commented',
1834
1823
  DeleteFile: 'Delete Attachment',
1835
1824
  DeleteFileAsk: 'Are you sure you want to delete this attachment?',
1836
- DeleteCommentAsk: 'Are you sure you want to delete this comment?',
1825
+ //DeleteCommentAsk: 'Are you sure you want to delete this comment?',
1837
1826
  GrantAccess: 'Grant Access',
1838
- GrantTip: 'May view and take actions on your behalf.',
1839
- OutOfOfficeTip: 'Redirect mail to another user on your absence.',
1827
+ GrantTip: 'View and take actions on your behalf.',
1828
+ OutOfOfficeTip: 'Redirect mail on your absence.',
1840
1829
  Timeline: 'Timeline',
1841
1830
  Theme: 'Theme',
1842
1831
  Back: 'Back',
@@ -1997,7 +1986,7 @@ const STRINGS = {
1997
1986
  To: 'To',
1998
1987
  Duration: 'Duration',
1999
1988
  Deviation: 'Deviation',
2000
- DurationTime: 'within {0} duration',
1989
+ DurationTime: 'In {0}',
2001
1990
  Standard: 'Standard',
2002
1991
  StandardValue: 'Standard: {0}',
2003
1992
  Average: 'Average',
@@ -2382,9 +2371,9 @@ const STRINGS = {
2382
2371
  DeleteFileMale: 'מחק צרופה',
2383
2372
  DeleteFileFemale: 'מחקי צרופה',
2384
2373
  DeleteFileAsk: 'האם את/ה בטוח/ה שברצונך למחוק את הצרופה?',
2385
- DeleteCommentAsk: 'האם את/ה בטוח/ה שברצונך למחוק את הערה?',
2386
- DeleteCommentAskMale: 'האם אתה בטוח שברצונך למחוק את הערה?',
2387
- DeleteCommentAskFemale: 'האם את בטוחה שברצונך למחוק את הערה?',
2374
+ //DeleteCommentAsk: 'האם את/ה בטוח/ה שברצונך למחוק את הערה?',
2375
+ //DeleteCommentAskMale: 'האם אתה בטוח שברצונך למחוק את הערה?',
2376
+ //DeleteCommentAskFemale: 'האם את בטוחה שברצונך למחוק את הערה?',
2388
2377
  DeleteFileAskMale: 'האם אתה בטוח שברצונך למחוק את הצרופה?',
2389
2378
  DeleteFileAskFemale: 'האם את בטוחה שברצונך למחוק את הצרופה?',
2390
2379
  GrantAccess: 'הרשאות',
@@ -3286,7 +3275,7 @@ class GuideService {
3286
3275
  oRef.attach(portal);
3287
3276
  oRef.backdropClick().subscribe(() => oRef.detach());
3288
3277
  const gRef = new GuideRef(guide, oRef);
3289
- !this.seen(guide.name) && this._session.guide(guide.name).subscribe();
3278
+ !this.seen(guide.name) && this._session.markGuideAsRead(guide.name).subscribe();
3290
3279
  return gRef;
3291
3280
  }
3292
3281
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GuideService, deps: [{ token: i2$3.Overlay }, { token: i0.Injector }, { token: SessionService }, { token: TranslateService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -3711,7 +3700,7 @@ class OptionsComponent {
3711
3700
  }
3712
3701
  this.languages = this._session.languages;
3713
3702
  this.currentLanguage = this._session.language;
3714
- this.available = this._session.state;
3703
+ this.available = this._session.availabilityState;
3715
3704
  this.theme = this._session.theme.name;
3716
3705
  this.profile = this._session.profile;
3717
3706
  this.voting = !config.comments || config.comments.voting !== false;
@@ -3735,7 +3724,7 @@ class OptionsComponent {
3735
3724
  }
3736
3725
  setAvailable(val) {
3737
3726
  this.close();
3738
- this._session.state = val;
3727
+ this._session.availabilityState = val;
3739
3728
  }
3740
3729
  changeTheme(name) {
3741
3730
  this._session.theme = name;
@@ -3819,7 +3808,7 @@ class OptionsComponent {
3819
3808
  }
3820
3809
  save() {
3821
3810
  this.saveing = true;
3822
- this._session.update(this.form.getRawValue()).subscribe({
3811
+ this._session.updateProfile(this.form.getRawValue()).subscribe({
3823
3812
  next: () => this.form.markAsPristine(),
3824
3813
  error: () => this._sb.error(),
3825
3814
  complete: () => this.saveing = false
@@ -3886,11 +3875,11 @@ class OptionsComponent {
3886
3875
  this._destroy.complete();
3887
3876
  }
3888
3877
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: OptionsComponent, deps: [{ token: PromptService }, { token: GuideService }, { token: HubService }, { token: i2$2.MatDialog }, { token: i1$2.FormBuilder }, { token: AccountService }, { token: PromptService }, { token: SessionService }, { token: Popup }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
3889
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: OptionsComponent, isStandalone: false, selector: "bizdoc-options", inputs: { sectionName: ["section", "sectionName"] }, host: { listeners: { "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "keyboard", first: true, predicate: ["keyboardTmpl"], descendants: true }, { propertyName: "substitueInput", first: true, predicate: ["substitueInput"], descendants: true, read: MatInput }, { propertyName: "grantInput", first: true, predicate: ["grantInput"], descendants: true, read: MatChipInput }, { propertyName: "oooTmpl", first: true, predicate: ["oooTmpl"], descendants: true, static: true }, { propertyName: "notificationsTmpl", first: true, predicate: ["notificationsTmpl"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"column\">\r\n <div class=\"profile-name\">\r\n <span class=\"mat-headline-6\">\r\n @if (profile.byName) {\r\n {{profile.byName}} \\\r\n }\r\n {{profile.name}}\r\n </span>\r\n </div>\r\n\r\n <mat-divider />\r\n\r\n <div class=\"row\">\r\n <mat-nav-list class=\"nav-list\">\r\n <mat-list-item (click)=\"nav('notifications', notificationsTmpl, 0)\" [class.active]=\"sectionName === 'notifications'\">\r\n <span matListItemTitle>{{'Notifications' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('emails', emailsTmpl, 1)\" [class.active]=\"sectionName === 'emails'\">\r\n <span matListItemTitle>{{'Emails' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('out_of_office', oooTmpl, 2)\" [class.active]=\"sectionName === 'out_of_office'\">\r\n <span matListItemTitle>{{'OutOfOffice' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('grant_access', grantAccessTmpl, 3)\" [class.active]=\"sectionName === 'grant_access'\">\r\n <span matListItemTitle>{{'GrantAccess' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('preferences', preferencesTmpl, 4)\" [class.active]=\"sectionName === 'preferences'\">\r\n <span matListItemTitle>{{'Preferences' | translate}}</span>\r\n </mat-list-item>\r\n </mat-nav-list>\r\n <div class=\"separator\"></div>\r\n <form autocomplete=\"off\" [@v-swape]=\"sectionIndex\">\r\n <ng-container *ngTemplateOutlet=\"sectionTmpl\"></ng-container>\r\n </form>\r\n </div>\r\n <mat-divider />\r\n <!--themes-->\r\n @if (themes.length > 1) {\r\n <div class=\"row center\">\r\n @for (t of themes; track t) {\r\n <button (click)=\"changeTheme(t)\" mat-icon-button class=\"theme\" [style.background]=\"t.color\" [class.active]=\"t.name === theme\" [class.dark]=\"t.dark\" [bizdocTooltip]=\"'Theme'|translate\"></button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n<!--guide-->\r\n<mat-nav-list role=\"list\">\r\n <mat-divider></mat-divider>\r\n <h3 mat-subheader [matBadge]=\"guidesCount\" matBadgeColor=\"accent\" matBadgeOverlap=\"false\" matBadgeSize=\"small\">{{'Help'|translate}}</h3>\r\n @for (g of guides; track g) {\r\n <button mat-menu-item (click)=\"guide(g.name)\">{{g.title}}</button>\r\n }\r\n</mat-nav-list>\r\n<mat-divider></mat-divider>\r\n<!--footer-->\r\n<div class=\"row footer\">\r\n <!--keys-->\r\n @if(!isMobile) {\r\n <button mat-button role=\"listitem\" (click)=\"showKeyboard($event)\">\r\n {{'Keyboard' | translate}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n <!--'ChangeLanguage'-->\r\n </button>\r\n }\r\n <button mat-button role=\"listitem\" [matMenuTriggerFor]=\"language\">\r\n {{currentLanguage | translate}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n <!--'ChangeLanguage'-->\r\n </button>\r\n <mat-menu #language>\r\n @for (l of languages; track l) {\r\n <button mat-menu-item (click)=\"changeLanguage(l)\">{{l | translate}}</button>\r\n }\r\n </mat-menu>\r\n @if (online) {\r\n <button mat-button [matMenuTriggerFor]=\"availability\">\r\n {{'ShowAs' | translate : (available | translate | lowercase)}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #availability>\r\n @for (m of modes; track m) {\r\n <button mat-menu-item (click)=\"setAvailable(m)\">{{m | translate}}</button>\r\n }\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n <button mat-button role=\"listitem\" (click)=\"about()\">{{ 'About' | translate}}</button>\r\n @if (!online) {\r\n <button mat-icon-button (click)=\"revive()\" [bizdocTooltip]=\"'Connect'|translate\">\r\n <mat-icon>wifi_off</mat-icon>\r\n </button>\r\n }\r\n</div>\r\n<!--preferences-->\r\n<ng-template #preferencesTmpl>\r\n <div class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Tags'|translate}}</mat-label>\r\n <mat-chip-grid #chips>\r\n @for (tag of form.value.tags; track tag.name) {\r\n <mat-chip-row [removable]=\"true\" (removed)=\"removeTag(tag)\">\r\n {{tag.name}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n<!---->\r\n<ng-template #keyboardTmpl>\r\n <dl class=\"keys mat-body-2\">\r\n <dt>Alt+n</dt>\r\n <dd>{{'AltNHelp'|translate}}</dd>\r\n <dt>Ctrl+s</dt>\r\n <dd>{{'CtrlSHelp'|translate}}</dd>\r\n <dt>Alt+s</dt>\r\n <dd>{{'AltSHelp'|translate}}</dd>\r\n <dt>Alt+q</dt>\r\n <dd>{{'AltQHelp'|translate}}</dd>\r\n <dt>Alt+a</dt>\r\n <dd>{{'AltAHelp'|translate}}</dd>\r\n <dt>Alt+h</dt>\r\n <dd>{{'AltHHelp'|translate}}</dd>\r\n <dt>Ctrl+.</dt>\r\n <dd>{{'CtrlDotHelp'|translate}}</dd>\r\n </dl>\r\n</ng-template>\r\n<!--notifications-->\r\n<ng-template #notificationsTmpl>\r\n <div [formGroup]=\"form.controls.notifications\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-checkbox formControlName=\"myDocumentStateChange\">{{'MyStateChange' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"anyDocumentStateChange\">{{'AnyStateChange' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"commentMyDocument\">{{'CommentMyDocument' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"commentAnyDocument\">{{'CommentAnyDocument' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"likes\" [style.display]=\"voting?'':'none'\">{{'LikedComment' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"tagged\">{{'TaggedInComments' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"upcomingEvents\">{{'UpcomingEvents' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"cubeAnomaly\">{{'CubeAnomaly' | translate}}</mat-checkbox>\r\n <div formGroupName=\"extra\" class=\"column\"> \r\n @for(n of profile.notifications; track n.name) {\r\n <mat-checkbox [formControlName]=\"n.name\">{{n.title}}</mat-checkbox>\r\n }\r\n </div>\r\n <div class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button type=\"button\" (click)=\"toggleSound()\" [disabled]=\"!form.value.notifications.active\" [bizdocTooltip]=\"(form.value.notifications.sound ? 'SoundOn': 'SoundOff')|translate\"><mat-icon>{{form.value.notifications.sound ? 'volume_up' : 'volume_off'}}</mat-icon></button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<!--emails-->\r\n<ng-template #emailsTmpl>\r\n <div [formGroup]=\"form.controls.emails\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-checkbox formControlName=\"mail\">{{'Mails' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"chat\">{{'Conversations' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"notifications\">{{'EmailNotifications' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"events\">{{'AlarmEvents' | translate}}</mat-checkbox>\r\n </div>\r\n</ng-template>\r\n<!--ooo-->\r\n<ng-template #oooTmpl>\r\n <div [formGroup]=\"form.controls.outOfOffice\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"oooId\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"form.value.outOfOffice.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"oooSelected($event)\">\r\n @for (u of susers$ | async; track u.id) {\r\n <mat-option [value]=\"u\">\r\n {{u.name}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <mat-hint>{{'OutOfOfficeTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Dates'|translate}}</mat-label>\r\n <mat-date-range-input [rangePicker]=\"oooDates\">\r\n <input matStartDate formControlName=\"from\" [placeholder]=\"'From'|translate\" [min]=\"today\">\r\n <input matEndDate formControlName=\"to\" [placeholder]=\"'To'|translate\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"oooDates\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #oooDates [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n<!--grantAccess-->\r\n<ng-template #grantAccessTmpl>\r\n <div [formGroup]=\"form.controls.grantAccess\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field>\r\n <mat-label>{{'Associates'| translate}}</mat-label>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!form.value.grantAccess.active\">\r\n @for (u of form.value.grantAccess.users || []; track u.id) {\r\n <mat-chip-row (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [formControl]=\"grantUserIds\"\r\n #grantInput\r\n [matAutocomplete]=\"grantAuto\"\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n @for (u of gusers$ | async; track u.id) {\r\n <mat-option [value]=\"u.id\">\r\n {{u.name}}\r\n @if (u.email) {\r\n <span>&nbsp; - {{u.email}}</span>\r\n }\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <mat-hint>{{'GrantTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{max-width:80vw;min-width:420px}.footer{align-items:center}.profile-name{margin:8px}.theme{height:22px!important;width:22px!important;-moz-border-radius:13px 13px!important;-webkit-border-radius:13px 13px!important;border-radius:13px!important;margin:4px!important}.theme.active.dark{border:2px solid #f4f4f4}.keys{padding:8px}.keys dt{width:72px;float:inline-start;clear:both;font-variant-caps:all-small-caps}.keys dd{float:inline-end;font-size:small;margin:0}.separator{height:280px;width:1px;background-color:var(--mat-sys-outline)}form{padding:20px 8px 0;min-width:320px}\n"], dependencies: [{ kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { 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: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i4.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$4.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$4.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: i7$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i2$5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$5.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i2$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i2$6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { 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: 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: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { 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: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: UserNamePipe, name: "userName" }], animations: [verticalSwapAnimation] }); }
3878
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: OptionsComponent, isStandalone: false, selector: "bizdoc-options", inputs: { sectionName: ["section", "sectionName"] }, host: { listeners: { "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "keyboard", first: true, predicate: ["keyboardTmpl"], descendants: true }, { propertyName: "substitueInput", first: true, predicate: ["substitueInput"], descendants: true, read: MatInput }, { propertyName: "grantInput", first: true, predicate: ["grantInput"], descendants: true, read: MatChipInput }, { propertyName: "oooTmpl", first: true, predicate: ["oooTmpl"], descendants: true, static: true }, { propertyName: "notificationsTmpl", first: true, predicate: ["notificationsTmpl"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"column\">\r\n <div class=\"profile-name\">\r\n <span class=\"mat-headline-6\">\r\n @if (profile.byName) {\r\n {{profile.byName}} \\\r\n }\r\n {{profile.name}}\r\n </span>\r\n </div>\r\n\r\n <mat-divider />\r\n\r\n <div class=\"row\">\r\n <mat-nav-list class=\"nav-list\">\r\n <mat-list-item (click)=\"nav('notifications', notificationsTmpl, 0)\" [class.active]=\"sectionName === 'notifications'\">\r\n <span matListItemTitle>{{'Notifications' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('emails', emailsTmpl, 1)\" [class.active]=\"sectionName === 'emails'\">\r\n <span matListItemTitle>{{'Emails' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('out_of_office', oooTmpl, 2)\" [class.active]=\"sectionName === 'out_of_office'\">\r\n <span matListItemTitle>{{'OutOfOffice' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('grant_access', grantAccessTmpl, 3)\" [class.active]=\"sectionName === 'grant_access'\">\r\n <span matListItemTitle>{{'GrantAccess' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('preferences', preferencesTmpl, 4)\" [class.active]=\"sectionName === 'preferences'\">\r\n <span matListItemTitle>{{'Preferences' | translate}}</span>\r\n </mat-list-item>\r\n </mat-nav-list>\r\n <div class=\"separator\"></div>\r\n <form autocomplete=\"off\" [@v-swape]=\"sectionIndex\">\r\n <ng-container *ngTemplateOutlet=\"sectionTmpl\"></ng-container>\r\n </form>\r\n </div>\r\n <mat-divider />\r\n <!--themes-->\r\n @if (themes.length > 1) {\r\n <div class=\"row center\">\r\n @for (t of themes; track t) {\r\n <button (click)=\"changeTheme(t)\" mat-icon-button class=\"theme\" [style.background]=\"t.color\" [class.active]=\"t.name === theme\" [class.dark]=\"t.dark\" [bizdocTooltip]=\"'Theme'|translate\"></button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n<!--guide-->\r\n<mat-nav-list role=\"list\">\r\n <mat-divider></mat-divider>\r\n <h3 mat-subheader [matBadge]=\"guidesCount\" matBadgeColor=\"accent\" matBadgeOverlap=\"false\" matBadgeSize=\"small\">{{'Help'|translate}}</h3>\r\n @for (g of guides; track g) {\r\n <button mat-menu-item (click)=\"guide(g.name)\">{{g.title}}</button>\r\n }\r\n</mat-nav-list>\r\n<mat-divider></mat-divider>\r\n<!--footer-->\r\n<div class=\"row footer\">\r\n <button mat-button role=\"listitem\" [matMenuTriggerFor]=\"language\">\r\n {{currentLanguage | translate}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n <!--'ChangeLanguage'-->\r\n </button>\r\n <mat-menu #language>\r\n @for (l of languages; track l) {\r\n <button mat-menu-item (click)=\"changeLanguage(l)\">{{l | translate}}</button>\r\n }\r\n </mat-menu>\r\n @if (online) {\r\n <button mat-button [matMenuTriggerFor]=\"availability\">\r\n {{'ShowAs' | translate : (available | translate | lowercase)}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #availability>\r\n @for (m of modes; track m) {\r\n <button mat-menu-item (click)=\"setAvailable(m)\">{{m | translate}}</button>\r\n }\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n <!--keys-->\r\n @if(!isMobile) {\r\n <button mat-button role=\"listitem\" (click)=\"showKeyboard($event)\">\r\n {{'Keyboard' | translate}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n <!--'ChangeLanguage'-->\r\n </button>\r\n }\r\n <button mat-button role=\"listitem\" (click)=\"about()\">{{ 'About' | translate}}</button>\r\n @if (!online) {\r\n <button mat-icon-button (click)=\"revive()\" [bizdocTooltip]=\"'Connect'|translate\">\r\n <mat-icon>wifi_off</mat-icon>\r\n </button>\r\n }\r\n</div>\r\n<!--preferences-->\r\n<ng-template #preferencesTmpl>\r\n <div class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Tags'|translate}}</mat-label>\r\n <mat-chip-grid #chips>\r\n @for (tag of form.value.tags; track tag.name) {\r\n <mat-chip-row [removable]=\"true\" (removed)=\"removeTag(tag)\">\r\n {{tag.name}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n<!---->\r\n<ng-template #keyboardTmpl>\r\n <dl class=\"keys mat-body-2\">\r\n <dt>Alt+n</dt>\r\n <dd>{{'AltNHelp'|translate}}</dd>\r\n <dt>Ctrl+s</dt>\r\n <dd>{{'CtrlSHelp'|translate}}</dd>\r\n <dt>Alt+s</dt>\r\n <dd>{{'AltSHelp'|translate}}</dd>\r\n <dt>Alt+q</dt>\r\n <dd>{{'AltQHelp'|translate}}</dd>\r\n <dt>Alt+a</dt>\r\n <dd>{{'AltAHelp'|translate}}</dd>\r\n <dt>Alt+h</dt>\r\n <dd>{{'AltHHelp'|translate}}</dd>\r\n <dt>Ctrl+.</dt>\r\n <dd>{{'CtrlDotHelp'|translate}}</dd>\r\n </dl>\r\n</ng-template>\r\n<!--notifications-->\r\n<ng-template #notificationsTmpl>\r\n <div [formGroup]=\"form.controls.notifications\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-checkbox formControlName=\"myDocumentStateChange\">{{'MyStateChange' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"anyDocumentStateChange\">{{'AnyStateChange' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"commentMyDocument\">{{'CommentMyDocument' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"commentAnyDocument\">{{'CommentAnyDocument' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"likes\" [style.display]=\"voting?'':'none'\">{{'LikedComment' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"tagged\">{{'TaggedInComments' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"upcomingEvents\">{{'UpcomingEvents' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"cubeAnomaly\">{{'CubeAnomaly' | translate}}</mat-checkbox>\r\n <div formGroupName=\"extra\" class=\"column\"> \r\n @for(n of profile.notifications; track n.name) {\r\n <mat-checkbox [formControlName]=\"n.name\">{{n.title}}</mat-checkbox>\r\n }\r\n </div>\r\n <div class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button type=\"button\" (click)=\"toggleSound()\" [disabled]=\"!form.value.notifications.active\" [bizdocTooltip]=\"(form.value.notifications.sound ? 'SoundOn': 'SoundOff')|translate\"><mat-icon>{{form.value.notifications.sound ? 'volume_up' : 'volume_off'}}</mat-icon></button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<!--emails-->\r\n<ng-template #emailsTmpl>\r\n <div [formGroup]=\"form.controls.emails\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-checkbox formControlName=\"mail\">{{'Mails' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"chat\">{{'Conversations' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"notifications\">{{'EmailNotifications' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"events\">{{'AlarmEvents' | translate}}</mat-checkbox>\r\n </div>\r\n</ng-template>\r\n<!--ooo-->\r\n<ng-template #oooTmpl>\r\n <div [formGroup]=\"form.controls.outOfOffice\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"oooId\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"form.value.outOfOffice.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"oooSelected($event)\">\r\n @for (u of susers$ | async; track u.id) {\r\n <mat-option [value]=\"u\">\r\n {{u.name}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <mat-hint>{{'OutOfOfficeTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Dates'|translate}}</mat-label>\r\n <mat-date-range-input [rangePicker]=\"oooDates\">\r\n <input matStartDate formControlName=\"from\" [placeholder]=\"'From'|translate\" [min]=\"today\">\r\n <input matEndDate formControlName=\"to\" [placeholder]=\"'To'|translate\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"oooDates\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #oooDates [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n<!--grantAccess-->\r\n<ng-template #grantAccessTmpl>\r\n <div [formGroup]=\"form.controls.grantAccess\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field>\r\n <mat-label>{{'Associates'| translate}}</mat-label>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!form.value.grantAccess.active\">\r\n @for (u of form.value.grantAccess.users || []; track u.id) {\r\n <mat-chip-row (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [formControl]=\"grantUserIds\"\r\n #grantInput\r\n [matAutocomplete]=\"grantAuto\"\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n @for (u of gusers$ | async; track u.id) {\r\n <mat-option [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <mat-hint>{{'GrantTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{max-width:80vw;min-width:420px}.footer{align-items:center}.profile-name{margin:8px}.theme{height:22px!important;width:22px!important;-moz-border-radius:13px 13px!important;-webkit-border-radius:13px 13px!important;border-radius:13px!important;margin:4px!important}.theme.active.dark{border:2px solid #f4f4f4}.keys{padding:8px}.keys dt{width:72px;float:inline-start;clear:both;font-variant-caps:all-small-caps}.keys dd{float:inline-end;font-size:small;margin:0}.separator{height:280px;width:1px;background-color:var(--mat-sys-outline)}form{padding:20px 8px 0;min-width:320px}\n"], dependencies: [{ kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { 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: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i4.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$4.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$4.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: i7$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i2$5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$5.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i2$5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i2$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i2$6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { 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: 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: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { 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: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: UserNamePipe, name: "userName" }], animations: [verticalSwapAnimation] }); }
3890
3879
  }
3891
3880
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: OptionsComponent, decorators: [{
3892
3881
  type: Component,
3893
- args: [{ standalone: false, selector: 'bizdoc-options', animations: [verticalSwapAnimation], template: "<div class=\"column\">\r\n <div class=\"profile-name\">\r\n <span class=\"mat-headline-6\">\r\n @if (profile.byName) {\r\n {{profile.byName}} \\\r\n }\r\n {{profile.name}}\r\n </span>\r\n </div>\r\n\r\n <mat-divider />\r\n\r\n <div class=\"row\">\r\n <mat-nav-list class=\"nav-list\">\r\n <mat-list-item (click)=\"nav('notifications', notificationsTmpl, 0)\" [class.active]=\"sectionName === 'notifications'\">\r\n <span matListItemTitle>{{'Notifications' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('emails', emailsTmpl, 1)\" [class.active]=\"sectionName === 'emails'\">\r\n <span matListItemTitle>{{'Emails' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('out_of_office', oooTmpl, 2)\" [class.active]=\"sectionName === 'out_of_office'\">\r\n <span matListItemTitle>{{'OutOfOffice' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('grant_access', grantAccessTmpl, 3)\" [class.active]=\"sectionName === 'grant_access'\">\r\n <span matListItemTitle>{{'GrantAccess' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('preferences', preferencesTmpl, 4)\" [class.active]=\"sectionName === 'preferences'\">\r\n <span matListItemTitle>{{'Preferences' | translate}}</span>\r\n </mat-list-item>\r\n </mat-nav-list>\r\n <div class=\"separator\"></div>\r\n <form autocomplete=\"off\" [@v-swape]=\"sectionIndex\">\r\n <ng-container *ngTemplateOutlet=\"sectionTmpl\"></ng-container>\r\n </form>\r\n </div>\r\n <mat-divider />\r\n <!--themes-->\r\n @if (themes.length > 1) {\r\n <div class=\"row center\">\r\n @for (t of themes; track t) {\r\n <button (click)=\"changeTheme(t)\" mat-icon-button class=\"theme\" [style.background]=\"t.color\" [class.active]=\"t.name === theme\" [class.dark]=\"t.dark\" [bizdocTooltip]=\"'Theme'|translate\"></button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n<!--guide-->\r\n<mat-nav-list role=\"list\">\r\n <mat-divider></mat-divider>\r\n <h3 mat-subheader [matBadge]=\"guidesCount\" matBadgeColor=\"accent\" matBadgeOverlap=\"false\" matBadgeSize=\"small\">{{'Help'|translate}}</h3>\r\n @for (g of guides; track g) {\r\n <button mat-menu-item (click)=\"guide(g.name)\">{{g.title}}</button>\r\n }\r\n</mat-nav-list>\r\n<mat-divider></mat-divider>\r\n<!--footer-->\r\n<div class=\"row footer\">\r\n <!--keys-->\r\n @if(!isMobile) {\r\n <button mat-button role=\"listitem\" (click)=\"showKeyboard($event)\">\r\n {{'Keyboard' | translate}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n <!--'ChangeLanguage'-->\r\n </button>\r\n }\r\n <button mat-button role=\"listitem\" [matMenuTriggerFor]=\"language\">\r\n {{currentLanguage | translate}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n <!--'ChangeLanguage'-->\r\n </button>\r\n <mat-menu #language>\r\n @for (l of languages; track l) {\r\n <button mat-menu-item (click)=\"changeLanguage(l)\">{{l | translate}}</button>\r\n }\r\n </mat-menu>\r\n @if (online) {\r\n <button mat-button [matMenuTriggerFor]=\"availability\">\r\n {{'ShowAs' | translate : (available | translate | lowercase)}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #availability>\r\n @for (m of modes; track m) {\r\n <button mat-menu-item (click)=\"setAvailable(m)\">{{m | translate}}</button>\r\n }\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n <button mat-button role=\"listitem\" (click)=\"about()\">{{ 'About' | translate}}</button>\r\n @if (!online) {\r\n <button mat-icon-button (click)=\"revive()\" [bizdocTooltip]=\"'Connect'|translate\">\r\n <mat-icon>wifi_off</mat-icon>\r\n </button>\r\n }\r\n</div>\r\n<!--preferences-->\r\n<ng-template #preferencesTmpl>\r\n <div class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Tags'|translate}}</mat-label>\r\n <mat-chip-grid #chips>\r\n @for (tag of form.value.tags; track tag.name) {\r\n <mat-chip-row [removable]=\"true\" (removed)=\"removeTag(tag)\">\r\n {{tag.name}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n<!---->\r\n<ng-template #keyboardTmpl>\r\n <dl class=\"keys mat-body-2\">\r\n <dt>Alt+n</dt>\r\n <dd>{{'AltNHelp'|translate}}</dd>\r\n <dt>Ctrl+s</dt>\r\n <dd>{{'CtrlSHelp'|translate}}</dd>\r\n <dt>Alt+s</dt>\r\n <dd>{{'AltSHelp'|translate}}</dd>\r\n <dt>Alt+q</dt>\r\n <dd>{{'AltQHelp'|translate}}</dd>\r\n <dt>Alt+a</dt>\r\n <dd>{{'AltAHelp'|translate}}</dd>\r\n <dt>Alt+h</dt>\r\n <dd>{{'AltHHelp'|translate}}</dd>\r\n <dt>Ctrl+.</dt>\r\n <dd>{{'CtrlDotHelp'|translate}}</dd>\r\n </dl>\r\n</ng-template>\r\n<!--notifications-->\r\n<ng-template #notificationsTmpl>\r\n <div [formGroup]=\"form.controls.notifications\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-checkbox formControlName=\"myDocumentStateChange\">{{'MyStateChange' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"anyDocumentStateChange\">{{'AnyStateChange' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"commentMyDocument\">{{'CommentMyDocument' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"commentAnyDocument\">{{'CommentAnyDocument' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"likes\" [style.display]=\"voting?'':'none'\">{{'LikedComment' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"tagged\">{{'TaggedInComments' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"upcomingEvents\">{{'UpcomingEvents' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"cubeAnomaly\">{{'CubeAnomaly' | translate}}</mat-checkbox>\r\n <div formGroupName=\"extra\" class=\"column\"> \r\n @for(n of profile.notifications; track n.name) {\r\n <mat-checkbox [formControlName]=\"n.name\">{{n.title}}</mat-checkbox>\r\n }\r\n </div>\r\n <div class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button type=\"button\" (click)=\"toggleSound()\" [disabled]=\"!form.value.notifications.active\" [bizdocTooltip]=\"(form.value.notifications.sound ? 'SoundOn': 'SoundOff')|translate\"><mat-icon>{{form.value.notifications.sound ? 'volume_up' : 'volume_off'}}</mat-icon></button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<!--emails-->\r\n<ng-template #emailsTmpl>\r\n <div [formGroup]=\"form.controls.emails\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-checkbox formControlName=\"mail\">{{'Mails' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"chat\">{{'Conversations' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"notifications\">{{'EmailNotifications' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"events\">{{'AlarmEvents' | translate}}</mat-checkbox>\r\n </div>\r\n</ng-template>\r\n<!--ooo-->\r\n<ng-template #oooTmpl>\r\n <div [formGroup]=\"form.controls.outOfOffice\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"oooId\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"form.value.outOfOffice.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"oooSelected($event)\">\r\n @for (u of susers$ | async; track u.id) {\r\n <mat-option [value]=\"u\">\r\n {{u.name}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <mat-hint>{{'OutOfOfficeTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Dates'|translate}}</mat-label>\r\n <mat-date-range-input [rangePicker]=\"oooDates\">\r\n <input matStartDate formControlName=\"from\" [placeholder]=\"'From'|translate\" [min]=\"today\">\r\n <input matEndDate formControlName=\"to\" [placeholder]=\"'To'|translate\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"oooDates\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #oooDates [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n<!--grantAccess-->\r\n<ng-template #grantAccessTmpl>\r\n <div [formGroup]=\"form.controls.grantAccess\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field>\r\n <mat-label>{{'Associates'| translate}}</mat-label>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!form.value.grantAccess.active\">\r\n @for (u of form.value.grantAccess.users || []; track u.id) {\r\n <mat-chip-row (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [formControl]=\"grantUserIds\"\r\n #grantInput\r\n [matAutocomplete]=\"grantAuto\"\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n @for (u of gusers$ | async; track u.id) {\r\n <mat-option [value]=\"u.id\">\r\n {{u.name}}\r\n @if (u.email) {\r\n <span>&nbsp; - {{u.email}}</span>\r\n }\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <mat-hint>{{'GrantTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{max-width:80vw;min-width:420px}.footer{align-items:center}.profile-name{margin:8px}.theme{height:22px!important;width:22px!important;-moz-border-radius:13px 13px!important;-webkit-border-radius:13px 13px!important;border-radius:13px!important;margin:4px!important}.theme.active.dark{border:2px solid #f4f4f4}.keys{padding:8px}.keys dt{width:72px;float:inline-start;clear:both;font-variant-caps:all-small-caps}.keys dd{float:inline-end;font-size:small;margin:0}.separator{height:280px;width:1px;background-color:var(--mat-sys-outline)}form{padding:20px 8px 0;min-width:320px}\n"] }]
3882
+ args: [{ standalone: false, selector: 'bizdoc-options', animations: [verticalSwapAnimation], template: "<div class=\"column\">\r\n <div class=\"profile-name\">\r\n <span class=\"mat-headline-6\">\r\n @if (profile.byName) {\r\n {{profile.byName}} \\\r\n }\r\n {{profile.name}}\r\n </span>\r\n </div>\r\n\r\n <mat-divider />\r\n\r\n <div class=\"row\">\r\n <mat-nav-list class=\"nav-list\">\r\n <mat-list-item (click)=\"nav('notifications', notificationsTmpl, 0)\" [class.active]=\"sectionName === 'notifications'\">\r\n <span matListItemTitle>{{'Notifications' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('emails', emailsTmpl, 1)\" [class.active]=\"sectionName === 'emails'\">\r\n <span matListItemTitle>{{'Emails' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('out_of_office', oooTmpl, 2)\" [class.active]=\"sectionName === 'out_of_office'\">\r\n <span matListItemTitle>{{'OutOfOffice' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('grant_access', grantAccessTmpl, 3)\" [class.active]=\"sectionName === 'grant_access'\">\r\n <span matListItemTitle>{{'GrantAccess' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"nav('preferences', preferencesTmpl, 4)\" [class.active]=\"sectionName === 'preferences'\">\r\n <span matListItemTitle>{{'Preferences' | translate}}</span>\r\n </mat-list-item>\r\n </mat-nav-list>\r\n <div class=\"separator\"></div>\r\n <form autocomplete=\"off\" [@v-swape]=\"sectionIndex\">\r\n <ng-container *ngTemplateOutlet=\"sectionTmpl\"></ng-container>\r\n </form>\r\n </div>\r\n <mat-divider />\r\n <!--themes-->\r\n @if (themes.length > 1) {\r\n <div class=\"row center\">\r\n @for (t of themes; track t) {\r\n <button (click)=\"changeTheme(t)\" mat-icon-button class=\"theme\" [style.background]=\"t.color\" [class.active]=\"t.name === theme\" [class.dark]=\"t.dark\" [bizdocTooltip]=\"'Theme'|translate\"></button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n<!--guide-->\r\n<mat-nav-list role=\"list\">\r\n <mat-divider></mat-divider>\r\n <h3 mat-subheader [matBadge]=\"guidesCount\" matBadgeColor=\"accent\" matBadgeOverlap=\"false\" matBadgeSize=\"small\">{{'Help'|translate}}</h3>\r\n @for (g of guides; track g) {\r\n <button mat-menu-item (click)=\"guide(g.name)\">{{g.title}}</button>\r\n }\r\n</mat-nav-list>\r\n<mat-divider></mat-divider>\r\n<!--footer-->\r\n<div class=\"row footer\">\r\n <button mat-button role=\"listitem\" [matMenuTriggerFor]=\"language\">\r\n {{currentLanguage | translate}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n <!--'ChangeLanguage'-->\r\n </button>\r\n <mat-menu #language>\r\n @for (l of languages; track l) {\r\n <button mat-menu-item (click)=\"changeLanguage(l)\">{{l | translate}}</button>\r\n }\r\n </mat-menu>\r\n @if (online) {\r\n <button mat-button [matMenuTriggerFor]=\"availability\">\r\n {{'ShowAs' | translate : (available | translate | lowercase)}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #availability>\r\n @for (m of modes; track m) {\r\n <button mat-menu-item (click)=\"setAvailable(m)\">{{m | translate}}</button>\r\n }\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n <!--keys-->\r\n @if(!isMobile) {\r\n <button mat-button role=\"listitem\" (click)=\"showKeyboard($event)\">\r\n {{'Keyboard' | translate}}\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n <!--'ChangeLanguage'-->\r\n </button>\r\n }\r\n <button mat-button role=\"listitem\" (click)=\"about()\">{{ 'About' | translate}}</button>\r\n @if (!online) {\r\n <button mat-icon-button (click)=\"revive()\" [bizdocTooltip]=\"'Connect'|translate\">\r\n <mat-icon>wifi_off</mat-icon>\r\n </button>\r\n }\r\n</div>\r\n<!--preferences-->\r\n<ng-template #preferencesTmpl>\r\n <div class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Tags'|translate}}</mat-label>\r\n <mat-chip-grid #chips>\r\n @for (tag of form.value.tags; track tag.name) {\r\n <mat-chip-row [removable]=\"true\" (removed)=\"removeTag(tag)\">\r\n {{tag.name}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n<!---->\r\n<ng-template #keyboardTmpl>\r\n <dl class=\"keys mat-body-2\">\r\n <dt>Alt+n</dt>\r\n <dd>{{'AltNHelp'|translate}}</dd>\r\n <dt>Ctrl+s</dt>\r\n <dd>{{'CtrlSHelp'|translate}}</dd>\r\n <dt>Alt+s</dt>\r\n <dd>{{'AltSHelp'|translate}}</dd>\r\n <dt>Alt+q</dt>\r\n <dd>{{'AltQHelp'|translate}}</dd>\r\n <dt>Alt+a</dt>\r\n <dd>{{'AltAHelp'|translate}}</dd>\r\n <dt>Alt+h</dt>\r\n <dd>{{'AltHHelp'|translate}}</dd>\r\n <dt>Ctrl+.</dt>\r\n <dd>{{'CtrlDotHelp'|translate}}</dd>\r\n </dl>\r\n</ng-template>\r\n<!--notifications-->\r\n<ng-template #notificationsTmpl>\r\n <div [formGroup]=\"form.controls.notifications\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-checkbox formControlName=\"myDocumentStateChange\">{{'MyStateChange' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"anyDocumentStateChange\">{{'AnyStateChange' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"commentMyDocument\">{{'CommentMyDocument' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"commentAnyDocument\">{{'CommentAnyDocument' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"likes\" [style.display]=\"voting?'':'none'\">{{'LikedComment' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"tagged\">{{'TaggedInComments' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"upcomingEvents\">{{'UpcomingEvents' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"cubeAnomaly\">{{'CubeAnomaly' | translate}}</mat-checkbox>\r\n <div formGroupName=\"extra\" class=\"column\"> \r\n @for(n of profile.notifications; track n.name) {\r\n <mat-checkbox [formControlName]=\"n.name\">{{n.title}}</mat-checkbox>\r\n }\r\n </div>\r\n <div class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button type=\"button\" (click)=\"toggleSound()\" [disabled]=\"!form.value.notifications.active\" [bizdocTooltip]=\"(form.value.notifications.sound ? 'SoundOn': 'SoundOff')|translate\"><mat-icon>{{form.value.notifications.sound ? 'volume_up' : 'volume_off'}}</mat-icon></button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<!--emails-->\r\n<ng-template #emailsTmpl>\r\n <div [formGroup]=\"form.controls.emails\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-checkbox formControlName=\"mail\">{{'Mails' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"chat\">{{'Conversations' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"notifications\">{{'EmailNotifications' | translate}}</mat-checkbox>\r\n <mat-checkbox formControlName=\"events\">{{'AlarmEvents' | translate}}</mat-checkbox>\r\n </div>\r\n</ng-template>\r\n<!--ooo-->\r\n<ng-template #oooTmpl>\r\n <div [formGroup]=\"form.controls.outOfOffice\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"oooId\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"form.value.outOfOffice.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"oooSelected($event)\">\r\n @for (u of susers$ | async; track u.id) {\r\n <mat-option [value]=\"u\">\r\n {{u.name}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <mat-hint>{{'OutOfOfficeTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Dates'|translate}}</mat-label>\r\n <mat-date-range-input [rangePicker]=\"oooDates\">\r\n <input matStartDate formControlName=\"from\" [placeholder]=\"'From'|translate\" [min]=\"today\">\r\n <input matEndDate formControlName=\"to\" [placeholder]=\"'To'|translate\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"oooDates\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #oooDates [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n<!--grantAccess-->\r\n<ng-template #grantAccessTmpl>\r\n <div [formGroup]=\"form.controls.grantAccess\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field>\r\n <mat-label>{{'Associates'| translate}}</mat-label>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!form.value.grantAccess.active\">\r\n @for (u of form.value.grantAccess.users || []; track u.id) {\r\n <mat-chip-row (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [formControl]=\"grantUserIds\"\r\n #grantInput\r\n [matAutocomplete]=\"grantAuto\"\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n @for (u of gusers$ | async; track u.id) {\r\n <mat-option [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n <mat-hint>{{'GrantTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{max-width:80vw;min-width:420px}.footer{align-items:center}.profile-name{margin:8px}.theme{height:22px!important;width:22px!important;-moz-border-radius:13px 13px!important;-webkit-border-radius:13px 13px!important;border-radius:13px!important;margin:4px!important}.theme.active.dark{border:2px solid #f4f4f4}.keys{padding:8px}.keys dt{width:72px;float:inline-start;clear:both;font-variant-caps:all-small-caps}.keys dd{float:inline-end;font-size:small;margin:0}.separator{height:280px;width:1px;background-color:var(--mat-sys-outline)}form{padding:20px 8px 0;min-width:320px}\n"] }]
3894
3883
  }], ctorParameters: () => [{ type: PromptService }, { type: GuideService }, { type: HubService }, { type: i2$2.MatDialog }, { type: i1$2.FormBuilder }, { type: AccountService }, { type: PromptService }, { type: SessionService }, { type: Popup }, { type: undefined, decorators: [{
3895
3884
  type: Inject,
3896
3885
  args: [BIZDOC_CONFIG]
@@ -6066,8 +6055,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
6066
6055
  }], ctorParameters: () => [{ type: TranslateService }, { type: DatasourceService }] });
6067
6056
 
6068
6057
  let AutocompleteField = class AutocompleteField {
6058
+ set dense(val) {
6059
+ if (val)
6060
+ this.subscriptSizing = 'dynamic';
6061
+ }
6069
6062
  constructor(_ds) {
6070
6063
  this._ds = _ds;
6064
+ this.subscriptSizing = 'fixed';
6071
6065
  this.control = new FormControl();
6072
6066
  this._destroy = new Subject();
6073
6067
  }
@@ -6080,14 +6074,14 @@ let AutocompleteField = class AutocompleteField {
6080
6074
  this._destroy.complete();
6081
6075
  }
6082
6076
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AutocompleteField, deps: [{ token: DatasourceService }], target: i0.ɵɵFactoryTarget.Component }); }
6083
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AutocompleteField, isStandalone: false, selector: "ng-component", inputs: { params: "params" }, host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: TypeAutocomplete, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <bizdoc-autocomplete [placeholder]=\"placeholder |localizedString\" [formControl]=control\r\n [required]=\"required\" [type]=\"dataType\"></bizdoc-autocomplete>\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n {{control.value | typeValue: dataType | async}}\r\n}\r\n", dependencies: [{ 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: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: TypeAutocomplete, selector: "bizdoc-autocomplete", inputs: ["type", "placeholder", "text", "required", "disabled", "value", "minimumChars", "textFormControlName", "textFormControl"], outputs: ["textChange", "optionSelected"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TypeValuePipe, name: "typeValue" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
6077
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AutocompleteField, isStandalone: false, selector: "ng-component", inputs: { params: "params" }, host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: TypeAutocomplete, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <bizdoc-autocomplete [placeholder]=\"placeholder |localizedString\" [formControl]=control\r\n [required]=\"required\" [type]=\"dataType\"></bizdoc-autocomplete>\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n {{control.value | typeValue: dataType | async}}\r\n}\r\n", dependencies: [{ 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: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: TypeAutocomplete, selector: "bizdoc-autocomplete", inputs: ["type", "placeholder", "text", "required", "disabled", "value", "minimumChars", "textFormControlName", "textFormControl"], outputs: ["textChange", "optionSelected"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TypeValuePipe, name: "typeValue" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
6084
6078
  };
6085
6079
  AutocompleteField = __decorate([
6086
6080
  BizDoc({ selector: 'autocomplete-control' })
6087
6081
  ], AutocompleteField);
6088
6082
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AutocompleteField, decorators: [{
6089
6083
  type: Component,
6090
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <bizdoc-autocomplete [placeholder]=\"placeholder |localizedString\" [formControl]=control\r\n [required]=\"required\" [type]=\"dataType\"></bizdoc-autocomplete>\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n {{control.value | typeValue: dataType | async}}\r\n}\r\n" }]
6084
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <bizdoc-autocomplete [placeholder]=\"placeholder |localizedString\" [formControl]=control\r\n [required]=\"required\" [type]=\"dataType\"></bizdoc-autocomplete>\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n {{control.value | typeValue: dataType | async}}\r\n}\r\n" }]
6091
6085
  }], ctorParameters: () => [{ type: DatasourceService }], propDecorators: { params: [{
6092
6086
  type: Input
6093
6087
  }], input: [{
@@ -6257,6 +6251,7 @@ class LayoutComponent {
6257
6251
  f.label = f.name;
6258
6252
  Object.assign(instance, f);
6259
6253
  instance.mode = 'compose';
6254
+ //instance.dense = true;
6260
6255
  f.defaultValue !== undefined && instance.control.setValue(f.defaultValue, { emitEvent: false });
6261
6256
  this.form.addControl(f.name, instance.control);
6262
6257
  return instance;
@@ -7008,7 +7003,7 @@ class MailboxService {
7008
7003
  `?access_token=${token}`;
7009
7004
  return url;
7010
7005
  }
7011
- download(documentId, fileId) {
7006
+ downloadAttachment(documentId, fileId) {
7012
7007
  //new Observable<any>(observe => {
7013
7008
  // observe.next({});
7014
7009
  // return {
@@ -7023,13 +7018,13 @@ class MailboxService {
7023
7018
  removeAttachment(recipientId, fileId) {
7024
7019
  return this._http.delete(`/api/attachments/${recipientId}/${fileId}`);
7025
7020
  }
7026
- read(id, read, folderId, received) {
7021
+ markAsRead(id, read, folderId, received) {
7027
7022
  return this._http.put(`/api/mailbox/read/${id}`, undefined, { params: { read } }).pipe(tap(() => folderId && received && this._updateunreadcounter(received, folderId, read ? 1 : -1)));
7028
7023
  }
7029
- comments(id, before) {
7024
+ listComments(id, before) {
7030
7025
  return this._http.get(`/api/comments/${id}`, { params: { before: new Date(before).toJSON() } });
7031
7026
  }
7032
- tags(id, tags) {
7027
+ updateRecipientTags(id, tags) {
7033
7028
  return this._http.put(`/api/mailbox/tag/${id}`, { tags }).pipe(tap(() => {
7034
7029
  this._change$.next({ id, tags });
7035
7030
  }));
@@ -7040,7 +7035,7 @@ class MailboxService {
7040
7035
  * @param stateId
7041
7036
  * @param userId substitute
7042
7037
  */
7043
- changeState(documentId, stateId, userId) {
7038
+ setDocumentState(documentId, stateId, userId) {
7044
7039
  return this._http.put(`/api/mailbox/changestate/${documentId}`, { stateId, userId });
7045
7040
  }
7046
7041
  move(id, folderId) {
@@ -7051,10 +7046,10 @@ class MailboxService {
7051
7046
  });
7052
7047
  }));
7053
7048
  }
7054
- checkOut(recipientId, version, attachmentId) {
7049
+ checkOutAttachment(recipientId, version, attachmentId) {
7055
7050
  return this._http.put(`/api/attachments/${recipientId}/${attachmentId}/checkout`, null, { params: { version } });
7056
7051
  }
7057
- checkIn(recipientId, version, attachmentId, file) {
7052
+ checkInAttachment(recipientId, version, attachmentId, file) {
7058
7053
  const fd = new FormData();
7059
7054
  fd.append(file.name, file);
7060
7055
  const req = new HttpRequest('PUT', `/api/attachments/${recipientId}/${attachmentId}/checkin?version=${version}`, fd, {
@@ -7149,23 +7144,23 @@ class MailboxService {
7149
7144
  * retrieve senders
7150
7145
  * @param name
7151
7146
  */
7152
- senders(name) {
7147
+ listSenders(name) {
7153
7148
  return this._http.get('/api/mailbox/senders/', {
7154
7149
  params: {
7155
7150
  name
7156
7151
  }
7157
7152
  });
7158
7153
  }
7159
- flag(id, flag) {
7154
+ toggleFlag(id, flag) {
7160
7155
  return this._http.put(`/api/mailbox/flag/${id}?flag=${flag}`, null).pipe(tap(() => this._change$.next({ id, flag })));
7161
7156
  }
7162
- viewedcomments(id) {
7157
+ markCommentsViewed(id) {
7163
7158
  return this._http.put(`/api/comments/viewed/${id}`, {}, { headers: { 'no-progress': 'true' } }).pipe(tap((e) => this._change$.next({ id, viewed: e.time })));
7164
7159
  }
7165
- typing(id) {
7160
+ reportTyping(id) {
7166
7161
  return this._http.put(`/api/comments/typing/${id}`, {}, { headers: { 'no-progress': 'true' } });
7167
7162
  }
7168
- editing(id) {
7163
+ reportEditing(id) {
7169
7164
  return this._http.put(`/api/mailbox/editing/${id}`, {}, { headers: { 'no-progress': 'true' } });
7170
7165
  }
7171
7166
  copy(id) {
@@ -7179,22 +7174,22 @@ class MailboxService {
7179
7174
  comment(id, options) {
7180
7175
  return this._http.post(`/api/comments/${id}`, options);
7181
7176
  }
7182
- commentupdate(id, commentId, options) {
7177
+ updateComment(id, commentId, options) {
7183
7178
  return this._http.put(`/api/comments/edit/${id}/${commentId}`, options);
7184
7179
  }
7185
- info(documentId) {
7180
+ getDocumentInfo(documentId) {
7186
7181
  return this._http.get(`/api/mailbox/info/${documentId}`);
7187
7182
  }
7188
- timeline(documentId) {
7183
+ listTimeline(documentId) {
7189
7184
  return this._http.get(`/api/mailbox/timeline/${documentId}`);
7190
7185
  }
7191
- vote(id, commentId, value) {
7186
+ voteComment(id, commentId, value) {
7192
7187
  return this._http.post(`/api/comments/vote/${id}/${commentId}`, {}, { params: { value: value.toString() } });
7193
7188
  }
7194
- votes(id, commentId) {
7189
+ listCommentVotes(id, commentId) {
7195
7190
  return this._http.get(`/api/comments/votes/${id}/${commentId}`);
7196
7191
  }
7197
- edits(id, commentId) {
7192
+ listCommentEdits(id, commentId) {
7198
7193
  return this._http.get(`/api/comments/edits/${id}/${commentId}`);
7199
7194
  }
7200
7195
  findAll(filter, options) {
@@ -7208,6 +7203,12 @@ class MailboxService {
7208
7203
  this._change$.next(m);
7209
7204
  }));
7210
7205
  }
7206
+ /**
7207
+ *
7208
+ * @param form
7209
+ * @param model
7210
+ * @returns
7211
+ */
7211
7212
  create(form, model) {
7212
7213
  // return this._wrap(form, p =>
7213
7214
  // this._http.post<RecipientModel<T>>('/api/mail', model, {
@@ -7223,6 +7224,12 @@ class MailboxService {
7223
7224
  }
7224
7225
  })), this._sync());
7225
7226
  }
7227
+ /**
7228
+ *
7229
+ * @param id
7230
+ * @param read
7231
+ * @returns
7232
+ */
7226
7233
  get(id, read) {
7227
7234
  return this._http.get(`/api/mail/${id}`).pipe(tap((m) => read === false && m.read === true &&
7228
7235
  this._updateunreadcounter(m.received, m.folderId, -1)));
@@ -7275,25 +7282,26 @@ class MailboxService {
7275
7282
  delete(id) {
7276
7283
  return this._http.delete(`/api/mail/${id}`).pipe(tap(() => this._delete$.next(id)));
7277
7284
  }
7278
- removecomment(id) {
7279
- return this._http.delete(`/api/comments/${id}`);
7280
- }
7281
- post(form, model) {
7282
- return this._wrap(form, p => this._http.post('/api/mail', model, {
7283
- params: {
7284
- go: true,
7285
- form,
7286
- ...p
7287
- }
7288
- }));
7289
- }
7285
+ toggleRemoveComment(id, value) {
7286
+ return this._http.delete(`/api/comments/${id}?value=${value}`);
7287
+ }
7288
+ //post<T = any>(form: string, model?: T): Observable<RecipientModel<T>> {
7289
+ // return this._wrap(form, p =>
7290
+ // this._http.post<RecipientModel<T>>('/api/mail', model, {
7291
+ // params: {
7292
+ // go: true,
7293
+ // form,
7294
+ // ...p
7295
+ // }
7296
+ // }));
7297
+ //}
7290
7298
  submit(id, version, form, model) {
7291
7299
  return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&go=true`, model, { params })), this._sync());
7292
7300
  }
7293
7301
  send(id, version, form, model, action, actionArgs, read, folderId, received) {
7294
7302
  return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&action=${action}`, model, { params: { ...params, ...actionArgs } })), tap(() => read === false && received && folderId && this._updateunreadcounter(received, folderId, -1)), this._sync());
7295
7303
  }
7296
- events(starting, ending, contains) {
7304
+ listEvents(starting, ending, contains) {
7297
7305
  return this._http.get(`/api/events`, {
7298
7306
  params: cleanup({
7299
7307
  starting: starting.toJSON(),
@@ -7302,7 +7310,7 @@ class MailboxService {
7302
7310
  })
7303
7311
  });
7304
7312
  }
7305
- changeEvent(id, options) {
7313
+ updateEvent(id, options) {
7306
7314
  return this._http.put(`/api/events/${id}`, cleanup(options));
7307
7315
  }
7308
7316
  /**
@@ -8111,7 +8119,7 @@ class BrowseFilterComponent {
8111
8119
  this.filters = { axes, cube };
8112
8120
  }
8113
8121
  this.senders$ = this.sendername.valueChanges.
8114
- pipe(takeUntil(this._destroy), debounceTime(250), filter((v) => isString(v)), switchMap((v) => this._mailbox.senders(v)));
8122
+ pipe(takeUntil(this._destroy), debounceTime(250), filter((v) => isString(v)), switchMap((v) => this._mailbox.listSenders(v)));
8115
8123
  this.form.valueChanges.pipe(takeUntil(this._destroy), debounceTime(FILTER_DEBOUNCE)).
8116
8124
  subscribe(v => this.valuesChange.emit(cleanup(v)));
8117
8125
  this.form.patchValue(this.values, { emitEvent: false });
@@ -8786,7 +8794,7 @@ class AttachmentsComponent {
8786
8794
  return this.model.attachments.filter(a => a.fileName === item.fileName && a != item);
8787
8795
  }
8788
8796
  async download(item) {
8789
- //this._mailbox.download(this.model.documentId, item.id).subscribe(data => {
8797
+ //this._mailbox.downloadAttachment(this.model.documentId, item.id).subscribe(data => {
8790
8798
  //const blob = new Blob([data], { type: item.contentType });
8791
8799
  //if (typeof window.navigator.msSaveBlob !== 'undefined') { // IE
8792
8800
  // window.navigator.msSaveBlob(blob, item.fileName);
@@ -9320,7 +9328,7 @@ class BrowseItemsComponent {
9320
9328
  dragStarted(event) {
9321
9329
  }
9322
9330
  toggleRead(item) {
9323
- this._mailbox.read(item.id, !item.read, item.folderId, item.received).
9331
+ this._mailbox.markAsRead(item.id, !item.read, item.folderId, item.received).
9324
9332
  subscribe(() => item.read = !item.read);
9325
9333
  }
9326
9334
  select(id) {
@@ -9335,7 +9343,7 @@ class BrowseItemsComponent {
9335
9343
  this._retrieve(mail).subscribe(item => {
9336
9344
  if (item.tags && item.tags.indexOf(tag) > -1)
9337
9345
  return;
9338
- this._mailbox.tags(mail.id, item.tags).subscribe(() => {
9346
+ this._mailbox.updateRecipientTags(mail.id, item.tags).subscribe(() => {
9339
9347
  if (!item.tags)
9340
9348
  item.tags = [tag];
9341
9349
  else
@@ -9406,7 +9414,7 @@ class BrowseItemsComponent {
9406
9414
  flag(item, evt) {
9407
9415
  const extra = item;
9408
9416
  extra.working = true;
9409
- this._mailbox.flag(item.id, !item.flag).subscribe({
9417
+ this._mailbox.toggleFlag(item.id, !item.flag).subscribe({
9410
9418
  next: () => {
9411
9419
  item.flag = !item.flag;
9412
9420
  extra.working = false;
@@ -9729,7 +9737,7 @@ class TagsComponent {
9729
9737
  setTimeout(() => this.inputElement.nativeElement.focus());
9730
9738
  }
9731
9739
  _save() {
9732
- this._mailbox.tags(this._data.id, this._data.tags.map(t => t.name)).subscribe();
9740
+ this._mailbox.updateRecipientTags(this._data.id, this._data.tags.map(t => t.name)).subscribe();
9733
9741
  }
9734
9742
  add(event) {
9735
9743
  if (!this.auto.isOpen) {
@@ -10058,7 +10066,7 @@ class ComposeFormComponent {
10058
10066
  const extra = this.model, { flag } = this.model;
10059
10067
  extra.working = true;
10060
10068
  this.working = true;
10061
- this._mailbox.flag(this.model.id, !flag).subscribe({
10069
+ this._mailbox.toggleFlag(this.model.id, !flag).subscribe({
10062
10070
  next: () => {
10063
10071
  this.model.flag = !flag;
10064
10072
  extra.working = false;
@@ -13294,7 +13302,7 @@ class EditCommentComponent {
13294
13302
  }
13295
13303
  ok(evt) {
13296
13304
  this.sending = true;
13297
- this._mailbox.commentupdate(this.data.documentId, this.data.id, evt).subscribe(c => this._popupRef.close(c), () => {
13305
+ this._mailbox.updateComment(this.data.documentId, this.data.id, evt).subscribe(c => this._popupRef.close(c), () => {
13298
13306
  this.sending = false;
13299
13307
  this._sb.error();
13300
13308
  });
@@ -13386,7 +13394,7 @@ class CommentEditsComponent {
13386
13394
  this.resource = _data.resource;
13387
13395
  }
13388
13396
  ngOnInit() {
13389
- this.versions = this._mailbox.edits(this._data.documentId, this._data.id);
13397
+ this.versions = this._mailbox.listCommentEdits(this._data.documentId, this._data.id);
13390
13398
  }
13391
13399
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CommentEditsComponent, deps: [{ token: POPUP_DATA }, { token: MailboxService }], target: i0.ɵɵFactoryTarget.Component }); }
13392
13400
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CommentEditsComponent, isStandalone: false, selector: "bizdoc-comment-edits", ngImport: i0, template: "<span class=\"mat-h2\">{{'History' | translate}}</span>\r\n\r\n@for (v of versions | async; track v) {\r\n <div class=\"comment\">\r\n <p [innerHTML]=\"v.text|taggingHtml:resource\"></p>\r\n @if (v.byId || byId) {\r\n <bizdoc-identity-name class=\"mat-body\" [identity]=\"v.userId\" [by]=\"v.byId\"></bizdoc-identity-name>\r\n }\r\n <small>{{v.time | amCalendar}}</small>\r\n </div>\r\n}\r\n", styles: [":host{padding:8px}\n"], dependencies: [{ kind: "component", type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TaggingPipe, name: "taggingHtml" }] }); }
@@ -13409,18 +13417,18 @@ class CommentLikesComponent {
13409
13417
  });
13410
13418
  }
13411
13419
  ngOnInit() {
13412
- this.votes = this._mailbox.votes(this._data.documentId, this._data.id);
13420
+ this.votes = this._mailbox.listCommentVotes(this._data.documentId, this._data.id);
13413
13421
  }
13414
13422
  ngOnDestroy() {
13415
13423
  this._destroy.next();
13416
13424
  this._destroy.complete();
13417
13425
  }
13418
13426
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CommentLikesComponent, deps: [{ token: POPUP_DATA }, { token: MailboxService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component }); }
13419
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CommentLikesComponent, isStandalone: false, selector: "bizdoc-comment-votes", ngImport: i0, template: "<span class=\"mat-h2\">{{'Votes' | translate}}</span>\r\n@for (v of votes | async; track v) {\r\n <div class=\"vote\">\r\n <bizdoc-identity-name class=\"mat-body\" [identity]=\"v.userId\" [by]=\"v.byId\"></bizdoc-identity-name>\r\n <button mat-icon-button><mat-icon>{{v.voted === 1 ? 'thumb_up_alt' : 'thumb_down_alt'}}</mat-icon></button>\r\n <br />\r\n <small bizdocTooltip=\"{{v.time | amCalendar }}\">{{v.time | amTimeAgo}}</small>\r\n </div>\r\n}\r\n", styles: [":host{padding:8px}\n"], dependencies: [{ kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
13427
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CommentLikesComponent, isStandalone: false, selector: "bizdoc-comment-votes", ngImport: i0, template: "<span class=\"mat-h2\">{{'Votes' | translate}}</span>\r\n@for (v of votes | async; track v) {\r\n <div class=\"vote\">\r\n <div class=\"row\">\r\n <bizdoc-identity-name class=\"mat-body\" [identity]=\"v.userId\" [by]=\"v.byId\"></bizdoc-identity-name>\r\n <span class=\"divider\"></span>\r\n <mat-icon>{{v.voted === 1 ? 'thumb_up_alt' : 'thumb_down_alt'}}</mat-icon>\r\n </div>\r\n <br />\r\n <small bizdocTooltip=\"{{v.time | amCalendar }}\">{{v.time | amTimeAgo}}</small>\r\n </div>\r\n}\r\n", styles: [":host{padding:8px}\n"], dependencies: [{ kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
13420
13428
  }
13421
13429
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CommentLikesComponent, decorators: [{
13422
13430
  type: Component,
13423
- args: [{ standalone: false, selector: 'bizdoc-comment-votes', template: "<span class=\"mat-h2\">{{'Votes' | translate}}</span>\r\n@for (v of votes | async; track v) {\r\n <div class=\"vote\">\r\n <bizdoc-identity-name class=\"mat-body\" [identity]=\"v.userId\" [by]=\"v.byId\"></bizdoc-identity-name>\r\n <button mat-icon-button><mat-icon>{{v.voted === 1 ? 'thumb_up_alt' : 'thumb_down_alt'}}</mat-icon></button>\r\n <br />\r\n <small bizdocTooltip=\"{{v.time | amCalendar }}\">{{v.time | amTimeAgo}}</small>\r\n </div>\r\n}\r\n", styles: [":host{padding:8px}\n"] }]
13431
+ args: [{ standalone: false, selector: 'bizdoc-comment-votes', template: "<span class=\"mat-h2\">{{'Votes' | translate}}</span>\r\n@for (v of votes | async; track v) {\r\n <div class=\"vote\">\r\n <div class=\"row\">\r\n <bizdoc-identity-name class=\"mat-body\" [identity]=\"v.userId\" [by]=\"v.byId\"></bizdoc-identity-name>\r\n <span class=\"divider\"></span>\r\n <mat-icon>{{v.voted === 1 ? 'thumb_up_alt' : 'thumb_down_alt'}}</mat-icon>\r\n </div>\r\n <br />\r\n <small bizdocTooltip=\"{{v.time | amCalendar }}\">{{v.time | amTimeAgo}}</small>\r\n </div>\r\n}\r\n", styles: [":host{padding:8px}\n"] }]
13424
13432
  }], ctorParameters: () => [{ type: undefined, decorators: [{
13425
13433
  type: Inject,
13426
13434
  args: [POPUP_DATA]
@@ -13494,7 +13502,7 @@ class CommentComponent {
13494
13502
  }
13495
13503
  vote(value, event) {
13496
13504
  value = this.item.voted !== value ? value : 0;
13497
- this._mailbox.vote(this.model.documentId, this.item.id, value).subscribe(() => {
13505
+ this._mailbox.voteComment(this.model.documentId, this.item.id, value).subscribe(() => {
13498
13506
  if (this.item.votes === undefined)
13499
13507
  this.item.votes = value;
13500
13508
  else if (value === 0)
@@ -13523,17 +13531,12 @@ class CommentComponent {
13523
13531
  _open(component, data) {
13524
13532
  return this._popup.open(component, this.bodyElement, { position: 'start', data });
13525
13533
  }
13526
- delete() {
13527
- this._ps.ask('DeleteCommentAsk', undefined, {
13528
- ok: 'Delete',
13529
- color: 'warn'
13530
- }).subscribe(ok => {
13531
- ok && this._mailbox.removecomment(this.item.id).subscribe({
13532
- next: () => {
13533
- this.item.deleted = true;
13534
- this.deleted.emit();
13535
- }, error: () => this._ps.error()
13536
- });
13534
+ delete(value) {
13535
+ this._mailbox.toggleRemoveComment(this.item.id, value).subscribe({
13536
+ next: () => {
13537
+ this.item.deleted = value;
13538
+ this.deleted.emit(value);
13539
+ }, error: this._ps.error.bind(this)
13537
13540
  });
13538
13541
  }
13539
13542
  edits() {
@@ -13560,13 +13563,13 @@ class CommentComponent {
13560
13563
  });
13561
13564
  }
13562
13565
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CommentComponent, deps: [{ token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: ChatInfo }, { token: AccountService }, { token: Popup }, { token: i2$3.Overlay }, { token: MailboxService }, { token: i0.ViewContainerRef }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
13563
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CommentComponent, isStandalone: false, selector: "bizdoc-comment", inputs: { model: "model", item: "item" }, outputs: { deleted: "deleted", reply: "reply" }, host: { classAttribute: "comment" }, viewQueries: [{ propertyName: "bodyElement", first: true, predicate: ["body"], descendants: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"comment-body\" #body>\r\n <div [innerHTML]=\"item.text|taggingHtml:item.resource\" class=\"comment-text\"></div>\r\n @if (item.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview()\" />\r\n }\r\n </div>\r\n @if (me) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"tool\" (click)=\"$event.stopPropagation()\"><mat-icon>more_vert</mat-icon></button>\r\n }\r\n <mat-menu #menu>\r\n <ng-template matMenuContent>\r\n <button mat-menu-item (click)=\"edit()\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete()\">{{'Delete'|translate}}</button>\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"column\">\r\n <span [innerHTML]=\"name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <div>\r\n <small class=\"flex\" bizdocTooltip=\"{{item.edited || item.time | amCalendar }}\">{{item.edited || item.time | amTimeAgo}}</small>\r\n @if (item.edited) {\r\n &nbsp;<a (click)=\"edits()\" class=\"modification\">{{'Edited'| translate}}</a>\r\n }\r\n @if (!me) {\r\n &nbsp;<a (click)=\"reply.emit()\" class=\"modification\">{{'Reply'| translate}}</a>\r\n }\r\n </div>\r\n </div>\r\n @if (voting) {\r\n <div class=\"comment-actions\">\r\n @if (item.votes > 0 || item.votes < 0) {\r\n <a [class.score-negative]=\"item.votes < 0\" class=\"comment-score\" dir=\"ltr\" (click)=\"votes()\" [bizdocTooltip]=\"'Votes'|translate\">{{item.votes}}</a>\r\n }\r\n <button mat-icon-button (click)=\"vote(1, $event)\" [class.voted-true]=\"item.voted===1\" [disableRipple]=\"true\"><mat-icon>thumb_up_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"vote(-1, $event)\" [class.voted-false]=\"item.voted===-1\" [disableRipple]=\"true\"><mat-icon>thumb_down_alt</mat-icon></button>\r\n </div>\r\n }\r\n</div>\r\n<ng-template #previewTemplate>\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i2$3.ɵɵDir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { 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: 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: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: TaggingPipe, name: "taggingHtml" }] }); }
13566
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CommentComponent, isStandalone: false, selector: "bizdoc-comment", inputs: { model: "model", item: "item" }, outputs: { deleted: "deleted", reply: "reply" }, host: { classAttribute: "comment" }, viewQueries: [{ propertyName: "bodyElement", first: true, predicate: ["body"], descendants: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"comment-body\" #body>\r\n <div [innerHTML]=\"item.text|taggingHtml:item.resource\" class=\"comment-text\"></div>\r\n @if (item.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview()\" />\r\n }\r\n </div>\r\n @if (me) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"tool\" (click)=\"$event.stopPropagation()\"><mat-icon>more_vert</mat-icon></button>\r\n }\r\n <mat-menu #menu>\r\n <ng-template matMenuContent>\r\n @if (!item.deleted) {\r\n <button mat-menu-item (click)=\"edit()\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(true)\">{{'Delete'|translate}}</button>\r\n }\r\n @else {\r\n <button mat-menu-item (click)=\"delete(false)\">{{'Undo'|translate}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"column\">\r\n <span [innerHTML]=\"name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <div>\r\n <small class=\"flex\" bizdocTooltip=\"{{item.edited || item.time | amCalendar }}\">{{item.edited || item.time | amTimeAgo}}</small>\r\n @if (item.edited) {\r\n &nbsp;<a (click)=\"edits()\" class=\"modification\">{{'Edited'| translate}}</a>\r\n }\r\n @if (!me) {\r\n &nbsp;<a (click)=\"reply.emit()\" class=\"modification\">{{'Reply'| translate}}</a>\r\n }\r\n </div>\r\n </div>\r\n @if (voting) {\r\n <div class=\"comment-actions\">\r\n @if (item.votes > 0 || item.votes < 0) {\r\n <a [class.score-negative]=\"item.votes < 0\" class=\"comment-score\" dir=\"ltr\" (click)=\"votes()\" [bizdocTooltip]=\"'Votes'|translate\">{{item.votes}}</a>\r\n }\r\n <mat-icon matRipple (click)=\"vote(1, $event)\" [class.voted-true]=\"item.voted===1\">thumb_up_alt</mat-icon>\r\n <mat-icon matRipple (click)=\"vote(-1, $event)\" [class.voted-false]=\"item.voted===-1\">thumb_down_alt</mat-icon>\r\n </div>\r\n }\r\n</div>\r\n<ng-template #previewTemplate>\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i2$3.ɵɵDir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i12.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { 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: 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: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: TaggingPipe, name: "taggingHtml" }] }); }
13564
13567
  }
13565
13568
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CommentComponent, decorators: [{
13566
13569
  type: Component,
13567
13570
  args: [{ standalone: false, selector: 'bizdoc-comment', host: {
13568
13571
  class: 'comment'
13569
- }, template: "<div class=\"row\">\r\n <div class=\"comment-body\" #body>\r\n <div [innerHTML]=\"item.text|taggingHtml:item.resource\" class=\"comment-text\"></div>\r\n @if (item.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview()\" />\r\n }\r\n </div>\r\n @if (me) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"tool\" (click)=\"$event.stopPropagation()\"><mat-icon>more_vert</mat-icon></button>\r\n }\r\n <mat-menu #menu>\r\n <ng-template matMenuContent>\r\n <button mat-menu-item (click)=\"edit()\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete()\">{{'Delete'|translate}}</button>\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"column\">\r\n <span [innerHTML]=\"name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <div>\r\n <small class=\"flex\" bizdocTooltip=\"{{item.edited || item.time | amCalendar }}\">{{item.edited || item.time | amTimeAgo}}</small>\r\n @if (item.edited) {\r\n &nbsp;<a (click)=\"edits()\" class=\"modification\">{{'Edited'| translate}}</a>\r\n }\r\n @if (!me) {\r\n &nbsp;<a (click)=\"reply.emit()\" class=\"modification\">{{'Reply'| translate}}</a>\r\n }\r\n </div>\r\n </div>\r\n @if (voting) {\r\n <div class=\"comment-actions\">\r\n @if (item.votes > 0 || item.votes < 0) {\r\n <a [class.score-negative]=\"item.votes < 0\" class=\"comment-score\" dir=\"ltr\" (click)=\"votes()\" [bizdocTooltip]=\"'Votes'|translate\">{{item.votes}}</a>\r\n }\r\n <button mat-icon-button (click)=\"vote(1, $event)\" [class.voted-true]=\"item.voted===1\" [disableRipple]=\"true\"><mat-icon>thumb_up_alt</mat-icon></button>\r\n <button mat-icon-button (click)=\"vote(-1, $event)\" [class.voted-false]=\"item.voted===-1\" [disableRipple]=\"true\"><mat-icon>thumb_down_alt</mat-icon></button>\r\n </div>\r\n }\r\n</div>\r\n<ng-template #previewTemplate>\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n" }]
13572
+ }, template: "<div class=\"row\">\r\n <div class=\"comment-body\" #body>\r\n <div [innerHTML]=\"item.text|taggingHtml:item.resource\" class=\"comment-text\"></div>\r\n @if (item.image) {\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview()\" />\r\n }\r\n </div>\r\n @if (me) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"tool\" (click)=\"$event.stopPropagation()\"><mat-icon>more_vert</mat-icon></button>\r\n }\r\n <mat-menu #menu>\r\n <ng-template matMenuContent>\r\n @if (!item.deleted) {\r\n <button mat-menu-item (click)=\"edit()\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(true)\">{{'Delete'|translate}}</button>\r\n }\r\n @else {\r\n <button mat-menu-item (click)=\"delete(false)\">{{'Undo'|translate}}</button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"column\">\r\n <span [innerHTML]=\"name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <div>\r\n <small class=\"flex\" bizdocTooltip=\"{{item.edited || item.time | amCalendar }}\">{{item.edited || item.time | amTimeAgo}}</small>\r\n @if (item.edited) {\r\n &nbsp;<a (click)=\"edits()\" class=\"modification\">{{'Edited'| translate}}</a>\r\n }\r\n @if (!me) {\r\n &nbsp;<a (click)=\"reply.emit()\" class=\"modification\">{{'Reply'| translate}}</a>\r\n }\r\n </div>\r\n </div>\r\n @if (voting) {\r\n <div class=\"comment-actions\">\r\n @if (item.votes > 0 || item.votes < 0) {\r\n <a [class.score-negative]=\"item.votes < 0\" class=\"comment-score\" dir=\"ltr\" (click)=\"votes()\" [bizdocTooltip]=\"'Votes'|translate\">{{item.votes}}</a>\r\n }\r\n <mat-icon matRipple (click)=\"vote(1, $event)\" [class.voted-true]=\"item.voted===1\">thumb_up_alt</mat-icon>\r\n <mat-icon matRipple (click)=\"vote(-1, $event)\" [class.voted-false]=\"item.voted===-1\">thumb_down_alt</mat-icon>\r\n </div>\r\n }\r\n</div>\r\n<ng-template #previewTemplate>\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n" }]
13570
13573
  }], ctorParameters: () => [{ type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: ChatInfo }, { type: AccountService }, { type: Popup }, { type: i2$3.Overlay }, { type: MailboxService }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
13571
13574
  type: Inject,
13572
13575
  args: [BIZDOC_CONFIG]
@@ -13635,10 +13638,10 @@ class CommentsComponent {
13635
13638
  });
13636
13639
  this._messaging.commentDelete$.pipe(takeUntil(this._destroy), filter(e => e.id === this.model.documentId)).subscribe(e => {
13637
13640
  const comment = this.model.comments.find(c => c.id === e.id);
13638
- comment.deleted = true;
13641
+ comment.deleted = e.deleted;
13639
13642
  this.change.emit();
13640
13643
  });
13641
- this._textChange.pipe(debounceTime(TYPING_NOTIFY$1), takeUntil(this._destroy)).subscribe(() => this._mailbox.typing(this.model.documentId).subscribe());
13644
+ this._textChange.pipe(debounceTime(TYPING_NOTIFY$1), takeUntil(this._destroy)).subscribe(() => this._mailbox.reportTyping(this.model.documentId).subscribe());
13642
13645
  }
13643
13646
  _formatUserElement(person) {
13644
13647
  if (this._config.chat !== false)
@@ -13679,8 +13682,6 @@ class CommentsComponent {
13679
13682
  }
13680
13683
  return n;
13681
13684
  }
13682
- deleted(item) {
13683
- }
13684
13685
  reply(item) {
13685
13686
  this._replyTo = item;
13686
13687
  this._accounts.get(item.byId || item.userId).
@@ -13708,7 +13709,7 @@ class CommentsComponent {
13708
13709
  onScroll(evt) {
13709
13710
  if (evt.target.scrollTop === 0 && this.model.comments.length && !this._top) {
13710
13711
  const time = this.model.comments.sort((c0, c1) => c0.time > c1.time ? 1 : -1)[0].time;
13711
- this._mailbox.comments(this.model.documentId, time).subscribe(cs => {
13712
+ this._mailbox.listComments(this.model.documentId, time).subscribe(cs => {
13712
13713
  if (cs.length === 0)
13713
13714
  this._top = true;
13714
13715
  else {
@@ -13736,7 +13737,7 @@ class CommentsComponent {
13736
13737
  _viewed() {
13737
13738
  const { viewed, comments, documentId } = this.model;
13738
13739
  comments.length && (!viewed || comments.findIndex(c => c.time > viewed) > -1) &&
13739
- this._mailbox.viewedcomments(documentId).subscribe(e => {
13740
+ this._mailbox.markCommentsViewed(documentId).subscribe(e => {
13740
13741
  this.model.viewed = e.time;
13741
13742
  this.change.emit();
13742
13743
  });
@@ -13772,13 +13773,13 @@ class CommentsComponent {
13772
13773
  window.localStorage.setItem(id, this.input.text);
13773
13774
  }
13774
13775
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CommentsComponent, deps: [{ token: AccountService }, { token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: ChatInfo }, { token: MailboxService }, { token: HubService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
13775
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CommentsComponent, isStandalone: false, selector: "bizdoc-comments", inputs: { model: "model" }, outputs: { change: "change" }, host: { classAttribute: "comments" }, viewQueries: [{ propertyName: "threadElement", first: true, predicate: ["thread"], descendants: true, read: ElementRef, static: true }, { propertyName: "input", first: true, predicate: EditInputComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "@if (!model.comments.length) {\r\n <bizdoc-none icon=\"format_quote\"></bizdoc-none>\r\n}\r\n\r\n<div class=\"column comments-thread\" #thread (scroll)=\"onScroll($event)\">\r\n @for (c of model.comments; track c.id) {\r\n <ng-container role=\"listitem\">\r\n @if (!c.deleted || showDeleted) {\r\n <bizdoc-comment\r\n [model]=\"model\"\r\n [item]=\"c\"\r\n (reply)=\"reply(c)\"\r\n (deleted)=\"deleted(c)\">\r\n </bizdoc-comment>\r\n } @else {\r\n <a (click)=\"showDeleted = true\" class=\"comment-deleted\">{{'Deleted' | translate}}</a>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n\r\n<div class=\"comments-typing\" [style.visibility]=\"typing ? 'visible': 'hidden'\">{{'Typing' | translate : typing}}</div>\r\n\r\n@if (replyName) {\r\n <div class=\"comments-reply\">\r\n <span [innerHTML]=\"replyName | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n &nbsp; <a class=\"modification\" (click)=\"clearReply()\">{{'Cancel'|translate}}</a>\r\n </div>\r\n}\r\n\r\n<bizdoc-edit-text (ok)=\"post($event)\" (change)=\"_textChange.next()\"\r\n placeholder=\"CommentHere\"\r\n [disabled]=\"sending\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\r\n</bizdoc-edit-text>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.comments-thread{flex:1 1 auto;overflow:auto;padding:8px 12px 0}.comment-deleted{align-self:center;font-variant:small-caps}.comments-typing,.comments-reply{font-size:12px;padding:0 8px}.comments-reply .modification{font-size:medium}.modification{font-variant:small-caps}\n"], dependencies: [{ kind: "component", type: EditInputComponent, selector: "bizdoc-edit-text", inputs: ["placeholder", "text", "image", "resource", "disabled", "autofocus", "cache"], outputs: ["change", "ok", "focus", "blur"] }, { kind: "component", type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "component", type: CommentComponent, selector: "bizdoc-comment", inputs: ["model", "item"], outputs: ["deleted", "reply"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }] }); }
13776
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CommentsComponent, isStandalone: false, selector: "bizdoc-comments", inputs: { model: "model" }, outputs: { change: "change" }, host: { classAttribute: "comments" }, viewQueries: [{ propertyName: "threadElement", first: true, predicate: ["thread"], descendants: true, read: ElementRef, static: true }, { propertyName: "input", first: true, predicate: EditInputComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "@if (!model.comments.length) {\r\n <bizdoc-none icon=\"format_quote\"></bizdoc-none>\r\n}\r\n\r\n<div class=\"column comments-thread\" #thread (scroll)=\"onScroll($event)\">\r\n @for (c of model.comments; track c.id) {\r\n <ng-container role=\"listitem\">\r\n @if (!c.deleted || showDeleted) {\r\n <bizdoc-comment\r\n [model]=\"model\"\r\n [item]=\"c\"\r\n (reply)=\"reply(c)\">\r\n </bizdoc-comment>\r\n } @else {\r\n <a (click)=\"showDeleted = true\" class=\"comment-deleted\">{{'Deleted' | translate}}</a>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n\r\n<div class=\"comments-typing\" [style.visibility]=\"typing ? 'visible': 'hidden'\">{{'Typing' | translate : typing}}</div>\r\n\r\n@if (replyName) {\r\n <div class=\"comments-reply\">\r\n <span [innerHTML]=\"replyName | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n &nbsp; <a class=\"modification\" (click)=\"clearReply()\">{{'Cancel'|translate}}</a>\r\n </div>\r\n}\r\n\r\n<bizdoc-edit-text (ok)=\"post($event)\" (change)=\"_textChange.next()\"\r\n placeholder=\"CommentHere\"\r\n [disabled]=\"sending\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\r\n</bizdoc-edit-text>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.comments-thread{flex:1 1 auto;overflow:auto;padding:8px 12px 0}.comment-deleted{align-self:center}.comments-typing,.comments-reply{font-size:12px;padding:0 8px}.comments-reply .modification{font-size:medium}\n"], dependencies: [{ kind: "component", type: EditInputComponent, selector: "bizdoc-edit-text", inputs: ["placeholder", "text", "image", "resource", "disabled", "autofocus", "cache"], outputs: ["change", "ok", "focus", "blur"] }, { kind: "component", type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "component", type: CommentComponent, selector: "bizdoc-comment", inputs: ["model", "item"], outputs: ["deleted", "reply"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }] }); }
13776
13777
  }
13777
13778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CommentsComponent, decorators: [{
13778
13779
  type: Component,
13779
13780
  args: [{ standalone: false, selector: 'bizdoc-comments', host: {
13780
13781
  class: 'comments'
13781
- }, template: "@if (!model.comments.length) {\r\n <bizdoc-none icon=\"format_quote\"></bizdoc-none>\r\n}\r\n\r\n<div class=\"column comments-thread\" #thread (scroll)=\"onScroll($event)\">\r\n @for (c of model.comments; track c.id) {\r\n <ng-container role=\"listitem\">\r\n @if (!c.deleted || showDeleted) {\r\n <bizdoc-comment\r\n [model]=\"model\"\r\n [item]=\"c\"\r\n (reply)=\"reply(c)\"\r\n (deleted)=\"deleted(c)\">\r\n </bizdoc-comment>\r\n } @else {\r\n <a (click)=\"showDeleted = true\" class=\"comment-deleted\">{{'Deleted' | translate}}</a>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n\r\n<div class=\"comments-typing\" [style.visibility]=\"typing ? 'visible': 'hidden'\">{{'Typing' | translate : typing}}</div>\r\n\r\n@if (replyName) {\r\n <div class=\"comments-reply\">\r\n <span [innerHTML]=\"replyName | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n &nbsp; <a class=\"modification\" (click)=\"clearReply()\">{{'Cancel'|translate}}</a>\r\n </div>\r\n}\r\n\r\n<bizdoc-edit-text (ok)=\"post($event)\" (change)=\"_textChange.next()\"\r\n placeholder=\"CommentHere\"\r\n [disabled]=\"sending\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\r\n</bizdoc-edit-text>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.comments-thread{flex:1 1 auto;overflow:auto;padding:8px 12px 0}.comment-deleted{align-self:center;font-variant:small-caps}.comments-typing,.comments-reply{font-size:12px;padding:0 8px}.comments-reply .modification{font-size:medium}.modification{font-variant:small-caps}\n"] }]
13782
+ }, template: "@if (!model.comments.length) {\r\n <bizdoc-none icon=\"format_quote\"></bizdoc-none>\r\n}\r\n\r\n<div class=\"column comments-thread\" #thread (scroll)=\"onScroll($event)\">\r\n @for (c of model.comments; track c.id) {\r\n <ng-container role=\"listitem\">\r\n @if (!c.deleted || showDeleted) {\r\n <bizdoc-comment\r\n [model]=\"model\"\r\n [item]=\"c\"\r\n (reply)=\"reply(c)\">\r\n </bizdoc-comment>\r\n } @else {\r\n <a (click)=\"showDeleted = true\" class=\"comment-deleted\">{{'Deleted' | translate}}</a>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n\r\n<div class=\"comments-typing\" [style.visibility]=\"typing ? 'visible': 'hidden'\">{{'Typing' | translate : typing}}</div>\r\n\r\n@if (replyName) {\r\n <div class=\"comments-reply\">\r\n <span [innerHTML]=\"replyName | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n &nbsp; <a class=\"modification\" (click)=\"clearReply()\">{{'Cancel'|translate}}</a>\r\n </div>\r\n}\r\n\r\n<bizdoc-edit-text (ok)=\"post($event)\" (change)=\"_textChange.next()\"\r\n placeholder=\"CommentHere\"\r\n [disabled]=\"sending\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\r\n</bizdoc-edit-text>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;height:100%}.comments-thread{flex:1 1 auto;overflow:auto;padding:8px 12px 0}.comment-deleted{align-self:center}.comments-typing,.comments-reply{font-size:12px;padding:0 8px}.comments-reply .modification{font-size:medium}\n"] }]
13782
13783
  }], ctorParameters: () => [{ type: AccountService }, { type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: ChatInfo }, { type: MailboxService }, { type: HubService }, { type: undefined, decorators: [{
13783
13784
  type: Inject,
13784
13785
  args: [BIZDOC_CONFIG]
@@ -16713,7 +16714,7 @@ class DocumentResolver {
16713
16714
  this._mailbox = _mailbox;
16714
16715
  }
16715
16716
  onResolve(params) {
16716
- return this._mailbox.info((params['id'].decodeId()));
16717
+ return this._mailbox.getDocumentInfo((params['id'].decodeId()));
16717
16718
  }
16718
16719
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DocumentResolver, deps: [{ token: MailboxService }], target: i0.ɵɵFactoryTarget.Injectable }); }
16719
16720
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DocumentResolver }); }
@@ -16917,7 +16918,7 @@ class ScheduleViewComponent {
16917
16918
  }
16918
16919
  this.starting = dates[0],
16919
16920
  this.ending = dates[dates.length - 1];
16920
- this._mailbox.events(this.starting, this.ending).subscribe({
16921
+ this._mailbox.listEvents(this.starting, this.ending).subscribe({
16921
16922
  next: r => {
16922
16923
  const data = r.map(e => {
16923
16924
  return {
@@ -16935,7 +16936,7 @@ class ScheduleViewComponent {
16935
16936
  });
16936
16937
  }
16937
16938
  drag(_) {
16938
- this._mailbox.changeEvent(1, { starting: undefined }).subscribe({ error: () => this._sb.error() });
16939
+ this._mailbox.updateEvent(1, { starting: undefined }).subscribe({ error: () => this._sb.error() });
16939
16940
  }
16940
16941
  nav(e) {
16941
16942
  switch (e.action) {
@@ -19527,11 +19528,11 @@ class HomeBase {
19527
19528
  window.dispatchEvent(new Event('resize'));
19528
19529
  }
19529
19530
  mails() {
19530
- this._session.inboxTouch();
19531
+ this._session.markInboxAsTouched();
19531
19532
  }
19532
19533
  notifs(_) {
19533
19534
  this._session.profile.notifications.length &&
19534
- this._session.notificationsTouch();
19535
+ this._session.markNotificationsAsTouched();
19535
19536
  }
19536
19537
  _is(name, val) {
19537
19538
  if (val === undefined)
@@ -19627,11 +19628,11 @@ class QuickNotificationsComponent extends NotificationsComponentBase {
19627
19628
  this._service.mute(item.id, mute);
19628
19629
  }
19629
19630
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: QuickNotificationsComponent, deps: [{ token: PopupRef }, { token: RouterImpl }], target: i0.ɵɵFactoryTarget.Component }); }
19630
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: QuickNotificationsComponent, isStandalone: false, selector: "bizdoc-notifications", usesInheritance: true, ngImport: i0, template: "<mat-nav-list role=\"list\">\r\n <!--dense-->\r\n @for (n of notifications | sort: 'sent' : 'desc' | slice:0:9; track n; let i = $index) {\r\n <mat-list-item role=\"listitem\" class=\"item\" [class.read]=\"n.read\" (click)=\"open(n, $event)\">\r\n <h3 *ngComponentOutlet=\"n.comp; injector: n.injector\" matListItemTitle></h3>\r\n <span matListItemLine [bizdocTooltip]=\"n.sent | amCalendar\">{{n.sent | amTimeAgo }}</span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" [matMenuTriggerData]=\"{muted: false}\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-template matMenuContent let-muted=\"muted\">\r\n <button mat-menu-item (click)=\"mute(n, true)\">{{ (!(muted | async) ? 'Mute': 'Unmute') | translate}}</button>\r\n </ng-template>\r\n </mat-menu>\r\n </mat-list-item>\r\n }\r\n</mat-nav-list>\r\n<div class=\"tools row\">\r\n <a (click)=\"all()\">{{'ShowAll'|translate}}</a>&nbsp;\r\n <span class=\"divider\"></span>\r\n <a (click)='options()'>{{'Options'|translate}}</a>\r\n</div>\r\n", styles: [".item .tool{opacity:.1}.item:hover .tool{opacity:1}.tools{font-variant-caps:all-small-caps;font-size:medium;padding:8px}\n"], dependencies: [{ kind: "directive", type: i9.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: i2$5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$5.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i2$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", 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.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: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.SlicePipe, name: "slice" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: ArraySortPipe, name: "sort" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
19631
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: QuickNotificationsComponent, isStandalone: false, selector: "bizdoc-notifications", usesInheritance: true, ngImport: i0, template: "<mat-nav-list role=\"list\">\r\n <!--dense-->\r\n @for (n of notifications | sort: 'sent' : 'desc' | slice:0:9; track n; let i = $index) {\r\n <mat-list-item role=\"listitem\" class=\"item\" [class.read]=\"n.read\" (click)=\"open(n, $event)\">\r\n <h3 *ngComponentOutlet=\"n.comp; injector: n.injector\" matListItemTitle></h3>\r\n <span matListItemLine [bizdocTooltip]=\"n.sent | amCalendar\">{{n.sent | amTimeAgo }}</span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" [matMenuTriggerData]=\"{muted: false}\"\r\n matListItemMeta class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-template matMenuContent let-muted=\"muted\">\r\n <button mat-menu-item (click)=\"mute(n, true)\">{{ (!(muted | async) ? 'Mute': 'Unmute') | translate}}</button>\r\n </ng-template>\r\n </mat-menu>\r\n </mat-list-item>\r\n }\r\n</mat-nav-list>\r\n<div class=\"tools row\">\r\n <a (click)=\"all()\">{{'ShowAll'|translate}}</a>&nbsp;\r\n <span class=\"divider\"></span>\r\n <a (click)='options()'>{{'Options'|translate}}</a>\r\n</div>\r\n", styles: [".item .tool{opacity:.1}.item:hover .tool{opacity:1}.tools{font-variant-caps:all-small-caps;font-size:medium;padding:8px}\n"], dependencies: [{ kind: "directive", type: i9.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: i2$5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$5.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i2$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i2$5.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", 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.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: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.SlicePipe, name: "slice" }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: ArraySortPipe, name: "sort" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
19631
19632
  }
19632
19633
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: QuickNotificationsComponent, decorators: [{
19633
19634
  type: Component,
19634
- args: [{ standalone: false, selector: 'bizdoc-notifications', template: "<mat-nav-list role=\"list\">\r\n <!--dense-->\r\n @for (n of notifications | sort: 'sent' : 'desc' | slice:0:9; track n; let i = $index) {\r\n <mat-list-item role=\"listitem\" class=\"item\" [class.read]=\"n.read\" (click)=\"open(n, $event)\">\r\n <h3 *ngComponentOutlet=\"n.comp; injector: n.injector\" matListItemTitle></h3>\r\n <span matListItemLine [bizdocTooltip]=\"n.sent | amCalendar\">{{n.sent | amTimeAgo }}</span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" [matMenuTriggerData]=\"{muted: false}\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-template matMenuContent let-muted=\"muted\">\r\n <button mat-menu-item (click)=\"mute(n, true)\">{{ (!(muted | async) ? 'Mute': 'Unmute') | translate}}</button>\r\n </ng-template>\r\n </mat-menu>\r\n </mat-list-item>\r\n }\r\n</mat-nav-list>\r\n<div class=\"tools row\">\r\n <a (click)=\"all()\">{{'ShowAll'|translate}}</a>&nbsp;\r\n <span class=\"divider\"></span>\r\n <a (click)='options()'>{{'Options'|translate}}</a>\r\n</div>\r\n", styles: [".item .tool{opacity:.1}.item:hover .tool{opacity:1}.tools{font-variant-caps:all-small-caps;font-size:medium;padding:8px}\n"] }]
19635
+ args: [{ standalone: false, selector: 'bizdoc-notifications', template: "<mat-nav-list role=\"list\">\r\n <!--dense-->\r\n @for (n of notifications | sort: 'sent' : 'desc' | slice:0:9; track n; let i = $index) {\r\n <mat-list-item role=\"listitem\" class=\"item\" [class.read]=\"n.read\" (click)=\"open(n, $event)\">\r\n <h3 *ngComponentOutlet=\"n.comp; injector: n.injector\" matListItemTitle></h3>\r\n <span matListItemLine [bizdocTooltip]=\"n.sent | amCalendar\">{{n.sent | amTimeAgo }}</span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" [matMenuTriggerData]=\"{muted: false}\"\r\n matListItemMeta class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-template matMenuContent let-muted=\"muted\">\r\n <button mat-menu-item (click)=\"mute(n, true)\">{{ (!(muted | async) ? 'Mute': 'Unmute') | translate}}</button>\r\n </ng-template>\r\n </mat-menu>\r\n </mat-list-item>\r\n }\r\n</mat-nav-list>\r\n<div class=\"tools row\">\r\n <a (click)=\"all()\">{{'ShowAll'|translate}}</a>&nbsp;\r\n <span class=\"divider\"></span>\r\n <a (click)='options()'>{{'Options'|translate}}</a>\r\n</div>\r\n", styles: [".item .tool{opacity:.1}.item:hover .tool{opacity:1}.tools{font-variant-caps:all-small-caps;font-size:medium;padding:8px}\n"] }]
19635
19636
  }], ctorParameters: () => [{ type: PopupRef }, { type: RouterImpl }] });
19636
19637
 
19637
19638
  let DocumentListingComponent = class DocumentListingComponent {
@@ -19806,7 +19807,7 @@ class SearchService {
19806
19807
  });
19807
19808
  });
19808
19809
  // senders from server
19809
- this._mailbox.senders(value).subscribe(r => r.forEach(s => results.push({
19810
+ this._mailbox.listSenders(value).subscribe(r => r.forEach(s => results.push({
19810
19811
  portal: new ComponentPortal(PathListingComponent),
19811
19812
  model: {
19812
19813
  path: ['mailbox', 'f', 'ib'],
@@ -19818,7 +19819,7 @@ class SearchService {
19818
19819
  })));
19819
19820
  // events
19820
19821
  const today = new Date();
19821
- this._mailbox.events(today, new Date(today.valueOf() + 604800000), value).
19822
+ this._mailbox.listEvents(today, new Date(today.valueOf() + 604800000), value).
19822
19823
  subscribe(r => r.forEach(e => results.push({
19823
19824
  portal: new ComponentPortal(PathListingComponent),
19824
19825
  model: {
@@ -21461,7 +21462,7 @@ class HomeComponent extends HomeBase {
21461
21462
  }
21462
21463
  notifs(evt) {
21463
21464
  this.profile.notifications.length &&
21464
- this._session.notificationsTouch();
21465
+ this._session.markNotificationsAsTouched();
21465
21466
  this._popup.open(QuickNotificationsComponent, evt.target, { position: 'below' });
21466
21467
  super.notifs();
21467
21468
  }
@@ -22545,7 +22546,7 @@ class DocumentResolveService {
22545
22546
  return of(item);
22546
22547
  }
22547
22548
  const id = route.paramMap.get('id').decodeId();
22548
- return this._mailbox.info(id).pipe(catchError$1(e => {
22549
+ return this._mailbox.getDocumentInfo(id).pipe(catchError$1(e => {
22549
22550
  this._sb.error();
22550
22551
  throw e;
22551
22552
  }));
@@ -23430,8 +23431,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
23430
23431
  }] } });
23431
23432
 
23432
23433
  let DateRangeField = class DateRangeField {
23434
+ set dense(val) {
23435
+ if (val)
23436
+ this.subscriptSizing = 'dynamic';
23437
+ }
23433
23438
  constructor(_fb) {
23434
23439
  this._fb = _fb;
23440
+ this.subscriptSizing = 'fixed';
23435
23441
  this.isMobile = isMobile();
23436
23442
  this.control = this._fb.group({
23437
23443
  start: this._fb.control(null),
@@ -23449,14 +23455,14 @@ let DateRangeField = class DateRangeField {
23449
23455
  this.inp.nativeElement.focus();
23450
23456
  }
23451
23457
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DateRangeField, deps: [{ token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
23452
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: DateRangeField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "inp", first: true, predicate: ["inp"], descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance>\r\n <mat-label>{{label }}</mat-label>\r\n <mat-date-range-input [formGroup]=\"control\" [rangePicker]=\"picker\"\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\">\r\n <input matStartDate formControlName=\"start\" [placeholder]=\"startPlaceholder\" #inp>\r\n <input matEndDate formControlName=\"end\" [placeholder]=\"endPlaceholder\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n @if (hint) {\r\n <mat-hint> {{ hint }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n} @else {\r\n<span>{{control.controls.start.value|dateRange:control.controls.end.value}}</span>\r\n}\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$4.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$4.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: DateRangePipe, name: "dateRange" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23458
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: DateRangeField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "inp", first: true, predicate: ["inp"], descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label }}</mat-label>\r\n <mat-date-range-input [formGroup]=\"control\" [rangePicker]=\"picker\"\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\">\r\n <input matStartDate formControlName=\"start\" [placeholder]=\"startPlaceholder\" #inp>\r\n <input matEndDate formControlName=\"end\" [placeholder]=\"endPlaceholder\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n @if (hint) {\r\n <mat-hint> {{ hint }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n} @else {\r\n<span>{{control.controls.start.value|dateRange:control.controls.end.value}}</span>\r\n}\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$4.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$4.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: DateRangePipe, name: "dateRange" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23453
23459
  };
23454
23460
  DateRangeField = __decorate([
23455
23461
  BizDoc({ selector: 'date-range-control' })
23456
23462
  ], DateRangeField);
23457
23463
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DateRangeField, decorators: [{
23458
23464
  type: Component,
23459
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance>\r\n <mat-label>{{label }}</mat-label>\r\n <mat-date-range-input [formGroup]=\"control\" [rangePicker]=\"picker\"\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\">\r\n <input matStartDate formControlName=\"start\" [placeholder]=\"startPlaceholder\" #inp>\r\n <input matEndDate formControlName=\"end\" [placeholder]=\"endPlaceholder\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n @if (hint) {\r\n <mat-hint> {{ hint }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n} @else {\r\n<span>{{control.controls.start.value|dateRange:control.controls.end.value}}</span>\r\n}\r\n" }]
23465
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label }}</mat-label>\r\n <mat-date-range-input [formGroup]=\"control\" [rangePicker]=\"picker\"\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\">\r\n <input matStartDate formControlName=\"start\" [placeholder]=\"startPlaceholder\" #inp>\r\n <input matEndDate formControlName=\"end\" [placeholder]=\"endPlaceholder\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n @if (hint) {\r\n <mat-hint> {{ hint }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n} @else {\r\n<span>{{control.controls.start.value|dateRange:control.controls.end.value}}</span>\r\n}\r\n" }]
23460
23466
  }], ctorParameters: () => [{ type: i1$2.FormBuilder }], propDecorators: { inp: [{
23461
23467
  type: ViewChild,
23462
23468
  args: ['inp']
@@ -23464,9 +23470,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
23464
23470
 
23465
23471
  let DateField = class DateField {
23466
23472
  constructor() {
23473
+ this.subscriptSizing = 'fixed';
23467
23474
  this.isMobile = isMobile();
23468
23475
  this.control = new FormControl();
23469
23476
  }
23477
+ set dense(val) {
23478
+ if (val)
23479
+ this.subscriptSizing = 'dynamic';
23480
+ }
23470
23481
  focus() { this.input.focus(); }
23471
23482
  ngOnInit() {
23472
23483
  this.required && this.control.addValidators(Validators.required);
@@ -23474,14 +23485,14 @@ let DateField = class DateField {
23474
23485
  this.max && this.control.addValidators(Validators.max(this.max));
23475
23486
  }
23476
23487
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DateField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23477
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: DateField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <input matInput [placeholder]=\"placeholder|localizedString\" [formControl]=control\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker [touchUi]=\"isMobile\"></mat-datepicker>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n @if (control.value) {\r\n <span>{{control.value | amDateFormat: 'll'}}</span>\r\n }\r\n }\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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: "component", type: i2$4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23488
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: DateField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <input matInput [placeholder]=\"placeholder|localizedString\" [formControl]=control\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker [touchUi]=\"isMobile\"></mat-datepicker>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n }\r\n@else {\r\n @if (control.value) {\r\n<span>{{control.value | amDateFormat: 'll'}}</span>\r\n }\r\n}\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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: "component", type: i2$4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23478
23489
  };
23479
23490
  DateField = __decorate([
23480
23491
  BizDoc({ selector: 'date-control' })
23481
23492
  ], DateField);
23482
23493
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DateField, decorators: [{
23483
23494
  type: Component,
23484
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <input matInput [placeholder]=\"placeholder|localizedString\" [formControl]=control\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker [touchUi]=\"isMobile\"></mat-datepicker>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n @if (control.value) {\r\n <span>{{control.value | amDateFormat: 'll'}}</span>\r\n }\r\n }\r\n" }]
23495
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <input matInput [placeholder]=\"placeholder|localizedString\" [formControl]=control\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker [touchUi]=\"isMobile\"></mat-datepicker>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n }\r\n@else {\r\n @if (control.value) {\r\n<span>{{control.value | amDateFormat: 'll'}}</span>\r\n }\r\n}\r\n" }]
23485
23496
  }], propDecorators: { input: [{
23486
23497
  type: ViewChild,
23487
23498
  args: [MatInput]
@@ -23520,8 +23531,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
23520
23531
 
23521
23532
  let InputField = class InputField {
23522
23533
  constructor() {
23534
+ this.subscriptSizing = 'fixed';
23523
23535
  this.control = new FormControl();
23524
23536
  }
23537
+ set dense(val) {
23538
+ if (val)
23539
+ this.subscriptSizing = 'dynamic';
23540
+ }
23525
23541
  ngOnInit() {
23526
23542
  switch (this.type) {
23527
23543
  case FieldKind.EmailAddress:
@@ -23546,14 +23562,14 @@ let InputField = class InputField {
23546
23562
  }
23547
23563
  focus() { this.input.focus(); }
23548
23564
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: InputField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23549
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: InputField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <input matInput [formControl]=control [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [minlength]=\"minLength\" [maxlength]=\"maxLength\" [pattern]=\"pattern\" />\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (control.hasError('minLength')) {\r\n <mat-error [innerHTML]=\"'MinLengthErr'|translate:(label|localizedString):minLength\"></mat-error>\r\n }\r\n @if (control.hasError('maxLength')) {\r\n <mat-error [innerHTML]=\"'MaxLengthErr'|translate:(label|localizedString):maxLength\"></mat-error>\r\n }\r\n @if (control.hasError('email')) {\r\n <mat-error [innerHTML]=\"'EmailErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (control.hasError('pattern')) {\r\n <mat-error [innerHTML]=\"'PatternErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n @switch (kind) {\r\n @case ('PhoneNumber') {\r\n <a [href]=\"'tel:'+control.value\">{{control.value}}</a>\r\n }\r\n @case ('EmailAddress') {\r\n <a [href]=\"control.value\">{{control.value}}</a>\r\n }\r\n @case ('Url') {\r\n <a [href]=\"control.value\">{{control.value}}</a>\r\n }\r\n @case ('Password') {\r\n <span>\r\n </span>\r\n }\r\n @default {\r\n <span>{{control.value}}</span>\r\n }\r\n }\r\n }\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23565
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: InputField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <input matInput [formControl]=control [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [minlength]=\"minLength\" [maxlength]=\"maxLength\" [pattern]=\"pattern\" />\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (control.hasError('minLength')) {\r\n <mat-error [innerHTML]=\"'MinLengthErr'|translate:(label|localizedString):minLength\"></mat-error>\r\n }\r\n @if (control.hasError('maxLength')) {\r\n <mat-error [innerHTML]=\"'MaxLengthErr'|translate:(label|localizedString):maxLength\"></mat-error>\r\n }\r\n @if (control.hasError('email')) {\r\n <mat-error [innerHTML]=\"'EmailErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (control.hasError('pattern')) {\r\n <mat-error [innerHTML]=\"'PatternErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n } @else {\r\n @switch (kind) {\r\n @case ('PhoneNumber') {\r\n<a [href]=\"'tel:'+control.value\">{{control.value}}</a>\r\n }\r\n @case ('EmailAddress') {\r\n<a [href]=\"control.value\">{{control.value}}</a>\r\n }\r\n @case ('Url') {\r\n<a [href]=\"control.value\">{{control.value}}</a>\r\n }\r\n @case ('Password') {\r\n<span>\r\n</span>\r\n }\r\n @default {\r\n<span>{{control.value}}</span>\r\n }\r\n }\r\n }\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23550
23566
  };
23551
23567
  InputField = __decorate([
23552
23568
  BizDoc({ selector: 'text-control' })
23553
23569
  ], InputField);
23554
23570
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: InputField, decorators: [{
23555
23571
  type: Component,
23556
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <input matInput [formControl]=control [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [minlength]=\"minLength\" [maxlength]=\"maxLength\" [pattern]=\"pattern\" />\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (control.hasError('minLength')) {\r\n <mat-error [innerHTML]=\"'MinLengthErr'|translate:(label|localizedString):minLength\"></mat-error>\r\n }\r\n @if (control.hasError('maxLength')) {\r\n <mat-error [innerHTML]=\"'MaxLengthErr'|translate:(label|localizedString):maxLength\"></mat-error>\r\n }\r\n @if (control.hasError('email')) {\r\n <mat-error [innerHTML]=\"'EmailErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (control.hasError('pattern')) {\r\n <mat-error [innerHTML]=\"'PatternErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n @switch (kind) {\r\n @case ('PhoneNumber') {\r\n <a [href]=\"'tel:'+control.value\">{{control.value}}</a>\r\n }\r\n @case ('EmailAddress') {\r\n <a [href]=\"control.value\">{{control.value}}</a>\r\n }\r\n @case ('Url') {\r\n <a [href]=\"control.value\">{{control.value}}</a>\r\n }\r\n @case ('Password') {\r\n <span>\r\n </span>\r\n }\r\n @default {\r\n <span>{{control.value}}</span>\r\n }\r\n }\r\n }\r\n" }]
23572
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <input matInput [formControl]=control [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [minlength]=\"minLength\" [maxlength]=\"maxLength\" [pattern]=\"pattern\" />\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (control.hasError('minLength')) {\r\n <mat-error [innerHTML]=\"'MinLengthErr'|translate:(label|localizedString):minLength\"></mat-error>\r\n }\r\n @if (control.hasError('maxLength')) {\r\n <mat-error [innerHTML]=\"'MaxLengthErr'|translate:(label|localizedString):maxLength\"></mat-error>\r\n }\r\n @if (control.hasError('email')) {\r\n <mat-error [innerHTML]=\"'EmailErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (control.hasError('pattern')) {\r\n <mat-error [innerHTML]=\"'PatternErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n } @else {\r\n @switch (kind) {\r\n @case ('PhoneNumber') {\r\n<a [href]=\"'tel:'+control.value\">{{control.value}}</a>\r\n }\r\n @case ('EmailAddress') {\r\n<a [href]=\"control.value\">{{control.value}}</a>\r\n }\r\n @case ('Url') {\r\n<a [href]=\"control.value\">{{control.value}}</a>\r\n }\r\n @case ('Password') {\r\n<span>\r\n</span>\r\n }\r\n @default {\r\n<span>{{control.value}}</span>\r\n }\r\n }\r\n }\r\n" }]
23557
23573
  }], propDecorators: { input: [{
23558
23574
  type: ViewChild,
23559
23575
  args: [MatInput]
@@ -23561,8 +23577,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
23561
23577
 
23562
23578
  let NumericField = class NumericField {
23563
23579
  constructor() {
23580
+ this.subscriptSizing = 'fixed';
23564
23581
  this.control = new FormControl();
23565
23582
  }
23583
+ set dense(val) {
23584
+ if (val)
23585
+ this.subscriptSizing = 'dynamic';
23586
+ }
23566
23587
  focus() { this.input.focus(); }
23567
23588
  ngOnInit() {
23568
23589
  this.required && this.control.addValidators(Validators.required);
@@ -23570,14 +23591,14 @@ let NumericField = class NumericField {
23570
23591
  this.max && this.control.addValidators(Validators.max(this.max));
23571
23592
  }
23572
23593
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: NumericField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23573
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: NumericField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <input matInput type=\"number\" [formControl]=control [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\" [pattern]=\"pattern\" />\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n {{control.value|number}}\r\n }\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "pipe", type: i9.DecimalPipe, name: "number" }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23594
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: NumericField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <input matInput type=\"number\" [formControl]=control [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\" [pattern]=\"pattern\" />\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n } @else {\r\n{{control.value|number}}\r\n }\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "pipe", type: i9.DecimalPipe, name: "number" }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23574
23595
  };
23575
23596
  NumericField = __decorate([
23576
23597
  BizDoc({ selector: 'number-control' })
23577
23598
  ], NumericField);
23578
23599
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: NumericField, decorators: [{
23579
23600
  type: Component,
23580
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <input matInput type=\"number\" [formControl]=control [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\" [pattern]=\"pattern\" />\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n {{control.value|number}}\r\n }\r\n" }]
23601
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n<mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <input matInput type=\"number\" [formControl]=control [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [min]=\"min\" [max]=\"max\" [pattern]=\"pattern\" />\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n</mat-form-field>\r\n } @else {\r\n{{control.value|number}}\r\n }\r\n" }]
23581
23602
  }], propDecorators: { input: [{
23582
23603
  type: ViewChild,
23583
23604
  args: [MatInput]
@@ -23586,20 +23607,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
23586
23607
  let SelectField = class SelectField extends OptionsControlField {
23587
23608
  constructor() {
23588
23609
  super(...arguments);
23610
+ this.subscriptSizing = 'fixed';
23589
23611
  this.control = new FormControl();
23590
23612
  }
23613
+ set dense(val) {
23614
+ if (val)
23615
+ this.subscriptSizing = 'dynamic';
23616
+ }
23591
23617
  focus() {
23592
23618
  this.select.focus();
23593
23619
  }
23594
23620
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SelectField, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
23595
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SelectField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "select", first: true, predicate: MatSelect, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <mat-select [placeholder]=\"placeholder\" [formControl]=control\r\n [required]=\"required\" [multiple]=\"multiple\">\r\n @for (o of options; track o) {\r\n <mat-option [value]=\"o.key\">{{o.value}}</mat-option>\r\n }\r\n </mat-select>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n @if (control.value) {\r\n <span>\r\n @switch (multiple) {\r\n @case (true) {\r\n @for (o of control.value; track o; let index = $index) {\r\n {{optionOf(o)|localizedString}}\r\n @if (index>0) {\r\n ,&nbsp;\r\n }\r\n }\r\n }\r\n @default {\r\n {{optionOf(control.value)|localizedString}}\r\n }\r\n }\r\n </span>\r\n }\r\n}\r\n", dependencies: [{ 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: "component", type: i2$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i3$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23621
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SelectField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "select", first: true, predicate: MatSelect, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=\"appearance\" [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <mat-select [placeholder]=\"placeholder\" [formControl]=control\r\n [required]=\"required\" [multiple]=\"multiple\">\r\n @for (o of options; track o) {\r\n <mat-option [value]=\"o.key\">{{o.value}}</mat-option>\r\n }\r\n </mat-select>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n @if (control.value) {\r\n <span>\r\n @switch (multiple) {\r\n @case (true) {\r\n @for (o of control.value; track o; let index = $index) {\r\n {{optionOf(o)|localizedString}}\r\n @if (index>0) {\r\n ,&nbsp;\r\n }\r\n }\r\n }\r\n @default {\r\n {{optionOf(control.value)|localizedString}}\r\n }\r\n }\r\n </span>\r\n }\r\n}\r\n", dependencies: [{ 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: "component", type: i2$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i3$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
23596
23622
  };
23597
23623
  SelectField = __decorate([
23598
23624
  BizDoc({ selector: 'select-control' })
23599
23625
  ], SelectField);
23600
23626
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SelectField, decorators: [{
23601
23627
  type: Component,
23602
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <mat-select [placeholder]=\"placeholder\" [formControl]=control\r\n [required]=\"required\" [multiple]=\"multiple\">\r\n @for (o of options; track o) {\r\n <mat-option [value]=\"o.key\">{{o.value}}</mat-option>\r\n }\r\n </mat-select>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n @if (control.value) {\r\n <span>\r\n @switch (multiple) {\r\n @case (true) {\r\n @for (o of control.value; track o; let index = $index) {\r\n {{optionOf(o)|localizedString}}\r\n @if (index>0) {\r\n ,&nbsp;\r\n }\r\n }\r\n }\r\n @default {\r\n {{optionOf(control.value)|localizedString}}\r\n }\r\n }\r\n </span>\r\n }\r\n}\r\n" }]
23628
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=\"appearance\" [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <mat-select [placeholder]=\"placeholder\" [formControl]=control\r\n [required]=\"required\" [multiple]=\"multiple\">\r\n @for (o of options; track o) {\r\n <mat-option [value]=\"o.key\">{{o.value}}</mat-option>\r\n }\r\n </mat-select>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n @if (control.value) {\r\n <span>\r\n @switch (multiple) {\r\n @case (true) {\r\n @for (o of control.value; track o; let index = $index) {\r\n {{optionOf(o)|localizedString}}\r\n @if (index>0) {\r\n ,&nbsp;\r\n }\r\n }\r\n }\r\n @default {\r\n {{optionOf(control.value)|localizedString}}\r\n }\r\n }\r\n </span>\r\n }\r\n}\r\n" }]
23603
23629
  }], propDecorators: { select: [{
23604
23630
  type: ViewChild,
23605
23631
  args: [MatSelect]
@@ -23772,7 +23798,7 @@ class FileInput {
23772
23798
  const accept = item.isImage ? 'image/*' :
23773
23799
  '.' + AttachmentInfo.fileExt(item.fileName) + ',' + item.contentType;
23774
23800
  this._promptFileInput({ multiple: false, accept }).then(files => {
23775
- this._mailbox.checkIn(this._model.id, this._model.version, item.id, files[0]).
23801
+ this._mailbox.checkInAttachment(this._model.id, this._model.version, item.id, files[0]).
23776
23802
  subscribe({
23777
23803
  next: a => {
23778
23804
  delete item.checkedOut;
@@ -23790,7 +23816,7 @@ class FileInput {
23790
23816
  });
23791
23817
  }
23792
23818
  checkOut(item) {
23793
- this._mailbox.checkOut(this._model.id, this._model.version, item.id).
23819
+ this._mailbox.checkOutAttachment(this._model.id, this._model.version, item.id).
23794
23820
  subscribe(async () => {
23795
23821
  item.checkedOut = true;
23796
23822
  await this.download(item);
@@ -23900,7 +23926,7 @@ class FileInput {
23900
23926
  // is checked out
23901
23927
  if (item.checkedOut) {
23902
23928
  // check in
23903
- let observable = this._mailbox.checkIn(this._model.id, this._model.version, item.id, file).
23929
+ let observable = this._mailbox.checkInAttachment(this._model.id, this._model.version, item.id, file).
23904
23930
  pipe(
23905
23931
  //TODO:
23906
23932
  // reportProgress(item),
@@ -24061,8 +24087,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
24061
24087
 
24062
24088
  let TextareaField = class TextareaField {
24063
24089
  constructor() {
24090
+ this.subscriptSizing = 'fixed';
24064
24091
  this.control = new FormControl();
24065
24092
  }
24093
+ set dense(val) {
24094
+ if (val)
24095
+ this.subscriptSizing = 'dynamic';
24096
+ }
24066
24097
  ngOnInit() {
24067
24098
  this.minLength && this.control.addValidators(Validators.minLength(this.minLength));
24068
24099
  this.maxLength && this.control.addValidators(Validators.maxLength(this.maxLength));
@@ -24070,14 +24101,14 @@ let TextareaField = class TextareaField {
24070
24101
  }
24071
24102
  focus() { this.input.focus(); }
24072
24103
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TextareaField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24073
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TextareaField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance class=\"flex\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <textarea matInput [formControl]=control cdkTextareaAutosize [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [minlength]=\"minLength\" [maxlength]=\"maxLength\" [pattern]=\"pattern\"></textarea>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (maxLength) {\r\n <mat-hint align=\"end\">{{control.value?.length || 0}} / {{maxLength}}</mat-hint>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n <p [innerHTML]=\"control.value\"></p>\r\n}\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i6.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
24104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TextareaField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <textarea matInput [formControl]=control cdkTextareaAutosize [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [minlength]=\"minLength\" [maxlength]=\"maxLength\" [pattern]=\"pattern\"></textarea>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (maxLength) {\r\n <mat-hint align=\"end\">{{control.value?.length || 0}} / {{maxLength}}</mat-hint>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n <p [innerHTML]=\"control.value\"></p>\r\n}\r\n", dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i6.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
24074
24105
  };
24075
24106
  TextareaField = __decorate([
24076
24107
  BizDoc({ selector: 'textarea-control' })
24077
24108
  ], TextareaField);
24078
24109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TextareaField, decorators: [{
24079
24110
  type: Component,
24080
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance class=\"flex\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <textarea matInput [formControl]=control cdkTextareaAutosize [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [minlength]=\"minLength\" [maxlength]=\"maxLength\" [pattern]=\"pattern\"></textarea>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (maxLength) {\r\n <mat-hint align=\"end\">{{control.value?.length || 0}} / {{maxLength}}</mat-hint>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n <p [innerHTML]=\"control.value\"></p>\r\n}\r\n" }]
24111
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <textarea matInput [formControl]=control cdkTextareaAutosize [placeholder]=\"placeholder|localizedString\"\r\n [required]=\"required\" [minlength]=\"minLength\" [maxlength]=\"maxLength\" [pattern]=\"pattern\"></textarea>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n @if (maxLength) {\r\n <mat-hint align=\"end\">{{control.value?.length || 0}} / {{maxLength}}</mat-hint>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n <p [innerHTML]=\"control.value\"></p>\r\n}\r\n" }]
24081
24112
  }], propDecorators: { input: [{
24082
24113
  type: ViewChild,
24083
24114
  args: [MatInput]
@@ -24340,53 +24371,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
24340
24371
 
24341
24372
  let AddressField = class AddressField {
24342
24373
  constructor() {
24374
+ this.subscriptSizing = 'fixed';
24343
24375
  this.control = new FormControl(null);
24344
24376
  }
24377
+ set dense(val) {
24378
+ if (val)
24379
+ this.subscriptSizing = 'dynamic';
24380
+ }
24345
24381
  focus() { this.input.focus(); }
24346
24382
  ngOnInit() {
24347
24383
  this.required && this.control.addValidators(Validators.required);
24348
24384
  }
24349
24385
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AddressField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24350
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AddressField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: AddressInput, descendants: true }], ngImport: i0, template: `@if (mode==='compose') {
24351
- <mat-form-field [appearance]=appearance>
24352
- <mat-label>{{label|localizedString}}</mat-label>
24353
- @if (hint) {
24354
- <mat-hint> {{ hint |localizedString}}</mat-hint>
24355
- }
24356
- <bizdoc-address [formControl]=control [placeholder]="placeholder|localizedString"></bizdoc-address>
24357
- @if (control.hasError('required')) {
24358
- <mat-error [innerHTML]="'RequiredErr'|translate:(label|localizedString)"></mat-error>
24359
- }
24360
- </mat-form-field>
24361
- } @else {
24362
- {{control.value}}
24363
- }
24364
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: AddressInput, selector: "bizdoc-address", inputs: ["debounce", "location", "country", "placeholder", "required", "disabled", "value"], outputs: ["optionSelected"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
24386
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AddressField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: AddressInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n <bizdoc-address [formControl]=control [placeholder]=\"placeholder|localizedString\"></bizdoc-address>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n {{control.value}}\r\n}\r\n", dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: AddressInput, selector: "bizdoc-address", inputs: ["debounce", "location", "country", "placeholder", "required", "disabled", "value"], outputs: ["optionSelected"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
24365
24387
  };
24366
24388
  AddressField = __decorate([
24367
24389
  BizDoc({ selector: 'address-control' })
24368
24390
  ], AddressField);
24369
24391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AddressField, decorators: [{
24370
24392
  type: Component,
24371
- args: [{
24372
- standalone: false,
24373
- template: `@if (mode==='compose') {
24374
- <mat-form-field [appearance]=appearance>
24375
- <mat-label>{{label|localizedString}}</mat-label>
24376
- @if (hint) {
24377
- <mat-hint> {{ hint |localizedString}}</mat-hint>
24378
- }
24379
- <bizdoc-address [formControl]=control [placeholder]="placeholder|localizedString"></bizdoc-address>
24380
- @if (control.hasError('required')) {
24381
- <mat-error [innerHTML]="'RequiredErr'|translate:(label|localizedString)"></mat-error>
24382
- }
24383
- </mat-form-field>
24384
- } @else {
24385
- {{control.value}}
24386
- }
24387
- `,
24388
- host: { class: 'field' }
24389
- }]
24393
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n <bizdoc-address [formControl]=control [placeholder]=\"placeholder|localizedString\"></bizdoc-address>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n {{control.value}}\r\n}\r\n" }]
24390
24394
  }], propDecorators: { input: [{
24391
24395
  type: ViewChild,
24392
24396
  args: [AddressInput]
@@ -24575,7 +24579,7 @@ let ActionsWidget = class ActionsWidget {
24575
24579
  }
24576
24580
  _draw() {
24577
24581
  this.chart?.destroy();
24578
- this._loaded.pipe(takeUntil(this._destroy), filter(v => v)).subscribe(() => this.chart = new AccumulationChart({
24582
+ this._loaded.pipe(takeUntil(this._destroy), delay(200), filter(v => v)).subscribe(() => this.chart = new AccumulationChart({
24579
24583
  background: 'transparent',
24580
24584
  legendSettings: this.legendSettings, enableAnimation: true,
24581
24585
  tooltip: this.tooltip,
@@ -25064,7 +25068,7 @@ let CubeDocumentsWidget = class CubeDocumentsWidget {
25064
25068
  this.dataSource.sort = this.sort;
25065
25069
  }
25066
25070
  open(item) {
25067
- this._mailbox.info(item.id).subscribe({
25071
+ this._mailbox.getDocumentInfo(item.id).subscribe({
25068
25072
  next: item => {
25069
25073
  this._router.navigate(['mailbox/d', item.documentId.encodeId()], {
25070
25074
  state: {
@@ -26966,7 +26970,7 @@ let TasksComponent = class TasksComponent {
26966
26970
  */
26967
26971
  drag(evt) {
26968
26972
  const { id, stateId, userId } = evt.data[0];
26969
- this._mailbox.changeState(id, stateId, userId).
26973
+ this._mailbox.setDocumentState(id, stateId, userId).
26970
26974
  subscribe({ error: () => this._sb.error() });
26971
26975
  }
26972
26976
  /**
@@ -28522,7 +28526,7 @@ class QuickCommentComponent {
28522
28526
  this._destroy = new Subject();
28523
28527
  }
28524
28528
  ngOnInit() {
28525
- this._textChange.pipe(debounceTime(TYPING_NOTIFY$1), takeUntil(this._destroy)).subscribe(() => this._mailbox.typing(this.model.documentId).subscribe());
28529
+ this._textChange.pipe(debounceTime(TYPING_NOTIFY$1), takeUntil(this._destroy)).subscribe(() => this._mailbox.reportTyping(this.model.documentId).subscribe());
28526
28530
  this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter(e => e.id === this.model.documentId)).
28527
28531
  subscribe(e => {
28528
28532
  this._accounts.get(e.userId).subscribe(u => {
@@ -28918,7 +28922,7 @@ let TimelineViewComponent = class TimelineViewComponent {
28918
28922
  _prepare() {
28919
28923
  const observables = [], tasks = [];
28920
28924
  let i = 0;
28921
- //const observable = this._mailbox.timeline(model.documentId).pipe(tap(t => {
28925
+ //const observable = this._mailbox.listTimeline(model.documentId).pipe(tap(t => {
28922
28926
  //}))
28923
28927
  this.model.log.forEach(l => {
28924
28928
  let task;
@@ -30306,7 +30310,7 @@ class BoxFormControlComponent {
30306
30310
  const comp = this._cf.component(selector);
30307
30311
  const compRef = this._vc.createComponent(comp);
30308
30312
  const instance = compRef.instance;
30309
- instance.appearance = this._config.appearance || 'outline';
30313
+ instance.appearance = this._config.appearance || 'fill';
30310
30314
  instance.mode = this.mode;
30311
30315
  Object.assign(instance, this.metadata);
30312
30316
  this.model && this.model[this.metadata.name] !== undefined &&
@@ -30362,14 +30366,14 @@ let BoxFormComponent = class BoxFormComponent {
30362
30366
  group.addControl(field.name, instance.control);
30363
30367
  }
30364
30368
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BoxFormComponent, deps: [{ token: i1$2.FormBuilder }, { token: FormRef }], target: i0.ɵɵFactoryTarget.Component }); }
30365
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BoxFormComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "@if (mode !== 'compose') {\r\n <form>\r\n @for (s of metadata.sections; track s) {\r\n <section>\r\n <h2 class=\"mat-h2\">{{s.title|localizedString}}</h2>\r\n @switch (s.multiLine) {\r\n @case (true) {\r\n @for (r of s.rows; track r) {\r\n <div class=\"row\">\r\n @for (f of r.fields; track f) {\r\n }\r\n </div>\r\n }\r\n }\r\n @default {\r\n @for (r of s.rows; track r) {\r\n <div class=\"row\">\r\n @for (f of r.fields; track f) {\r\n <bizdoc-box-control [metadata]=\"f\"\r\n [mode]=\"mode\"\r\n [model]=\"data.model[s.name]\"\r\n [attr.data-field]=\"f.name\"\r\n [form]=\"form.get(s.name)\"></bizdoc-box-control>\r\n }\r\n </div>\r\n }\r\n }\r\n }\r\n </section>\r\n }\r\n </form>\r\n} @else {\r\n @if (guide) {\r\n <bizdoc-help-tip [name]=\"guide\"></bizdoc-help-tip>\r\n }\r\n <form [formGroup]=\"form\" autocomplete=\"off\">\r\n @for (s of metadata.sections; track s) {\r\n <section [attr.data-section]=\"s.name\">\r\n <h2 class=\"mat-h2\">{{s.title|localizedString}}</h2>\r\n @if (s.note) {\r\n <p class=\"mat-body-1\">{{s.note|localizedString}}</p>\r\n }\r\n <hr />\r\n @switch (s.multiLine) {\r\n @case (true) {\r\n <ng-container [formArrayName]=\"s.name\">\r\n <table class=\"mat-mdc-table\">\r\n @for (r of s.rows; track r) {\r\n <thead class=\"\">\r\n <tr class=\"mat-mdc-row\">\r\n @for (f of r.fields; track f) {\r\n <th class=\"mat-mdc-cell\">\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n @for (r of s.rows; track r) {\r\n <tbody class=\"\">\r\n <tr class=\"mat-mdc-row\">\r\n @for (f of r.fields; track f) {\r\n <td class=\"mat-mdc-cell\">\r\n </td>\r\n }\r\n <td>\r\n <button mat-icon-button></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n }\r\n </table>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [formGroupName]=\"s.name\">\r\n @for (r of s.rows; track r) {\r\n <div class=\"row box-row\">\r\n @for (f of r.fields; track f) {\r\n <bizdoc-box-control [metadata]=\"f\"\r\n [mode]=\"mode\"\r\n [model]=\"data.model[s.name]\"\r\n [attr.data-field]=\"f.name\"\r\n [form]=\"form.get(s.name)\"></bizdoc-box-control>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </section>\r\n }\r\n </form>\r\n}\r\n", styles: ["form{padding:8px}section{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}section .box-row{padding:4px}::ng-deep field{display:flex}\n"], dependencies: [{ kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: HelpTipComponent, selector: "bizdoc-help-tip", inputs: ["name"] }, { kind: "component", type: BoxFormControlComponent, selector: "bizdoc-box-control", inputs: ["form", "mode", "model", "metadata"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }] }); }
30369
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BoxFormComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "@if (mode !== 'compose') {\r\n <form>\r\n @for (s of metadata.sections; track s) {\r\n <section>\r\n <h2 class=\"mat-h2\">{{s.title|localizedString}}</h2>\r\n @switch (s.multiLine) {\r\n @case (true) {\r\n @for (r of s.rows; track r) {\r\n <div class=\"row\">\r\n @for (f of r.fields; track f) {\r\n }\r\n </div>\r\n }\r\n }\r\n @default {\r\n @for (r of s.rows; track r) {\r\n <div class=\"row gap\">\r\n @for (f of r.fields; track f) {\r\n <bizdoc-box-control [metadata]=\"f\"\r\n [mode]=\"mode\"\r\n [model]=\"data.model[s.name]\"\r\n [attr.data-field]=\"f.name\"\r\n [form]=\"form.get(s.name)\"></bizdoc-box-control>\r\n }\r\n </div>\r\n }\r\n }\r\n }\r\n </section>\r\n }\r\n </form>\r\n} @else {\r\n @if (guide) {\r\n <bizdoc-help-tip [name]=\"guide\"></bizdoc-help-tip>\r\n }\r\n <form [formGroup]=\"form\" autocomplete=\"off\">\r\n @for (s of metadata.sections; track s) {\r\n <section [attr.data-section]=\"s.name\">\r\n <h2 class=\"mat-h2\">{{s.title|localizedString}}</h2>\r\n @if (s.note) {\r\n <p class=\"mat-body-1\">{{s.note|localizedString}}</p>\r\n }\r\n <hr />\r\n @switch (s.multiLine) {\r\n @case (true) {\r\n <ng-container [formArrayName]=\"s.name\">\r\n <table class=\"mat-mdc-table\">\r\n @for (r of s.rows; track r) {\r\n <thead class=\"\">\r\n <tr class=\"mat-mdc-row\">\r\n @for (f of r.fields; track f) {\r\n <th class=\"mat-mdc-cell\">\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n @for (r of s.rows; track r) {\r\n <tbody class=\"\">\r\n <tr class=\"mat-mdc-row\">\r\n @for (f of r.fields; track f) {\r\n <td class=\"mat-mdc-cell\">\r\n </td>\r\n }\r\n <td>\r\n <button mat-icon-button></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n }\r\n </table>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [formGroupName]=\"s.name\">\r\n @for (r of s.rows; track r) {\r\n <div class=\"row gap box-row\">\r\n @for (f of r.fields; track f) {\r\n <bizdoc-box-control [metadata]=\"f\"\r\n [mode]=\"mode\"\r\n [model]=\"data.model[s.name]\"\r\n [attr.data-field]=\"f.name\"\r\n [form]=\"form.get(s.name)\"></bizdoc-box-control>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </section>\r\n }\r\n </form>\r\n}\r\n", styles: ["form{padding:8px}section{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}section .box-row{padding:4px}::ng-deep field{display:flex}\n"], dependencies: [{ kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: HelpTipComponent, selector: "bizdoc-help-tip", inputs: ["name"] }, { kind: "component", type: BoxFormControlComponent, selector: "bizdoc-box-control", inputs: ["form", "mode", "model", "metadata"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }] }); }
30366
30370
  };
30367
30371
  BoxFormComponent = __decorate([
30368
30372
  BizDoc({ selector: 'bizdoc-box-form' })
30369
30373
  ], BoxFormComponent);
30370
30374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BoxFormComponent, decorators: [{
30371
30375
  type: Component,
30372
- args: [{ standalone: false, template: "@if (mode !== 'compose') {\r\n <form>\r\n @for (s of metadata.sections; track s) {\r\n <section>\r\n <h2 class=\"mat-h2\">{{s.title|localizedString}}</h2>\r\n @switch (s.multiLine) {\r\n @case (true) {\r\n @for (r of s.rows; track r) {\r\n <div class=\"row\">\r\n @for (f of r.fields; track f) {\r\n }\r\n </div>\r\n }\r\n }\r\n @default {\r\n @for (r of s.rows; track r) {\r\n <div class=\"row\">\r\n @for (f of r.fields; track f) {\r\n <bizdoc-box-control [metadata]=\"f\"\r\n [mode]=\"mode\"\r\n [model]=\"data.model[s.name]\"\r\n [attr.data-field]=\"f.name\"\r\n [form]=\"form.get(s.name)\"></bizdoc-box-control>\r\n }\r\n </div>\r\n }\r\n }\r\n }\r\n </section>\r\n }\r\n </form>\r\n} @else {\r\n @if (guide) {\r\n <bizdoc-help-tip [name]=\"guide\"></bizdoc-help-tip>\r\n }\r\n <form [formGroup]=\"form\" autocomplete=\"off\">\r\n @for (s of metadata.sections; track s) {\r\n <section [attr.data-section]=\"s.name\">\r\n <h2 class=\"mat-h2\">{{s.title|localizedString}}</h2>\r\n @if (s.note) {\r\n <p class=\"mat-body-1\">{{s.note|localizedString}}</p>\r\n }\r\n <hr />\r\n @switch (s.multiLine) {\r\n @case (true) {\r\n <ng-container [formArrayName]=\"s.name\">\r\n <table class=\"mat-mdc-table\">\r\n @for (r of s.rows; track r) {\r\n <thead class=\"\">\r\n <tr class=\"mat-mdc-row\">\r\n @for (f of r.fields; track f) {\r\n <th class=\"mat-mdc-cell\">\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n @for (r of s.rows; track r) {\r\n <tbody class=\"\">\r\n <tr class=\"mat-mdc-row\">\r\n @for (f of r.fields; track f) {\r\n <td class=\"mat-mdc-cell\">\r\n </td>\r\n }\r\n <td>\r\n <button mat-icon-button></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n }\r\n </table>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [formGroupName]=\"s.name\">\r\n @for (r of s.rows; track r) {\r\n <div class=\"row box-row\">\r\n @for (f of r.fields; track f) {\r\n <bizdoc-box-control [metadata]=\"f\"\r\n [mode]=\"mode\"\r\n [model]=\"data.model[s.name]\"\r\n [attr.data-field]=\"f.name\"\r\n [form]=\"form.get(s.name)\"></bizdoc-box-control>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </section>\r\n }\r\n </form>\r\n}\r\n", styles: ["form{padding:8px}section{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}section .box-row{padding:4px}::ng-deep field{display:flex}\n"] }]
30376
+ args: [{ standalone: false, template: "@if (mode !== 'compose') {\r\n <form>\r\n @for (s of metadata.sections; track s) {\r\n <section>\r\n <h2 class=\"mat-h2\">{{s.title|localizedString}}</h2>\r\n @switch (s.multiLine) {\r\n @case (true) {\r\n @for (r of s.rows; track r) {\r\n <div class=\"row\">\r\n @for (f of r.fields; track f) {\r\n }\r\n </div>\r\n }\r\n }\r\n @default {\r\n @for (r of s.rows; track r) {\r\n <div class=\"row gap\">\r\n @for (f of r.fields; track f) {\r\n <bizdoc-box-control [metadata]=\"f\"\r\n [mode]=\"mode\"\r\n [model]=\"data.model[s.name]\"\r\n [attr.data-field]=\"f.name\"\r\n [form]=\"form.get(s.name)\"></bizdoc-box-control>\r\n }\r\n </div>\r\n }\r\n }\r\n }\r\n </section>\r\n }\r\n </form>\r\n} @else {\r\n @if (guide) {\r\n <bizdoc-help-tip [name]=\"guide\"></bizdoc-help-tip>\r\n }\r\n <form [formGroup]=\"form\" autocomplete=\"off\">\r\n @for (s of metadata.sections; track s) {\r\n <section [attr.data-section]=\"s.name\">\r\n <h2 class=\"mat-h2\">{{s.title|localizedString}}</h2>\r\n @if (s.note) {\r\n <p class=\"mat-body-1\">{{s.note|localizedString}}</p>\r\n }\r\n <hr />\r\n @switch (s.multiLine) {\r\n @case (true) {\r\n <ng-container [formArrayName]=\"s.name\">\r\n <table class=\"mat-mdc-table\">\r\n @for (r of s.rows; track r) {\r\n <thead class=\"\">\r\n <tr class=\"mat-mdc-row\">\r\n @for (f of r.fields; track f) {\r\n <th class=\"mat-mdc-cell\">\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n @for (r of s.rows; track r) {\r\n <tbody class=\"\">\r\n <tr class=\"mat-mdc-row\">\r\n @for (f of r.fields; track f) {\r\n <td class=\"mat-mdc-cell\">\r\n </td>\r\n }\r\n <td>\r\n <button mat-icon-button></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n }\r\n </table>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [formGroupName]=\"s.name\">\r\n @for (r of s.rows; track r) {\r\n <div class=\"row gap box-row\">\r\n @for (f of r.fields; track f) {\r\n <bizdoc-box-control [metadata]=\"f\"\r\n [mode]=\"mode\"\r\n [model]=\"data.model[s.name]\"\r\n [attr.data-field]=\"f.name\"\r\n [form]=\"form.get(s.name)\"></bizdoc-box-control>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </section>\r\n }\r\n </form>\r\n}\r\n", styles: ["form{padding:8px}section{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}section .box-row{padding:4px}::ng-deep field{display:flex}\n"] }]
30373
30377
  }], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: FormRef }] });
30374
30378
 
30375
30379
  let PerformanceWindComponent = class PerformanceWindComponent {
@@ -30738,9 +30742,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
30738
30742
 
30739
30743
  let TimeField = class TimeField {
30740
30744
  constructor() {
30745
+ this.subscriptSizing = 'fixed';
30741
30746
  this.isMobile = isMobile();
30742
30747
  this.control = new FormControl();
30743
30748
  }
30749
+ set dense(val) {
30750
+ if (val)
30751
+ this.subscriptSizing = 'dynamic';
30752
+ }
30744
30753
  focus() { this.input.focus(); }
30745
30754
  ngOnInit() {
30746
30755
  this.required && this.control.addValidators(Validators.required);
@@ -30748,14 +30757,14 @@ let TimeField = class TimeField {
30748
30757
  this.max && this.control.addValidators(Validators.max(this.max));
30749
30758
  }
30750
30759
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TimeField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30751
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TimeField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <mat-time-picker [placeholder]=\"placeholder|localizedString\" [formControl]=control\r\n [required]=\"required\">\r\n </mat-time-picker>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n @if (control.value) {\r\n <span>{{control.value | amDateFormat: 'll'}}</span>\r\n }\r\n}\r\n", dependencies: [{ 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: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: TimePicker, selector: "mat-time-picker", inputs: ["dateControlName", "placeholder", "required", "disabled", "value"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
30760
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TimeField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <mat-time-picker [placeholder]=\"placeholder|localizedString\" [formControl]=control\r\n [required]=\"required\">\r\n </mat-time-picker>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n @if (control.value) {\r\n <span>{{control.value | amDateFormat: 'll'}}</span>\r\n }\r\n}\r\n", dependencies: [{ 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: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: TimePicker, selector: "mat-time-picker", inputs: ["dateControlName", "placeholder", "required", "disabled", "value"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
30752
30761
  };
30753
30762
  TimeField = __decorate([
30754
30763
  BizDoc({ selector: 'time-control' })
30755
30764
  ], TimeField);
30756
30765
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TimeField, decorators: [{
30757
30766
  type: Component,
30758
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance>\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <mat-time-picker [placeholder]=\"placeholder|localizedString\" [formControl]=control\r\n [required]=\"required\">\r\n </mat-time-picker>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n @if (control.value) {\r\n <span>{{control.value | amDateFormat: 'll'}}</span>\r\n }\r\n}\r\n" }]
30767
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label|localizedString}}</mat-label>\r\n <mat-time-picker [placeholder]=\"placeholder|localizedString\" [formControl]=control\r\n [required]=\"required\">\r\n </mat-time-picker>\r\n @if (hint) {\r\n <mat-hint> {{ hint|localizedString }}</mat-hint>\r\n }\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n </mat-form-field>\r\n} @else {\r\n @if (control.value) {\r\n <span>{{control.value | amDateFormat: 'll'}}</span>\r\n }\r\n}\r\n" }]
30759
30768
  }], propDecorators: { input: [{
30760
30769
  type: ViewChild,
30761
30770
  args: [MatInput]
@@ -30764,8 +30773,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
30764
30773
  let ChipsField = class ChipsField {
30765
30774
  constructor() {
30766
30775
  this.separatorKeysCodes = [ENTER, COMMA, SEMICOLON];
30776
+ this.subscriptSizing = 'fixed';
30767
30777
  this.control = new FormControl();
30768
30778
  }
30779
+ set dense(val) {
30780
+ if (val)
30781
+ this.subscriptSizing = 'dynamic';
30782
+ }
30769
30783
  ngOnInit() {
30770
30784
  this.required && this.control.addValidators(Validators.required);
30771
30785
  }
@@ -30785,14 +30799,14 @@ let ChipsField = class ChipsField {
30785
30799
  this.control.setValue(this.tags.length ? this.tags : null);
30786
30800
  }
30787
30801
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ChipsField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30788
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ChipsField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance class=\"flex\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <mat-chip-grid #chips\r\n [formControl]=\"control\"\r\n [attr.aria-label]=\"label\">\r\n @for (t of (control.value || []); track t) {\r\n <mat-chip-row\r\n removable (removed)=\"removeTag(t)\">\r\n {{t}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n <input [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-grid>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n @if (control.value) {\r\n <mat-chip-set>\r\n @for (t of control.value; track t) {\r\n <mat-chip>{{t}}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n }\r\n }\r\n", dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i4.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i4.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
30802
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ChipsField, isStandalone: false, selector: "ng-component", host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], ngImport: i0, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <mat-chip-grid #chips\r\n [formControl]=\"control\"\r\n [attr.aria-label]=\"label\">\r\n @for (t of (control.value || []); track t) {\r\n <mat-chip-row\r\n removable (removed)=\"removeTag(t)\">\r\n {{t}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n <input [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-grid>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n @if (control.value) {\r\n <mat-chip-set>\r\n @for (t of control.value; track t) {\r\n <mat-chip>{{t}}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n }\r\n }\r\n", dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i4.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i4.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
30789
30803
  };
30790
30804
  ChipsField = __decorate([
30791
30805
  BizDoc({ selector: 'tags-control' })
30792
30806
  ], ChipsField);
30793
30807
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ChipsField, decorators: [{
30794
30808
  type: Component,
30795
- args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance class=\"flex\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <mat-chip-grid #chips\r\n [formControl]=\"control\"\r\n [attr.aria-label]=\"label\">\r\n @for (t of (control.value || []); track t) {\r\n <mat-chip-row\r\n removable (removed)=\"removeTag(t)\">\r\n {{t}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n <input [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-grid>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n @if (control.value) {\r\n <mat-chip-set>\r\n @for (t of control.value; track t) {\r\n <mat-chip>{{t}}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n }\r\n }\r\n" }]
30809
+ args: [{ standalone: false, host: { class: 'field' }, template: "@if (mode==='compose') {\r\n <mat-form-field [appearance]=appearance [subscriptSizing]=\"subscriptSizing\">\r\n <mat-label>{{label |localizedString}}</mat-label>\r\n <mat-chip-grid #chips\r\n [formControl]=\"control\"\r\n [attr.aria-label]=\"label\">\r\n @for (t of (control.value || []); track t) {\r\n <mat-chip-row\r\n removable (removed)=\"removeTag(t)\">\r\n {{t}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n <input [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-grid>\r\n @if (control.hasError('required')) {\r\n <mat-error [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n }\r\n @if (hint) {\r\n <mat-hint> {{ hint |localizedString}}</mat-hint>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n @if (control.value) {\r\n <mat-chip-set>\r\n @for (t of control.value; track t) {\r\n <mat-chip>{{t}}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n }\r\n }\r\n" }]
30796
30810
  }], propDecorators: { input: [{
30797
30811
  type: ViewChild,
30798
30812
  args: [MatInput]
@@ -33950,11 +33964,11 @@ class ProfileSettingsDialog {
33950
33964
  this.form.patchValue({});
33951
33965
  }
33952
33966
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ProfileSettingsDialog, deps: [{ token: AccountService }, { token: i2$2.MatDialogRef }, { token: i1$2.FormBuilder }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
33953
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ProfileSettingsDialog, isStandalone: false, selector: "ng-component", viewQueries: [{ propertyName: "substitueInput", first: true, predicate: ["substitueInput"], descendants: true, read: MatInput }, { propertyName: "grantInput", first: true, predicate: ["grantInput"], descendants: true, read: MatChipInput }], ngImport: i0, template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"column gap\" formGroupName=\"outOfOffice\">\r\n <h4 class=\"\">{{'OutOfOffice'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n @for (u of ousers$ | async; track u) {\r\n <mat-option [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Dates'|translate}}</mat-label>\r\n <mat-date-range-input [formGroup]=\"form\" [rangePicker]=\"dates\" required>\r\n <input matStartDate formControlName=\"from\" [placeholder]=\"'From'|translate\" [min]=\"today\">\r\n <input matEndDate formControlName=\"to\" [placeholder]=\"'To'|translate\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"dates\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #dates [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n <!--<hr />-->\r\n <div class=\"column\" formGroupName=\"grantAccess\">\r\n <h4 class=\"\">{{'GrantAccess'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n @for (u of grantAccess.value.users || []; track u) {\r\n <mat-chip-row\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n @for (u of gusers$ | async; track u) {\r\n <mat-option [value]=\"u.id\">\r\n {{u.name}}\r\n @if (u.email) {\r\n <span>&nbsp; - {{u.email}}</span>\r\n }\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { 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: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i4.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$4.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$4.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: i2$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i2$6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { 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: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: UserNamePipe, name: "userName" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
33967
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ProfileSettingsDialog, isStandalone: false, selector: "ng-component", viewQueries: [{ propertyName: "substitueInput", first: true, predicate: ["substitueInput"], descendants: true, read: MatInput }, { propertyName: "grantInput", first: true, predicate: ["grantInput"], descendants: true, read: MatChipInput }], ngImport: i0, template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"column gap\" formGroupName=\"outOfOffice\">\r\n <h4 class=\"\">{{'OutOfOffice'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n @for (u of ousers$ | async; track u) {\r\n <mat-option [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Dates'|translate}}</mat-label>\r\n <mat-date-range-input [rangePicker]=\"dates\" required>\r\n <input matStartDate formControlName=\"from\" [placeholder]=\"'From'|translate\" [min]=\"today\">\r\n <input matEndDate formControlName=\"to\" [placeholder]=\"'To'|translate\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"dates\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #dates [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n <!--<hr />-->\r\n <div class=\"column\" formGroupName=\"grantAccess\">\r\n <h4 class=\"\">{{'GrantAccess'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field>\r\n <mat-label>{{'Associates'|translate}}</mat-label>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n @for (u of grantAccess.value.users || []; track u) {\r\n <mat-chip-row [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [formControl]=\"grants\" [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n @for (u of gusers$ | async; track u) {\r\n <mat-option [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { 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: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i4.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$4.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$4.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "directive", type: i2$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i2$6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { 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: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: UserNamePipe, name: "userName" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
33954
33968
  }
33955
33969
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ProfileSettingsDialog, decorators: [{
33956
33970
  type: Component,
33957
- args: [{ standalone: false, template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"column gap\" formGroupName=\"outOfOffice\">\r\n <h4 class=\"\">{{'OutOfOffice'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n @for (u of ousers$ | async; track u) {\r\n <mat-option [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Dates'|translate}}</mat-label>\r\n <mat-date-range-input [formGroup]=\"form\" [rangePicker]=\"dates\" required>\r\n <input matStartDate formControlName=\"from\" [placeholder]=\"'From'|translate\" [min]=\"today\">\r\n <input matEndDate formControlName=\"to\" [placeholder]=\"'To'|translate\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"dates\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #dates [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n <!--<hr />-->\r\n <div class=\"column\" formGroupName=\"grantAccess\">\r\n <h4 class=\"\">{{'GrantAccess'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n @for (u of grantAccess.value.users || []; track u) {\r\n <mat-chip-row\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n @for (u of gusers$ | async; track u) {\r\n <mat-option [value]=\"u.id\">\r\n {{u.name}}\r\n @if (u.email) {\r\n <span>&nbsp; - {{u.email}}</span>\r\n }\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n" }]
33971
+ args: [{ standalone: false, template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"column gap\" formGroupName=\"outOfOffice\">\r\n <h4 class=\"\">{{'OutOfOffice'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field class=\"flex\">\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n @for (u of ousers$ | async; track u) {\r\n <mat-option [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Dates'|translate}}</mat-label>\r\n <mat-date-range-input [rangePicker]=\"dates\" required>\r\n <input matStartDate formControlName=\"from\" [placeholder]=\"'From'|translate\" [min]=\"today\">\r\n <input matEndDate formControlName=\"to\" [placeholder]=\"'To'|translate\">\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"dates\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #dates [touchUi]=\"isMobile\"></mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n <!--<hr />-->\r\n <div class=\"column\" formGroupName=\"grantAccess\">\r\n <h4 class=\"\">{{'GrantAccess'|translate}}</h4>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field>\r\n <mat-label>{{'Associates'|translate}}</mat-label>\r\n <mat-chip-grid #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n @for (u of grantAccess.value.users || []; track u) {\r\n <mat-chip-row [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input [formControl]=\"grants\" [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n @for (u of gusers$ | async; track u) {\r\n <mat-option [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
33958
33972
  }], ctorParameters: () => [{ type: AccountService }, { type: i2$2.MatDialogRef }, { type: i1$2.FormBuilder }, { type: undefined, decorators: [{
33959
33973
  type: Inject,
33960
33974
  args: [MAT_DIALOG_DATA]