@bizdoc/core 1.12.4 → 1.13.0-next.12

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.
Files changed (41) hide show
  1. package/assets/bizdoc-schema.json +1 -14
  2. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +5 -2
  3. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +24 -28
  4. package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -2
  5. package/esm2020/lib/admin/positions/positions-popup.component.mjs +1 -1
  6. package/esm2020/lib/app.component.mjs +1 -1
  7. package/esm2020/lib/browse/browse-items.component.mjs +3 -3
  8. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +61 -49
  9. package/esm2020/lib/compose/action/assign-action.component.mjs +52 -26
  10. package/esm2020/lib/compose/compose.pane.component.mjs +3 -4
  11. package/esm2020/lib/compose/trace/flow.component.mjs +139 -150
  12. package/esm2020/lib/compose/trace/trace.component.mjs +62 -61
  13. package/esm2020/lib/core/configuration.mjs +1 -2
  14. package/esm2020/lib/core/mailbox.service.mjs +29 -6
  15. package/esm2020/lib/core/models.mjs +1 -1
  16. package/esm2020/lib/core/slots/router.service.mjs +16 -4
  17. package/esm2020/lib/core/slots/slots.component.mjs +4 -6
  18. package/esm2020/lib/core/translations.mjs +19 -2
  19. package/esm2020/lib/cube/cube.service.mjs +3 -3
  20. package/esm2020/lib/cube/explore/explore-items.component.mjs +2 -3
  21. package/esm2020/lib/cube/pivot/pivot.component.mjs +78 -76
  22. package/esm2020/lib/routes.desktop.mjs +2 -2
  23. package/fesm2015/bizdoc-core.mjs +558 -490
  24. package/fesm2015/bizdoc-core.mjs.map +1 -1
  25. package/fesm2020/bizdoc-core.mjs +561 -487
  26. package/fesm2020/bizdoc-core.mjs.map +1 -1
  27. package/lib/admin/diff/configuration-diff.component.d.ts +1 -0
  28. package/lib/admin/document-trace/trace-element.component.d.ts +1 -1
  29. package/lib/app.component.d.ts +2 -2
  30. package/lib/browse/expanded-item/expanded-item.component.d.ts +6 -6
  31. package/lib/compose/action/assign-action.component.d.ts +16 -5
  32. package/lib/compose/trace/flow.component.d.ts +0 -1
  33. package/lib/compose/trace/trace.component.d.ts +5 -4
  34. package/lib/core/configuration.d.ts +1 -2
  35. package/lib/core/mailbox.service.d.ts +4 -1
  36. package/lib/core/models.d.ts +6 -4
  37. package/lib/core/slots/router.service.d.ts +4 -0
  38. package/lib/core/translations.d.ts +18 -1
  39. package/lib/cube/cube.service.d.ts +1 -1
  40. package/lib/cube/pivot/pivot.component.d.ts +1 -2
  41. package/package.json +10 -10
@@ -11,7 +11,7 @@ import * as firebase from 'firebase/app';
11
11
  import { getMessaging, deleteToken, getToken } from 'firebase/messaging';
12
12
  import * as i2 from 'ngx-cookie-service';
13
13
  import { CookieService } from 'ngx-cookie-service';
14
- import * as i3$2 from '@angular/material/dialog';
14
+ import * as i3$1 from '@angular/material/dialog';
15
15
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
16
16
  import * as i1$2 from '@angular/forms';
17
17
  import { FormControl, Validators, FormGroup, ReactiveFormsModule } from '@angular/forms';
@@ -43,11 +43,11 @@ import * as i5 from '@angular/material/autocomplete';
43
43
  import { MatAutocompleteTrigger, MatAutocompleteModule } from '@angular/material/autocomplete';
44
44
  import * as i7$1 from '@angular/material/button';
45
45
  import { MatButtonModule, MatButton } from '@angular/material/button';
46
- import * as i3 from '@angular/material/input';
46
+ import * as i12 from '@angular/material/input';
47
47
  import { MatInput, MatInputModule } from '@angular/material/input';
48
- import * as i3$1 from '@angular/material/datepicker';
48
+ import * as i3 from '@angular/material/datepicker';
49
49
  import { MatDatepickerIntl, MatDatepickerModule } from '@angular/material/datepicker';
50
- import * as i11 from '@angular/cdk/text-field';
50
+ import * as i4$1 from '@angular/cdk/text-field';
51
51
  import * as i2$2 from '@syncfusion/ej2-angular-richtexteditor';
52
52
  import { ToolbarType, RichTextEditorComponent, RichTextEditor, Toolbar, HtmlEditor, RichTextEditorModule, HtmlEditorService, ToolbarService } from '@syncfusion/ej2-angular-richtexteditor';
53
53
  import * as i6$1 from '@angular/flex-layout/flex';
@@ -65,7 +65,7 @@ import { BrowserModule } from '@angular/platform-browser';
65
65
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
66
66
  import * as i1$6 from '@angular/router';
67
67
  import { NavigationStart as NavigationStart$1, ActivationEnd, RouterModule } from '@angular/router';
68
- import * as i3$3 from '@angular/material/chips';
68
+ import * as i3$2 from '@angular/material/chips';
69
69
  import { MatChipsModule, MatChipList } from '@angular/material/chips';
70
70
  import * as i22 from '@angular/cdk/drag-drop';
71
71
  import { DragDropModule } from '@angular/cdk/drag-drop';
@@ -124,10 +124,10 @@ import { PivotView, ExcelExport as ExcelExport$1 } from '@syncfusion/ej2-pivotvi
124
124
  import { Tooltip } from '@syncfusion/ej2-popups';
125
125
  import * as i9$5 from '@syncfusion/ej2-angular-spreadsheet';
126
126
  import { Spreadsheet, isNumber, SpreadsheetModule, SelectionService as SelectionService$2, BasicModuleService, ClipboardService, CellFormatService, KeyboardNavigationService, KeyboardShortcutService, NumberFormatService } from '@syncfusion/ej2-angular-spreadsheet';
127
- import * as i4$1 from '@ctrl/ngx-emoji-mart';
127
+ import * as i4$2 from '@ctrl/ngx-emoji-mart';
128
128
  import { PickerModule } from '@ctrl/ngx-emoji-mart';
129
- import * as i11$1 from '@syncfusion/ej2-angular-diagrams';
130
- import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
129
+ import * as i11 from '@syncfusion/ej2-angular-diagrams';
130
+ import { Diagram, UndoRedo, ConnectorDrawingTool, DiagramConstraints, DiagramTools, NodeConstraints, ConnectorConstraints, SelectorConstraints, Node, SymbolPaletteComponent, ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution, ConnectionPointOrigin, SnapConstraints, ComplexHierarchicalTreeService, DiagramModule, SymbolPaletteModule, ConnectorBridgingService, LineRoutingService, BpmnDiagramsService, LayoutAnimationService, UndoRedoService, SnappingService, ConnectorEditingService, ToolBase } from '@syncfusion/ej2-angular-diagrams';
131
131
  import * as i9$2 from '@syncfusion/ej2-angular-schedule';
132
132
  import { Schedule, Day, WorkWeek, Month, MonthAgenda, Agenda, Year, ScheduleModule, ExcelExportService as ExcelExportService$2, DayService, WorkWeekService, MonthService, MonthAgendaService, ICalendarExportService, AgendaService, YearService } from '@syncfusion/ej2-angular-schedule';
133
133
  import * as i10$2 from '@syncfusion/ej2-angular-kanban';
@@ -829,7 +829,6 @@ var OpenPolicy;
829
829
  OpenPolicy[OpenPolicy["Tab"] = 48] = "Tab";
830
830
  OpenPolicy[OpenPolicy["Dialog"] = 112] = "Dialog";
831
831
  OpenPolicy[OpenPolicy["Dismissable"] = 128] = "Dismissable";
832
- OpenPolicy[OpenPolicy["Toggle"] = 256] = "Toggle";
833
832
  })(OpenPolicy || (OpenPolicy = {}));
834
833
  const DEFAULT_POLICY = OpenPolicy.Pane;
835
834
 
@@ -1562,20 +1561,43 @@ function isHttpProgressEvent(event) {
1562
1561
  }
1563
1562
  function calculateState(upload, event) {
1564
1563
  if (isHttpProgressEvent(event)) {
1565
- return {
1564
+ return new UploadEvent({
1566
1565
  progress: event.total
1567
1566
  ? Math.round((100 * event.loaded) / event.total)
1568
1567
  : upload.progress,
1569
1568
  state: 'progress',
1570
- };
1569
+ });
1571
1570
  }
1572
1571
  if (isHttpResponse(event)) {
1573
- return {
1572
+ return new UploadEvent({
1574
1573
  progress: 100,
1575
1574
  state: 'done',
1576
- };
1575
+ });
1577
1576
  }
1578
1577
  return upload;
1578
+ }
1579
+ class UploadEvent {
1580
+ constructor(options) { }
1581
+ }
1582
+ function reportprogress(filename) {
1583
+ return (source) => source.pipe(map(r => {
1584
+ //if (event instanceof ProgressEvent) {
1585
+ // observe.next(new UploadEvent(
1586
+ // file.name,
1587
+ // (event as ProgressEvent).loaded,
1588
+ // (event as ProgressEvent).total
1589
+ // ));
1590
+ //} else if (event instanceof HttpResponse) {
1591
+ // const res = event as HttpResponse<any>;
1592
+ // if (res.status === 200) {
1593
+ // const model = res.body as Attachment;
1594
+ // observe.next(model);
1595
+ // }
1596
+ // else
1597
+ // observe.error({ status: res.status, error: res.body });
1598
+ // observe.complete();
1599
+ return r;
1600
+ }));
1579
1601
  }
1580
1602
 
1581
1603
  class ActionRef {
@@ -1969,6 +1991,10 @@ const STRINGS = {
1969
1991
  EverybodyRange: 'Everyone',
1970
1992
  YourRange: 'You',
1971
1993
  Introduction: 'Introduction',
1994
+ AssignTo: 'Forward to',
1995
+ AssignRoundtrip: 'Return to me',
1996
+ AssignFYI: 'FYI',
1997
+ AssignNoteHint: 'To assigned user notice',
1972
1998
  Welcome: 'Welcome!',
1973
1999
  WelcomeMsg: `Welcome <em>{0}</em>!<br />BizDoc is a new way to forward and track organization applications.<br />
1974
2000
  Click <i class="material-icons">add_box</i> to submit a new application.`,
@@ -2075,6 +2101,9 @@ const STRINGS = {
2075
2101
  YouRepliedTo: 'You replied {0}',
2076
2102
  ReplyingToYou: '{0} in reply to you',
2077
2103
  ByYou: '{0} by you',
2104
+ ActionBy: '{0} by {1}',
2105
+ ActionByBy: '{0} by {1} on behalf of {2}',
2106
+ ActionByYou: '{0} by you',
2078
2107
  Received: 'Received',
2079
2108
  ChangeLanguage: 'Language',
2080
2109
  NewMail: 'New {0} #{1} {2}',
@@ -2346,6 +2375,8 @@ const STRINGS = {
2346
2375
  Votes: 'Votes',
2347
2376
  Tasks: 'Tasks',
2348
2377
  System: 'System',
2378
+ ActiveRoute: 'Active',
2379
+ Everything: 'Everything',
2349
2380
  NothingHere: 'Nothing to see here',
2350
2381
  Matrix: 'Matrix',
2351
2382
  Working: 'Working on it...'
@@ -2382,7 +2413,8 @@ const STRINGS = {
2382
2413
  Skipped: '- דולג',
2383
2414
  Route: 'חותמים',
2384
2415
  Trace: 'הסטוריה',
2385
- Log: 'הסטוריה',
2416
+ ActiveRoute: 'פעיל',
2417
+ Everything: 'הסטוריה',
2386
2418
  ProfilerSearchHelp: 'הקלד/י שם משתמש ובחר/י מהרשימה כדי לסקור פעולותיו.',
2387
2419
  TraceSearchHelp: 'הקלד/י מספר מסמך ובחר/י כדי לעקוב אחרי תנועותיו.',
2388
2420
  DiagramVersion: 'גרסה {0}',
@@ -2409,6 +2441,10 @@ const STRINGS = {
2409
2441
  Message: 'הודעה',
2410
2442
  ProgrammableExpression: 'ערך תכנותי',
2411
2443
  FYI: 'לידיעה בלבד',
2444
+ AssignTo: 'העבר למשתמש/ים',
2445
+ AssignFYI: 'שלח לידיעה בלבד',
2446
+ AssignNoteHint: 'לתשומת לב האדם שנוסף',
2447
+ AssignRoundtrip: 'החזר אלי לאחר אישור המשתמש שנוסף',
2412
2448
  SkipInRoute: 'דלג אם משתמש כבר בסבב',
2413
2449
  StandardTime: 'סטנדרט',
2414
2450
  EscalateRole: 'העברה',
@@ -2743,6 +2779,9 @@ const STRINGS = {
2743
2779
  YouRepliedTo: '{0}השבת ל',
2744
2780
  ReplyingToYou: '{0} השיב לך',
2745
2781
  ByYou: '{0} דרכך',
2782
+ ActionByYou: '{0} דרכך',
2783
+ ActionByBy: '{0} דרך {1} בשם {2}',
2784
+ ActionBy: '{0} דרך {1}',
2746
2785
  EscalatedTo: 'החרפה אל {0} אחרי <em>{1}</em>',
2747
2786
  EscalatedFrom: 'החרפה מ-{0} אחרי <em>{1}</em>',
2748
2787
  EscalatedBy: '{0} הועבר אל {1}',
@@ -3979,7 +4018,7 @@ TypeAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
3979
4018
  <span *ngIf="_column">{{v.value[_column.name]}}</span>
3980
4019
  </mat-option>
3981
4020
  </mat-autocomplete>
3982
- <button mat-icon-button matSuffix (click)="clear()" *ngIf="_control.value"><mat-icon>close</mat-icon></button>`, isInline: true, styles: ["[matsuffix].mat-icon-button{opacity:.54}\n"], components: [{ type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }], pipes: { "async": i10.AsyncPipe } });
4021
+ <button mat-icon-button matSuffix (click)="clear()" *ngIf="_control.value"><mat-icon>close</mat-icon></button>`, isInline: true, styles: ["[matsuffix].mat-icon-button{opacity:.54}\n"], components: [{ type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }], pipes: { "async": i10.AsyncPipe } });
3983
4022
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TypeAutocomplete, decorators: [{
3984
4023
  type: Component,
3985
4024
  args: [{
@@ -4111,7 +4150,7 @@ DateField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13
4111
4150
  <ng-container>
4112
4151
  <mat-error *ngFor="let v of field.validations" [style.display]="control.hasError(v.type) ? '': 'none'"> {{ v.message }} </mat-error>
4113
4152
  </ng-container>
4114
- </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i3$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i3$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }] });
4153
+ </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }] });
4115
4154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DateField, decorators: [{
4116
4155
  type: Component,
4117
4156
  args: [{
@@ -4158,7 +4197,7 @@ DateRangeField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
4158
4197
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
4159
4198
  <mat-date-range-picker #picker></mat-date-range-picker>
4160
4199
  <mat-hint *ngIf="field.hint"> {{ field.hint }}</mat-hint>
4161
- </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3$1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { type: i3$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i3$1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }], directives: [{ type: i1$1.MatLabel, selector: "mat-label" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3$1.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3$1.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
4200
+ </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }], directives: [{ type: i1$1.MatLabel, selector: "mat-label" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
4162
4201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DateRangeField, decorators: [{
4163
4202
  type: Component,
4164
4203
  args: [{
@@ -4194,7 +4233,7 @@ TextareaField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
4194
4233
  [required]="field.required" [minlength]="field.min" [maxlength]="field.max" [pattern]="field.pattern"></textarea>
4195
4234
  <mat-hint *ngIf="field.hint"> {{ field.hint }}</mat-hint>
4196
4235
  <mat-hint *ngIf="field.max" align="end">{{control.value?.length || 0}} / {{field.max}}</mat-hint>
4197
- </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
4236
+ </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
4198
4237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TextareaField, decorators: [{
4199
4238
  type: Component,
4200
4239
  args: [{
@@ -4229,7 +4268,7 @@ NumericField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
4229
4268
  <ng-container>
4230
4269
  <mat-error *ngFor="let v of field.validations" [style.display]="control.hasError(v.type) ? '': 'none'"> {{ v.message }} </mat-error>
4231
4270
  </ng-container>
4232
- </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i1$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i1$2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }] });
4271
+ </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i1$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i1$2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }] });
4233
4272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NumericField, decorators: [{
4234
4273
  type: Component,
4235
4274
  args: [{
@@ -4284,7 +4323,7 @@ InputField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "1
4284
4323
  <ng-container>
4285
4324
  <mat-error *ngFor="let v of field.validations" [style.display]="control.hasError(v.type) ? '': 'none'"> {{ v.message }} </mat-error>
4286
4325
  </ng-container>
4287
- </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }] });
4326
+ </mat-form-field>`, isInline: true, components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }] });
4288
4327
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: InputField, decorators: [{
4289
4328
  type: Component,
4290
4329
  args: [{
@@ -4586,7 +4625,7 @@ class ActionDialog {
4586
4625
  }
4587
4626
  }
4588
4627
  ActionDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: SessionService }, { token: BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
4589
- ActionDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ActionDialog, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content fxLayout=\"column\">\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <bizdoc-layout [fields]=\"action.arguments\"\r\n *ngIf=\"!action.template; else template\"\r\n [(model)]=\"arguments\"\r\n [(valid)]=\"valid\"></bizdoc-layout>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" [mat-dialog-close]=\"arguments\" color=\"primary\">{{'Yes'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #template>\r\n <ngx-component-outlet [type]=\"comp\" [injector]=\"injector\" (create)=\"bind($event)\"></ngx-component-outlet>\r\n</ng-template>\r\n", styles: [":host ::ng-deep form{display:flex}\n"], components: [{ type: LayoutComponent, selector: "bizdoc-layout", inputs: ["fields", "model", "dirty", "params", "valid"], outputs: ["modelChange", "dirtyChange", "validChange"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: NgxComponentOutlet, selector: "ngx-component-outlet", inputs: ["type", "injector", "ngxComponentOutletContent"], outputs: ["create"] }], pipes: { "translate": TranslatePipe } });
4628
+ ActionDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ActionDialog, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content fxLayout=\"column\">\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <bizdoc-layout [fields]=\"action.arguments\"\r\n *ngIf=\"!action.template; else template\"\r\n [(model)]=\"arguments\"\r\n [(valid)]=\"valid\"></bizdoc-layout>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" [mat-dialog-close]=\"arguments\" color=\"primary\">{{'Yes'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #template>\r\n <ngx-component-outlet [type]=\"comp\" [injector]=\"injector\" (create)=\"bind($event)\"></ngx-component-outlet>\r\n</ng-template>\r\n", styles: [":host ::ng-deep form{display:flex}\n"], components: [{ type: LayoutComponent, selector: "bizdoc-layout", inputs: ["fields", "model", "dirty", "params", "valid"], outputs: ["modelChange", "dirtyChange", "validChange"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: NgxComponentOutlet, selector: "ngx-component-outlet", inputs: ["type", "injector", "ngxComponentOutletContent"], outputs: ["create"] }], pipes: { "translate": TranslatePipe } });
4590
4629
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionDialog, decorators: [{
4591
4630
  type: Component,
4592
4631
  args: [{ template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content fxLayout=\"column\">\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <bizdoc-layout [fields]=\"action.arguments\"\r\n *ngIf=\"!action.template; else template\"\r\n [(model)]=\"arguments\"\r\n [(valid)]=\"valid\"></bizdoc-layout>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" [mat-dialog-close]=\"arguments\" color=\"primary\">{{'Yes'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #template>\r\n <ngx-component-outlet [type]=\"comp\" [injector]=\"injector\" (create)=\"bind($event)\"></ngx-component-outlet>\r\n</ng-template>\r\n", styles: [":host ::ng-deep form{display:flex}\n"] }]
@@ -4690,7 +4729,7 @@ class AskDialog {
4690
4729
  }
4691
4730
  }
4692
4731
  AskDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AskDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component });
4693
- AskDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AskDialog, selector: "bizdoc-ask", ngImport: i0, template: "<h2 mat-dialog-title>{{title}}</h2>\r\n<mat-dialog-content class=\"mat-body\">{{content}}</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" [color]=\"color\">{{ok}}</button>\r\n <button mat-button mat-dialog-close>{{cancel}}</button>\r\n</mat-dialog-actions>\r\n", components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
4732
+ AskDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AskDialog, selector: "bizdoc-ask", ngImport: i0, template: "<h2 mat-dialog-title>{{title}}</h2>\r\n<mat-dialog-content class=\"mat-body\">{{content}}</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" [color]=\"color\">{{ok}}</button>\r\n <button mat-button mat-dialog-close>{{cancel}}</button>\r\n</mat-dialog-actions>\r\n", components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
4694
4733
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AskDialog, decorators: [{
4695
4734
  type: Component,
4696
4735
  args: [{ selector: 'bizdoc-ask', template: "<h2 mat-dialog-title>{{title}}</h2>\r\n<mat-dialog-content class=\"mat-body\">{{content}}</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" [color]=\"color\">{{ok}}</button>\r\n <button mat-button mat-dialog-close>{{cancel}}</button>\r\n</mat-dialog-actions>\r\n" }]
@@ -4784,12 +4823,12 @@ class PromptService {
4784
4823
  return oRef;
4785
4824
  }
4786
4825
  }
4787
- PromptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PromptService, deps: [{ token: i3$2.MatDialog }, { token: i8$1.MatSnackBar }, { token: i0.Injector }, { token: i1$4.Overlay }, { token: TranslateService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Injectable });
4826
+ PromptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PromptService, deps: [{ token: i3$1.MatDialog }, { token: i8$1.MatSnackBar }, { token: i0.Injector }, { token: i1$4.Overlay }, { token: TranslateService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Injectable });
4788
4827
  PromptService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PromptService, providedIn: 'root' });
4789
4828
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PromptService, decorators: [{
4790
4829
  type: Injectable,
4791
4830
  args: [{ providedIn: 'root' }]
4792
- }], ctorParameters: function () { return [{ type: i3$2.MatDialog }, { type: i8$1.MatSnackBar }, { type: i0.Injector }, { type: i1$4.Overlay }, { type: TranslateService }, { type: SessionService }]; } });
4831
+ }], ctorParameters: function () { return [{ type: i3$1.MatDialog }, { type: i8$1.MatSnackBar }, { type: i0.Injector }, { type: i1$4.Overlay }, { type: TranslateService }, { type: SessionService }]; } });
4793
4832
 
4794
4833
  class PopupRef {
4795
4834
  constructor(_data) {
@@ -5110,7 +5149,7 @@ class ActionPicker extends ActionBase {
5110
5149
  });
5111
5150
  }
5112
5151
  }
5113
- ActionPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionPicker, deps: [{ token: DOCUMENT_MODEL }, { token: SessionService }, { token: MailboxService }, { token: i3$2.MatDialog }, { token: AccountService }, { token: PromptService }], target: i0.ɵɵFactoryTarget.Component });
5152
+ ActionPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionPicker, deps: [{ token: DOCUMENT_MODEL }, { token: SessionService }, { token: MailboxService }, { token: i3$1.MatDialog }, { token: AccountService }, { token: PromptService }], target: i0.ɵɵFactoryTarget.Component });
5114
5153
  ActionPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ActionPicker, selector: "bizdoc-action-picker", inputs: { working: "working" }, outputs: { workingChange: "workingChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"actions.length\">\r\n <button mat-raised-button color=\"primary\" [attr.data-help]=\"'action-'+actions[0].name\" (click)=\"send(actions[0])\" [disabled]=\"working\">\r\n <span>{{actions[0].title}}</span>\r\n </button>\r\n &nbsp;\r\n <ng-container [ngSwitch]=\"actions.length\">\r\n <button mat-stroked-button [attr.data-help]=\"'action-'+actions[1].name\" *ngSwitchCase=\"2\" [disabled]=\"working\" (click)=\"send(actions[1])\">\r\n <span>{{actions[1].title}}</span>\r\n </button>\r\n <ng-container *ngSwitchDefault>\r\n <button mat-stroked-button data-help=\"send\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"working\" [bizdocTooltip]=\"'Send' | translate\">\r\n <span>{{'Actions' | translate}}</span> <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n <ng-container *ngFor=\"let a of actions.slice(1); let i = index\">\r\n <mat-divider *ngIf=\"i > 1 && actions[i - 1].group !== a.group\"></mat-divider>\r\n <button mat-menu-item (click)=\"send(a)\">{{a.title}}</button>\r\n </ng-container>\r\n </ng-template>\r\n </mat-menu>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:row}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i8$2.MatMenuContent, selector: "ng-template[matMenuContent]" }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": TranslatePipe } });
5115
5154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionPicker, decorators: [{
5116
5155
  type: Component,
@@ -5118,7 +5157,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
5118
5157
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
5119
5158
  type: Inject,
5120
5159
  args: [DOCUMENT_MODEL]
5121
- }] }, { type: SessionService }, { type: MailboxService }, { type: i3$2.MatDialog }, { type: AccountService }, { type: PromptService }]; }, propDecorators: { working: [{
5160
+ }] }, { type: SessionService }, { type: MailboxService }, { type: i3$1.MatDialog }, { type: AccountService }, { type: PromptService }]; }, propDecorators: { working: [{
5122
5161
  type: Input
5123
5162
  }], workingChange: [{
5124
5163
  type: Output
@@ -5683,8 +5722,8 @@ class CubeService {
5683
5722
  * get segments
5684
5723
  * @param cube
5685
5724
  */
5686
- segments(cube, type) {
5687
- return this._cacheOr(`${type}-segments`, () => this._http.get(`/api/cube/segments/${cube}?type=${type}`));
5725
+ segments(cube, name) {
5726
+ return this._cacheOr(`${name}-segments`, () => this._http.get(`/api/cube/segments/${cube}/${name}`));
5688
5727
  }
5689
5728
  /**
5690
5729
  * get user patterns
@@ -6009,7 +6048,7 @@ class CubeFilterComponent {
6009
6048
  }
6010
6049
  }
6011
6050
  CubeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeFilterComponent, deps: [{ token: CubeService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$2.FormBuilder }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
6012
- CubeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: { cube: "cube", exclude: "exclude", include: "include", axes: "axes" }, outputs: { axesChange: "axesChange" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngFor=\"let a of visibleAxes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n", styles: ["form{padding:8px}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "slice": i10.SlicePipe, "filter": FilterPipe, "async": i10.AsyncPipe } });
6051
+ CubeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: { cube: "cube", exclude: "exclude", include: "include", axes: "axes" }, outputs: { axesChange: "axesChange" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngFor=\"let a of visibleAxes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n", styles: ["form{padding:8px}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "slice": i10.SlicePipe, "filter": FilterPipe, "async": i10.AsyncPipe } });
6013
6052
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeFilterComponent, decorators: [{
6014
6053
  type: Component,
6015
6054
  args: [{ selector: 'bizdoc-cube-filter', template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngFor=\"let a of visibleAxes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n", styles: ["form{padding:8px}\n"] }]
@@ -6139,7 +6178,7 @@ class BrowseFilterComponent {
6139
6178
  }
6140
6179
  }
6141
6180
  BrowseFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowseFilterComponent, deps: [{ token: i1$2.FormBuilder }, { token: SessionService }, { token: i0.ChangeDetectorRef }, { token: MailboxService }, { token: AccountService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
6142
- BrowseFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseFilterComponent, selector: "bizdoc-browse-filter", inputs: { values: "values", folderId: "folderId", exclude: "exclude" }, outputs: { valuesChange: "valuesChange" }, viewQueries: [{ propertyName: "chips", first: true, predicate: MatChipList, descendants: true, static: true }, { propertyName: "contains", first: true, predicate: ["contains"], descendants: true, read: ElementRef, static: true }, { propertyName: "sender", first: true, predicate: ["sender"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngIf=\"!exclude || exclude.indexOf('contains') < 0\">\r\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n <button *ngIf=\"form.value.contains\" matSuffix mat-icon-button aria-label=\"\" (click)=\"form.get('contains').setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender/>\r\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\r\n <!--<mat-option [value]=\"null\">\r\n {{ 'All' | translate }}\r\n </mat-option>-->\r\n <mat-option *ngFor=\"let u of senders$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button matSuffix mat-icon-button *ngIf=\"senderId.value\" (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let s of states\" [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let f of forms\" [value]=\"f.name\">{{f.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div>\r\n <mat-chip-list id=\"tags\" [selectable]=\"true\">\r\n <mat-chip color=\"accent\" *ngFor=\"let tag of tags\" [selectable]=\"true\" [selected]=\"form.value.tag === tag\" (click)=\"toggleTag(tag)\" style=\"cursor: pointer\">\r\n {{tag}}\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n <bizdoc-cube-filter *ngIf=\"filters\" class=\"cube-filter\"\r\n [cube]=\"filters.cube\"\r\n [include]=\"filters.axes\"\r\n [axes]=\"values\"\r\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\r\n</form>\r\n", styles: ["form{padding:8px}.cube-filter ::ng-deep form{padding:0}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3$3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
6181
+ BrowseFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseFilterComponent, selector: "bizdoc-browse-filter", inputs: { values: "values", folderId: "folderId", exclude: "exclude" }, outputs: { valuesChange: "valuesChange" }, viewQueries: [{ propertyName: "chips", first: true, predicate: MatChipList, descendants: true, static: true }, { propertyName: "contains", first: true, predicate: ["contains"], descendants: true, read: ElementRef, static: true }, { propertyName: "sender", first: true, predicate: ["sender"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngIf=\"!exclude || exclude.indexOf('contains') < 0\">\r\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n <button *ngIf=\"form.value.contains\" matSuffix mat-icon-button aria-label=\"\" (click)=\"form.get('contains').setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender/>\r\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\r\n <!--<mat-option [value]=\"null\">\r\n {{ 'All' | translate }}\r\n </mat-option>-->\r\n <mat-option *ngFor=\"let u of senders$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button matSuffix mat-icon-button *ngIf=\"senderId.value\" (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let s of states\" [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let f of forms\" [value]=\"f.name\">{{f.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div>\r\n <mat-chip-list id=\"tags\" [selectable]=\"true\">\r\n <mat-chip color=\"accent\" *ngFor=\"let tag of tags\" [selectable]=\"true\" [selected]=\"form.value.tag === tag\" (click)=\"toggleTag(tag)\" style=\"cursor: pointer\">\r\n {{tag}}\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n <bizdoc-cube-filter *ngIf=\"filters\" class=\"cube-filter\"\r\n [cube]=\"filters.cube\"\r\n [include]=\"filters.axes\"\r\n [axes]=\"values\"\r\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\r\n</form>\r\n", styles: ["form{padding:8px}.cube-filter ::ng-deep form{padding:0}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3$2.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
6143
6182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowseFilterComponent, decorators: [{
6144
6183
  type: Component,
6145
6184
  args: [{ selector: 'bizdoc-browse-filter', template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngIf=\"!exclude || exclude.indexOf('contains') < 0\">\r\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n <button *ngIf=\"form.value.contains\" matSuffix mat-icon-button aria-label=\"\" (click)=\"form.get('contains').setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender/>\r\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\r\n <!--<mat-option [value]=\"null\">\r\n {{ 'All' | translate }}\r\n </mat-option>-->\r\n <mat-option *ngFor=\"let u of senders$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button matSuffix mat-icon-button *ngIf=\"senderId.value\" (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let s of states\" [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let f of forms\" [value]=\"f.name\">{{f.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div>\r\n <mat-chip-list id=\"tags\" [selectable]=\"true\">\r\n <mat-chip color=\"accent\" *ngFor=\"let tag of tags\" [selectable]=\"true\" [selected]=\"form.value.tag === tag\" (click)=\"toggleTag(tag)\" style=\"cursor: pointer\">\r\n {{tag}}\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n <bizdoc-cube-filter *ngIf=\"filters\" class=\"cube-filter\"\r\n [cube]=\"filters.cube\"\r\n [include]=\"filters.axes\"\r\n [axes]=\"values\"\r\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\r\n</form>\r\n", styles: ["form{padding:8px}.cube-filter ::ng-deep form{padding:0}\n"] }]
@@ -6174,9 +6213,21 @@ class PanesRouter {
6174
6213
  get active() {
6175
6214
  return this._active;
6176
6215
  }
6177
- //replace(url: string) {
6178
- // history.pushState({}, '', url);
6179
- //}
6216
+ toggle(commands, options) {
6217
+ return new Promise((resolve, reject) => {
6218
+ this._events$.pipe(filter(e => e instanceof NavigationStart), first()).subscribe((e) => resolve(e.pane), reject);
6219
+ this._navigate$.next(isArray(commands) ? {
6220
+ commands, ...options,
6221
+ toggle: true
6222
+ } : {
6223
+ component: commands, ...options,
6224
+ toggle: true
6225
+ });
6226
+ });
6227
+ }
6228
+ replace(url) {
6229
+ history.pushState({}, '', url);
6230
+ }
6180
6231
  navigate(commands, options) {
6181
6232
  return new Promise((resolve, reject) => {
6182
6233
  this._events$.pipe(filter(e => e instanceof NavigationStart), first()).subscribe((e) => resolve(e.pane), reject);
@@ -6879,15 +6930,15 @@ function getSecondsUntilUpdate(time) {
6879
6930
 
6880
6931
  const REFRESH_TIME = 30000, TYPING_HINT_TIME = 1500;
6881
6932
  class ExpandedItemComponent {
6882
- constructor(_sb, _chat, _accounts, _dir, _translate, _mailbox, _dialog, _session, _messaging) {
6933
+ constructor(_sb, _chat, _accounts, _mailbox, _session, _dir, _dialog, _translate, _messaging) {
6883
6934
  this._sb = _sb;
6884
6935
  this._chat = _chat;
6885
6936
  this._accounts = _accounts;
6886
- this._dir = _dir;
6887
- this._translate = _translate;
6888
6937
  this._mailbox = _mailbox;
6889
- this._dialog = _dialog;
6890
6938
  this._session = _session;
6939
+ this._dir = _dir;
6940
+ this._dialog = _dialog;
6941
+ this._translate = _translate;
6891
6942
  this._messaging = _messaging;
6892
6943
  this.sent = new EventEmitter();
6893
6944
  this._destroy = new Subject();
@@ -6895,22 +6946,22 @@ class ExpandedItemComponent {
6895
6946
  ngOnInit() {
6896
6947
  this._messaging.comment$.pipe(takeUntil(this._destroy)).
6897
6948
  subscribe(e => {
6898
- if (e.id === this.item.id && (e.model.byId || e.model.userId) !== this._session.userId) {
6949
+ if (e.id === this.model.id && (e.model.byId || e.model.userId) !== this._session.userId) {
6899
6950
  this._comments();
6900
6951
  this._accounts.get(e.model.userId).subscribe(u => this._sb.toast('Commented', u.gender, u.name));
6901
6952
  }
6902
6953
  });
6903
6954
  this._messaging.update$.pipe(takeUntil(this._destroy)).subscribe(e => {
6904
- if (e.model.id === this.item.id) {
6955
+ if (e.model.id === this.model.id) {
6905
6956
  this._refresh();
6906
- (e.userId !== this._session.userId) && this._accounts.get(e.userId).subscribe(u => this._sb.toast('MailVersionUpdate', this.item.number, u.name));
6957
+ (e.userId !== this._session.userId) && this._accounts.get(e.userId).subscribe(u => this._sb.toast('MailVersionUpdate', this.model.number, u.name));
6907
6958
  }
6908
6959
  });
6909
6960
  this._mailbox.changed.pipe(takeUntil(this._destroy)).subscribe(e => {
6910
- if (e.id === this.item.id)
6961
+ if (e.id === this.model.id)
6911
6962
  this._refresh();
6912
6963
  });
6913
- this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter$1(e => e.id === this.item.documentId)).subscribe(c => {
6964
+ this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter$1(e => e.id === this.model.documentId)).subscribe(c => {
6914
6965
  this.typing = true;
6915
6966
  clearTimeout(this._typingTask);
6916
6967
  this._typingTask = setTimeout(() => this.typing = false, TYPING_HINT_TIME);
@@ -6919,31 +6970,28 @@ class ExpandedItemComponent {
6919
6970
  this._refreshTask = setInterval(() => this._refresh(), REFRESH_TIME);
6920
6971
  }
6921
6972
  async _note() {
6922
- const { ownerId, issued, substitutingId, received, replied, log, id, note, byId, action, toId } = this.item;
6973
+ const { ownerId, issued, substitutingId, received, replied, log, id, note, byId, action, toId, escalated, originId } = this.model;
6923
6974
  if (substitutingId) {
6924
- this._accounts.get(substitutingId).subscribe(u => {
6925
- if (replied) {
6926
- const time = this._fromNow(replied), action = this._session.profile.actions.find(a => a.name === action), adjective = (action.adjective || action.title).toLowerCase();
6927
- if (toId)
6928
- this._accounts.get(toId).subscribe(t => this.note = this._translate.personalize('YouSubstituteActionTakenTo', u.gender, adjective, this._formatUserElement(t), this._formatUserElement(u), time));
6929
- else
6930
- this.note = this._translate.personalize('YouSubstituteActionTaken', u.gender, adjective, this._formatUserElement(u), time);
6975
+ const substituting = await this._accounts.get(substitutingId).toPromise();
6976
+ if (replied) {
6977
+ const time = this._fromNow(replied), action = this._session.profile.actions.find(a => a.name === action), adjective = (action.adjective || action.title).toLowerCase();
6978
+ if (toId) {
6979
+ const to = await this._accounts.get(toId).toPromise();
6980
+ this.note = this._translate.personalize('YouSubstituteActionTakenTo', substituting.gender, adjective, this._formatUserElement(to), this._formatUserElement(substituting), time);
6931
6981
  }
6932
- else {
6933
- const escalations = issued &&
6934
- log.filter(l => l.time > issued &&
6935
- l.type === 'Escalation'
6936
- && l.recipientId === id);
6937
- if (escalations && escalations.length) {
6938
- const duration = dayjs(escalations[0].time).diff(received, 's');
6939
- this.note = this._translate.personalize('EscalatedFrom', u.gender, this._formatUserElement(u), this._duration(duration));
6940
- }
6941
- else {
6942
- const time = this._fromNow(received);
6943
- this.note = this._translate.personalize('SubstitutingNote', u.gender, this._formatUserElement(u), time, note || '');
6944
- }
6945
- }
6946
- });
6982
+ else
6983
+ this.note = this._translate.personalize('YouSubstituteActionTaken', substituting.gender, adjective, this._formatUserElement(substituting), time);
6984
+ }
6985
+ else if (escalated) {
6986
+ const escalations = log.filter(l => l.time > issued &&
6987
+ l.type === 'Escalation'
6988
+ && l.recipientId === id);
6989
+ this.note = this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalations[0].duration));
6990
+ }
6991
+ else {
6992
+ const time = this._fromNow(received);
6993
+ this.note = this._translate.personalize('SubstitutingNote', substituting.gender, this._formatUserElement(substituting), time, note || '');
6994
+ }
6947
6995
  }
6948
6996
  else if (replied) {
6949
6997
  const time = this._fromNow(replied);
@@ -6977,6 +7025,21 @@ class ExpandedItemComponent {
6977
7025
  }
6978
7026
  else if (note)
6979
7027
  this.note = note;
7028
+ else if (originId) {
7029
+ const origin = this.model.recipients.find(r => r.id === originId);
7030
+ const action = this._session.profile.actions.find(a => a.name === origin.action), adjective = action.adjective || action.past || action.title;
7031
+ if ((origin.byId || origin.userId) === this._session.userId)
7032
+ this.note = this._translate.get('ActionByYou', adjective);
7033
+ else if (origin.byId) {
7034
+ const who = await this._accounts.get(origin.userId).toPromise();
7035
+ const by = await this._accounts.get(origin.byId).toPromise();
7036
+ this.note = this._translate.get('ActionByBy', adjective, by.name, who.name);
7037
+ }
7038
+ else {
7039
+ const who = await this._accounts.get(origin.userId).toPromise();
7040
+ this.note = this._translate.get('ActionBy', adjective, who.name);
7041
+ }
7042
+ }
6980
7043
  else if (ownerId === this._session.profile.userId && issued) {
6981
7044
  const time = this._fromNow(issued);
6982
7045
  if (byId) {
@@ -7017,9 +7080,9 @@ class ExpandedItemComponent {
7017
7080
  }
7018
7081
  /** */
7019
7082
  async _refresh() {
7020
- const { actions } = this.item;
7083
+ const { actions } = this.model;
7021
7084
  this.actions = actions && actions.length ? this._session.profile.actions.filter(a => actions.indexOf(a.name) > -1) : null;
7022
- const { senderId } = this.item;
7085
+ const { senderId } = this.model;
7023
7086
  // sender
7024
7087
  if (senderId && (senderId !== this._session.userId)) {
7025
7088
  const who = await this._accounts.get(senderId).toPromise();
@@ -7030,13 +7093,13 @@ class ExpandedItemComponent {
7030
7093
  this._awaiting();
7031
7094
  }
7032
7095
  _comments() {
7033
- const { viewed, comments } = this.item;
7096
+ const { viewed, comments } = this.model;
7034
7097
  this.newComments = viewed ?
7035
7098
  comments.filter(c => c.time > viewed && (c.byId || c.userId) !== this._session.userId).length || null : null;
7036
7099
  }
7037
7100
  async _awaiting() {
7038
7101
  //awaiting
7039
- let recipients = this.item.recipients.filter(r => r.pending && !r.estimate).
7102
+ let recipients = this.model.recipients.filter(r => r.pending && !r.estimate).
7040
7103
  sort((r0, r1) => r0.received > r1.received ? 1 : -1).
7041
7104
  map(r => r.userId);
7042
7105
  recipients = recipients.filter((r, i) => recipients.indexOf(r) === i); /* unique */
@@ -7067,10 +7130,10 @@ class ExpandedItemComponent {
7067
7130
  * @param action
7068
7131
  */
7069
7132
  send(action) {
7070
- const { id, number, version, formId } = this.item;
7133
+ const { id, number, version, formId } = this.model;
7071
7134
  const data = {
7072
7135
  action,
7073
- item: this.item
7136
+ item: this.model
7074
7137
  };
7075
7138
  this._dialog.open(ActionDialog, {
7076
7139
  data,
@@ -7084,10 +7147,10 @@ class ExpandedItemComponent {
7084
7147
  this._accounts.get(r.toId).subscribe(u => this._sb.toast('SentTo', number, adjective.toLowerCase(), u.name));
7085
7148
  else
7086
7149
  this._sb.toast('Sent', number, adjective.toLowerCase());
7087
- this.sent.emit(this.item);
7150
+ this.sent.emit(this.model);
7088
7151
  this.mode = 'done';
7089
7152
  }, e => {
7090
- this._handleResponse(e, this.item, 'SendErr');
7153
+ this._handleResponse(e, this.model, 'SendErr');
7091
7154
  this.mode = 'failed';
7092
7155
  });
7093
7156
  }
@@ -7131,12 +7194,12 @@ class ExpandedItemComponent {
7131
7194
  this._typingTask && clearTimeout(this._typingTask);
7132
7195
  }
7133
7196
  }
7134
- ExpandedItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: PromptService }, { token: ChatInfo }, { token: AccountService }, { token: i7$2.Directionality }, { token: TranslateService }, { token: MailboxService }, { token: i3$2.MatDialog }, { token: SessionService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
7135
- ExpandedItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { item: "item" }, outputs: { sent: "sent" }, ngImport: i0, template: "<div class=\"summary\" *ngIf=\"item.summary\" [innerHTML]=\"item.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"item\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"item\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{item.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"item.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{item.comments.length > 1 ? ('CommentsCount' | translate : item.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.tags\">\r\n <span *ngFor=\"let tag of item.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : item.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"], components: [{ type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { type: DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }], pipes: { "sanitizeHtml": SanitizeHtmlPipe, "state": StatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "translate": TranslatePipe } });
7197
+ ExpandedItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: PromptService }, { token: ChatInfo }, { token: AccountService }, { token: MailboxService }, { token: SessionService }, { token: i7$2.Directionality }, { token: i3$1.MatDialog }, { token: TranslateService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
7198
+ ExpandedItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"model.tags\">\r\n <span *ngFor=\"let tag of model.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"], components: [{ type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { type: DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }], pipes: { "sanitizeHtml": SanitizeHtmlPipe, "state": StatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "translate": TranslatePipe } });
7136
7199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ExpandedItemComponent, decorators: [{
7137
7200
  type: Component,
7138
- args: [{ selector: 'bizdoc-expanded-item', template: "<div class=\"summary\" *ngIf=\"item.summary\" [innerHTML]=\"item.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"item\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"item\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{item.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"item.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{item.comments.length > 1 ? ('CommentsCount' | translate : item.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.tags\">\r\n <span *ngFor=\"let tag of item.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : item.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"] }]
7139
- }], ctorParameters: function () { return [{ type: PromptService }, { type: ChatInfo }, { type: AccountService }, { type: i7$2.Directionality }, { type: TranslateService }, { type: MailboxService }, { type: i3$2.MatDialog }, { type: SessionService }, { type: HubService }]; }, propDecorators: { item: [{
7201
+ args: [{ selector: 'bizdoc-expanded-item', template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small\" fxLayout=\"row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div fxLayoutAlign=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"model.tags\">\r\n <span *ngFor=\"let tag of model.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"] }]
7202
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: ChatInfo }, { type: AccountService }, { type: MailboxService }, { type: SessionService }, { type: i7$2.Directionality }, { type: i3$1.MatDialog }, { type: TranslateService }, { type: HubService }]; }, propDecorators: { model: [{
7140
7203
  type: Input
7141
7204
  }], sent: [{
7142
7205
  type: Output
@@ -7569,7 +7632,7 @@ class BrowseItemsComponent {
7569
7632
  }
7570
7633
  }
7571
7634
  BrowseItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowseItemsComponent, deps: [{ token: MailboxService }, { token: AccountService }, { token: CubeService }, { token: SessionService }, { token: PromptService }, { token: TranslateService }, { token: i0.ChangeDetectorRef }, { token: RouterImpl }, { token: HubService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
7572
- BrowseItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [item]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], components: [{ type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["item"], outputs: ["sent"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i22.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i22.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i22.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { type: i22.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i8$2.MatMenuContent, selector: "ng-template[matMenuContent]" }], pipes: { "translate": TranslatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "number": i10.DecimalPipe, "currency": i10.CurrencyPipe }, animations: [
7635
+ BrowseItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [model]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], components: [{ type: NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["model"], outputs: ["sent"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i22.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i22.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i22.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { type: i22.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i8$2.MatMenuContent, selector: "ng-template[matMenuContent]" }], pipes: { "translate": TranslatePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe, "number": i10.DecimalPipe, "currency": i10.CurrencyPipe }, animations: [
7573
7636
  listAnimation,
7574
7637
  itemAnimation,
7575
7638
  expandListItemAnimation,
@@ -7582,7 +7645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
7582
7645
  itemAnimation,
7583
7646
  expandListItemAnimation,
7584
7647
  listItemUpdatedAnimation
7585
- ], template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [item]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
7648
+ ], template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <!--<button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>-->\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [bizdocTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"receivedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"received\">{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.received | amCalendar\">{{item.received | amTimeAgo}}</mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"issuedAgo\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"issued\">{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\" [bizdocTooltip]=\"item.issued | amCalendar\"> {{item.issued | amTimeAgo}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"state\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <ng-container [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar }}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" [disabled]=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}z\r\n </span>\r\n </ng-container>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [bizdocTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [bizdocTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\" *ngIf=\"enableAnalysis\"><mat-icon>data_usage</mat-icon></button>\r\n <button mat-icon-button (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\" fxHide.xs [matMenuTriggerData]=\"{item: item}\" [bizdocTooltip]=\"'Options' | translate\" [attr.aria-label]=\"'Options' | translate\" class=\"tool\"><mat-icon>more_vert</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [model]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"copy(item)\">{{'Copy'| translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"] }]
7586
7649
  }], ctorParameters: function () { return [{ type: MailboxService }, { type: AccountService }, { type: CubeService }, { type: SessionService }, { type: PromptService }, { type: TranslateService }, { type: i0.ChangeDetectorRef }, { type: RouterImpl }, { type: HubService }, { type: undefined, decorators: [{
7587
7650
  type: Inject,
7588
7651
  args: [BIZDOC_CONFIG]
@@ -7710,7 +7773,7 @@ class TagsComponent {
7710
7773
  }
7711
7774
  }
7712
7775
  TagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TagsComponent, deps: [{ token: POPUP_DATA }, { token: MailboxService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
7713
- TagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TagsComponent, selector: "ng-component", viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "auto", first: true, predicate: ["auto"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field floatLabel=\"never\">\r\n <mat-chip-list #chipList aria-label=\"Tags\">\r\n <mat-chip *ngFor=\"let item of tags\" [selectable]=\"true\"\r\n [removable]=\"true\" (removed)=\"remove(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Elipsis' | translate : ('Tags'|translate)\"\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [formControl]=\"control\"\r\n #input autocomplete=\"off\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n <mat-option *ngFor=\"let item of options | async\" [value]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3$3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3$3.MatChipRemove, selector: "[matChipRemove]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i3$3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
7776
+ TagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TagsComponent, selector: "ng-component", viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "auto", first: true, predicate: ["auto"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field floatLabel=\"never\">\r\n <mat-chip-list #chipList aria-label=\"Tags\">\r\n <mat-chip *ngFor=\"let item of tags\" [selectable]=\"true\"\r\n [removable]=\"true\" (removed)=\"remove(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Elipsis' | translate : ('Tags'|translate)\"\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [formControl]=\"control\"\r\n #input autocomplete=\"off\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n <mat-option *ngFor=\"let item of options | async\" [value]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3$2.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3$2.MatChipRemove, selector: "[matChipRemove]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i3$2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
7714
7777
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TagsComponent, decorators: [{
7715
7778
  type: Component,
7716
7779
  args: [{ template: "<mat-form-field floatLabel=\"never\">\r\n <mat-chip-list #chipList aria-label=\"Tags\">\r\n <mat-chip *ngFor=\"let item of tags\" [selectable]=\"true\"\r\n [removable]=\"true\" (removed)=\"remove(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Elipsis' | translate : ('Tags'|translate)\"\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [formControl]=\"control\"\r\n #input autocomplete=\"off\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n <mat-option *ngFor=\"let item of options | async\" [value]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"] }]
@@ -8518,14 +8581,14 @@ class ComposeFormComponent {
8518
8581
  this._destroy.complete();
8519
8582
  }
8520
8583
  }
8521
- ComposeFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ComposeFormComponent, deps: [{ token: Popup }, { token: MailboxService }, { token: AccountService }, { token: RouterImpl }, { token: i3$2.MatDialog }, { token: PromptService }, { token: SessionService }, { token: i0.Injector }, { token: i8$1.MatSnackBar }, { token: BizDocComponentFactoryResolver }, { token: GuideService }, { token: TranslateService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
8584
+ ComposeFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ComposeFormComponent, deps: [{ token: Popup }, { token: MailboxService }, { token: AccountService }, { token: RouterImpl }, { token: i3$1.MatDialog }, { token: PromptService }, { token: SessionService }, { token: i0.Injector }, { token: i8$1.MatSnackBar }, { token: BizDocComponentFactoryResolver }, { token: GuideService }, { token: TranslateService }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
8522
8585
  ComposeFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ComposeFormComponent, selector: "bizdoc-form", inputs: { model: "model", working: "working", dirty: "dirty", valid: "valid", mode: "mode", contacts: "contacts" }, outputs: { modelChange: "modelChange", workingChange: "workingChange", dirtyChange: "dirtyChange", validChange: "validChange" }, host: { classAttribute: "form-container bizdoc-compose" }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "attachments", first: true, predicate: AttachmentsComponent, descendants: true, static: true }, { propertyName: "_container", first: true, predicate: ["component"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-header\">\r\n <bizdoc-people [model]=\"model\" *ngIf=\"mode !== 'compose' && contacts\"></bizdoc-people>\r\n <bizdoc-attachments [model]=\"model\" [includeDeleted]=\"true\" [viewedIndicator]=\"false\"></bizdoc-attachments>\r\n <div *ngIf=\"!model.replied && mode !== 'compose' && model.note\" class=\"compose-note\">\r\n <mat-icon color=\"primary\">info</mat-icon> <span class=\"mat-body-2\">{{model.note}}</span>\r\n </div>\r\n <div *ngIf=\"model.tags\">\r\n <span *ngFor=\"let tag of model.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-container #component></ng-container>\r\n<form style=\"display:none\"><input type=\"file\" #file multiple /></form>\r\n", components: [{ type: PeopleComponent, selector: "bizdoc-people", inputs: ["model"] }, { type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }] });
8523
8586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ComposeFormComponent, decorators: [{
8524
8587
  type: Component,
8525
8588
  args: [{ selector: 'bizdoc-form', host: {
8526
8589
  class: 'form-container bizdoc-compose'
8527
8590
  }, template: "<div class=\"form-header\">\r\n <bizdoc-people [model]=\"model\" *ngIf=\"mode !== 'compose' && contacts\"></bizdoc-people>\r\n <bizdoc-attachments [model]=\"model\" [includeDeleted]=\"true\" [viewedIndicator]=\"false\"></bizdoc-attachments>\r\n <div *ngIf=\"!model.replied && mode !== 'compose' && model.note\" class=\"compose-note\">\r\n <mat-icon color=\"primary\">info</mat-icon> <span class=\"mat-body-2\">{{model.note}}</span>\r\n </div>\r\n <div *ngIf=\"model.tags\">\r\n <span *ngFor=\"let tag of model.tags\" class=\"mat-chip mat-standard-chip small-chip\">{{tag}}</span>\r\n </div>\r\n</div>\r\n<ng-container #component></ng-container>\r\n<form style=\"display:none\"><input type=\"file\" #file multiple /></form>\r\n" }]
8528
- }], ctorParameters: function () { return [{ type: Popup }, { type: MailboxService }, { type: AccountService }, { type: RouterImpl }, { type: i3$2.MatDialog }, { type: PromptService }, { type: SessionService }, { type: i0.Injector }, { type: i8$1.MatSnackBar }, { type: BizDocComponentFactoryResolver }, { type: GuideService }, { type: TranslateService }, { type: HubService }]; }, propDecorators: { model: [{
8591
+ }], ctorParameters: function () { return [{ type: Popup }, { type: MailboxService }, { type: AccountService }, { type: RouterImpl }, { type: i3$1.MatDialog }, { type: PromptService }, { type: SessionService }, { type: i0.Injector }, { type: i8$1.MatSnackBar }, { type: BizDocComponentFactoryResolver }, { type: GuideService }, { type: TranslateService }, { type: HubService }]; }, propDecorators: { model: [{
8529
8592
  type: Input
8530
8593
  }], modelChange: [{
8531
8594
  type: Output
@@ -8637,8 +8700,7 @@ class ComposePaneComponent {
8637
8700
  _navigate(command) {
8638
8701
  return this._router.navigate([command], {
8639
8702
  pathMode: 'relative',
8640
- relativeTo: this._pane,
8641
- policy: OpenPolicy.Toggle
8703
+ relativeTo: this._pane
8642
8704
  });
8643
8705
  }
8644
8706
  handleDocumentDrop(event) {
@@ -8837,14 +8899,14 @@ class BrowsePaneComponent {
8837
8899
  this._destroy.complete();
8838
8900
  }
8839
8901
  }
8840
- BrowsePaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowsePaneComponent, deps: [{ token: PaneRef }, { token: SessionService }, { token: Popup }, { token: PanesRouter }, { token: i7$2.Directionality }, { token: TranslateService }, { token: i3$2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
8841
- BrowsePaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowsePaneComponent, selector: "bizdoc-browse.pane", host: { listeners: { "document:keydown": "handleKeydown($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "items", first: true, predicate: BrowseItemsComponent, descendants: true, static: true }, { propertyName: "search", first: true, predicate: ["searchInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\" >\r\n <ng-container *ngIf=\"!items.selection.isEmpty(); else search\">\r\n <!--<button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>-->\r\n <button mat-icon-button *ngIf=\"items.isAllDraft()\" (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\r\n <button mat-button color=\"primary\" fxShow [fxShow.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\r\n <button mat-icon-button color=\"primary\" fxHide [fxHide.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\" [bizdocTooltip]=\"'Submit' | translate\" [attr.aria-label]=\"'Submit' | translate\"><mat-icon>send</mat-icon></button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length === 1\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\"><mat-icon *ngIf=\"items.sharedActions[0].icon\">{{items.sharedActions[0].icon}}</mat-icon>{{'SendSelected' | translate : items.selection.selected.length}}</button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length > 1\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\r\n {{'SendSelected'| translate : items.selection.selected.length }}\r\n </button>\r\n <mat-menu #action>\r\n <ng-container *ngFor=\"let a of items.sharedActions | sort : 'group'; let i = index\">\r\n <mat-divider *ngIf=\"i>0 && items.sharedActions[i-1].group !== a.group\">\r\n </mat-divider>\r\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\r\n {{ a.title }}\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\r\n </ng-container>\r\n</mat-toolbar>\r\n<bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\"\r\n (open)=\"open($event)\" (view)=\"view($event) \" #items></bizdoc-browse-items>\r\n<ng-template #search>\r\n <!--<button mat-icon-button (click)=\"openSearch()\"\r\n [bizdocTooltip]=\"'Search'|translate\" class=\"tool\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n [@search]=\"searching\"\r\n (@search.done)=\"searching && focus()\"-->\r\n <input matInput\r\n [formControl]=\"contains\" autocomplete=\"off\" placeholder=\"{{'Search' | translate}}\"\r\n class=\"search-box\"\r\n #searchInput\r\n (keydown.escape)=\"clearSearch($event)\">\r\n <mat-icon *ngIf=\"contains.value\" (click)=\"clearSearch()\">close</mat-icon>\r\n <span class=\"divider\"></span>\r\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\"><mat-icon>filter_list</mat-icon></button>\r\n</ng-template>\r\n", styles: [":host{min-width:540px;display:contents!important}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: ["folderId", "filterType", "filters"], outputs: ["open", "view"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": TranslatePipe, "sort": ArraySortPipe }, animations: [searchAnimation] });
8902
+ BrowsePaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowsePaneComponent, deps: [{ token: PaneRef }, { token: SessionService }, { token: Popup }, { token: PanesRouter }, { token: i7$2.Directionality }, { token: TranslateService }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
8903
+ BrowsePaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowsePaneComponent, selector: "bizdoc-browse.pane", host: { listeners: { "document:keydown": "handleKeydown($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "items", first: true, predicate: BrowseItemsComponent, descendants: true, static: true }, { propertyName: "search", first: true, predicate: ["searchInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\" >\r\n <ng-container *ngIf=\"!items.selection.isEmpty(); else search\">\r\n <!--<button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>-->\r\n <button mat-icon-button *ngIf=\"items.isAllDraft()\" (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\r\n <button mat-button color=\"primary\" fxShow [fxShow.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\r\n <button mat-icon-button color=\"primary\" fxHide [fxHide.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\" [bizdocTooltip]=\"'Submit' | translate\" [attr.aria-label]=\"'Submit' | translate\"><mat-icon>send</mat-icon></button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length === 1\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\"><mat-icon *ngIf=\"items.sharedActions[0].icon\">{{items.sharedActions[0].icon}}</mat-icon>{{'SendSelected' | translate : items.selection.selected.length}}</button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length > 1\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\r\n {{'SendSelected'| translate : items.selection.selected.length }}\r\n </button>\r\n <mat-menu #action>\r\n <ng-container *ngFor=\"let a of items.sharedActions | sort : 'group'; let i = index\">\r\n <mat-divider *ngIf=\"i>0 && items.sharedActions[i-1].group !== a.group\">\r\n </mat-divider>\r\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\r\n {{ a.title }}\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\r\n </ng-container>\r\n</mat-toolbar>\r\n<bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\"\r\n (open)=\"open($event)\" (view)=\"view($event) \" #items></bizdoc-browse-items>\r\n<ng-template #search>\r\n <!--<button mat-icon-button (click)=\"openSearch()\"\r\n [bizdocTooltip]=\"'Search'|translate\" class=\"tool\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n [@search]=\"searching\"\r\n (@search.done)=\"searching && focus()\"-->\r\n <input matInput\r\n [formControl]=\"contains\" autocomplete=\"off\" placeholder=\"{{'Search' | translate}}\"\r\n class=\"search-box\"\r\n #searchInput\r\n (keydown.escape)=\"clearSearch($event)\">\r\n <mat-icon *ngIf=\"contains.value\" (click)=\"clearSearch()\">close</mat-icon>\r\n <span class=\"divider\"></span>\r\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\"><mat-icon>filter_list</mat-icon></button>\r\n</ng-template>\r\n", styles: [":host{min-width:540px;display:contents!important}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: ["folderId", "filterType", "filters"], outputs: ["open", "view"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": TranslatePipe, "sort": ArraySortPipe }, animations: [searchAnimation] });
8842
8904
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowsePaneComponent, decorators: [{
8843
8905
  type: Component,
8844
8906
  args: [{ selector: 'bizdoc-browse.pane', animations: [searchAnimation], host: {
8845
8907
  class: 'pane'
8846
8908
  }, template: "<mat-toolbar class=\"nav-toolbar\" >\r\n <ng-container *ngIf=\"!items.selection.isEmpty(); else search\">\r\n <!--<button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>-->\r\n <button mat-icon-button *ngIf=\"items.isAllDraft()\" (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\r\n <button mat-button color=\"primary\" fxShow [fxShow.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\r\n <button mat-icon-button color=\"primary\" fxHide [fxHide.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\" [bizdocTooltip]=\"'Submit' | translate\" [attr.aria-label]=\"'Submit' | translate\"><mat-icon>send</mat-icon></button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length === 1\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\"><mat-icon *ngIf=\"items.sharedActions[0].icon\">{{items.sharedActions[0].icon}}</mat-icon>{{'SendSelected' | translate : items.selection.selected.length}}</button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length > 1\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\r\n {{'SendSelected'| translate : items.selection.selected.length }}\r\n </button>\r\n <mat-menu #action>\r\n <ng-container *ngFor=\"let a of items.sharedActions | sort : 'group'; let i = index\">\r\n <mat-divider *ngIf=\"i>0 && items.sharedActions[i-1].group !== a.group\">\r\n </mat-divider>\r\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\r\n {{ a.title }}\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\r\n </ng-container>\r\n</mat-toolbar>\r\n<bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\"\r\n (open)=\"open($event)\" (view)=\"view($event) \" #items></bizdoc-browse-items>\r\n<ng-template #search>\r\n <!--<button mat-icon-button (click)=\"openSearch()\"\r\n [bizdocTooltip]=\"'Search'|translate\" class=\"tool\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n [@search]=\"searching\"\r\n (@search.done)=\"searching && focus()\"-->\r\n <input matInput\r\n [formControl]=\"contains\" autocomplete=\"off\" placeholder=\"{{'Search' | translate}}\"\r\n class=\"search-box\"\r\n #searchInput\r\n (keydown.escape)=\"clearSearch($event)\">\r\n <mat-icon *ngIf=\"contains.value\" (click)=\"clearSearch()\">close</mat-icon>\r\n <span class=\"divider\"></span>\r\n <!--<button mat-icon-button (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>-->\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\"><mat-icon>filter_list</mat-icon></button>\r\n</ng-template>\r\n", styles: [":host{min-width:540px;display:contents!important}\n"] }]
8847
- }], ctorParameters: function () { return [{ type: PaneRef }, { type: SessionService }, { type: Popup }, { type: PanesRouter }, { type: i7$2.Directionality }, { type: TranslateService }, { type: i3$2.MatDialog }]; }, propDecorators: { items: [{
8909
+ }], ctorParameters: function () { return [{ type: PaneRef }, { type: SessionService }, { type: Popup }, { type: PanesRouter }, { type: i7$2.Directionality }, { type: TranslateService }, { type: i3$1.MatDialog }]; }, propDecorators: { items: [{
8848
8910
  type: ViewChild,
8849
8911
  args: [BrowseItemsComponent, { static: true }]
8850
8912
  }], search: [{
@@ -9929,85 +9991,87 @@ class CubePivotComponent {
9929
9991
  }
9930
9992
  this.explore.emit({ axes });
9931
9993
  }
9932
- async exportToExcel(title) {
9933
- if (this.currencyCode && this.currencyCode !== DEFAULT_CURRENCY)
9934
- await this._translate.cldr(this._session.language, CLDR_FILES);
9935
- if (this.chartType)
9936
- this._exportExcel(title);
9937
- else
9938
- this.pivot.excelExport({ fileName: `${title}.xlsx`, hierarchyExportMode: 'All', });
9939
- }
9940
- _exportExcel(title) {
9941
- const numberFormat = this._service.numberFormat, columns = this._cube.axes.filter(a => this._xAxis.indexOf(a.name) > -1 ||
9942
- this._series.indexOf(a.name) > -1), rows = [{
9943
- index: 1,
9944
- cells: columns.map((c, i) => ({
9945
- index: i + 1, value: c.title,
9994
+ exportToExcel(title) {
9995
+ const task = () => {
9996
+ if (this.chartType) {
9997
+ const numberFormat = this._service.numberFormat, columns = this._cube.axes.filter(a => this._xAxis.indexOf(a.name) > -1 ||
9998
+ this._series.indexOf(a.name) > -1), rows = [{
9999
+ index: 1,
10000
+ cells: columns.map((c, i) => ({
10001
+ index: i + 1, value: c.title,
10002
+ style: {
10003
+ bold: true
10004
+ }
10005
+ }))
10006
+ }];
10007
+ rows[0].cells.push({
10008
+ index: columns.length + 1,
10009
+ value: this.yAxis ? this.yAxis.title :
10010
+ this._translate.get('Value'),
9946
10011
  style: {
9947
10012
  bold: true
9948
10013
  }
9949
- }))
9950
- }];
9951
- rows[0].cells.push({
9952
- index: columns.length + 1,
9953
- value: this.yAxis ? this.yAxis.title :
9954
- this._translate.get('Value'),
9955
- style: {
9956
- bold: true
9957
- }
9958
- });
9959
- this._indices && this._indices.forEach((x, i) => rows[0].cells.push({
9960
- index: columns.length + i + 2,
9961
- value: this._getIndexTitle(x),
9962
- style: {
9963
- bold: true
10014
+ });
10015
+ this._indices && this._indices.forEach((x, i) => rows[0].cells.push({
10016
+ index: columns.length + i + 2,
10017
+ value: this._getIndexTitle(x),
10018
+ style: {
10019
+ bold: true
10020
+ }
10021
+ }));
10022
+ this._data.forEach((r, i) => {
10023
+ const cells = columns.map((c, j) => {
10024
+ return {
10025
+ index: j + 1, value: r[c.name],
10026
+ style: {}
10027
+ };
10028
+ });
10029
+ cells.push({
10030
+ type: 'number',
10031
+ index: columns.length + 1,
10032
+ style: {
10033
+ numberFormat,
10034
+ hAlign: 'right'
10035
+ },
10036
+ value: r['value']
10037
+ });
10038
+ this._indices && this._indices.forEach((x, i) => cells.push({
10039
+ type: 'number',
10040
+ index: columns.length + i + 2,
10041
+ style: {
10042
+ numberFormat,
10043
+ hAlign: 'right'
10044
+ },
10045
+ value: r[x]
10046
+ }));
10047
+ rows.push({
10048
+ index: i + 2,
10049
+ cells
10050
+ });
10051
+ });
10052
+ const book = new Workbook({
10053
+ worksheets: [
10054
+ {
10055
+ enableRtl: this._session.inverse,
10056
+ name: this._translate.get('SheetN', 1),
10057
+ columns: [...columns.map((_, i) => ({ index: i + 1, width: 250 })),
10058
+ { index: columns.length + 1 },
10059
+ ...(this._indices ? this._indices.map((_, i) => ({
10060
+ index: columns.length + i + 2
10061
+ })) : [])],
10062
+ rows
10063
+ }
10064
+ ],
10065
+ }, 'xlsx');
10066
+ book.save(`${title}.xlsx`);
9964
10067
  }
9965
- }));
9966
- this._data.forEach((r, i) => {
9967
- const cells = columns.map((c, j) => {
9968
- return {
9969
- index: j + 1, value: r[c.name],
9970
- style: {}
9971
- };
9972
- });
9973
- cells.push({
9974
- type: 'number',
9975
- index: columns.length + 1,
9976
- style: {
9977
- numberFormat,
9978
- hAlign: 'right'
9979
- },
9980
- value: r['value']
9981
- });
9982
- this._indices && this._indices.forEach((x, i) => cells.push({
9983
- type: 'number',
9984
- index: columns.length + i + 2,
9985
- style: {
9986
- numberFormat,
9987
- hAlign: 'right'
9988
- },
9989
- value: r[x]
9990
- }));
9991
- rows.push({
9992
- index: i + 2,
9993
- cells
9994
- });
9995
- });
9996
- const book = new Workbook({
9997
- worksheets: [
9998
- {
9999
- enableRtl: this._session.inverse,
10000
- name: this._translate.get('SheetN', 1),
10001
- columns: [...columns.map((_, i) => ({ index: i + 1, width: 250 })),
10002
- { index: columns.length + 1 },
10003
- ...(this._indices ? this._indices.map((_, i) => ({
10004
- index: columns.length + i + 2
10005
- })) : [])],
10006
- rows
10007
- }
10008
- ],
10009
- }, 'xlsx');
10010
- book.save(`${title}.xlsx`);
10068
+ else
10069
+ this.pivot.excelExport({ fileName: `${title}.xlsx`, hierarchyExportMode: 'All', });
10070
+ };
10071
+ if (this.currencyCode && this.currencyCode !== DEFAULT_CURRENCY)
10072
+ this._translate.cldr(this._session.language, CLDR_FILES).then(() => task());
10073
+ else
10074
+ task();
10011
10075
  }
10012
10076
  _draw() {
10013
10077
  this.pivot && this.pivot.destroy();
@@ -10928,7 +10992,7 @@ EmojiHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", versi
10928
10992
  EmojiHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EmojiHostComponent, selector: "ng-component", ngImport: i0, template: `
10929
10993
  <emoji-mart class="emoji-mart" (emojiClick)="add($event)" [autoFocus]="true" set="twitter"
10930
10994
  [autoFocus]=true [enableSearch]=false [showPreview]=false [darkMode]=darkMode [color]=color [i18n]=i18n>
10931
- </emoji-mart>`, isInline: true, components: [{ type: i4$1.PickerComponent, selector: "emoji-mart", inputs: ["perLine", "totalFrequentLines", "i18n", "style", "title", "emoji", "darkMode", "color", "hideObsolete", "categories", "activeCategories", "set", "skin", "isNative", "emojiSize", "sheetSize", "emojisToShowFilter", "showPreview", "emojiTooltip", "autoFocus", "custom", "hideRecent", "imageUrlFn", "include", "exclude", "notFoundEmoji", "categoriesIcons", "searchIcons", "useButton", "enableFrequentEmojiSort", "enableSearch", "showSingleCategory", "virtualize", "virtualizeOffset", "recent", "backgroundImageFn"], outputs: ["emojiClick", "emojiSelect", "skinChange"] }] });
10995
+ </emoji-mart>`, isInline: true, components: [{ type: i4$2.PickerComponent, selector: "emoji-mart", inputs: ["perLine", "totalFrequentLines", "i18n", "style", "title", "emoji", "darkMode", "color", "hideObsolete", "categories", "activeCategories", "set", "skin", "isNative", "emojiSize", "sheetSize", "emojisToShowFilter", "showPreview", "emojiTooltip", "autoFocus", "custom", "hideRecent", "imageUrlFn", "include", "exclude", "notFoundEmoji", "categoriesIcons", "searchIcons", "useButton", "enableFrequentEmojiSort", "enableSearch", "showSingleCategory", "virtualize", "virtualizeOffset", "recent", "backgroundImageFn"], outputs: ["emojiClick", "emojiSelect", "skinChange"] }] });
10932
10996
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EmojiHostComponent, decorators: [{
10933
10997
  type: Component,
10934
10998
  args: [{
@@ -11046,7 +11110,7 @@ class TaggingDirective {
11046
11110
  this._element.nativeElement.selectionStart = position + key.length - (val ? val.length - 1 : 0);
11047
11111
  }
11048
11112
  }
11049
- TaggingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TaggingDirective, deps: [{ token: i3.MatInput, self: true }, { token: i7$2.Directionality }, { token: i0.ElementRef }, { token: i1$4.Overlay }], target: i0.ɵɵFactoryTarget.Directive });
11113
+ TaggingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TaggingDirective, deps: [{ token: i12.MatInput, self: true }, { token: i7$2.Directionality }, { token: i0.ElementRef }, { token: i1$4.Overlay }], target: i0.ɵɵFactoryTarget.Directive });
11050
11114
  TaggingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: TaggingDirective, selector: "[bizdocTagging]", inputs: { resource: ["bizdocTagging", "resource"] }, outputs: { resourceChange: "bizdocTaggingChange" }, host: { listeners: { "keydown": "_handleKeydown($event)", "input": "_handleInput($event)" } }, ngImport: i0 });
11051
11115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TaggingDirective, decorators: [{
11052
11116
  type: Directive,
@@ -11057,7 +11121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
11057
11121
  '(input)': '_handleInput($event)',
11058
11122
  }
11059
11123
  }]
11060
- }], ctorParameters: function () { return [{ type: i3.MatInput, decorators: [{
11124
+ }], ctorParameters: function () { return [{ type: i12.MatInput, decorators: [{
11061
11125
  type: Self
11062
11126
  }] }, { type: i7$2.Directionality }, { type: i0.ElementRef }, { type: i1$4.Overlay }]; }, propDecorators: { resource: [{
11063
11127
  type: Input,
@@ -11243,7 +11307,7 @@ class EditInputComponent {
11243
11307
  }
11244
11308
  }
11245
11309
  EditInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EditInputComponent, deps: [{ token: Popup }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
11246
- EditInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EditInputComponent, selector: "bizdoc-edit-text", inputs: { placeholder: "placeholder", text: "text", image: "image", resource: "resource", disabled: "disabled", autofocus: "autofocus", cache: "cache" }, outputs: { change: "change", onOk: "ok", onFocus: "focus", onBlur: "blur" }, viewQueries: [{ propertyName: "_textElement", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "_rte", first: true, predicate: RichTextEditorComponent, descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'html'\">\r\n <ejs-richtexteditor [value]=\"text\"\r\n (change)=\"_htmlChange($event)\"\r\n [toolbarSettings]=\"toolbarSettings\"></ejs-richtexteditor>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <mat-form-field floatLabel=\"never\" fxFlex>\r\n <textarea matInput cdkTextareaAutosize [autofocus]=\"autofocus\"\r\n [(bizdocTagging)]=\"resource\"\r\n (keydown)=\"_key($event)\"\r\n (input)=\"_textChange($event)\"\r\n [value]=\"text\"\r\n (paste)=\"_paste($event)\"\r\n [matTextareaAutosize]=\"true\"\r\n [matAutosizeMaxRows]=\"20\"\r\n [placeholder]=\"(placeholder || 'TypeHere') | translate\"\r\n (focus)=\"onFocus.emit()\"\r\n (focusout)=\"onBlur.emit()\"\r\n #textArea></textarea>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n <div fxLayout=\"row nav-toolbar\">\r\n <button mat-icon-button (click)=\"_openDocument($event)\" [bizdocTooltip]=\"'Document'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>article</mat-icon></button>\r\n <button mat-icon-button (click)=\"_openMention($event)\" [bizdocTooltip]=\"'Mention'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>alternate_email</mat-icon></button>\r\n <button mat-icon-button (click)=\"_openEmoji($event)\" [bizdocTooltip]=\"'Emoji'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>insert_emoticon</mat-icon></button>\r\n <button mat-icon-button (click)=\"_toggleHtml()\" [bizdocTooltip]=\"'Text'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\"><mat-icon>text_fields</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"_ok()\" [disabled]=\"disabled\" class=\"tool\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">send</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n<div *ngIf=\"_image\">\r\n <img [src]=\"'data:image/png;base64,'+ _image\" />\r\n <button mat-icon-button (click)=\"_clearImage()\" [disabled]=\"disabled\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column}.mat-form-field{flex:1 auto;padding:0 8px}.mat-form-field textarea{overflow:hidden}img{max-width:300px}\n"], components: [{ type: i2$2.RichTextEditorComponent, selector: "ejs-richtexteditor", inputs: ["autoSaveOnIdle", "backgroundColor", "bulletFormatList", "cssClass", "editorMode", "enableAutoUrl", "enableHtmlEncode", "enableHtmlSanitizer", "enablePersistence", "enableResize", "enableRtl", "enableTabKey", "enableXhtml", "enabled", "enterKey", "fileManagerSettings", "floatingToolbarOffset", "fontColor", "fontFamily", "fontSize", "format", "formatter", "height", "htmlAttributes", "iframeSettings", "inlineMode", "insertImageSettings", "keyConfig", "locale", "maxLength", "numberFormatList", "pasteCleanupSettings", "placeholder", "quickToolbarSettings", "readonly", "saveInterval", "shiftEnterKey", "showCharCount", "tableSettings", "toolbarSettings", "undoRedoSteps", "undoRedoTimer", "value", "valueTemplate", "width"], outputs: ["actionBegin", "actionComplete", "afterImageDelete", "afterPasteCleanup", "beforeDialogClose", "beforeDialogOpen", "beforeImageDrop", "beforeImageUpload", "beforePasteCleanup", "beforeQuickToolbarOpen", "beforeSanitizeHtml", "blur", "change", "created", "destroyed", "dialogClose", "dialogOpen", "focus", "imageRemoving", "imageSelected", "imageUploadFailed", "imageUploadSuccess", "imageUploading", "quickToolbarClose", "quickToolbarOpen", "resizeStart", "resizeStop", "resizing", "toolbarClick", "toolbarStatusUpdate", "updatedToolbarStatus", "valueChange"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: TaggingDirective, selector: "[bizdocTagging]", inputs: ["bizdocTagging"], outputs: ["bizdocTaggingChange"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": TranslatePipe } });
11310
+ EditInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EditInputComponent, selector: "bizdoc-edit-text", inputs: { placeholder: "placeholder", text: "text", image: "image", resource: "resource", disabled: "disabled", autofocus: "autofocus", cache: "cache" }, outputs: { change: "change", onOk: "ok", onFocus: "focus", onBlur: "blur" }, viewQueries: [{ propertyName: "_textElement", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "_rte", first: true, predicate: RichTextEditorComponent, descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'html'\">\r\n <ejs-richtexteditor [value]=\"text\"\r\n (change)=\"_htmlChange($event)\"\r\n [toolbarSettings]=\"toolbarSettings\"></ejs-richtexteditor>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <mat-form-field floatLabel=\"never\" fxFlex>\r\n <textarea matInput cdkTextareaAutosize [autofocus]=\"autofocus\"\r\n [(bizdocTagging)]=\"resource\"\r\n (keydown)=\"_key($event)\"\r\n (input)=\"_textChange($event)\"\r\n [value]=\"text\"\r\n (paste)=\"_paste($event)\"\r\n [matTextareaAutosize]=\"true\"\r\n [matAutosizeMaxRows]=\"20\"\r\n [placeholder]=\"(placeholder || 'TypeHere') | translate\"\r\n (focus)=\"onFocus.emit()\"\r\n (focusout)=\"onBlur.emit()\"\r\n #textArea></textarea>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n <div fxLayout=\"row nav-toolbar\">\r\n <button mat-icon-button (click)=\"_openDocument($event)\" [bizdocTooltip]=\"'Document'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>article</mat-icon></button>\r\n <button mat-icon-button (click)=\"_openMention($event)\" [bizdocTooltip]=\"'Mention'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>alternate_email</mat-icon></button>\r\n <button mat-icon-button (click)=\"_openEmoji($event)\" [bizdocTooltip]=\"'Emoji'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>insert_emoticon</mat-icon></button>\r\n <button mat-icon-button (click)=\"_toggleHtml()\" [bizdocTooltip]=\"'Text'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\"><mat-icon>text_fields</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"_ok()\" [disabled]=\"disabled\" class=\"tool\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">send</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n<div *ngIf=\"_image\">\r\n <img [src]=\"'data:image/png;base64,'+ _image\" />\r\n <button mat-icon-button (click)=\"_clearImage()\" [disabled]=\"disabled\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column}.mat-form-field{flex:1 auto;padding:0 8px}.mat-form-field textarea{overflow:hidden}img{max-width:300px}\n"], components: [{ type: i2$2.RichTextEditorComponent, selector: "ejs-richtexteditor", inputs: ["autoSaveOnIdle", "backgroundColor", "bulletFormatList", "cssClass", "editorMode", "enableAutoUrl", "enableHtmlEncode", "enableHtmlSanitizer", "enablePersistence", "enableResize", "enableRtl", "enableTabKey", "enableXhtml", "enabled", "enterKey", "fileManagerSettings", "floatingToolbarOffset", "fontColor", "fontFamily", "fontSize", "format", "formatter", "height", "htmlAttributes", "iframeSettings", "inlineMode", "insertImageSettings", "keyConfig", "locale", "maxLength", "numberFormatList", "pasteCleanupSettings", "placeholder", "quickToolbarSettings", "readonly", "saveInterval", "shiftEnterKey", "showCharCount", "tableSettings", "toolbarSettings", "undoRedoSteps", "undoRedoTimer", "value", "valueTemplate", "width"], outputs: ["actionBegin", "actionComplete", "afterImageDelete", "afterPasteCleanup", "beforeDialogClose", "beforeDialogOpen", "beforeImageDrop", "beforeImageUpload", "beforePasteCleanup", "beforeQuickToolbarOpen", "beforeSanitizeHtml", "blur", "change", "created", "destroyed", "dialogClose", "dialogOpen", "focus", "imageRemoving", "imageSelected", "imageUploadFailed", "imageUploadSuccess", "imageUploading", "quickToolbarClose", "quickToolbarOpen", "resizeStart", "resizeStop", "resizing", "toolbarClick", "toolbarStatusUpdate", "updatedToolbarStatus", "valueChange"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: TaggingDirective, selector: "[bizdocTagging]", inputs: ["bizdocTagging"], outputs: ["bizdocTaggingChange"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": TranslatePipe } });
11247
11311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EditInputComponent, decorators: [{
11248
11312
  type: Component,
11249
11313
  args: [{ selector: 'bizdoc-edit-text', template: "<div fxLayout=\"column\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'html'\">\r\n <ejs-richtexteditor [value]=\"text\"\r\n (change)=\"_htmlChange($event)\"\r\n [toolbarSettings]=\"toolbarSettings\"></ejs-richtexteditor>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <mat-form-field floatLabel=\"never\" fxFlex>\r\n <textarea matInput cdkTextareaAutosize [autofocus]=\"autofocus\"\r\n [(bizdocTagging)]=\"resource\"\r\n (keydown)=\"_key($event)\"\r\n (input)=\"_textChange($event)\"\r\n [value]=\"text\"\r\n (paste)=\"_paste($event)\"\r\n [matTextareaAutosize]=\"true\"\r\n [matAutosizeMaxRows]=\"20\"\r\n [placeholder]=\"(placeholder || 'TypeHere') | translate\"\r\n (focus)=\"onFocus.emit()\"\r\n (focusout)=\"onBlur.emit()\"\r\n #textArea></textarea>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n <div fxLayout=\"row nav-toolbar\">\r\n <button mat-icon-button (click)=\"_openDocument($event)\" [bizdocTooltip]=\"'Document'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>article</mat-icon></button>\r\n <button mat-icon-button (click)=\"_openMention($event)\" [bizdocTooltip]=\"'Mention'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>alternate_email</mat-icon></button>\r\n <button mat-icon-button (click)=\"_openEmoji($event)\" [bizdocTooltip]=\"'Emoji'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\" [disabled]=\"mode !== 'text'\"><mat-icon>insert_emoticon</mat-icon></button>\r\n <button mat-icon-button (click)=\"_toggleHtml()\" [bizdocTooltip]=\"'Text'|translate\" bizdocTooltipPosition=\"above\" class=\"tool\"><mat-icon>text_fields</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"_ok()\" [disabled]=\"disabled\" class=\"tool\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">send</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n<div *ngIf=\"_image\">\r\n <img [src]=\"'data:image/png;base64,'+ _image\" />\r\n <button mat-icon-button (click)=\"_clearImage()\" [disabled]=\"disabled\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column}.mat-form-field{flex:1 auto;padding:0 8px}.mat-form-field textarea{overflow:hidden}img{max-width:300px}\n"] }]
@@ -11943,7 +12007,7 @@ class ExploreItemsComponent {
11943
12007
  this._data.forEach((r, i) => rows.push({
11944
12008
  index: i + 2,
11945
12009
  cells: this.columns.map((c, j) => {
11946
- const isnumber = c.type === 'Currency';
12010
+ const isnumber = c.type === 'Currency' || c.type === 'Number';
11947
12011
  return {
11948
12012
  type: isnumber ? 'text' : 'number',
11949
12013
  index: j + 1, value: r[c.name],
@@ -11957,7 +12021,6 @@ class ExploreItemsComponent {
11957
12021
  const book = new Workbook({
11958
12022
  worksheets: [
11959
12023
  {
11960
- enableRtl: this._session.inverse,
11961
12024
  name: this._translate.get('SheetN', 1),
11962
12025
  columns: this.columns.map((_, i) => ({ index: i + 1, width: 250 })),
11963
12026
  rows
@@ -12520,7 +12583,7 @@ class WorkflowNodeComponent {
12520
12583
  if (annotationArg && m[annotationArg.name] !== null && m[annotationArg.name] !== undefined) {
12521
12584
  node.annotations[0].content = m[annotationArg.name];
12522
12585
  }
12523
- Object.assign(addInfo, m);
12586
+ Object.assign(addInfo, cleanup(m));
12524
12587
  this.change.emit();
12525
12588
  }
12526
12589
  if (tool.template) {
@@ -12563,7 +12626,7 @@ class WorkflowNodeComponent {
12563
12626
  }
12564
12627
  }
12565
12628
  WorkflowNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: WorkflowNodeComponent, deps: [{ token: SessionService }, { token: BizDocComponentFactoryResolver }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: TranslateService }, { token: i1$2.FormBuilder }, { token: PaneRef }], target: i0.ɵɵFactoryTarget.Component });
12566
- WorkflowNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: WorkflowNodeComponent, selector: "ng-component", outputs: { change: "change" }, viewQueries: [{ propertyName: "argumentstemplate", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #arguments>\r\n</ng-container>\r\n<form *ngIf=\"connectors?.length\" [formGroup]=\"connectorInfo\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connectorInfo.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange(acase.value)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field *ngIf=\"!connectorInfo.controls['case'].value\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n</form>\r\n<!--<mat-expansion-panel fxLayout=\"column\" class=\"mat-elevation-z0\" [attr.aria-label]=\"'Design' | translate\" style=\"background: none\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>{{'Design'|translate}}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"connectors.length\">\r\n < mat.get-color-from-palette-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n <ng-container *ngIf=\"nodes.length\">\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n <mat-form-field>\r\n <input matInput type=\"number\" [placeholder]=\"'FontSize'|translate\" (change)=\"sizeChange($event.target.value)\" [value]=\"fontSize\" />\r\n </mat-form-field>\r\n < mat.get-color-from-palette-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n < mat.get-color-from-palette-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ mat.get-color-from-palette-picker>\r\n < mat.get-color-from-palette-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n</mat-expansion-panel>-->\r\n", styles: [":host{padding:8px;display:block}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i9$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }], pipes: { "translate": TranslatePipe } });
12629
+ WorkflowNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: WorkflowNodeComponent, selector: "ng-component", outputs: { change: "change" }, viewQueries: [{ propertyName: "argumentstemplate", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #arguments>\r\n</ng-container>\r\n<form *ngIf=\"connectors?.length\" [formGroup]=\"connectorInfo\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connectorInfo.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange(acase.value)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field *ngIf=\"!connectorInfo.controls['case'].value\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n</form>\r\n<!--<mat-expansion-panel fxLayout=\"column\" class=\"mat-elevation-z0\" [attr.aria-label]=\"'Design' | translate\" style=\"background: none\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>{{'Design'|translate}}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"connectors.length\">\r\n < mat.get-color-from-palette-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n <ng-container *ngIf=\"nodes.length\">\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n <mat-form-field>\r\n <input matInput type=\"number\" [placeholder]=\"'FontSize'|translate\" (change)=\"sizeChange($event.target.value)\" [value]=\"fontSize\" />\r\n </mat-form-field>\r\n < mat.get-color-from-palette-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n < mat.get-color-from-palette-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ mat.get-color-from-palette-picker>\r\n < mat.get-color-from-palette-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n</mat-expansion-panel>-->\r\n", styles: [":host{padding:8px;display:block}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i9$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }], pipes: { "translate": TranslatePipe } });
12567
12630
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: WorkflowNodeComponent, decorators: [{
12568
12631
  type: Component,
12569
12632
  args: [{ template: "<ng-container #arguments>\r\n</ng-container>\r\n<form *ngIf=\"connectors?.length\" [formGroup]=\"connectorInfo\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Action' | translate\" formControlName=\"action\">\r\n <mat-option *ngFor=\"let action of actions\" [value]=\"action.name\">{{action.title}}</mat-option>\r\n <mat-option>{{'None' | translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group [value]=\"connectorInfo.controls['case'].value\" #acase=\"matButtonToggleGroup\" (change)=\"connectorCaseChange(acase.value)\">\r\n <mat-button-toggle value=\"true\">{{'True' | translate}}</mat-button-toggle>\r\n <mat-button-toggle value=\"false\">{{'False' | translate}}</mat-button-toggle>\r\n <mat-button-toggle>{{'Case' | translate}}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <mat-form-field *ngIf=\"!connectorInfo.controls['case'].value\">\r\n <input matInput [placeholder]=\"'Case' | translate\" formControlName=\"case\" />\r\n </mat-form-field>\r\n</form>\r\n<!--<mat-expansion-panel fxLayout=\"column\" class=\"mat-elevation-z0\" [attr.aria-label]=\"'Design' | translate\" style=\"background: none\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>{{'Design'|translate}}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"connectors.length\">\r\n < mat.get-color-from-palette-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n <ng-container *ngIf=\"nodes.length\">\r\n <ng-container *ngIf=\"nodes[0].annotations.length\">\r\n <mat-form-field>\r\n <input matInput type=\"number\" [placeholder]=\"'FontSize'|translate\" (change)=\"sizeChange($event.target.value)\" [value]=\"fontSize\" />\r\n </mat-form-field>\r\n < mat.get-color-from-palette-picker (valueChanges)='colorChange($event)' [label]=\"'Color'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n < mat.get-color-from-palette-picker (valueChanges)='bgChange($event)' [label]=\"'Background'|translate\"></ mat.get-color-from-palette-picker>\r\n < mat.get-color-from-palette-picker (valueChanges)='strokeChange($event)' [label]=\"'Stroke'|translate\"></ mat.get-color-from-palette-picker>\r\n </ng-container>\r\n</mat-expansion-panel>-->\r\n", styles: [":host{padding:8px;display:block}\n"] }]
@@ -12964,7 +13027,7 @@ class WorkflowComponent {
12964
13027
  }
12965
13028
  }
12966
13029
  WorkflowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: WorkflowComponent, deps: [{ token: PromptService }, { token: FormService }, { token: PaneRef }, { token: PanesRouter }, { token: SessionService }, { token: TranslateService }], target: i0.ɵɵFactoryTarget.Component });
12967
- WorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPalette", first: true, predicate: SymbolPaletteComponent, descendants: true }, { propertyName: "diagram", first: true, predicate: ["diagram"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n &nbsp;\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"addText()\" [bizdocTooltip]=\"'Text' | translate\"><mat-icon>title</mat-icon></button>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"!diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"!diagram.selectedItems?.nodes.length && !diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" *ngIf=\"tools\">\r\n <ejs-symbolpalette dir=\"ltr\" expandMode='Multiple' [palettes]='palettes' width=\"100%\" height=\"100%\" [symbolHeight]=80\r\n [enableRtl]=\"false\" [enableAnimation]=\"false\" [symbolWidth]=80 [symbolMargin]='symbolMargin' [getSymbolInfo]='getSymbolInfo' [getNodeDefaults]='getSymbolDefaults'>\r\n </ejs-symbolpalette>\r\n </div>\r\n <ejs-diagram #diagram id=\"diagram\" width=\"100%\" height=\"100%\" dir=\"ltr\" [snapSettings]='snapSettings' [getConnectorDefaults]='connDefaults' fxFlex\r\n [constraints]=\"diagramConstraints\" [tool]=diagramTool [getNodeDefaults]='nodeDefaults' [getCustomTool]='getCustomTool' [scrollSettings]=\"scrollSettings\"\r\n [selectedItems]=\"selectedItems\"\r\n [rulerSettings]=\"rulerSettings\"\r\n (dragEnter)='dragEnter($event)'\r\n (connectionChange)=\"change()\"\r\n (collectionChange)=\"change()\"\r\n (propertyChange)=\"propertyChange($event)\"\r\n (selectionChange)=\"selectionChange()\"\r\n (created)=\"diagramCreate()\">\r\n </ejs-diagram>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .icon-menu-panel{min-width:0}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11$1.SymbolPaletteComponent, selector: "ejs-symbolpalette", inputs: ["accessKey", "allowDrag", "connectorDefaults", "enableAnimation", "enablePersistence", "enableRtl", "enableSearch", "expandMode", "filterSymbols", "getConnectorDefaults", "getNodeDefaults", "getSymbolInfo", "getSymbolTemplate", "height", "ignoreSymbolsOnSearch", "locale", "nodeDefaults", "palettes", "symbolDragSize", "symbolHeight", "symbolInfo", "symbolMargin", "symbolPreview", "symbolWidth", "width"], outputs: ["paletteExpanding", "paletteSelectionChange"] }, { type: i11$1.DiagramComponent, selector: "ejs-diagram", inputs: ["addInfo", "annotationTemplate", "backgroundColor", "bridgeDirection", "commandManager", "connectorDefaults", "connectors", "constraints", "contextMenuSettings", "customCursor", "dataSourceSettings", "diagramSettings", "drawingObject", "enablePersistence", "enableRtl", "getConnectorDefaults", "getCustomCursor", "getCustomProperty", "getCustomTool", "getDescription", "getNodeDefaults", "height", "historyManager", "layers", "layout", "locale", "mode", "nodeDefaults", "nodeTemplate", "nodes", "pageSettings", "rulerSettings", "scrollSettings", "selectedItems", "serializationSettings", "setNodeTemplate", "snapSettings", "tool", "tooltip", "updateSelection", "userHandleTemplate", "width"], outputs: ["animationComplete", "click", "collectionChange", "commandExecute", "connectionChange", "contextMenuBeforeItemRender", "contextMenuClick", "contextMenuOpen", "created", "dataLoaded", "doubleClick", "dragEnter", "dragLeave", "dragOver", "drop", "expandStateChange", "fixedUserHandleClick", "historyChange", "historyStateChange", "keyDown", "keyUp", "mouseEnter", "mouseLeave", "mouseOver", "onImageLoad", "onUserHandleMouseDown", "onUserHandleMouseEnter", "onUserHandleMouseLeave", "onUserHandleMouseUp", "positionChange", "propertyChange", "rotateChange", "scrollChange", "segmentCollectionChange", "selectionChange", "sizeChange", "sourcePointChange", "targetPointChange", "textEdit"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": TranslatePipe } });
13030
+ WorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: WorkflowComponent, selector: "bizdoc-workflow", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "symbolPalette", first: true, predicate: SymbolPaletteComponent, descendants: true }, { propertyName: "diagram", first: true, predicate: ["diagram"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty || saving\">{{'SaveChanges' | translate}}</button>\r\n <button mat-icon-button (click)=\"diagram.fitToPage()\" [bizdocTooltip]=\"'FitToPage' | translate\"><mat-icon>fullscreen_exit</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"!diagram.historyManager?.canUndo\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"diagram.redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"!diagram.historyManager?.canRedo\"><mat-icon>redo</mat-icon></button>\r\n &nbsp;\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"addText()\" [bizdocTooltip]=\"'Text' | translate\"><mat-icon>title</mat-icon></button>\r\n <button mat-button [matMenuTriggerFor]=\"lineMenu\" [disabled]=\"!diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'ConnectorMode'|translate\">\r\n <span class=\"e-menu-icon\" [ngClass]=\"{'sf-icon-straight-line': connectorType === 'Straight',\r\n 'sf-icon-orthogonal-line': connectorType === 'Orthogonal',\r\n 'sf-icon-beizer-line': connectorType === 'Bezier'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #lineMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"connectorTypeChange('Straight')\">\r\n <span class=\"e-menu-icon sf-icon-straight-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Orthogonal')\">\r\n <span class=\"e-menu-icon sf-icon-orthogonal-line\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"connectorTypeChange('Bezier')\">\r\n <span class=\"e-menu-icon sf-icon-beizer-line\"></span>\r\n </button>\r\n </mat-menu>\r\n &nbsp;\r\n <button mat-button [matMenuTriggerFor]=\"alignMenu\" [disabled]=\"!diagram.selectedItems?.nodes.length && !diagram.selectedItems?.connectors.length\" [bizdocTooltip]=\"'Align'|translate\">\r\n <span class=\"e-icons\" [ngClass]=\"{'sf-icon-top': alignment === 'Top',\r\n 'sf-icon-left': alignment === 'Left',\r\n 'sf-icon-center': alignment === 'Center',\r\n 'sf-icon-bottom': alignment === 'Bottom',\r\n 'sf-icon-right': alignment === 'Right'}\"></span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #alignMenu panelClass=\"icon-menu-panel\">\r\n <button mat-menu-item (click)=\"align('Top')\">\r\n <span class=\"e-icons sf-icon-top\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Left')\">\r\n <span class=\"e-icons sf-icon-left\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Center')\">\r\n <span class=\"e-icons sf-icon-center\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Bottom')\">\r\n <span class=\"e-icons sf-icon-bottom\"></span>\r\n </button>\r\n <button mat-menu-item (click)=\"align('Right')\">\r\n <span class=\"e-icons sf-icon-right\"></span>\r\n </button>\r\n </mat-menu>\r\n</mat-toolbar>\r\n<div class=\"row container\">\r\n <div id=\"symbolpalette\" *ngIf=\"tools\">\r\n <ejs-symbolpalette dir=\"ltr\" expandMode='Multiple' [palettes]='palettes' width=\"100%\" height=\"100%\" [symbolHeight]=80\r\n [enableRtl]=\"false\" [enableAnimation]=\"false\" [symbolWidth]=80 [symbolMargin]='symbolMargin' [getSymbolInfo]='getSymbolInfo' [getNodeDefaults]='getSymbolDefaults'>\r\n </ejs-symbolpalette>\r\n </div>\r\n <ejs-diagram #diagram id=\"diagram\" width=\"100%\" height=\"100%\" dir=\"ltr\" [snapSettings]='snapSettings' [getConnectorDefaults]='connDefaults' fxFlex\r\n [constraints]=\"diagramConstraints\" [tool]=diagramTool [getNodeDefaults]='nodeDefaults' [getCustomTool]='getCustomTool' [scrollSettings]=\"scrollSettings\"\r\n [selectedItems]=\"selectedItems\"\r\n [rulerSettings]=\"rulerSettings\"\r\n (dragEnter)='dragEnter($event)'\r\n (connectionChange)=\"change()\"\r\n (collectionChange)=\"change()\"\r\n (propertyChange)=\"propertyChange($event)\"\r\n (selectionChange)=\"selectionChange()\"\r\n (created)=\"diagramCreate()\">\r\n </ejs-diagram>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}.container{flex-grow:1;overflow-y:auto}#diagram{flex-grow:1}#symbolpalette{width:210px}::ng-deep .e-rtl{direction:ltr}::ng-deep .mat-toolbar .mat-button-toggle{background:transparent!important}.e-menu-icon{font-family:diagram-icons!important;speak:none;font-size:18px;font-style:normal;font-weight:400;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::ng-deep .icon-menu-panel{min-width:0}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.SymbolPaletteComponent, selector: "ejs-symbolpalette", inputs: ["accessKey", "allowDrag", "connectorDefaults", "enableAnimation", "enablePersistence", "enableRtl", "enableSearch", "expandMode", "filterSymbols", "getConnectorDefaults", "getNodeDefaults", "getSymbolInfo", "getSymbolTemplate", "height", "ignoreSymbolsOnSearch", "locale", "nodeDefaults", "palettes", "symbolDragSize", "symbolHeight", "symbolInfo", "symbolMargin", "symbolPreview", "symbolWidth", "width"], outputs: ["paletteExpanding", "paletteSelectionChange"] }, { type: i11.DiagramComponent, selector: "ejs-diagram", inputs: ["addInfo", "annotationTemplate", "backgroundColor", "bridgeDirection", "commandManager", "connectorDefaults", "connectors", "constraints", "contextMenuSettings", "customCursor", "dataSourceSettings", "diagramSettings", "drawingObject", "enablePersistence", "enableRtl", "getConnectorDefaults", "getCustomCursor", "getCustomProperty", "getCustomTool", "getDescription", "getNodeDefaults", "height", "historyManager", "layers", "layout", "locale", "mode", "nodeDefaults", "nodeTemplate", "nodes", "pageSettings", "rulerSettings", "scrollSettings", "selectedItems", "serializationSettings", "setNodeTemplate", "snapSettings", "tool", "tooltip", "updateSelection", "userHandleTemplate", "width"], outputs: ["animationComplete", "click", "collectionChange", "commandExecute", "connectionChange", "contextMenuBeforeItemRender", "contextMenuClick", "contextMenuOpen", "created", "dataLoaded", "doubleClick", "dragEnter", "dragLeave", "dragOver", "drop", "expandStateChange", "fixedUserHandleClick", "historyChange", "historyStateChange", "keyDown", "keyUp", "mouseEnter", "mouseLeave", "mouseOver", "onImageLoad", "onUserHandleMouseDown", "onUserHandleMouseEnter", "onUserHandleMouseLeave", "onUserHandleMouseUp", "positionChange", "propertyChange", "rotateChange", "scrollChange", "segmentCollectionChange", "selectionChange", "sizeChange", "sourcePointChange", "targetPointChange", "textEdit"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i25.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": TranslatePipe } });
12968
13031
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: WorkflowComponent, decorators: [{
12969
13032
  type: Component,
12970
13033
  args: [{ selector: 'bizdoc-workflow', host: {
@@ -13166,8 +13229,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
13166
13229
  args: [{ name: 'amDurationFormat' }]
13167
13230
  }], ctorParameters: function () { return [{ type: TranslateService }]; } });
13168
13231
 
13169
- Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding /*, LayoutAnimation, LineRouting, ConnectorBridging*/);
13170
- const PENDING_PATH = 'M18,22l-0.01-6L14,12l3.99-4.01L18,2H6v6l4,4l-4,3.99V22H18z M8,7.5V4h8v3.5l-4,4L8,7.5z', FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z', ESCALATED_PATH = 'M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z', WARNNING_PATH$1 = 'M 13.763735,1.8433735 H 6.3037349 l -5.27,5.27 v 7.4599995 l 5.27,5.27 h 7.4600001 l 5.27,-5.27 V 7.1133735 Z m -3.73,14.2999995 c -0.7200001,0 -1.3000001,-0.58 -1.3000001,-1.3 0,-0.72 0.58,-1.3 1.3000001,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3 z m 1,-4.3 H 9.0337349 V 5.8433735 h 2.0000001 z';
13232
+ Diagram.Inject(ComplexHierarchicalTree, BpmnDiagrams, DataBinding, LineDistribution /*, LineRouting, ConnectorBridging, LayoutAnimation, LineRouting, ConnectorBridging*/);
13233
+ const
13234
+ //ELLIPSIS = 'M 650, 150 a 75,150 0 1,0 1,0 z',
13235
+ FYI_PATH = 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z', ESCALATED_PATH = 'M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z', WARNNING_PATH$1 = 'M 13.763735,1.8433735 H 6.3037349 l -5.27,5.27 v 7.4599995 l 5.27,5.27 h 7.4600001 l 5.27,-5.27 V 7.1133735 Z m -3.73,14.2999995 c -0.7200001,0 -1.3000001,-0.58 -1.3000001,-1.3 0,-0.72 0.58,-1.3 1.3000001,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3 z m 1,-4.3 H 9.0337349 V 5.8433735 h 2.0000001 z';
13171
13236
  /** flow-view component*/
13172
13237
  class FlowViewComponent extends TraceBase {
13173
13238
  /** workflow-view ctor */
@@ -13183,19 +13248,16 @@ class FlowViewComponent extends TraceBase {
13183
13248
  this.diagramConstraints = DiagramConstraints.Default |
13184
13249
  DiagramConstraints.Pan |
13185
13250
  DiagramConstraints.LineRouting |
13186
- DiagramConstraints.Bridging;
13251
+ DiagramConstraints.Zoom;
13187
13252
  this.layout = {
13188
13253
  type: 'ComplexHierarchicalTree',
13189
13254
  connectionPointOrigin: ConnectionPointOrigin.DifferentPoint,
13190
13255
  horizontalSpacing: 50,
13256
+ enableRouting: true,
13191
13257
  verticalSpacing: 50,
13192
- //connectorSegments: 'Layout',
13193
- //arrangement: ChildArrangement.Nonlinear,
13194
- //horizontalAlignment:'Center',
13195
- //verticalAlignment: 'Auto',
13258
+ horizontalAlignment: 'Center',
13196
13259
  connectionDirection: 'Orientation',
13197
13260
  orientation: this._session.inverse ? 'RightToLeft' : 'LeftToRight',
13198
- margin: { left: 10, right: 10, top: 10, bottom: 10 }
13199
13261
  };
13200
13262
  this.scrollSettings = {
13201
13263
  minZoom: .5,
@@ -13282,7 +13344,6 @@ class FlowViewComponent extends TraceBase {
13282
13344
  obj.style.strokeWidth = 0;
13283
13345
  }
13284
13346
  else {
13285
- // obj.shape = { type: 'Bpmn', shape: 'Event' } as BpmnShapeModel;
13286
13347
  obj.width = obj.height = 50;
13287
13348
  if (obj.annotations && obj.annotations.length)
13288
13349
  obj.annotations[0].style.color = this._session.theme.dark ? 'white' : 'black';
@@ -13293,7 +13354,8 @@ class FlowViewComponent extends TraceBase {
13293
13354
  }
13294
13355
  else {
13295
13356
  obj.style.strokeColor = this._accentColor;
13296
- obj.style.fill = recipient && recipient.pending ? this._session.getAccent(400) : 'transparent';
13357
+ obj.style.fill = recipient && recipient.pending ?
13358
+ this._session.getAccent(recipient.userId === this._session.userId ? 500 : 400) : 'transparent';
13297
13359
  }
13298
13360
  obj.style.strokeWidth = 2;
13299
13361
  }
@@ -13333,7 +13395,6 @@ class FlowViewComponent extends TraceBase {
13333
13395
  time: c.time
13334
13396
  }
13335
13397
  })), nodes = [];
13336
- this._issued = this.model.issued || this.model.log.filter(l => l.type === 'Submit')[0].time;
13337
13398
  let zIndex = 500;
13338
13399
  for (let node of dnodes) {
13339
13400
  if (nodes.find(n => n.id == node.id))
@@ -13341,7 +13402,7 @@ class FlowViewComponent extends TraceBase {
13341
13402
  let configuration = this._configuration[node.type];
13342
13403
  let recipients = this.model.recipients.
13343
13404
  filter(r => r.nodeId === node.id &&
13344
- r.received >= this._issued)
13405
+ r.received >= this.model.issued)
13345
13406
  .sort((r0, r1) => r0.received > r1.received ? 1 : -1);
13346
13407
  if (recipients.length) {
13347
13408
  let r = 0;
@@ -13388,9 +13449,11 @@ class FlowViewComponent extends TraceBase {
13388
13449
  }
13389
13450
  }]
13390
13451
  };
13391
- if (r > 0)
13452
+ r > 0 &&
13453
+ // more than one recipient to node,
13392
13454
  dconnectors.forEach(c => {
13393
13455
  if (c.targetId === node.id)
13456
+ // add inbound connectors
13394
13457
  connectors.push({
13395
13458
  sourceID: c.sourceId,
13396
13459
  targetID: nod.id,
@@ -13398,10 +13461,9 @@ class FlowViewComponent extends TraceBase {
13398
13461
  estimate: c.estimate
13399
13462
  }
13400
13463
  });
13401
- if (c.sourceId === node.id) {
13402
- //
13403
- if (c.virtualizing && !this.model.recipients.some(r => r.nodeId === c.targetId && r.originId === recipient.id))
13404
- return;
13464
+ if (c.sourceId === node.id &&
13465
+ // add outbound no origin or originated by the recipient
13466
+ (!c.originId || c.originId === recipient.id))
13405
13467
  connectors.push({
13406
13468
  sourceID: nod.id,
13407
13469
  targetID: c.targetId,
@@ -13409,9 +13471,9 @@ class FlowViewComponent extends TraceBase {
13409
13471
  estimate: c.estimate
13410
13472
  }
13411
13473
  });
13412
- }
13413
13474
  });
13414
13475
  nodes.push(nod);
13476
+ // add action indicator
13415
13477
  if (recipient.action) {
13416
13478
  const action = this._session.profile.actions.find(a => a.name === recipient.action);
13417
13479
  if (action.shape && !recipient.pending) {
@@ -13433,56 +13495,42 @@ class FlowViewComponent extends TraceBase {
13433
13495
  indicators.push(actionIndicator);
13434
13496
  }
13435
13497
  }
13436
- if (recipient.pending && !recipient.estimate)
13498
+ // fyi indicator
13499
+ if (recipient.fyi)
13437
13500
  indicators.push({
13438
- id: nod.id + 'pending',
13501
+ id: nod.id + 'fyi',
13439
13502
  shape: {
13440
13503
  type: 'Path',
13441
- data: PENDING_PATH,
13442
- align: this._session.inverse ? 'XMaxYMax' : 'XMinYMax'
13504
+ data: FYI_PATH,
13505
+ align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
13443
13506
  },
13444
13507
  style: {
13445
- fill: this._session.getAccent(900)
13508
+ fill: '#1976d2'
13446
13509
  },
13447
13510
  addInfo: {
13448
13511
  indicator: true,
13449
13512
  parentId: nod.id
13450
13513
  }
13451
13514
  });
13452
- if (recipient.fyi)
13453
- indicators.push({
13454
- id: nod.id + 'fyi',
13515
+ // escalate indicator
13516
+ if (recipient.escalated) {
13517
+ const escalateIndicator = {
13518
+ id: nod.id + 'escalate',
13455
13519
  shape: {
13456
13520
  type: 'Path',
13457
- data: FYI_PATH,
13521
+ data: ESCALATED_PATH,
13458
13522
  align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
13459
13523
  },
13460
13524
  style: {
13461
- fill: '#1976d2'
13525
+ fill: this._session.getAccent(900)
13462
13526
  },
13463
13527
  addInfo: {
13464
13528
  indicator: true,
13465
13529
  parentId: nod.id
13466
13530
  }
13467
- });
13468
- // if (this.model.log.filter(l => l.time > this._submitted && l.type === 'Escalation' && l.recipientId === recipient.id).length) {
13469
- // const escalateIndicator = {
13470
- // id: nod.id + 'escalate',
13471
- // shape: {
13472
- // type: 'Path',
13473
- // data: ESCALATED_PATH,
13474
- // align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
13475
- // },
13476
- // style: {
13477
- // fill: this._session.getAccent(900)
13478
- // },
13479
- // addInfo: {
13480
- // indicator: true,
13481
- // parentId: nod.id
13482
- // } as NodeInfoModel
13483
- // } as NodeModel;
13484
- // indicators.push(escalateIndicator);
13485
- // }
13531
+ };
13532
+ indicators.push(escalateIndicator);
13533
+ }
13486
13534
  }
13487
13535
  }
13488
13536
  else {
@@ -13549,36 +13597,6 @@ class FlowViewComponent extends TraceBase {
13549
13597
  }
13550
13598
  }
13551
13599
  }
13552
- /**
13553
- *
13554
- * @param connector
13555
- * @param index
13556
- * @param vconnectors
13557
- */
13558
- function reroute(connector, index) {
13559
- while (index < dconnectors.length) {
13560
- let dconnector = dconnectors[index];
13561
- if (dconnector.sourceId === connector.targetId) {
13562
- if (nodes.some(n => n.id === dconnector.targetId))
13563
- connectors.push({
13564
- sourceID: connector.sourceId,
13565
- targetID: dconnector.targetId,
13566
- addInfo: {
13567
- estimate: dconnector.estimate,
13568
- time: dconnector.time
13569
- }
13570
- });
13571
- else
13572
- reroute({
13573
- time: dconnector.time,
13574
- targetId: dconnector.targetId,
13575
- estimate: dconnector.estimate,
13576
- sourceId: connector.sourceId
13577
- }, index + 1);
13578
- }
13579
- index++;
13580
- }
13581
- }
13582
13600
  return { connectors, nodes, indicators };
13583
13601
  }
13584
13602
  /**
@@ -13590,7 +13608,7 @@ class FlowViewComponent extends TraceBase {
13590
13608
  if (node.error)
13591
13609
  tooltip.error = node.error;
13592
13610
  let annotation, state;
13593
- const log = this.model.log.filter(l => l.nodeId === node.id && l.time >= this._issued);
13611
+ const log = this.model.log.filter(l => l.nodeId === node.id && l.time >= this.model.issued);
13594
13612
  const stateLog = log.find(l => l.type === 'StateChange');
13595
13613
  if (stateLog) {
13596
13614
  state = this._session.profile.states.find(s => s.name === stateLog.state);
@@ -13668,97 +13686,116 @@ class FlowViewComponent extends TraceBase {
13668
13686
  const tooltip = {};
13669
13687
  let annotation;
13670
13688
  // you
13671
- if ((recipient.byId || recipient.userId) === this._session.userId) {
13672
- annotation = this._session.isImpersonating ? this._session.profile.name : this._translate.get('You');
13673
- if (recipient.replied) {
13674
- const time = this._fromNow(recipient.replied);
13675
- if (recipient.byId) {
13676
- if (recipient.byId === this._session.profile.byId) {
13677
- const action = this._action(recipient.action, this._session.gender);
13678
- if (recipient.toId) {
13679
- const to = await this._accounts.get(recipient.toId).toPromise();
13689
+ if (recipient.userId === this._session.userId) {
13690
+ if (this._session.isImpersonating)
13691
+ annotation = this._session.profile.name;
13692
+ else
13693
+ annotation = this._translate.get('You');
13694
+ if (recipient.role) {
13695
+ const role = this._session.profile.roles.find(o => o.name === recipient.role);
13696
+ if (role)
13697
+ tooltip.role = `- ${role.title}`;
13698
+ }
13699
+ }
13700
+ else
13701
+ // someone else
13702
+ {
13703
+ const who = await this._accounts.get(recipient.userId).toPromise();
13704
+ annotation = who.name;
13705
+ if (who.role)
13706
+ tooltip.role = `- ${who.role}`;
13707
+ else if (recipient.role) {
13708
+ const role = this._session.profile.roles.find(o => o.name === recipient.role);
13709
+ if (role)
13710
+ tooltip.role = `- ${role.title}`;
13711
+ }
13712
+ }
13713
+ if (recipient.replied) {
13714
+ const time = this._fromNow(recipient.replied);
13715
+ if (recipient.byId) {
13716
+ if (recipient.byId === this._session.profile.byId) {
13717
+ const action = this._action(recipient.action, this._session.profile.byGender);
13718
+ if (recipient.originId) {
13719
+ const origin = this.model.recipients.find(r => r.id === recipient.originId);
13720
+ const to = await this._accounts.get(origin.userId).toPromise();
13721
+ if (recipient.userId === this._session.profile.userId)
13680
13722
  tooltip.note = this._translate.get('ActionTakenByYouTo', action, to.name, this._session.profile.name, time);
13723
+ else {
13724
+ const who = await this._accounts.get(recipient.userId).toPromise();
13725
+ tooltip.note = this._translate.get('ActionTakenByYouTo', action, to.name, who.name, time);
13681
13726
  }
13682
- else
13683
- tooltip.note = this._translate.get('ActionTakenByYou', action, this._session.profile.name, time);
13684
13727
  }
13728
+ else if (recipient.userId === this._session.profile.userId)
13729
+ tooltip.note = this._translate.get('ActionTakenByYou', action, this._session.profile.name, time);
13685
13730
  else {
13686
- const by = await this._accounts.get(recipient.byId).toPromise();
13687
- const action = this._action(recipient.action, by.gender);
13688
- if (recipient.toId) {
13689
- const to = await this._accounts.get(recipient.toId).toPromise();
13731
+ const who = await this._accounts.get(recipient.userId).toPromise();
13732
+ tooltip.note = this._translate.get('ActionTakenByYou', action, who.name, time);
13733
+ }
13734
+ }
13735
+ else {
13736
+ const by = await this._accounts.get(recipient.byId).toPromise();
13737
+ const action = this._action(recipient.action, by.gender);
13738
+ if (recipient.userId === this._session.profile.userId) {
13739
+ if (recipient.originId) {
13740
+ const origin = this.model.recipients.find(r => r.id === recipient.originId);
13741
+ const to = await this._accounts.get(origin.userId).toPromise();
13690
13742
  tooltip.note = this._translate.get('YouTakenActionByTo', by.name, action, to.name, time);
13691
13743
  }
13692
13744
  else
13693
13745
  tooltip.note = this._translate.get('YouTakenActionBy', by.name, action, time);
13694
13746
  }
13747
+ else {
13748
+ const who = await this._accounts.get(recipient.userId).toPromise();
13749
+ if (recipient.originId) {
13750
+ const origin = this.model.recipients.find(r => r.id === recipient.originId);
13751
+ const to = await this._accounts.get(origin.userId).toPromise();
13752
+ tooltip.note = this._translate.get('ActionTakenByTo', by.name, action, to.name, who.name, time);
13753
+ }
13754
+ else
13755
+ tooltip.note = this._translate.get('ActionTakenBy', by.name, action, who.name, time);
13756
+ }
13695
13757
  }
13696
- else if (recipient.toId) {
13697
- const to = await this._accounts.get(recipient.toId).toPromise();
13758
+ }
13759
+ else if (recipient.originId) {
13760
+ const origin = this.model.recipients.find(r => r.id === recipient.originId);
13761
+ const to = await this._accounts.get(origin.userId).toPromise();
13762
+ if (recipient.userId === this._session.profile.userId) {
13698
13763
  const action = this._action(recipient.action, this._session.profile.gender);
13699
13764
  if (this._session.isImpersonating)
13700
13765
  tooltip.note = this._translate.get('ActionTakenTo', this._session.profile.name, action, to.name, time);
13701
13766
  else
13702
13767
  tooltip.note = this._translate.get('YouTakenActionTo', action, to.name, time);
13703
13768
  }
13704
- else if (this._session.isImpersonating) {
13705
- const action = this._action(recipient.action, this._session.profile.gender);
13706
- tooltip.note = this._translate.get('ActionTaken', this._session.profile.name, action, time);
13707
- }
13708
13769
  else {
13709
- const action = this._action(recipient.action, You);
13710
- tooltip.note = this._translate.get('YouTakenAction', action, time);
13770
+ const who = await this._accounts.get(recipient.userId).toPromise();
13771
+ const action = this._action(recipient.action, who.gender);
13772
+ tooltip.note = this._translate.get('ActionTakenTo', who.name, action, to.name);
13711
13773
  }
13712
13774
  }
13713
- else if (!node.estimate) {
13714
- const time = this._fromNow(recipient.received);
13775
+ else if (this._session.isImpersonating) {
13776
+ const action = this._action(recipient.action, this._session.profile.gender);
13777
+ tooltip.note = this._translate.get('ActionTaken', this._session.profile.name, action, time);
13778
+ }
13779
+ else if (recipient.userId === this._session.profile.userId) {
13780
+ const action = this._action(recipient.action, You);
13781
+ tooltip.note = this._translate.get('YouTakenAction', action, time);
13782
+ }
13783
+ else {
13784
+ const who = await this._accounts.get(recipient.userId).toPromise();
13785
+ const action = this._action(recipient.action, who.gender);
13786
+ tooltip.note = this._translate.get('ActionTaken', who.name, action, time);
13787
+ }
13788
+ }
13789
+ else if (!recipient.estimate) {
13790
+ const time = this._fromNow(recipient.received);
13791
+ if (recipient.userId === this._session.userId) {
13715
13792
  if (this._session.isImpersonating)
13716
13793
  tooltip.note = this._translate.personalize('ReceivedBy', this._session.profile.gender, this._session.profile.name, time);
13717
13794
  else
13718
13795
  tooltip.note = this._translate.get('YouReceived', time);
13719
13796
  }
13720
- if (recipient.role) {
13721
- const crole = this._session.profile.roles.find(o => o.name === recipient.role);
13722
- if (crole)
13723
- tooltip.role = `- ${crole.title}`;
13724
- }
13725
- }
13726
- else
13727
- // someone else
13728
- {
13729
- const who = await this._accounts.get(recipient.userId).toPromise();
13730
- annotation = who.name;
13731
- if (who.role)
13732
- tooltip.role = `- ${who.role}`;
13733
- else if (recipient.role) {
13734
- const crole = this._session.profile.roles.find(o => o.name === recipient.role);
13735
- if (crole)
13736
- tooltip.role = `- ${crole.title}`;
13737
- }
13738
- if (recipient.replied) {
13739
- const time = this._fromNow(recipient.replied);
13740
- if (recipient.byId) {
13741
- const by = await this._accounts.get(recipient.byId).toPromise();
13742
- const action = this._action(recipient.action, by.gender);
13743
- if (recipient.toId) {
13744
- const to = await this._accounts.get(recipient.toId).toPromise();
13745
- tooltip.note = this._translate.get('ActionTakenByTo', by.name, action, to.name, who.name, time);
13746
- }
13747
- else
13748
- tooltip.note = this._translate.get('ActionTakenBy', by.name, action, who.name, time);
13749
- }
13750
- else if (recipient.toId) {
13751
- const to = await this._accounts.get(recipient.toId).toPromise();
13752
- const action = this._action(recipient.action, who.gender);
13753
- tooltip.note = this._translate.get('ActionTakenTo', who.name, action, to.name);
13754
- }
13755
- else {
13756
- const action = this._action(recipient.action, who.gender);
13757
- tooltip.note = this._translate.get('ActionTaken', who.name, action, time);
13758
- }
13759
- }
13760
- else if (!recipient.estimate) {
13761
- const time = this._fromNow(recipient.received);
13797
+ else {
13798
+ const who = await this._accounts.get(recipient.userId).toPromise();
13762
13799
  tooltip.note = this._translate.personalize('ReceivedTime', who.gender, time);
13763
13800
  }
13764
13801
  }
@@ -13770,11 +13807,26 @@ class FlowViewComponent extends TraceBase {
13770
13807
  tooltip.substituting = this._translate.personalize('SubstitutingFor', substituting.gender, substituting.name);
13771
13808
  }
13772
13809
  }
13773
- const escalations = this.model.log.filter(l => l.time > this._issued && l.type === 'Escalation' && l.recipientId === recipient.id);
13774
- if (escalations.length) {
13810
+ if (recipient.originId && !recipient.replied) {
13811
+ const origin = this.model.recipients.find(r => r.id === recipient.originId);
13812
+ const action = this._session.profile.actions.find(a => a.name === origin.action), adjective = action.adjective || action.past || action.title;
13813
+ if ((origin.byId || origin.userId) === this._session.userId)
13814
+ tooltip.substituting = this._translate.get('ActionByYou', adjective);
13815
+ else if (origin.byId) {
13816
+ const who = await this._accounts.get(origin.userId).toPromise();
13817
+ const by = await this._accounts.get(origin.byId).toPromise();
13818
+ tooltip.substituting = this._translate.get('ActionByBy', adjective, by.name, who.name);
13819
+ }
13820
+ else {
13821
+ const who = await this._accounts.get(origin.userId).toPromise();
13822
+ tooltip.substituting = this._translate.get('ActionBy', adjective, who.name);
13823
+ }
13824
+ }
13825
+ if (recipient.escalated) {
13826
+ const escalations = this.model.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
13775
13827
  const userIds = escalations.map(e => e.userId);
13776
13828
  const users = await this._accounts.getAll(userIds).toPromise();
13777
- const duration = this._duration.transform(dayjs(escalations[escalations.length - 1].time).diff(recipient.received, 's'));
13829
+ const duration = this._duration.transform(dayjs.duration(escalations[escalations.length - 1].duration, 's'));
13778
13830
  tooltip.escalation = this._translate.get('EscalatedTo', this._translate.join(users.map(u => u.name)), duration);
13779
13831
  }
13780
13832
  if (recipient.replied) {
@@ -13865,12 +13917,13 @@ class TraceViewComponent extends TraceBase {
13865
13917
  sameDay: `[${this._translate.get('Today')}] HH:mm`,
13866
13918
  sameElse: 'MMM Do HH:mm'
13867
13919
  };
13868
- this._showAll = localStorage.getItem('traceAll') !== 'false';
13920
+ this._showMode = 'everything';
13921
+ this._showMode = localStorage.getItem('traceMode') || 'everything';
13869
13922
  }
13870
13923
  ngOnChanges(_changes) {
13871
- this._initialise();
13924
+ this._initialize();
13872
13925
  }
13873
- async _initialise() {
13926
+ async _initialize() {
13874
13927
  const { issued, log, recipients, attachments } = this.model;
13875
13928
  const me = this;
13876
13929
  function profileOf(id) {
@@ -13883,7 +13936,7 @@ class TraceViewComponent extends TraceBase {
13883
13936
  function nameOf(user) {
13884
13937
  return me._chat.format(user);
13885
13938
  }
13886
- async function actionBy(action, gender, toId) {
13939
+ async function actionBy(action, gender, id) {
13887
13940
  let name;
13888
13941
  if (gender === You) {
13889
13942
  const { gender } = me._session;
@@ -13898,9 +13951,16 @@ class TraceViewComponent extends TraceBase {
13898
13951
  gender === 'Female' ? (action.pastFemale || action.past) :
13899
13952
  action.past)
13900
13953
  || action.title;
13901
- if (toId) {
13902
- let to = await me._accounts.get(toId).toPromise();
13903
- return me._translate.get('ActionTo', name, nameOf(to));
13954
+ if (id) {
13955
+ const to = me.model.recipients.filter(r => r.originId === id);
13956
+ if (to.length) {
13957
+ const users = [];
13958
+ for (let who of to) {
13959
+ let profile = await me._accounts.get(who.substitutingId || who.userId).toPromise();
13960
+ users.push(nameOf(profile));
13961
+ }
13962
+ return me._translate.get('ActionTo', name, me._translate.join(users));
13963
+ }
13904
13964
  }
13905
13965
  else
13906
13966
  return name;
@@ -13918,15 +13978,11 @@ class TraceViewComponent extends TraceBase {
13918
13978
  }
13919
13979
  case 'CheckIn':
13920
13980
  case 'CheckOut':
13921
- if (!this._showAll)
13922
- continue;
13923
13981
  break;
13924
13982
  case 'ModelChange':
13925
- if (!this._showAll)
13926
- continue;
13927
13983
  break;
13928
13984
  case 'Submit':
13929
- if (!this._showAll)
13985
+ if (l.estimate)
13930
13986
  continue;
13931
13987
  break;
13932
13988
  default:
@@ -13956,7 +14012,7 @@ class TraceViewComponent extends TraceBase {
13956
14012
  else
13957
14013
  step.name = this._translate.personalize('SubstitutingByYou', who.gender, nameOf(who), nameOf(substituting));
13958
14014
  if (action)
13959
- step.action = await actionBy(action, You, recipient.toId);
14015
+ step.action = await actionBy(action, You, recipient.id);
13960
14016
  }
13961
14017
  else {
13962
14018
  let by = await profileOf(recipient.byId);
@@ -13976,34 +14032,28 @@ class TraceViewComponent extends TraceBase {
13976
14032
  else if (recipient.userId === this._session.userId) {
13977
14033
  step.name = this._translate.personalize('YouSubstitute', this._session.profile.byGender, nameOf(who));
13978
14034
  if (action)
13979
- step.action = await actionBy(action, who.gender, recipient.toId);
14035
+ step.action = await actionBy(action, who.gender, recipient.id);
13980
14036
  }
13981
14037
  else {
13982
14038
  step.name = this._translate.personalize('Substituting', who.gender, nameOf(who), nameOf(substituting));
13983
14039
  if (who.role)
13984
14040
  step.role = who.role;
13985
14041
  if (action)
13986
- step.action = await actionBy(action, who.gender, recipient.toId);
14042
+ step.action = await actionBy(action, who.gender, recipient.id);
13987
14043
  }
13988
14044
  }
13989
14045
  }
13990
14046
  else if (recipient.byId) {
13991
- let who = await profileOf(recipient.userId);
13992
- if (recipient.byId === this._session.userId) {
14047
+ let who = await profileOf(recipient.userId), by = await profileOf(recipient.byId);
14048
+ if (recipient.byId === this._session.userId)
13993
14049
  step.name = this._translate.get('ByYou', nameOf(who));
13994
- if (action)
13995
- step.action = await actionBy(action, You, recipient.toId);
13996
- }
13997
14050
  else {
13998
- let by = await profileOf(recipient.byId);
13999
14051
  step.name = this._translate.get('By', nameOf(who), nameOf(by));
14000
14052
  if (by.role)
14001
14053
  step.role = by.role;
14002
- if (action)
14003
- step.action = await actionBy(action, by.gender, recipient.toId);
14004
14054
  }
14005
14055
  if (action)
14006
- step.action = await actionBy(action, who.gender, recipient.toId);
14056
+ step.action = await actionBy(action, by.gender, recipient.id);
14007
14057
  }
14008
14058
  else {
14009
14059
  if (recipient.userId === this._session.userId)
@@ -14014,23 +14064,18 @@ class TraceViewComponent extends TraceBase {
14014
14064
  if (who.role)
14015
14065
  step.role = who.role;
14016
14066
  if (action)
14017
- step.action = await actionBy(action, who.gender, recipient.toId);
14067
+ step.action = await actionBy(action, who.gender, recipient.id);
14018
14068
  }
14019
14069
  }
14020
14070
  }
14021
14071
  else {
14022
- if (l.userId === this._session.userId) {
14072
+ if (l.userId === this._session.userId)
14023
14073
  step.name = this._session.isImpersonating ? this._session.profile.name : this._translate.get('You');
14024
- if (action)
14025
- step.action = await actionBy(action, You, l.toId);
14026
- }
14027
14074
  else {
14028
14075
  let who = await profileOf(l.userId);
14029
14076
  step.name = nameOf(who);
14030
14077
  if (who.role)
14031
14078
  step.role = who.role;
14032
- if (action)
14033
- step.action = await actionBy(action, who.gender, l.toId);
14034
14079
  }
14035
14080
  }
14036
14081
  }
@@ -14103,30 +14148,28 @@ class TraceViewComponent extends TraceBase {
14103
14148
  step.role = by.role;
14104
14149
  }
14105
14150
  }
14106
- else {
14151
+ else if (recipient.escalated) {
14107
14152
  let escalations = this.model.log.filter(l => l.time > issued &&
14108
14153
  l.type === 'Escalation' && l.recipientId === recipient.id);
14109
- if (escalations.length) {
14110
- let escalate = [];
14111
- for (let escalation of escalations) {
14112
- let who = await profileOf(escalation.userId);
14113
- escalate.push(who);
14114
- }
14115
- let who = await profileOf(recipient.userId);
14116
- if (escalations.length === 1 && escalate[0] === this._session.userId)
14117
- step.name = this._translate.get('EscalatedByYou', nameOf(who));
14118
- else
14119
- step.name = this._translate.get('EscalatedBy', nameOf(who), this._translate.join(escalate.map(e => nameOf(e))));
14154
+ let escalate = [];
14155
+ for (let escalation of escalations) {
14156
+ let who = await profileOf(escalation.userId);
14157
+ escalate.push(who);
14120
14158
  }
14159
+ let who = await profileOf(recipient.userId);
14160
+ if (escalations.length === 1 && escalate[0] === this._session.userId)
14161
+ step.name = this._translate.get('EscalatedByYou', nameOf(who));
14162
+ else
14163
+ step.name = this._translate.get('EscalatedBy', nameOf(who), this._translate.join(escalate.map(e => nameOf(e))));
14164
+ }
14165
+ else {
14166
+ if (recipient.userId === this._session.userId)
14167
+ step.name = this._translate.get('You');
14121
14168
  else {
14122
- if (recipient.userId === this._session.userId)
14123
- step.name = this._translate.get('You');
14124
- else {
14125
- let who = await profileOf(recipient.userId);
14126
- step.name = nameOf(who);
14127
- if (who.role)
14128
- step.role = who.role;
14129
- }
14169
+ let who = await profileOf(recipient.userId);
14170
+ step.name = nameOf(who);
14171
+ if (who.role)
14172
+ step.role = who.role;
14130
14173
  }
14131
14174
  }
14132
14175
  trace.push(step);
@@ -14135,15 +14178,25 @@ class TraceViewComponent extends TraceBase {
14135
14178
  this._filter();
14136
14179
  }
14137
14180
  _filter() {
14138
- this.data = this._showAll ? this._data : this._data.filter(l => l.type === 'ActionTaken'
14139
- || l.type === 'Estimate' || l.type === 'Pending');
14181
+ switch (this._showMode) {
14182
+ case 'active':
14183
+ this.data = this._data.filter(l => l.time >= this.model.issued);
14184
+ break;
14185
+ case 'route':
14186
+ this.data = this._data.filter(l => l.type === 'ActionTaken'
14187
+ || l.type === 'Estimate' || l.type === 'Pending');
14188
+ break;
14189
+ default:
14190
+ this.data = this._data;
14191
+ break;
14192
+ }
14140
14193
  }
14141
- get showAll() {
14142
- return this._showAll;
14194
+ get showMode() {
14195
+ return this._showMode;
14143
14196
  }
14144
- set showAll(value) {
14145
- this._showAll = value;
14146
- localStorage.setItem('traceAll', value ? 'true' : 'false');
14197
+ set showMode(value) {
14198
+ this._showMode = value;
14199
+ localStorage.setItem('traceMode', value);
14147
14200
  this._data && this._filter();
14148
14201
  }
14149
14202
  _roleName(name) {
@@ -14164,10 +14217,10 @@ class TraceViewComponent extends TraceBase {
14164
14217
  }
14165
14218
  }
14166
14219
  TraceViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TraceViewComponent, deps: [{ token: SessionService }, { token: TranslateService }, { token: AccountService }, { token: ChatInfo }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
14167
- TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Log' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe, "amDurationFormat": DurationFormatPipe, "amDuration": DurationPipe, "amCalendar": CalendarPipe }, animations: [listAnimation, itemAnimation] });
14220
+ TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showMode='route'\">\r\n <mat-icon>{{ showMode === 'route' ? 'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='active'\">\r\n <mat-icon>{{ showMode === 'active' ? 'check':'' }}</mat-icon>\r\n <span>{{'ActiveRoute' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='everything'\">\r\n <mat-icon>{{ showMode === 'everything' ? 'check':'' }}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe, "amDurationFormat": DurationFormatPipe, "amDuration": DurationPipe, "amCalendar": CalendarPipe }, animations: [listAnimation, itemAnimation] });
14168
14221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TraceViewComponent, decorators: [{
14169
14222
  type: Component,
14170
- args: [{ selector: 'bizdoc-trace', animations: [listAnimation, itemAnimation], template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Log' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"] }]
14223
+ args: [{ selector: 'bizdoc-trace', animations: [listAnimation, itemAnimation], template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showMode='route'\">\r\n <mat-icon>{{ showMode === 'route' ? 'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='active'\">\r\n <mat-icon>{{ showMode === 'active' ? 'check':'' }}</mat-icon>\r\n <span>{{'ActiveRoute' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showMode='everything'\">\r\n <mat-icon>{{ showMode === 'everything' ? 'check':'' }}</mat-icon>\r\n <span>{{'Everything' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <ng-container *ngSwitchCase=\"'ActionTaken'\">\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'Submit'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\">&nbsp;{{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.type==='ModelChange'\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"] }]
14171
14224
  }], ctorParameters: function () { return [{ type: SessionService }, { type: TranslateService }, { type: AccountService }, { type: ChatInfo }, { type: HubService }]; }, propDecorators: { model: [{
14172
14225
  type: Input
14173
14226
  }], versionSelected: [{
@@ -14612,7 +14665,7 @@ class SaveChangesDialog {
14612
14665
  }
14613
14666
  }
14614
14667
  SaveChangesDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SaveChangesDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
14615
- SaveChangesDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SaveChangesDialog, selector: "ng-component", ngImport: i0, template: " <h2 mat-dialog-title>\r\n {{'SaveChanges' | translate}}\r\n </h2>\r\n <mat-dialog-content>\r\n <p class=\"mat-body\">\r\n {{'SaveChangesAsk' | translate}}\r\n </p>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=true color=\"primary\" cdkFocusInitial>{{'Save'|translate}}</button>\r\n <button mat-button [mat-dialog-close]=\"false\">{{'ContinueEditing'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'DiscardChanges'|translate}}</button>\r\n </mat-dialog-actions>\r\n", components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe } });
14668
+ SaveChangesDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SaveChangesDialog, selector: "ng-component", ngImport: i0, template: " <h2 mat-dialog-title>\r\n {{'SaveChanges' | translate}}\r\n </h2>\r\n <mat-dialog-content>\r\n <p class=\"mat-body\">\r\n {{'SaveChangesAsk' | translate}}\r\n </p>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=true color=\"primary\" cdkFocusInitial>{{'Save'|translate}}</button>\r\n <button mat-button [mat-dialog-close]=\"false\">{{'ContinueEditing'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'DiscardChanges'|translate}}</button>\r\n </mat-dialog-actions>\r\n", components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe } });
14616
14669
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SaveChangesDialog, decorators: [{
14617
14670
  type: Component,
14618
14671
  args: [{ template: " <h2 mat-dialog-title>\r\n {{'SaveChanges' | translate}}\r\n </h2>\r\n <mat-dialog-content>\r\n <p class=\"mat-body\">\r\n {{'SaveChangesAsk' | translate}}\r\n </p>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=true color=\"primary\" cdkFocusInitial>{{'Save'|translate}}</button>\r\n <button mat-button [mat-dialog-close]=\"false\">{{'ContinueEditing'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'DiscardChanges'|translate}}</button>\r\n </mat-dialog-actions>\r\n" }]
@@ -14631,11 +14684,11 @@ class ComposeDismiss {
14631
14684
  return true;
14632
14685
  }
14633
14686
  }
14634
- ComposeDismiss.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ComposeDismiss, deps: [{ token: i3$2.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
14687
+ ComposeDismiss.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ComposeDismiss, deps: [{ token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
14635
14688
  ComposeDismiss.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ComposeDismiss });
14636
14689
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ComposeDismiss, decorators: [{
14637
14690
  type: Injectable
14638
- }], ctorParameters: function () { return [{ type: i3$2.MatDialog }]; } });
14691
+ }], ctorParameters: function () { return [{ type: i3$1.MatDialog }]; } });
14639
14692
 
14640
14693
  class FormResolve {
14641
14694
  constructor(_forms) {
@@ -15708,7 +15761,7 @@ class NotificationsFilterComponent {
15708
15761
  }
15709
15762
  }
15710
15763
  NotificationsFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NotificationsFilterComponent, deps: [{ token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
15711
- NotificationsFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NotificationsFilterComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input type=\"search\" formControlName=\"text\" matInput placeholder=\"{{'Search' | translate}}\" />\r\n </mat-form-field>\r\n <mat-slide-toggle formControlName=\"showDeleted\">{{'ShowDeleted' | translate}}</mat-slide-toggle>\r\n</form>\r\n", styles: [":host{padding:8px}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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]" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": TranslatePipe } });
15764
+ NotificationsFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NotificationsFilterComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input type=\"search\" formControlName=\"text\" matInput placeholder=\"{{'Search' | translate}}\" />\r\n </mat-form-field>\r\n <mat-slide-toggle formControlName=\"showDeleted\">{{'ShowDeleted' | translate}}</mat-slide-toggle>\r\n</form>\r\n", styles: [":host{padding:8px}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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]" }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": TranslatePipe } });
15712
15765
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NotificationsFilterComponent, decorators: [{
15713
15766
  type: Component,
15714
15767
  args: [{ styles: [':host { padding: 8px }'], template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input type=\"search\" formControlName=\"text\" matInput placeholder=\"{{'Search' | translate}}\" />\r\n </mat-form-field>\r\n <mat-slide-toggle formControlName=\"showDeleted\">{{'ShowDeleted' | translate}}</mat-slide-toggle>\r\n</form>\r\n" }]
@@ -16057,7 +16110,7 @@ class ContactsComponent {
16057
16110
  }
16058
16111
  }
16059
16112
  ContactsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ContactsComponent, deps: [{ token: ChatService }, { token: PromptService }, { token: SessionService }, { token: AccountService }, { token: i0.ChangeDetectorRef }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component });
16060
- ContactsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ContactsComponent, selector: "bizdoc-contacts", outputs: { selected: "selected" }, ngImport: i0, template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matLine>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\">\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}mat-nav-list{flex:1 1 auto;overflow:auto}mat-nav-list mat-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}mat-nav-list mat-list-item .watermark{width:16px;height:16px;font-size:16px}mat-nav-list mat-list-item .tool{opacity:0}mat-nav-list mat-list-item:hover .tool{opacity:1}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: AvatarComponent, selector: "bizdoc-avatar", inputs: ["person", "interactive", "dense"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.MatLine, selector: "[mat-line], [matLine]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i13.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "sort": ArraySortPipe, "filter": FilterPipe, "htmlToText": HtmlSimplePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe } });
16113
+ ContactsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ContactsComponent, selector: "bizdoc-contacts", outputs: { selected: "selected" }, ngImport: i0, template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matLine>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\">\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}mat-nav-list{flex:1 1 auto;overflow:auto}mat-nav-list mat-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}mat-nav-list mat-list-item .watermark{width:16px;height:16px;font-size:16px}mat-nav-list mat-list-item .tool{opacity:0}mat-nav-list mat-list-item:hover .tool{opacity:1}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: AvatarComponent, selector: "bizdoc-avatar", inputs: ["person", "interactive", "dense"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.MatLine, selector: "[mat-line], [matLine]" }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i13.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "sort": ArraySortPipe, "filter": FilterPipe, "htmlToText": HtmlSimplePipe, "amCalendar": CalendarPipe, "amTimeAgo": TimeAgoPipe } });
16061
16114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ContactsComponent, decorators: [{
16062
16115
  type: Component,
16063
16116
  args: [{ selector: 'bizdoc-contacts', template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matLine>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\">\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}mat-nav-list{flex:1 1 auto;overflow:auto}mat-nav-list mat-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}mat-nav-list mat-list-item .watermark{width:16px;height:16px;font-size:16px}mat-nav-list mat-list-item .tool{opacity:0}mat-nav-list mat-list-item:hover .tool{opacity:1}\n"] }]
@@ -16737,12 +16790,12 @@ class ImpersonateDialog {
16737
16790
  this._destroy.complete();
16738
16791
  }
16739
16792
  }
16740
- ImpersonateDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ImpersonateDialog, deps: [{ token: PromptService }, { token: SessionService }, { token: i3$2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
16741
- ImpersonateDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ImpersonateDialog, selector: "bizdoc-impersonate", ngImport: i0, template: "<h2 mat-dialog-title>{{'Impersonate' | translate}}</h2>\r\n<mat-dialog-content>\r\n <p class=\"mat-body-1\">{{'ImpersonateHelp' | translate}}</p>\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [placeholder]=\"'Associate' | translate\" required [formControl]=\"username\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"go()\" [disabled]=\"!item || logging\" color=\"primary\">{{'Login' | translate}}</button>\r\n <button mat-button [mat-dialog-close]>{{'Cancel' | translate }}</button>\r\n</mat-dialog-actions>\r\n", styles: [".mat-form-field{width:100%}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
16793
+ ImpersonateDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ImpersonateDialog, deps: [{ token: PromptService }, { token: SessionService }, { token: i3$1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
16794
+ ImpersonateDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ImpersonateDialog, selector: "bizdoc-impersonate", ngImport: i0, template: "<h2 mat-dialog-title>{{'Impersonate' | translate}}</h2>\r\n<mat-dialog-content>\r\n <p class=\"mat-body-1\">{{'ImpersonateHelp' | translate}}</p>\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [placeholder]=\"'Associate' | translate\" required [formControl]=\"username\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"go()\" [disabled]=\"!item || logging\" color=\"primary\">{{'Login' | translate}}</button>\r\n <button mat-button [mat-dialog-close]>{{'Cancel' | translate }}</button>\r\n</mat-dialog-actions>\r\n", styles: [".mat-form-field{width:100%}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
16742
16795
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ImpersonateDialog, decorators: [{
16743
16796
  type: Component,
16744
16797
  args: [{ selector: 'bizdoc-impersonate', template: "<h2 mat-dialog-title>{{'Impersonate' | translate}}</h2>\r\n<mat-dialog-content>\r\n <p class=\"mat-body-1\">{{'ImpersonateHelp' | translate}}</p>\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [placeholder]=\"'Associate' | translate\" required [formControl]=\"username\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"go()\" [disabled]=\"!item || logging\" color=\"primary\">{{'Login' | translate}}</button>\r\n <button mat-button [mat-dialog-close]>{{'Cancel' | translate }}</button>\r\n</mat-dialog-actions>\r\n", styles: [".mat-form-field{width:100%}\n"] }]
16745
- }], ctorParameters: function () { return [{ type: PromptService }, { type: SessionService }, { type: i3$2.MatDialogRef }]; } });
16798
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: SessionService }, { type: i3$1.MatDialogRef }]; } });
16746
16799
 
16747
16800
  /** sign component*/
16748
16801
  class QuickSignComponent {
@@ -16779,12 +16832,12 @@ class QuickSignComponent {
16779
16832
  });
16780
16833
  }
16781
16834
  }
16782
- QuickSignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: QuickSignComponent, deps: [{ token: PromptService }, { token: AuthenticationImpl }, { token: i3$2.MatDialog }, { token: PopupRef }], target: i0.ɵɵFactoryTarget.Component });
16835
+ QuickSignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: QuickSignComponent, deps: [{ token: PromptService }, { token: AuthenticationImpl }, { token: i3$1.MatDialog }, { token: PopupRef }], target: i0.ɵɵFactoryTarget.Component });
16783
16836
  QuickSignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: QuickSignComponent, selector: "ng-component", ngImport: i0, template: "<mat-nav-list role=\"list\">\r\n <mat-list-item role=\"listitem\" (click)=\"impersonate()\">\r\n <mat-icon matListIcon>\r\n admin_panel_settings\r\n </mat-icon>\r\n <h4 matLine>{{'Impersonate' | translate}}</h4>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" (click)=\"signOut()\">\r\n <mat-icon matListIcon>\r\n power_settings_new\r\n </mat-icon>\r\n <h4 matLine>{{'SignOut' | translate}}</h4>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", components: [{ type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i2$3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { type: i6.MatLine, selector: "[mat-line], [matLine]" }], pipes: { "translate": TranslatePipe } });
16784
16837
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: QuickSignComponent, decorators: [{
16785
16838
  type: Component,
16786
16839
  args: [{ template: "<mat-nav-list role=\"list\">\r\n <mat-list-item role=\"listitem\" (click)=\"impersonate()\">\r\n <mat-icon matListIcon>\r\n admin_panel_settings\r\n </mat-icon>\r\n <h4 matLine>{{'Impersonate' | translate}}</h4>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" (click)=\"signOut()\">\r\n <mat-icon matListIcon>\r\n power_settings_new\r\n </mat-icon>\r\n <h4 matLine>{{'SignOut' | translate}}</h4>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n" }]
16787
- }], ctorParameters: function () { return [{ type: PromptService }, { type: AuthenticationImpl }, { type: i3$2.MatDialog }, { type: PopupRef }]; } });
16840
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: AuthenticationImpl }, { type: i3$1.MatDialog }, { type: PopupRef }]; } });
16788
16841
 
16789
16842
  /** about component*/
16790
16843
  class AboutDialog {
@@ -16797,7 +16850,7 @@ class AboutDialog {
16797
16850
  }
16798
16851
  }
16799
16852
  AboutDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AboutDialog, deps: [{ token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
16800
- AboutDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AboutDialog, selector: "bizdoc-about", ngImport: i0, template: "<h2 mat-dialog-title>BizDoc v{{version}}</h2>\r\n<mat-dialog-content>\r\n <div *ngIf=\"license; else none\">\r\n <div [ngSwitch]=\"license.mode\">\r\n <div *ngSwitchCase=\"'Grace'\"> {{\"GraceLicense\" | translate : dayjs(license.expiration).toNow() }}</div>\r\n <div *ngSwitchCase=\"'Limited'\">{{'LimitLicense'|translate}}</div>\r\n <div *ngSwitchCase=\"'Expired'\">{{\"ExpiredLicense\" | translate : (license.expiration | amTimeAgo)}}</div>\r\n </div>\r\n <div [innerHtml]='\"LicencedTo\" | translate : license.companyName'></div>\r\n </div>\r\n <br />\r\n <span>&copy; Moding Ltd.</span>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button mat-dialog-close>{{'OK'|translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #none>\r\n <div>{{'EvaluationLicense' | translate}}</div>\r\n</ng-template>\r\n", components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "amTimeAgo": TimeAgoPipe } });
16853
+ AboutDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AboutDialog, selector: "bizdoc-about", ngImport: i0, template: "<h2 mat-dialog-title>BizDoc v{{version}}</h2>\r\n<mat-dialog-content>\r\n <div *ngIf=\"license; else none\">\r\n <div [ngSwitch]=\"license.mode\">\r\n <div *ngSwitchCase=\"'Grace'\"> {{\"GraceLicense\" | translate : dayjs(license.expiration).toNow() }}</div>\r\n <div *ngSwitchCase=\"'Limited'\">{{'LimitLicense'|translate}}</div>\r\n <div *ngSwitchCase=\"'Expired'\">{{\"ExpiredLicense\" | translate : (license.expiration | amTimeAgo)}}</div>\r\n </div>\r\n <div [innerHtml]='\"LicencedTo\" | translate : license.companyName'></div>\r\n </div>\r\n <br />\r\n <span>&copy; Moding Ltd.</span>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button mat-dialog-close>{{'OK'|translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #none>\r\n <div>{{'EvaluationLicense' | translate}}</div>\r\n</ng-template>\r\n", components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "amTimeAgo": TimeAgoPipe } });
16801
16854
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AboutDialog, decorators: [{
16802
16855
  type: Component,
16803
16856
  args: [{ selector: 'bizdoc-about', template: "<h2 mat-dialog-title>BizDoc v{{version}}</h2>\r\n<mat-dialog-content>\r\n <div *ngIf=\"license; else none\">\r\n <div [ngSwitch]=\"license.mode\">\r\n <div *ngSwitchCase=\"'Grace'\"> {{\"GraceLicense\" | translate : dayjs(license.expiration).toNow() }}</div>\r\n <div *ngSwitchCase=\"'Limited'\">{{'LimitLicense'|translate}}</div>\r\n <div *ngSwitchCase=\"'Expired'\">{{\"ExpiredLicense\" | translate : (license.expiration | amTimeAgo)}}</div>\r\n </div>\r\n <div [innerHtml]='\"LicencedTo\" | translate : license.companyName'></div>\r\n </div>\r\n <br />\r\n <span>&copy; Moding Ltd.</span>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button mat-dialog-close>{{'OK'|translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #none>\r\n <div>{{'EvaluationLicense' | translate}}</div>\r\n</ng-template>\r\n" }]
@@ -16985,7 +17038,7 @@ class OptionsComponent {
16985
17038
  }
16986
17039
  }
16987
17040
  OptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: OptionsComponent, deps: [{ token: OPTION_PANEL }, { token: i1$4.OverlayRef }, { token: i1$2.FormBuilder }, { token: AccountService }, { token: PromptService }, { token: SessionService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
16988
- OptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: OptionsComponent, selector: "bizdoc-options", viewQueries: [{ propertyName: "outOfOffice", first: true, predicate: ["outOfOffice"], descendants: true, read: MatExpansionPanel, static: true }, { propertyName: "notifications", first: true, predicate: ["notifications"], descendants: true, read: MatExpansionPanel, static: true }], ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\">\r\n <mat-accordion>\r\n <mat-expansion-panel #notifications>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Notifications' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>notifications</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"notifications\" fxLayout=\"column\">\r\n <div fxLayout=\"row\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"toggleSound()\" [bizdocTooltip]=\"'Sound'|translate\"><mat-icon>{{options.notifications.sound ? 'volume_up' : 'volume_off'}}</mat-icon></button>\r\n </div>\r\n <br />\r\n <mat-slide-toggle formControlName=\"myDocumentStateChange\">{{'MyStateChange' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"anyDocumentStateChange\">{{'AnyStateChange' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"commentMyDocument\">{{'CommentMyDocument' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"commentAnyDocument\">{{'CommentAnyDocument' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"likes\" [style.display]=\"voating?'':'none'\">{{'LikedComment' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"tagged\">{{'TaggedInComments' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"upcomingEvents\">{{'UpcomingEvents' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"cubeAnomaly\">{{'CubeAnomaly' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #emails>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Emails' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>alternate_email</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"emails\" fxLayout=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-slide-toggle formControlName=\"mail\">{{'Mails' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"chat\">{{'Conversations' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"notifications\">{{'EmailNotifications' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"events\">{{'AlarmEvents' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #outOfOffice>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'OutOfOffice' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>trending_flat</mat-icon>-->\r\n <!--{{'OutOfOfficeTip' | translate}}-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"outOfOffice\" fxLayout=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field fxFlex>\r\n <input matInput [formControl]=\"substitueId\" type=\"search\" [matAutocomplete]=\"sauto\"\r\n [placeholder]=\"'Associate' | translate\" [required]=\"form.value.outOfOffice.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"setSubstitute($event)\">\r\n <mat-option *ngFor=\"let u of susers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint>{{'OutOfOfficeTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.value.outOfOffice?.from\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #grantAccess>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'GrantAccess' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>account_circle</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"grantAccess\" class=\"grant-section\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-list #grantList [attr.aria-label]=\"\">\r\n <mat-chip *ngFor=\"let u of (form.value.grantAccess.users || [])\"\r\n [removable]=\"form.value.grantAccess.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{nameOf(u) | async}}\r\n <mat-icon matChipRemove *ngIf=\"form.value.grantAccess.active\">cancel</mat-icon>\r\n </mat-chip>\r\n <input [formControl]=\"gusers\" placeholder=\"{{'Users'| translate}}\"\r\n #grantInput\r\n [matAutocomplete]=\"grantAuto\"\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint>{{'GrantTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #preferences>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Preferences' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon></mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-chip-list #chips [selectable]=\"false\" multiple>\r\n <mat-chip *ngFor=\"let item of form.value.tags\"\r\n [removable]=\"true\" (removed)=\"removeTag(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Tags'|translate\"\r\n [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-list>\r\n </mat-form-field>\r\n <mat-slide-toggle [formControl]=\"aRIA\">{{'ARIA' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</form>\r\n", styles: [":host{max-width:80vw}.grant-section{display:flex;flex-direction:column}\n"], components: [{ type: i6$4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i6$4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i3$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i3$3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6$4.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { type: i6$4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i6$4.MatExpansionPanelDescription, selector: "mat-panel-description" }, { type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i3$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i3$3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$3.MatChipRemove, selector: "[matChipRemove]" }, { type: i3$3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
17041
+ OptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: OptionsComponent, selector: "bizdoc-options", viewQueries: [{ propertyName: "outOfOffice", first: true, predicate: ["outOfOffice"], descendants: true, read: MatExpansionPanel, static: true }, { propertyName: "notifications", first: true, predicate: ["notifications"], descendants: true, read: MatExpansionPanel, static: true }], ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\">\r\n <mat-accordion>\r\n <mat-expansion-panel #notifications>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Notifications' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>notifications</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"notifications\" fxLayout=\"column\">\r\n <div fxLayout=\"row\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"toggleSound()\" [bizdocTooltip]=\"'Sound'|translate\"><mat-icon>{{options.notifications.sound ? 'volume_up' : 'volume_off'}}</mat-icon></button>\r\n </div>\r\n <br />\r\n <mat-slide-toggle formControlName=\"myDocumentStateChange\">{{'MyStateChange' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"anyDocumentStateChange\">{{'AnyStateChange' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"commentMyDocument\">{{'CommentMyDocument' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"commentAnyDocument\">{{'CommentAnyDocument' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"likes\" [style.display]=\"voating?'':'none'\">{{'LikedComment' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"tagged\">{{'TaggedInComments' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"upcomingEvents\">{{'UpcomingEvents' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"cubeAnomaly\">{{'CubeAnomaly' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #emails>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Emails' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>alternate_email</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"emails\" fxLayout=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-slide-toggle formControlName=\"mail\">{{'Mails' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"chat\">{{'Conversations' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"notifications\">{{'EmailNotifications' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"events\">{{'AlarmEvents' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #outOfOffice>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'OutOfOffice' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>trending_flat</mat-icon>-->\r\n <!--{{'OutOfOfficeTip' | translate}}-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"outOfOffice\" fxLayout=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field fxFlex>\r\n <input matInput [formControl]=\"substitueId\" type=\"search\" [matAutocomplete]=\"sauto\"\r\n [placeholder]=\"'Associate' | translate\" [required]=\"form.value.outOfOffice.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"setSubstitute($event)\">\r\n <mat-option *ngFor=\"let u of susers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint>{{'OutOfOfficeTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.value.outOfOffice?.from\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #grantAccess>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'GrantAccess' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>account_circle</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"grantAccess\" class=\"grant-section\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-list #grantList [attr.aria-label]=\"\">\r\n <mat-chip *ngFor=\"let u of (form.value.grantAccess.users || [])\"\r\n [removable]=\"form.value.grantAccess.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{nameOf(u) | async}}\r\n <mat-icon matChipRemove *ngIf=\"form.value.grantAccess.active\">cancel</mat-icon>\r\n </mat-chip>\r\n <input [formControl]=\"gusers\" placeholder=\"{{'Users'| translate}}\"\r\n #grantInput\r\n [matAutocomplete]=\"grantAuto\"\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint>{{'GrantTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #preferences>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Preferences' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon></mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-chip-list #chips [selectable]=\"false\" multiple>\r\n <mat-chip *ngFor=\"let item of form.value.tags\"\r\n [removable]=\"true\" (removed)=\"removeTag(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Tags'|translate\"\r\n [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-list>\r\n </mat-form-field>\r\n <mat-slide-toggle [formControl]=\"aRIA\">{{'ARIA' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</form>\r\n", styles: [":host{max-width:80vw}.grant-section{display:flex;flex-direction:column}\n"], components: [{ type: i6$4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i6$4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i1$3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i3$2.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6$4.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { type: i6$4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i6$4.MatExpansionPanelDescription, selector: "mat-panel-description" }, { type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i3$2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$2.MatChipRemove, selector: "[matChipRemove]" }, { type: i3$2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
16989
17042
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: OptionsComponent, decorators: [{
16990
17043
  type: Component,
16991
17044
  args: [{ selector: 'bizdoc-options', template: "<form [formGroup]=\"form\" autocomplete=\"off\">\r\n <mat-accordion>\r\n <mat-expansion-panel #notifications>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Notifications' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>notifications</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"notifications\" fxLayout=\"column\">\r\n <div fxLayout=\"row\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"toggleSound()\" [bizdocTooltip]=\"'Sound'|translate\"><mat-icon>{{options.notifications.sound ? 'volume_up' : 'volume_off'}}</mat-icon></button>\r\n </div>\r\n <br />\r\n <mat-slide-toggle formControlName=\"myDocumentStateChange\">{{'MyStateChange' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"anyDocumentStateChange\">{{'AnyStateChange' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"commentMyDocument\">{{'CommentMyDocument' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"commentAnyDocument\">{{'CommentAnyDocument' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"likes\" [style.display]=\"voating?'':'none'\">{{'LikedComment' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"tagged\">{{'TaggedInComments' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"upcomingEvents\">{{'UpcomingEvents' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"cubeAnomaly\">{{'CubeAnomaly' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #emails>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Emails' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>alternate_email</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"emails\" fxLayout=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-slide-toggle formControlName=\"mail\">{{'Mails' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"chat\">{{'Conversations' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"notifications\">{{'EmailNotifications' | translate}}</mat-slide-toggle>\r\n <mat-slide-toggle formControlName=\"events\">{{'AlarmEvents' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #outOfOffice>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'OutOfOffice' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>trending_flat</mat-icon>-->\r\n <!--{{'OutOfOfficeTip' | translate}}-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"outOfOffice\" fxLayout=\"column\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field fxFlex>\r\n <input matInput [formControl]=\"substitueId\" type=\"search\" [matAutocomplete]=\"sauto\"\r\n [placeholder]=\"'Associate' | translate\" [required]=\"form.value.outOfOffice.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"setSubstitute($event)\">\r\n <mat-option *ngFor=\"let u of susers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint>{{'OutOfOfficeTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.value.outOfOffice?.from\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #grantAccess>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'GrantAccess' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon>account_circle</mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div formGroupName=\"grantAccess\" class=\"grant-section\">\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-list #grantList [attr.aria-label]=\"\">\r\n <mat-chip *ngFor=\"let u of (form.value.grantAccess.users || [])\"\r\n [removable]=\"form.value.grantAccess.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{nameOf(u) | async}}\r\n <mat-icon matChipRemove *ngIf=\"form.value.grantAccess.active\">cancel</mat-icon>\r\n </mat-chip>\r\n <input [formControl]=\"gusers\" placeholder=\"{{'Users'| translate}}\"\r\n #grantInput\r\n [matAutocomplete]=\"grantAuto\"\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint>{{'GrantTip' | translate}}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n <mat-expansion-panel #preferences>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{'Preferences' | translate}}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <!--<mat-icon></mat-icon>-->\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <div fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-chip-list #chips [selectable]=\"false\" multiple>\r\n <mat-chip *ngFor=\"let item of form.value.tags\"\r\n [removable]=\"true\" (removed)=\"removeTag(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Tags'|translate\"\r\n [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-list>\r\n </mat-form-field>\r\n <mat-slide-toggle [formControl]=\"aRIA\">{{'ARIA' | translate}}</mat-slide-toggle>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</form>\r\n", styles: [":host{max-width:80vw}.grant-section{display:flex;flex-direction:column}\n"] }]
@@ -17098,12 +17151,12 @@ class QuickOptionsComponent {
17098
17151
  this._destroy.complete();
17099
17152
  }
17100
17153
  }
17101
- QuickOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: QuickOptionsComponent, deps: [{ token: PromptService }, { token: GuideService }, { token: OptionsService }, { token: PopupRef }, { token: HubService }, { token: SessionService }, { token: i3$2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
17154
+ QuickOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: QuickOptionsComponent, deps: [{ token: PromptService }, { token: GuideService }, { token: OptionsService }, { token: PopupRef }, { token: HubService }, { token: SessionService }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
17102
17155
  QuickOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: QuickOptionsComponent, selector: "bizdoc-quick-options", ngImport: i0, template: "<div fxLayout=\"column\">\r\n <div class=\"profile-name\">\r\n <span class=\"mat-title\">\r\n <ng-container *ngIf=\"by\">{{by}} \\ </ng-container>\r\n {{name}}</span>\r\n </div>\r\n <div fxLayoutAlign=\"center center\" *ngIf=\"themes.length > 1\">\r\n <button *ngFor=\"let t of themes\" (click)=\"changeTheme(t)\" mat-icon-button class=\"theme\" [style.background]=\"t.color\" [class.active]=\"t.name === theme\" [class.dark]=\"t.dark\"></button>\r\n </div>\r\n</div>\r\n<mat-nav-list role=\"list\">\r\n <mat-list-item role=\"listitem\" *ngIf=\"!online\" (click)=\"revive()\">\r\n <mat-icon [bizdocTooltip]=\"'Connect'|translate\">wifi_off</mat-icon>\r\n </mat-list-item>\r\n <mat-list-item role=\"listitem\" *ngIf=\"online\" [matMenuTriggerFor]=\"availability\">\r\n {{'ShowAs' | translate : (available | translate | lowercase)}}\r\n </mat-list-item>\r\n <mat-menu #availability>\r\n <button mat-menu-item *ngFor=\"let m of modes\" (click)=\"setAvailable(m)\">{{m | translate}}</button>\r\n </mat-menu>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" (click)=\"options()\">\r\n {{'Options' | translate}}\r\n </mat-list-item>\r\n <mat-list-item role=\"listitem\" [matMenuTriggerFor]=\"language\">\r\n {{'ChangeLanguage' | translate}}\r\n </mat-list-item>\r\n <mat-menu #language>\r\n <button mat-menu-item *ngFor=\"let l of languages\" (click)=\"changeLanguage(l)\">{{l | translate}}</button>\r\n </mat-menu>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" [matMenuTriggerFor]=\"help\">\r\n {{'Help' | translate}}\r\n <span [matBadge]=\"guidesCount\" matBadgeColor=\"accent\" matBadgeOverlap=\"false\" matBadgeSize=\"small\"></span>\r\n </mat-list-item>\r\n <mat-menu #help>\r\n <button mat-menu-item *ngFor=\"let g of guides\" (click)=\"guide(g.name)\">{{g.title}}</button>\r\n </mat-menu>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" (click)=\"about()\">{{ 'About' | translate}}</mat-list-item>\r\n</mat-nav-list>\r\n", styles: [".profile-name{margin:8px}.theme{height:22px;width:22px;border-radius:13px;margin:4px}.theme.active.dark{border:2px solid #f4f4f4}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i13.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], pipes: { "translate": TranslatePipe, "lowercase": i10.LowerCasePipe } });
17103
17156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: QuickOptionsComponent, decorators: [{
17104
17157
  type: Component,
17105
17158
  args: [{ selector: 'bizdoc-quick-options', template: "<div fxLayout=\"column\">\r\n <div class=\"profile-name\">\r\n <span class=\"mat-title\">\r\n <ng-container *ngIf=\"by\">{{by}} \\ </ng-container>\r\n {{name}}</span>\r\n </div>\r\n <div fxLayoutAlign=\"center center\" *ngIf=\"themes.length > 1\">\r\n <button *ngFor=\"let t of themes\" (click)=\"changeTheme(t)\" mat-icon-button class=\"theme\" [style.background]=\"t.color\" [class.active]=\"t.name === theme\" [class.dark]=\"t.dark\"></button>\r\n </div>\r\n</div>\r\n<mat-nav-list role=\"list\">\r\n <mat-list-item role=\"listitem\" *ngIf=\"!online\" (click)=\"revive()\">\r\n <mat-icon [bizdocTooltip]=\"'Connect'|translate\">wifi_off</mat-icon>\r\n </mat-list-item>\r\n <mat-list-item role=\"listitem\" *ngIf=\"online\" [matMenuTriggerFor]=\"availability\">\r\n {{'ShowAs' | translate : (available | translate | lowercase)}}\r\n </mat-list-item>\r\n <mat-menu #availability>\r\n <button mat-menu-item *ngFor=\"let m of modes\" (click)=\"setAvailable(m)\">{{m | translate}}</button>\r\n </mat-menu>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" (click)=\"options()\">\r\n {{'Options' | translate}}\r\n </mat-list-item>\r\n <mat-list-item role=\"listitem\" [matMenuTriggerFor]=\"language\">\r\n {{'ChangeLanguage' | translate}}\r\n </mat-list-item>\r\n <mat-menu #language>\r\n <button mat-menu-item *ngFor=\"let l of languages\" (click)=\"changeLanguage(l)\">{{l | translate}}</button>\r\n </mat-menu>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" [matMenuTriggerFor]=\"help\">\r\n {{'Help' | translate}}\r\n <span [matBadge]=\"guidesCount\" matBadgeColor=\"accent\" matBadgeOverlap=\"false\" matBadgeSize=\"small\"></span>\r\n </mat-list-item>\r\n <mat-menu #help>\r\n <button mat-menu-item *ngFor=\"let g of guides\" (click)=\"guide(g.name)\">{{g.title}}</button>\r\n </mat-menu>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" (click)=\"about()\">{{ 'About' | translate}}</mat-list-item>\r\n</mat-nav-list>\r\n", styles: [".profile-name{margin:8px}.theme{height:22px;width:22px;border-radius:13px;margin:4px}.theme.active.dark{border:2px solid #f4f4f4}\n"] }]
17106
- }], ctorParameters: function () { return [{ type: PromptService }, { type: GuideService }, { type: OptionsService }, { type: PopupRef }, { type: HubService }, { type: SessionService }, { type: i3$2.MatDialog }]; } });
17159
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: GuideService }, { type: OptionsService }, { type: PopupRef }, { type: HubService }, { type: SessionService }, { type: i3$1.MatDialog }]; } });
17107
17160
 
17108
17161
  /** */
17109
17162
  class OutOfOfficeToast {
@@ -17744,7 +17797,7 @@ class SlotsComponent {
17744
17797
  ngOnInit() {
17745
17798
  this._router._navigate$.
17746
17799
  subscribe(async (n) => {
17747
- const { commands, component, pathMode, relativeTo } = n;
17800
+ const { commands, component, toggle, pathMode, relativeTo } = n;
17748
17801
  let { icon, title, group, help, policy, queryParams, state } = n;
17749
17802
  let queryString, params, parent, path, route;
17750
17803
  if (commands && commands.length) {
@@ -17774,8 +17827,6 @@ class SlotsComponent {
17774
17827
  params = this._params(route, path);
17775
17828
  if (!policy)
17776
17829
  policy = route.policy || DEFAULT_POLICY;
17777
- else if (route.policy)
17778
- policy |= route.policy;
17779
17830
  if (!icon)
17780
17831
  icon = route.icon;
17781
17832
  if (!help)
@@ -17796,7 +17847,7 @@ class SlotsComponent {
17796
17847
  let tab = this.tabs[i];
17797
17848
  if (path === tab.path) {
17798
17849
  if (queryString === tab.queryString) {
17799
- if ((policy & OpenPolicy.Toggle) == OpenPolicy.Toggle) {
17850
+ if (toggle) {
17800
17851
  this.tabs.splice(i, 1);
17801
17852
  this.selectedTabIndex = this.tabs.length - 1;
17802
17853
  }
@@ -17831,7 +17882,7 @@ class SlotsComponent {
17831
17882
  let pane = this.panes[i];
17832
17883
  if (path === pane.path) {
17833
17884
  if (queryString === pane.queryString) {
17834
- if ((policy & OpenPolicy.Toggle) == OpenPolicy.Toggle)
17885
+ if (toggle)
17835
17886
  this.removeAt(i);
17836
17887
  else {
17837
17888
  state && pane._data$.next(state);
@@ -18904,12 +18955,12 @@ class CopyDialog {
18904
18955
  this._subscription.unsubscribe();
18905
18956
  }
18906
18957
  }
18907
- CopyDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CopyDialog, deps: [{ token: MailboxService }, { token: i3$2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
18908
- CopyDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CopyDialog, selector: "bizdoc-copy", ngImport: i0, template: "<h2 mat-dialog-title>{{'Copy' | translate}}</h2>\r\n<mat-dialog-content>\r\n <form>\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"index\" placeholder=\"{{'Number' | translate}}\" [formControl]=\"search\" required />\r\n <mat-icon matSuffix>search</mat-icon>\r\n <!--<button mat-button *ngIf=\"search.value\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"search.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>-->\r\n <mat-autocomplete #index=\"matAutocomplete\" [displayWith]=\"display\" [autoActiveFirstOption]=\"true\" (optionSelected)=\"select($event)\">\r\n <mat-option *ngFor=\"let m of results$ | async\" [value]=\"m\">\r\n <span>{{m.number}} | {{m.subject}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!selectedItem\" [mat-dialog-close]=\"selectedItem\" color=\"primary\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
18958
+ CopyDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CopyDialog, deps: [{ token: MailboxService }, { token: i3$1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
18959
+ CopyDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CopyDialog, selector: "bizdoc-copy", ngImport: i0, template: "<h2 mat-dialog-title>{{'Copy' | translate}}</h2>\r\n<mat-dialog-content>\r\n <form>\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"index\" placeholder=\"{{'Number' | translate}}\" [formControl]=\"search\" required />\r\n <mat-icon matSuffix>search</mat-icon>\r\n <!--<button mat-button *ngIf=\"search.value\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"search.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>-->\r\n <mat-autocomplete #index=\"matAutocomplete\" [displayWith]=\"display\" [autoActiveFirstOption]=\"true\" (optionSelected)=\"select($event)\">\r\n <mat-option *ngFor=\"let m of results$ | async\" [value]=\"m\">\r\n <span>{{m.number}} | {{m.subject}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!selectedItem\" [mat-dialog-close]=\"selectedItem\" color=\"primary\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
18909
18960
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CopyDialog, decorators: [{
18910
18961
  type: Component,
18911
18962
  args: [{ selector: 'bizdoc-copy', template: "<h2 mat-dialog-title>{{'Copy' | translate}}</h2>\r\n<mat-dialog-content>\r\n <form>\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"index\" placeholder=\"{{'Number' | translate}}\" [formControl]=\"search\" required />\r\n <mat-icon matSuffix>search</mat-icon>\r\n <!--<button mat-button *ngIf=\"search.value\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"search.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>-->\r\n <mat-autocomplete #index=\"matAutocomplete\" [displayWith]=\"display\" [autoActiveFirstOption]=\"true\" (optionSelected)=\"select($event)\">\r\n <mat-option *ngFor=\"let m of results$ | async\" [value]=\"m\">\r\n <span>{{m.number}} | {{m.subject}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!selectedItem\" [mat-dialog-close]=\"selectedItem\" color=\"primary\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
18912
- }], ctorParameters: function () { return [{ type: MailboxService }, { type: i3$2.MatDialogRef }]; } });
18963
+ }], ctorParameters: function () { return [{ type: MailboxService }, { type: i3$1.MatDialogRef }]; } });
18913
18964
 
18914
18965
  /** form selector component */
18915
18966
  class FormSelectorSheet {
@@ -18970,12 +19021,12 @@ class FormSelectorSheet {
18970
19021
  });
18971
19022
  }
18972
19023
  }
18973
- FormSelectorSheet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormSelectorSheet, deps: [{ token: i3$2.MatDialog }, { token: i2$5.MatBottomSheetRef }, { token: PromptService }, { token: MailboxService }, { token: i1$6.Router }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
19024
+ FormSelectorSheet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormSelectorSheet, deps: [{ token: i3$1.MatDialog }, { token: i2$5.MatBottomSheetRef }, { token: PromptService }, { token: MailboxService }, { token: i1$6.Router }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
18974
19025
  FormSelectorSheet.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FormSelectorSheet, selector: "bizdoc-form-selector", ngImport: i0, template: "<mat-nav-list role=\"list\">\r\n <a mat-list-item role=\"listitem\" *ngFor=\"let f of forms\" (click)=\"open(f.name)\">\r\n <div matLine>{{f.title}}</div>\r\n <mat-icon>{{f.icon}}</mat-icon>\r\n </a>\r\n <mat-divider></mat-divider>\r\n <a mat-list-item role=\"listitem\" (click)=\"copy($event)\">\r\n <div matLine>{{'Elipsis'| translate: ('Copy' | translate)}}</div>\r\n </a>\r\n</mat-nav-list>\r\n", components: [{ type: i2$3.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i2$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.MatLine, selector: "[mat-line], [matLine]" }], pipes: { "translate": TranslatePipe } });
18975
19026
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormSelectorSheet, decorators: [{
18976
19027
  type: Component,
18977
19028
  args: [{ selector: 'bizdoc-form-selector', template: "<mat-nav-list role=\"list\">\r\n <a mat-list-item role=\"listitem\" *ngFor=\"let f of forms\" (click)=\"open(f.name)\">\r\n <div matLine>{{f.title}}</div>\r\n <mat-icon>{{f.icon}}</mat-icon>\r\n </a>\r\n <mat-divider></mat-divider>\r\n <a mat-list-item role=\"listitem\" (click)=\"copy($event)\">\r\n <div matLine>{{'Elipsis'| translate: ('Copy' | translate)}}</div>\r\n </a>\r\n</mat-nav-list>\r\n" }]
18978
- }], ctorParameters: function () { return [{ type: i3$2.MatDialog }, { type: i2$5.MatBottomSheetRef }, { type: PromptService }, { type: MailboxService }, { type: i1$6.Router }, { type: SessionService }]; } });
19029
+ }], ctorParameters: function () { return [{ type: i3$1.MatDialog }, { type: i2$5.MatBottomSheetRef }, { type: PromptService }, { type: MailboxService }, { type: i1$6.Router }, { type: SessionService }]; } });
18979
19030
 
18980
19031
  class ChatComponent {
18981
19032
  constructor() {
@@ -19202,7 +19253,7 @@ class ActionPaneComponent extends ActionBase {
19202
19253
  }
19203
19254
  }
19204
19255
  ActionPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionPaneComponent, deps: [{ token: PaneRef }, { token: MailboxService }, { token: BizDocComponentFactoryResolver }, { token: i0.ComponentFactoryResolver }, { token: AccountService }, { token: PromptService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
19205
- ActionPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ActionPaneComponent, selector: "bizdoc-action-dialog.pane", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content>\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <ng-container #container>\r\n </ng-container>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" (click)=\"ok()\" color=\"primary\">{{'Yes'|translate}}</button>\r\n <button mat-button (click)='close()'>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n", styles: [":host ::ng-deep form{display:flex}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], pipes: { "translate": TranslatePipe } });
19256
+ ActionPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ActionPaneComponent, selector: "bizdoc-action-dialog.pane", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content>\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <ng-container #container>\r\n </ng-container>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" (click)=\"ok()\" color=\"primary\">{{'Yes'|translate}}</button>\r\n <button mat-button (click)='close()'>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n", styles: [":host ::ng-deep form{display:flex}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], pipes: { "translate": TranslatePipe } });
19206
19257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionPaneComponent, decorators: [{
19207
19258
  type: Component,
19208
19259
  args: [{ selector: 'bizdoc-action-dialog.pane', host: {
@@ -19270,7 +19321,7 @@ const PANES_CONFIG = [{
19270
19321
  path: 'version/:version',
19271
19322
  icon: 'history',
19272
19323
  component: VersionPaneComponent,
19273
- policy: OpenPolicy.Tab | OpenPolicy.Dismissable
19324
+ policy: OpenPolicy.Tab
19274
19325
  }
19275
19326
  ]
19276
19327
  }, {
@@ -19441,12 +19492,12 @@ class BrowseComponent {
19441
19492
  this._destroy.complete();
19442
19493
  }
19443
19494
  }
19444
- BrowseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowseComponent, deps: [{ token: i1$6.Router }, { token: WindowTitleService }, { token: SessionService }, { token: i1$6.ActivatedRoute }, { token: i7$2.Directionality }, { token: i3$2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
19495
+ BrowseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowseComponent, deps: [{ token: i1$6.Router }, { token: WindowTitleService }, { token: SessionService }, { token: i1$6.ActivatedRoute }, { token: i7$2.Directionality }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
19445
19496
  BrowseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BrowseComponent, selector: "ng-component", viewQueries: [{ propertyName: "items", first: true, predicate: BrowseItemsComponent, descendants: true, static: true }, { propertyName: "drawer", first: true, predicate: MatSidenav, descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <button mat-icon-button *ngIf=\"items.isAllDraft()\" (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\r\n <button mat-button color=\"primary\" fxShow [fxShow.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\r\n <button mat-icon-button color=\"primary\" fxHide [fxHide.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\" [bizdocTooltip]=\"'Submit' | translate\" [attr.aria-label]=\"'Submit' | translate\"><mat-icon>send</mat-icon></button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length === 1\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\"><mat-icon *ngIf=\"items.sharedActions[0].icon\">{{items.sharedActions[0].icon}}</mat-icon>{{'SendSelected' | translate : items.selection.selected.length}}</button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length > 1\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\r\n {{'SendSelected'| translate : items.selection.selected.length }}\r\n </button>\r\n <mat-menu #action>\r\n <ng-container *ngFor=\"let a of items.sharedActions | sort : 'group'; let i = index\">\r\n <mat-divider *ngIf=\"i>0 && items.sharedActions[i-1].group !== a.group\">\r\n </mat-divider>\r\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\r\n {{ a.title }}\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button fxHide.xs (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button fxHide.xs (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>\r\n <button mat-icon-button (click)=\"drawer.toggle()\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\"><mat-icon>filter_list</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-sidenav-container class=\"page-container\" autosize>\r\n <mat-sidenav #drawer mode=\"over\" position=\"end\" [opened]=\"false\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <bizdoc-browse-filter *ngSwitchDefault [values]=filters (valuesChange)=\"filterChange($event)\" [folderId]=\"folderId\"></bizdoc-browse-filter>\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\" (open)=\"open($event)\" (view)=view($event) #items></bizdoc-browse-items>\r\n </mat-sidenav-content>\r\n</mat-sidenav-container>\r\n", components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9$4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { type: i9$4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { type: BrowseFilterComponent, selector: "bizdoc-browse-filter", inputs: ["values", "folderId", "exclude"], outputs: ["valuesChange"] }, { type: i9$4.MatSidenavContent, selector: "mat-sidenav-content" }, { type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: ["folderId", "filterType", "filters"], outputs: ["open", "view"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: MatIconAnimate, selector: "[matAnimate]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i25.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "sort": ArraySortPipe } });
19446
19497
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BrowseComponent, decorators: [{
19447
19498
  type: Component,
19448
19499
  args: [{ template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"items.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\" [attr.aria-label]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <button mat-icon-button *ngIf=\"items.isAllDraft()\" (click)=\"items.discardAll()\" [bizdocTooltip]=\"'DiscardSelected' | translate : items.selection.selected.length\" [attr.aria-label]=\"'DiscardSelected' | translate : items.selection.selected.length\"><mat-icon>delete_sweep</mat-icon></button>\r\n <button mat-button color=\"primary\" fxShow [fxShow.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\">{{'SubmitSelected' | translate : items.selection.selected.length }}</button>\r\n <button mat-icon-button color=\"primary\" fxHide [fxHide.xs]=\"false\" *ngIf=\"items.isAllDraft()\" (click)=\"items.submitAll()\" [bizdocTooltip]=\"'Submit' | translate\" [attr.aria-label]=\"'Submit' | translate\"><mat-icon>send</mat-icon></button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length === 1\" (click)=\"sendAll(items.sharedActions[0].name)\" [bizdocTooltip]=\"items.sharedActions[0].title\"><mat-icon *ngIf=\"items.sharedActions[0].icon\">{{items.sharedActions[0].icon}}</mat-icon>{{'SendSelected' | translate : items.selection.selected.length}}</button>\r\n <button mat-button color=\"primary\" *ngIf=\"items.sharedActions.length > 1\" [matMenuTriggerFor]=\"action\" [bizdocTooltip]=\"'Send' | translate\" [attr.aria-label]=\"'Send' | translate\">\r\n {{'SendSelected'| translate : items.selection.selected.length }}\r\n </button>\r\n <mat-menu #action>\r\n <ng-container *ngFor=\"let a of items.sharedActions | sort : 'group'; let i = index\">\r\n <mat-divider *ngIf=\"i>0 && items.sharedActions[i-1].group !== a.group\">\r\n </mat-divider>\r\n <button mat-menu-item (click)=\"sendAll(a.name)\" [attr.aria-label]=\"a.title\">\r\n {{ a.title }}\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button fxHide.xs (click)=\"items.paginator.previousPage()\" [bizdocTooltip]=\"'PrevPage' | translate\" [attr.aria-label]=\"'PrevPage' | translate\" [disabled]=\"!items.paginator.hasPreviousPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button fxHide.xs (click)=\"items.paginator.nextPage()\" [bizdocTooltip]=\"'NextPage' | translate\" [attr.aria-label]=\"'NextPage' | translate\" [disabled]=\"!items.paginator.hasNextPage()\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>\r\n <button mat-icon-button (click)=\"drawer.toggle()\" [bizdocTooltip]=\"'Filter' | translate\" [attr.aria-label]=\"'Filter' | translate\"><mat-icon>filter_list</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-sidenav-container class=\"page-container\" autosize>\r\n <mat-sidenav #drawer mode=\"over\" position=\"end\" [opened]=\"false\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <bizdoc-browse-filter *ngSwitchDefault [values]=filters (valuesChange)=\"filterChange($event)\" [folderId]=\"folderId\"></bizdoc-browse-filter>\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <bizdoc-browse-items [filters]=\"filters\" [folderId]=\"folderId\" [filterType]=\"filterType\" (open)=\"open($event)\" (view)=view($event) #items></bizdoc-browse-items>\r\n </mat-sidenav-content>\r\n</mat-sidenav-container>\r\n" }]
19449
- }], ctorParameters: function () { return [{ type: i1$6.Router }, { type: WindowTitleService }, { type: SessionService }, { type: i1$6.ActivatedRoute }, { type: i7$2.Directionality }, { type: i3$2.MatDialog }]; }, propDecorators: { items: [{
19500
+ }], ctorParameters: function () { return [{ type: i1$6.Router }, { type: WindowTitleService }, { type: SessionService }, { type: i1$6.ActivatedRoute }, { type: i7$2.Directionality }, { type: i3$1.MatDialog }]; }, propDecorators: { items: [{
19450
19501
  type: ViewChild,
19451
19502
  args: [BrowseItemsComponent, { static: true }]
19452
19503
  }], drawer: [{
@@ -20180,38 +20231,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
20180
20231
  }]
20181
20232
  }] });
20182
20233
 
20234
+ class UserNamePipe {
20235
+ constructor(_accounts) {
20236
+ this._accounts = _accounts;
20237
+ }
20238
+ transform(value) {
20239
+ const subject = new BehaviorSubject(null);
20240
+ this._accounts.get(value).subscribe(u => subject.next(u.name));
20241
+ return subject;
20242
+ }
20243
+ }
20244
+ UserNamePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserNamePipe, deps: [{ token: AccountService }], target: i0.ɵɵFactoryTarget.Pipe });
20245
+ UserNamePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserNamePipe, name: "userName" });
20246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserNamePipe, decorators: [{
20247
+ type: Pipe,
20248
+ args: [{ name: 'userName' }]
20249
+ }], ctorParameters: function () { return [{ type: AccountService }]; } });
20250
+
20183
20251
  let AssignActionComponent = class AssignActionComponent {
20184
20252
  constructor(_fb, _session, _accounts) {
20185
20253
  this._fb = _fb;
20186
20254
  this._session = _session;
20187
20255
  this._accounts = _accounts;
20256
+ this.separatorKeysCodes = [ENTER, COMMA];
20188
20257
  this.form = this._fb.group({
20189
- userId: this._fb.control(null, Validators.required),
20258
+ userIds: this._fb.control(null, Validators.required),
20190
20259
  fyi: this._fb.control(false),
20191
- forward: this._fb.control(false),
20260
+ roundtrip: this._fb.control(false),
20192
20261
  note: this._fb.control(null, Validators.maxLength(200))
20193
20262
  });
20194
- this.userId = this._fb.control(null, Validators.required);
20263
+ this.userIds = this._fb.control([]);
20195
20264
  this._destroy = new Subject();
20196
20265
  }
20197
20266
  ngOnInit() {
20198
20267
  const me = this._session.userId;
20199
- this.users = this.userId.valueChanges.
20200
- pipe(filter(v => isString(v)), takeUntil$1(this._destroy), switchMap(v => this._accounts.findAll(v).
20268
+ this.users$ = this.userIds.valueChanges.
20269
+ pipe(debounceTime$1(200), takeUntil(this._destroy), switchMap(v => this._accounts.findAll(v, { take: 20 }).
20201
20270
  pipe(map(r => r.filter(u => u.id !== me)))));
20202
20271
  }
20203
- display(v) {
20204
- return v ? v.name : null;
20272
+ /**
20273
+ *
20274
+ * @param inp
20275
+ * @param event
20276
+ */
20277
+ userSelected(inp, event) {
20278
+ const userIds = this.form.controls['userIds'].value || [];
20279
+ userIds.push(event.option.value);
20280
+ this.form.controls['userIds'].setValue(userIds);
20281
+ inp.value = '';
20205
20282
  }
20206
- change(evt) {
20207
- this.form.controls['userId'].setValue(evt.option.value.id);
20283
+ /**
20284
+ *
20285
+ * @param id
20286
+ */
20287
+ removed(id) {
20288
+ const userIds = this.form.controls['userIds'].value;
20289
+ const index = userIds.indexOf(id);
20290
+ if (userIds.length > 1) {
20291
+ index >= 0 &&
20292
+ userIds.splice(index, 1);
20293
+ this.form.updateValueAndValidity();
20294
+ }
20295
+ else
20296
+ this.form.controls['userIds'].setValue(null);
20208
20297
  }
20209
20298
  ngOnDestroy() {
20210
20299
  this._destroy.next();
20211
20300
  }
20212
20301
  };
20213
20302
  AssignActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AssignActionComponent, deps: [{ token: i1$2.FormBuilder }, { token: SessionService }, { token: AccountService }], target: i0.ɵɵFactoryTarget.Component });
20214
- AssignActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AssignActionComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" cdkFocusInitial [placeholder]=\"'User'|translate\" required [formControl]=\"userId\"/> \r\n <mat-autocomplete #auto=\"matAutocomplete\"\r\n [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users | async\" [value]=\"u\">{{u.name}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'FYI' | translate }}</mat-checkbox>\r\n <mat-checkbox formControlName=forward> {{ 'Forward' | translate }}</mat-checkbox>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
20303
+ AssignActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AssignActionComponent, selector: "ng-component", viewQueries: [{ propertyName: "nameInput", first: true, predicate: ["nameInput"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"'AssignTo'|translate\">\r\n <mat-chip *ngFor=\"let u of form.value.userIds\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n {{u | userName | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input required [placeholder]=\"'AssignTo'|translate\"\r\n [formControl]=userIds\r\n cdkFocusInitial \r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"userSelected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userIds.hasError('required')\">{{'Required'|translate:('AssignTo'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'AssignFYI' | translate }}</mat-checkbox>\r\n <!--<mat-checkbox formControlName=roundtrip> {{ 'AssignRoundtrip' | translate }}</mat-checkbox>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n <mat-hint>{{'AssignNoteHint'| translate}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3$2.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3$2.MatChipRemove, selector: "[matChipRemove]" }, { 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]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i3$2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "userName": UserNamePipe } });
20215
20304
  AssignActionComponent = __decorate([
20216
20305
  BizDoc({
20217
20306
  selector: 'bizdoc-action-assign'
@@ -20219,25 +20308,11 @@ AssignActionComponent = __decorate([
20219
20308
  ], AssignActionComponent);
20220
20309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AssignActionComponent, decorators: [{
20221
20310
  type: Component,
20222
- args: [{ template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" cdkFocusInitial [placeholder]=\"'User'|translate\" required [formControl]=\"userId\"/> \r\n <mat-autocomplete #auto=\"matAutocomplete\"\r\n [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users | async\" [value]=\"u\">{{u.name}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'FYI' | translate }}</mat-checkbox>\r\n <mat-checkbox formControlName=forward> {{ 'Forward' | translate }}</mat-checkbox>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n" }]
20223
- }], ctorParameters: function () { return [{ type: i1$2.FormBuilder }, { type: SessionService }, { type: AccountService }]; } });
20224
-
20225
- class UserNamePipe {
20226
- constructor(_accounts) {
20227
- this._accounts = _accounts;
20228
- }
20229
- transform(value) {
20230
- const subject = new BehaviorSubject(null);
20231
- this._accounts.get(value).subscribe(u => subject.next(u.name));
20232
- return subject;
20233
- }
20234
- }
20235
- UserNamePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserNamePipe, deps: [{ token: AccountService }], target: i0.ɵɵFactoryTarget.Pipe });
20236
- UserNamePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserNamePipe, name: "userName" });
20237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserNamePipe, decorators: [{
20238
- type: Pipe,
20239
- args: [{ name: 'userName' }]
20240
- }], ctorParameters: function () { return [{ type: AccountService }]; } });
20311
+ args: [{ template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"'AssignTo'|translate\">\r\n <mat-chip *ngFor=\"let u of form.value.userIds\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n {{u | userName | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input required [placeholder]=\"'AssignTo'|translate\"\r\n [formControl]=userIds\r\n cdkFocusInitial \r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"userSelected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userIds.hasError('required')\">{{'Required'|translate:('AssignTo'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'AssignFYI' | translate }}</mat-checkbox>\r\n <!--<mat-checkbox formControlName=roundtrip> {{ 'AssignRoundtrip' | translate }}</mat-checkbox>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n <mat-hint>{{'AssignNoteHint'| translate}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n" }]
20312
+ }], ctorParameters: function () { return [{ type: i1$2.FormBuilder }, { type: SessionService }, { type: AccountService }]; }, propDecorators: { nameInput: [{
20313
+ type: ViewChild,
20314
+ args: ['nameInput', { static: true, read: ElementRef }]
20315
+ }] } });
20241
20316
 
20242
20317
  let ReturnActionComponent = class ReturnActionComponent {
20243
20318
  constructor(_fb, actionRef, session, accounts) {
@@ -20261,7 +20336,7 @@ let ReturnActionComponent = class ReturnActionComponent {
20261
20336
  }
20262
20337
  };
20263
20338
  ReturnActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ReturnActionComponent, deps: [{ token: i1$2.FormBuilder }, { token: ActionRef }, { token: SessionService }, { token: AccountService }], target: i0.ɵɵFactoryTarget.Component });
20264
- ReturnActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ReturnActionComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-select formControlName=\"recipientId\" cdkFocusInitial [placeholder]=\"'User'|translate\" required>\r\n <mat-option *ngFor=\"let r of recipients\" [value]=\"r.id\">{{r.userId | userName | async }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.recipientId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { 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]" }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "userName": UserNamePipe } });
20339
+ ReturnActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ReturnActionComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-select formControlName=\"recipientId\" cdkFocusInitial [placeholder]=\"'User'|translate\" required>\r\n <mat-option *ngFor=\"let r of recipients\" [value]=\"r.id\">{{r.userId | userName | async }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.recipientId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { 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]" }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "userName": UserNamePipe } });
20265
20340
  ReturnActionComponent = __decorate([
20266
20341
  BizDoc({
20267
20342
  selector: 'bizdoc-action-return'
@@ -20443,7 +20518,7 @@ class FilterTagsComponent {
20443
20518
  }
20444
20519
  }
20445
20520
  FilterTagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FilterTagsComponent, deps: [{ token: SessionService }, { token: DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
20446
- FilterTagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FilterTagsComponent, selector: "bizdoc-filter-tags", inputs: { axes: "axes", cube: "cube" }, outputs: { filtersChange: "filtersChange" }, usesOnChanges: true, ngImport: i0, template: "<mat-chip-list aria-label=\"\">\r\n <mat-chip *ngFor=\"let t of tags\" class=\"small-chip\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(t)\">\r\n {{t.value}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n</mat-chip-list>\r\n", styles: [""], components: [{ type: i3$3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3$3.MatChipRemove, selector: "[matChipRemove]" }] });
20521
+ FilterTagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FilterTagsComponent, selector: "bizdoc-filter-tags", inputs: { axes: "axes", cube: "cube" }, outputs: { filtersChange: "filtersChange" }, usesOnChanges: true, ngImport: i0, template: "<mat-chip-list aria-label=\"\">\r\n <mat-chip *ngFor=\"let t of tags\" class=\"small-chip\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(t)\">\r\n {{t.value}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n</mat-chip-list>\r\n", styles: [""], components: [{ type: i3$2.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3$2.MatChipRemove, selector: "[matChipRemove]" }] });
20447
20522
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FilterTagsComponent, decorators: [{
20448
20523
  type: Component,
20449
20524
  args: [{ selector: 'bizdoc-filter-tags', template: "<mat-chip-list aria-label=\"\">\r\n <mat-chip *ngFor=\"let t of tags\" class=\"small-chip\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(t)\">\r\n {{t.value}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n</mat-chip-list>\r\n", styles: [""] }]
@@ -23156,7 +23231,7 @@ AddressInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
23156
23231
  <mat-option *ngFor="let a of _addresses" [value]="a">
23157
23232
  <span matLine>{{a.description}}</span>
23158
23233
  </mat-option>
23159
- </mat-autocomplete></div>`, isInline: true, styles: [".address-container{display:flex}\n"], components: [{ type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.MatLine, selector: "[mat-line], [matLine]" }] });
23234
+ </mat-autocomplete></div>`, isInline: true, styles: [".address-container{display:flex}\n"], components: [{ type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.MatLine, selector: "[mat-line], [matLine]" }] });
23160
23235
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AddressInput, decorators: [{
23161
23236
  type: Component,
23162
23237
  args: [{
@@ -23360,7 +23435,7 @@ class TimePicker {
23360
23435
  }
23361
23436
  TimePicker.nextId = 0;
23362
23437
  TimePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TimePicker, deps: [{ token: i2$1.FocusMonitor }, { token: i0.ElementRef }, { token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
23363
- TimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TimePicker, selector: "mat-time-picker", inputs: { dateControlName: "dateControlName", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { properties: { "class.floating": "shouldLabelFloat", "id": "id", "attr.aria-describedby": "describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: TimePicker }], ngImport: i0, template: "<input matInput type=\"text\" [matAutocomplete]=\"auto\" [formControl]=\"control\" [placeholder]=\"placeholder\">\r\n<mat-autocomplete #auto>\r\n <mat-option *ngFor=\"let o of options\" [value]=\"o\">{{o}}</mat-option>\r\n</mat-autocomplete>\r\n", components: [{ type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
23438
+ TimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TimePicker, selector: "mat-time-picker", inputs: { dateControlName: "dateControlName", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { properties: { "class.floating": "shouldLabelFloat", "id": "id", "attr.aria-describedby": "describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: TimePicker }], ngImport: i0, template: "<input matInput type=\"text\" [matAutocomplete]=\"auto\" [formControl]=\"control\" [placeholder]=\"placeholder\">\r\n<mat-autocomplete #auto>\r\n <mat-option *ngFor=\"let o of options\" [value]=\"o\">{{o}}</mat-option>\r\n</mat-autocomplete>\r\n", components: [{ type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
23364
23439
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TimePicker, decorators: [{
23365
23440
  type: Component,
23366
23441
  args: [{ selector: 'mat-time-picker', providers: [{ provide: MatFormFieldControl, useExisting: TimePicker }], host: {
@@ -24501,7 +24576,7 @@ class CombinationPicker {
24501
24576
  }
24502
24577
  }
24503
24578
  CombinationPicker.nextId = 0;
24504
- CombinationPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CombinationPicker, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i1$1.MatFormField, optional: true }, { token: i1$4.Overlay }, { token: i3$2.MatDialog }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i2$1.FocusMonitor }, { token: i0.ElementRef }, { token: i7$2.Directionality }], target: i0.ɵɵFactoryTarget.Component });
24579
+ CombinationPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CombinationPicker, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i1$1.MatFormField, optional: true }, { token: i1$4.Overlay }, { token: i3$1.MatDialog }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i2$1.FocusMonitor }, { token: i0.ElementRef }, { token: i7$2.Directionality }], target: i0.ɵɵFactoryTarget.Component });
24505
24580
  CombinationPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CombinationPicker, selector: "bizdoc-combination-picker", inputs: { _divider: ["divider", "_divider"], _displayDivider: ["displayDivider", "_displayDivider"], limit: "limit", cube: "cube", exploreSettings: "exploreSettings", description: "description", touchUi: "touchUi", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, outputs: { optionSelected: "optionSelected", descriptionChange: "descriptionChange" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: CombinationPicker }], ngImport: i0, template: "<div class=\"account-picker-element\">\r\n <textarea class=\"mat-input-element\" [disabled]=\"disabled\" (keydown)=\"_keyDown($event)\" [value]=\"description\"></textarea>\r\n <div class=\"mat-form-field-suffix\">\r\n <button mat-icon-button [disableRipple]=true (click)=\"open($event)\" matSuffix [disabled]=\"disabled\" tabindex=\"-1\" [class.mat-warn]=\"errorState\"><mat-icon>arrow_drop_down</mat-icon></button>\r\n </div>\r\n</div>\r\n", styles: [".account-picker-element{display:flex;flex-direction:row}.account-picker-element textarea{resize:none;flex:auto}\n"], components: [{ type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$1.MatSuffix, selector: "[matSuffix]" }] });
24506
24581
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CombinationPicker, decorators: [{
24507
24582
  type: Component,
@@ -24515,7 +24590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
24515
24590
  type: Self
24516
24591
  }] }, { type: i1$1.MatFormField, decorators: [{
24517
24592
  type: Optional
24518
- }] }, { type: i1$4.Overlay }, { type: i3$2.MatDialog }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i2$1.FocusMonitor }, { type: i0.ElementRef }, { type: i7$2.Directionality }]; }, propDecorators: { _divider: [{
24593
+ }] }, { type: i1$4.Overlay }, { type: i3$1.MatDialog }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i2$1.FocusMonitor }, { type: i0.ElementRef }, { type: i7$2.Directionality }]; }, propDecorators: { _divider: [{
24519
24594
  type: Input,
24520
24595
  args: ['divider']
24521
24596
  }], _displayDivider: [{
@@ -26745,7 +26820,7 @@ class ReassignDialog {
26745
26820
  }
26746
26821
  }
26747
26822
  ReassignDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ReassignDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: SessionService }, { token: AccountService }], target: i0.ɵɵFactoryTarget.Component });
26748
- ReassignDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ReassignDialog, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\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", components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { 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]" }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
26823
+ ReassignDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ReassignDialog, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\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", components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { 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]" }, { type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
26749
26824
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ReassignDialog, decorators: [{
26750
26825
  type: Component,
26751
26826
  args: [{ template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\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" }]
@@ -26776,34 +26851,30 @@ class TraceElementComponent {
26776
26851
  this.none = log.length === 0,
26777
26852
  this.nodeType = this._session.profile.nodes.find(n => n.name === addInfo.nodeType);
26778
26853
  }
26779
- recipientInfo(recipient) {
26780
- const observables = [], observe = this._accounts.get(recipient.userId);
26781
- observables.push(observe);
26782
- const escalations = this.timeline.log.filter(l => l.time > this.timeline.startDate && l.type === 'Escalation' && l.recipientId === recipient.id);
26783
- if (escalations.length)
26784
- escalations.forEach(e => {
26785
- const observe = this._accounts.get(e.userId);
26786
- observables.push(observe);
26787
- });
26788
- else if (recipient.byId) {
26789
- const observe = this._accounts.get(recipient.byId);
26790
- observables.push(observe);
26854
+ async recipientInfo(recipient) {
26855
+ const info = [];
26856
+ const who = await this._accounts.get(recipient.userId).toPromise();
26857
+ if (recipient.escalated) {
26858
+ const escalations = this.timeline.log.filter(l => l.type === 'Escalation' && l.recipientId === recipient.id);
26859
+ const escalate = await this._accounts.get(escalations[0].userId).toPromise();
26860
+ info.push(this._translate.get('EscalatedBy', this._chat.format(escalate), this._chat.format(who)));
26791
26861
  }
26792
26862
  if (recipient.substitutingId) {
26793
- const observe = this._accounts.get(recipient.substitutingId);
26794
- observables.push(observe);
26863
+ const substitute = await this._accounts.get(recipient.substitutingId).toPromise();
26864
+ if (recipient.byId) {
26865
+ const by = await this._accounts.get(recipient.byId).toPromise();
26866
+ info.push(this._translate.get('SubstitutingBy', this._chat.format(who), this._chat.format(substitute), this._chat.format(by)));
26867
+ }
26868
+ else
26869
+ info.push(this._translate.get('Substituting', this._chat.format(who), this._chat.format(substitute)));
26795
26870
  }
26796
- return forkJoin(observables).pipe(map(us => us.map(u => this._chat.format(u))), map(us => {
26797
- if (escalations.length)
26798
- return this._translate.get('EscalatedBy', us[0], this._translate.join(us.slice(1)));
26799
- else if (recipient.byId && recipient.substitutingId)
26800
- return this._translate.get('SubstitutingBy', us[0], us[2], us[1]);
26801
- else if (recipient.substitutingId)
26802
- return this._translate.get('Substituting', us[0], us[1]);
26803
- else if (recipient.byId)
26804
- return this._translate.get('By', us[0], us[1]);
26805
- return us[0];
26806
- }));
26871
+ else if (recipient.byId) {
26872
+ const by = await this._accounts.get(recipient.byId).toPromise();
26873
+ info.push(this._translate.get('By', this._chat.format(who), this._chat.format(by)));
26874
+ }
26875
+ else
26876
+ info.push(this._chat.format(who));
26877
+ return info.join(this._translate.comma);
26807
26878
  }
26808
26879
  logInfo(log) {
26809
26880
  const observables = [];
@@ -26818,8 +26889,8 @@ class TraceElementComponent {
26818
26889
  return observables.length ? forkJoin(observables).pipe(map(us => us.map(u => this._chat.format(u))), map(us => log.byId ? this._translate.get('By', us[0], us[1]) : us[0])) : of('');
26819
26890
  }
26820
26891
  compare(item) {
26821
- this._router.navigate(['mailbox/d', this.model.documentId.encodeId(), 'version', new Date(item.time).valueOf().encodeId()], {
26822
- policy: OpenPolicy.Tab | OpenPolicy.Toggle,
26892
+ this._router.toggle(['mailbox/d', this.model.documentId.encodeId(), 'version', new Date(item.time).valueOf().encodeId()], {
26893
+ policy: OpenPolicy.Tab,
26823
26894
  });
26824
26895
  }
26825
26896
  chat(e) {
@@ -26889,7 +26960,7 @@ class PositionsPopup {
26889
26960
  }
26890
26961
  }
26891
26962
  PositionsPopup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PositionsPopup, deps: [{ token: POPUP_DATA }, { token: i0.ChangeDetectorRef }, { token: AccountService }], target: i0.ɵɵFactoryTarget.Component });
26892
- PositionsPopup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PositionsPopup, selector: "ng-component", viewQueries: [{ propertyName: "nameInput", first: true, predicate: ["nameInput"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"data.title\">\r\n <mat-chip *ngFor=\"let u of data.positions\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n <bizdoc-identity-name [identity]=u></bizdoc-identity-name>\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"data.title\"\r\n [formControl]=control\r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3$3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3$3.MatChipRemove, selector: "[matChipRemove]" }, { 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]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i3$3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i10.AsyncPipe } });
26963
+ PositionsPopup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PositionsPopup, selector: "ng-component", viewQueries: [{ propertyName: "nameInput", first: true, predicate: ["nameInput"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"data.title\">\r\n <mat-chip *ngFor=\"let u of data.positions\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n <bizdoc-identity-name [identity]=u></bizdoc-identity-name>\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"data.title\"\r\n [formControl]=control\r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3$2.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3$2.MatChipRemove, selector: "[matChipRemove]" }, { 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]" }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i3$2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i10.AsyncPipe } });
26893
26964
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PositionsPopup, decorators: [{
26894
26965
  type: Component,
26895
26966
  args: [{ styles: [`:host {padding: 8px}`], template: "<mat-form-field>\r\n <mat-chip-list #chipList [attr.aria-label]=\"data.title\">\r\n <mat-chip *ngFor=\"let u of data.positions\"\r\n [selectable]=\"true\"\r\n [removable]=\"true\"\r\n (removed)=\"removed(u)\">\r\n <bizdoc-identity-name [identity]=u></bizdoc-identity-name>\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"data.title\"\r\n [formControl]=control\r\n #nameInput\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected(nameInput, $event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n" }]
@@ -26919,7 +26990,7 @@ class SearchInput {
26919
26990
  }
26920
26991
  SearchInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
26921
26992
  SearchInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SearchInput, selector: "bizdoc-search-input", outputs: { valueChange: "valueChange" }, host: { listeners: { "keydown.escape": "_leave()" } }, ngImport: i0, template: `<input matInput [formControl]=_search autocomplete="off" #searchInput />
26922
- <mat-icon class="mat-icon-rtl-mirror" (click)="searchInput.focus()">search</mat-icon>`, isInline: true, styles: ["input{width:0px;text-align:end;transition:all .2s ease-in-out}\n", "input:focus{width:200px}\n"], components: [{ type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
26993
+ <mat-icon class="mat-icon-rtl-mirror" (click)="searchInput.focus()">search</mat-icon>`, isInline: true, styles: ["input{width:0px;text-align:end;transition:all .2s ease-in-out}\n", "input:focus{width:200px}\n"], components: [{ type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
26923
26994
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SearchInput, decorators: [{
26924
26995
  type: Component,
26925
26996
  args: [{
@@ -27055,7 +27126,7 @@ let ManageCubeIndexUtility = class ManageCubeIndexUtility {
27055
27126
  }
27056
27127
  };
27057
27128
  ManageCubeIndexUtility.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ManageCubeIndexUtility, deps: [{ token: i7$2.Directionality }, { token: UtilityRef }, { token: SessionService }, { token: i0.ViewContainerRef }, { token: PromptService }, { token: i1$4.Overlay }], target: i0.ɵɵFactoryTarget.Component });
27058
- ManageCubeIndexUtility.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ManageCubeIndexUtility, selector: "ng-component", viewQueries: [{ propertyName: "editTmpl", first: true, predicate: ["editTmpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"add()\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table [dataSource]=\"dataSource\">\r\n <ng-container *ngFor=\"let a of axes; let i = index\" [matColumnDef]=\"a.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{a.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.axes[names.indexOf(a.name)]| typeValue: a.dataType | async}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef>{{'Value'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.value | currency : CURRENCY_CODE }} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button><mat-icon>more_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"remove(element, $event)\"><mat-icon>delete</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\" (click)=\"edit(element)\"></tr>\r\n</table>\r\n<ng-template #editTmpl>\r\n <form [formGroup]=\"form\">\r\n <mat-form-field *ngFor=\"let a of axes\">\r\n <bizdoc-select [placeholder]=\"a.title\" [type]=\"a.dataType\" [formControlName]=\"a.name\" required></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput type=\"number\" formControlName=\"value\" autocomplete=\"off\" required [placeholder]=\"'Value'|translate\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: ["form{padding:8px 4px 8px 8px;flex-flow:row wrap;box-sizing:border-box;display:flex}form>*{flex:1 1 auto;box-sizing:border-box;width:50%;padding:0 5px 0 0}table{width:100%}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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]" }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "typeValue": TypeValuePipe, "currency": i10.CurrencyPipe } });
27129
+ ManageCubeIndexUtility.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ManageCubeIndexUtility, selector: "ng-component", viewQueries: [{ propertyName: "editTmpl", first: true, predicate: ["editTmpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"add()\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table [dataSource]=\"dataSource\">\r\n <ng-container *ngFor=\"let a of axes; let i = index\" [matColumnDef]=\"a.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{a.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.axes[names.indexOf(a.name)]| typeValue: a.dataType | async}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef>{{'Value'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.value | currency : CURRENCY_CODE }} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button><mat-icon>more_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"remove(element, $event)\"><mat-icon>delete</mat-icon></button>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\" (click)=\"edit(element)\"></tr>\r\n</table>\r\n<ng-template #editTmpl>\r\n <form [formGroup]=\"form\">\r\n <mat-form-field *ngFor=\"let a of axes\">\r\n <bizdoc-select [placeholder]=\"a.title\" [type]=\"a.dataType\" [formControlName]=\"a.name\" required></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput type=\"number\" formControlName=\"value\" autocomplete=\"off\" required [placeholder]=\"'Value'|translate\" />\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n", styles: ["form{padding:8px 4px 8px 8px;flex-flow:row wrap;box-sizing:border-box;display:flex}form>*{flex:1 1 auto;box-sizing:border-box;width:50%;padding:0 5px 0 0}table{width:100%}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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]" }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "typeValue": TypeValuePipe, "currency": i10.CurrencyPipe } });
27059
27130
  ManageCubeIndexUtility = __decorate([
27060
27131
  BizDoc({ selector: 'manage-cube-index' })
27061
27132
  ], ManageCubeIndexUtility);
@@ -27225,7 +27296,10 @@ let SystemDiffComponent = class SystemDiffComponent {
27225
27296
  * @param index
27226
27297
  */
27227
27298
  compare(index) {
27228
- const { time: date1 } = this.versions[index], { time: date2 } = this.versions[index + 1];
27299
+ const { time: date1, file } = this.versions[index], version = this.versions.slice(index + 1).find(v => v.file === file);
27300
+ if (!version)
27301
+ return;
27302
+ const { time: date2 } = version;
27229
27303
  this._working.next(25);
27230
27304
  this._utilityRef.execute({ date1, date2 }).subscribe(r => {
27231
27305
  this.html = '';
@@ -28110,8 +28184,8 @@ let DocumentTraceComponent = class DocumentTraceComponent {
28110
28184
  this._destroy.complete();
28111
28185
  }
28112
28186
  };
28113
- DocumentTraceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DocumentTraceComponent, deps: [{ token: UtilityRef }, { token: FormService }, { token: SessionService }, { token: PaneRef }, { token: PanesRouter }, { token: PromptService }, { token: TranslateService }, { token: i3$2.MatDialog }, { token: GuideService }, { token: i0.ChangeDetectorRef }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
28114
- DocumentTraceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\r\n <div *ngSwitchCase=\"'diagram'\" class=\"column\" fxFlex>\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"mode = null\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon>refresh</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row\" fxFlex>\r\n <div class=\"timeline\" *ngIf=\"timeline?.items.length > 1\" data-help=\"timeline\">\r\n <div *ngFor=\"let date of timeline.items; let last = last\" class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n <ng-container *ngIf=\"!last || !timeline.estimate; else estimate\">\r\n <span class=\"who\" *ngIf=\"userId\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM D H:mm' }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex #diagram dir=\"ltr\">\r\n </div>\r\n <bizdoc-document-trace-element [timeline]=\"timeline\" [node]=\"node\" *ngIf=\"node\"\r\n [model]=model (assign)=\"assign($event)\"></bizdoc-document-trace-element>\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'search'\" fxFlex fxLayoutAlign=\"center\">\r\n <form>\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"40\" [placeholder]=\"'Number'|translate\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let d of documents$ | async\" [value]=\"d\">\r\n <span>{{d.number}} | {{d.subject}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n </form>\r\n </div>\r\n <mat-progress-bar mode=\"indeterminate\" *ngSwitchDefault></mat-progress-bar>\r\n</ng-container>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: TraceElementComponent, selector: "bizdoc-document-trace-element", inputs: ["model", "timeline", "node"], outputs: ["assign"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], directives: [{ type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i6$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "userName": UserNamePipe, "amDateFormat": DateFormatPipe }, animations: [trigger('element', EnterExitRight)] });
28187
+ DocumentTraceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DocumentTraceComponent, deps: [{ token: UtilityRef }, { token: FormService }, { token: SessionService }, { token: PaneRef }, { token: PanesRouter }, { token: PromptService }, { token: TranslateService }, { token: i3$1.MatDialog }, { token: GuideService }, { token: i0.ChangeDetectorRef }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
28188
+ DocumentTraceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\r\n <div *ngSwitchCase=\"'diagram'\" class=\"column\" fxFlex>\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"mode = null\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon>refresh</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row\" fxFlex>\r\n <div class=\"timeline\" *ngIf=\"timeline?.items.length > 1\" data-help=\"timeline\">\r\n <div *ngFor=\"let date of timeline.items; let last = last\" class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n <ng-container *ngIf=\"!last || !timeline.estimate; else estimate\">\r\n <span class=\"who\" *ngIf=\"userId\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM D H:mm' }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex #diagram dir=\"ltr\">\r\n </div>\r\n <bizdoc-document-trace-element [timeline]=\"timeline\" [node]=\"node\" *ngIf=\"node\"\r\n [model]=model (assign)=\"assign($event)\"></bizdoc-document-trace-element>\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'search'\" fxFlex fxLayoutAlign=\"center\">\r\n <form>\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"40\" [placeholder]=\"'Number'|translate\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let d of documents$ | async\" [value]=\"d\">\r\n <span>{{d.number}} | {{d.subject}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n </form>\r\n </div>\r\n <mat-progress-bar mode=\"indeterminate\" *ngSwitchDefault></mat-progress-bar>\r\n</ng-container>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: TraceElementComponent, selector: "bizdoc-document-trace-element", inputs: ["model", "timeline", "node"], outputs: ["assign"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], directives: [{ type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i6$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe, "userName": UserNamePipe, "amDateFormat": DateFormatPipe }, animations: [trigger('element', EnterExitRight)] });
28115
28189
  DocumentTraceComponent = __decorate([
28116
28190
  BizDoc({ selector: 'bizdoc-trace-utility' })
28117
28191
  /** workflow component*/
@@ -28124,7 +28198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
28124
28198
  }], ctorParameters: function () { return [{ type: UtilityRef, decorators: [{
28125
28199
  type: Inject,
28126
28200
  args: [UtilityRef]
28127
- }] }, { type: FormService }, { type: SessionService }, { type: PaneRef }, { type: PanesRouter }, { type: PromptService }, { type: TranslateService }, { type: i3$2.MatDialog }, { type: GuideService }, { type: i0.ChangeDetectorRef }, { type: i1$2.FormBuilder }]; }, propDecorators: { diagramElement: [{
28201
+ }] }, { type: FormService }, { type: SessionService }, { type: PaneRef }, { type: PanesRouter }, { type: PromptService }, { type: TranslateService }, { type: i3$1.MatDialog }, { type: GuideService }, { type: i0.ChangeDetectorRef }, { type: i1$2.FormBuilder }]; }, propDecorators: { diagramElement: [{
28128
28202
  type: ViewChild,
28129
28203
  args: ['diagram']
28130
28204
  }], guide: [{
@@ -28181,7 +28255,7 @@ let RoleNodeComponent = class RoleNodeComponent {
28181
28255
  }
28182
28256
  };
28183
28257
  RoleNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: RoleNodeComponent, deps: [{ token: NodeRef }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
28184
- RoleNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: RoleNodeComponent, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: TypeSelect, descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <bizdoc-select formControlName=\"roleName\" cdkFocusInitial [placeholder]=\"'Role'|translate\" required [type]=\"roles\"></bizdoc-select>\r\n <mat-error *ngIf=\"form.controls.roleName.hasError('required')\">{{'Required'|translate:('Roles'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select formControlName=\"condition\" [placeholder]=\"'Requirments'|translate\">\r\n <mat-option value=\"Anyone\">{{'Anyone'|translate}}</mat-option>\r\n <mat-option value=\"Everyone\">{{'Everyone'|translate}}</mat-option>\r\n <mat-option value=\"Count\">{{'Minimum'|translate}}</mat-option>\r\n <mat-option value=\"Percent\">{{'Percent'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field [style.display]=\"form.value.condition === 'Count' || form.value.condition === 'Percent' ? '' : 'none'\">\r\n <input matInput formControlName=\"minimum\" [placeholder]=\"'RequirmentsValue'|translate\" type=\"number\" required />\r\n <span matSuffix *ngIf=\"form.value.condition === 'Percent'\">%</span>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"optional\" required>{{'OptionalRole'|translate}}</mat-checkbox>\r\n <mat-form-field>\r\n <bizdoc-ace-input formControlName=\"message\" [placeholder]=\"'Message'|translate\"></bizdoc-ace-input>\r\n <mat-hint>{{'ProgrammableExpression'|translate}}</mat-hint>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"fyi\" required>{{'FYI'|translate}}</mat-checkbox><mat-form-field>\r\n <bizdoc-timespan-input formControlName=\"standardTime\" [placeholder]=\"'StandardTime'|translate\"></bizdoc-timespan-input>\r\n <mat-icon matSuffix>timer</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-select formControlName=\"escalateRole\" [placeholder]=\"'EscalateRole'|translate\" [type]=\"roles\"></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"form.controls.escalateRole.value\">\r\n <bizdoc-timespan-input formControlName=\"escalateTime\" [placeholder]=\"'EscalateIn'|translate\"\r\n required></bizdoc-timespan-input>\r\n <mat-icon matSuffix>timer</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-ace-input [placeholder]=\"'Condition'|translate\" formControlName=\"if\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'ProgrammableExpression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"skipInRoute\" required>{{'SkipInRoute'|translate}}</mat-checkbox>\r\n</form>\r\n", styles: [""], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: AceInput, selector: "bizdoc-ace-input", inputs: ["params", "placeholder", "required", "disabled", "value"] }, { type: TimespanInput, selector: "bizdoc-timespan-input", inputs: ["placeholder", "required", "disabled", "value"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i7.MatCheckboxRequiredValidator, selector: "mat-checkbox[required][formControlName], mat-checkbox[required][formControl], mat-checkbox[required][ngModel]" }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": TranslatePipe } });
28258
+ RoleNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: RoleNodeComponent, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: TypeSelect, descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <bizdoc-select formControlName=\"roleName\" cdkFocusInitial [placeholder]=\"'Role'|translate\" required [type]=\"roles\"></bizdoc-select>\r\n <mat-error *ngIf=\"form.controls.roleName.hasError('required')\">{{'Required'|translate:('Roles'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select formControlName=\"condition\" [placeholder]=\"'Requirments'|translate\">\r\n <mat-option value=\"Anyone\">{{'Anyone'|translate}}</mat-option>\r\n <mat-option value=\"Everyone\">{{'Everyone'|translate}}</mat-option>\r\n <mat-option value=\"Count\">{{'Minimum'|translate}}</mat-option>\r\n <mat-option value=\"Percent\">{{'Percent'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field [style.display]=\"form.value.condition === 'Count' || form.value.condition === 'Percent' ? '' : 'none'\">\r\n <input matInput formControlName=\"minimum\" [placeholder]=\"'RequirmentsValue'|translate\" type=\"number\" required />\r\n <span matSuffix *ngIf=\"form.value.condition === 'Percent'\">%</span>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"optional\" required>{{'OptionalRole'|translate}}</mat-checkbox>\r\n <mat-form-field>\r\n <bizdoc-ace-input formControlName=\"message\" [placeholder]=\"'Message'|translate\"></bizdoc-ace-input>\r\n <mat-hint>{{'ProgrammableExpression'|translate}}</mat-hint>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"fyi\" required>{{'FYI'|translate}}</mat-checkbox><mat-form-field>\r\n <bizdoc-timespan-input formControlName=\"standardTime\" [placeholder]=\"'StandardTime'|translate\"></bizdoc-timespan-input>\r\n <mat-icon matSuffix>timer</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-select formControlName=\"escalateRole\" [placeholder]=\"'EscalateRole'|translate\" [type]=\"roles\"></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"form.controls.escalateRole.value\">\r\n <bizdoc-timespan-input formControlName=\"escalateTime\" [placeholder]=\"'EscalateIn'|translate\"\r\n required></bizdoc-timespan-input>\r\n <mat-icon matSuffix>timer</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-ace-input [placeholder]=\"'Condition'|translate\" formControlName=\"if\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'ProgrammableExpression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"skipInRoute\" required>{{'SkipInRoute'|translate}}</mat-checkbox>\r\n</form>\r\n", styles: [""], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: AceInput, selector: "bizdoc-ace-input", inputs: ["params", "placeholder", "required", "disabled", "value"] }, { type: TimespanInput, selector: "bizdoc-timespan-input", inputs: ["placeholder", "required", "disabled", "value"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i7.MatCheckboxRequiredValidator, selector: "mat-checkbox[required][formControlName], mat-checkbox[required][formControl], mat-checkbox[required][ngModel]" }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": TranslatePipe } });
28185
28259
  RoleNodeComponent = __decorate([
28186
28260
  BizDoc({
28187
28261
  selector: 'bizdoc-role-node'
@@ -28314,8 +28388,8 @@ let PatternsComponent = class PatternsComponent {
28314
28388
  this._destroy.complete();
28315
28389
  }
28316
28390
  };
28317
- PatternsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PatternsComponent, deps: [{ token: SessionService }, { token: i7$2.Directionality }, { token: i1$2.FormBuilder }, { token: UtilityRef }, { token: DatasourceService }, { token: i1.HttpClient }, { token: PromptService }, { token: i3$2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
28318
- PatternsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PatternsComponent, selector: "ng-component", viewQueries: [{ propertyName: "properties", first: true, predicate: ["properties"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"create()\" [bizdocTooltip]=\"'Add'|translate\" data-guide=\"create\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<table mat-table [dataSource]=\"dataSource\" matSort>\r\n <ng-container matColumnDef=\"title\" sticky>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Title'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.title}} </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let r of roles\" [matColumnDef]=\"r.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{r.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <mat-checkbox [checked]=\"element.roles && element.roles.indexOf(r.name) > -1\" (change)=\"toggle(element, r.name, $event)\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <button mat-menu-item (click)=\"edit(element)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(element)\">{{'Discard'|translate}}</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\"></tr>\r\n</table>\r\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons *ngIf=\"paging\"></mat-paginator>\r\n<!-- dialog -->\r\n<ng-template #properties>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'|translate\" required />\r\n </mat-form-field>\r\n <div formGroupName=\"axes\" *ngIf=\"cube\" fxLayout.gt-sm=\"row wrap\" fxLayout=\"column wrap\"\r\n fxLayoutGap=\"5px grid\">\r\n <ng-container *ngFor=\"let a of cube.axes\">\r\n <mat-form-field *ngIf=\"include.indexOf(a.name)>-1\" fxFlex=\"50\">\r\n <input matInput\r\n [matAutocomplete]=\"segment\" [pattern]=\"pattern\"\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment>\r\n <mat-option *ngFor=\"let o of segments[a.name] | async\" [value]=\"o.key\">{{o.value}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"axes.controls[a.name].invalid\">{{'PatternErr' |translate}}</mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <mat-form-field>\r\n <mat-select formControlName=\"roles\" [placeholder]=\"'Roles'|translate\" multiple required>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.roles.hasError('required')\">{{'Required'|translate:('Roles'|translate)}}</mat-error>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" [disabled]=\"!form.valid\">{{'OK'| translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel'| translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<style scoped>\r\n table {\r\n width: 100%\r\n }\r\n</style>\r\n", styles: ["\n table {\n width: 100%\n }\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i6$1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
28391
+ PatternsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PatternsComponent, deps: [{ token: SessionService }, { token: i7$2.Directionality }, { token: i1$2.FormBuilder }, { token: UtilityRef }, { token: DatasourceService }, { token: i1.HttpClient }, { token: PromptService }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
28392
+ PatternsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PatternsComponent, selector: "ng-component", viewQueries: [{ propertyName: "properties", first: true, predicate: ["properties"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"create()\" [bizdocTooltip]=\"'Add'|translate\" data-guide=\"create\"><mat-icon>add</mat-icon></button>\r\n</mat-toolbar>\r\n<table mat-table [dataSource]=\"dataSource\" matSort>\r\n <ng-container matColumnDef=\"title\" sticky>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Title'|translate}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.title}} </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let r of roles\" [matColumnDef]=\"r.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{r.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <mat-checkbox [checked]=\"element.roles && element.roles.indexOf(r.name) > -1\" (change)=\"toggle(element, r.name, $event)\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <button mat-menu-item (click)=\"edit(element)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"delete(element)\">{{'Discard'|translate}}</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns;\"></tr>\r\n</table>\r\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons *ngIf=\"paging\"></mat-paginator>\r\n<!-- dialog -->\r\n<ng-template #properties>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'|translate\" required />\r\n </mat-form-field>\r\n <div formGroupName=\"axes\" *ngIf=\"cube\" fxLayout.gt-sm=\"row wrap\" fxLayout=\"column wrap\"\r\n fxLayoutGap=\"5px grid\">\r\n <ng-container *ngFor=\"let a of cube.axes\">\r\n <mat-form-field *ngIf=\"include.indexOf(a.name)>-1\" fxFlex=\"50\">\r\n <input matInput\r\n [matAutocomplete]=\"segment\" [pattern]=\"pattern\"\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment>\r\n <mat-option *ngFor=\"let o of segments[a.name] | async\" [value]=\"o.key\">{{o.value}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"axes.controls[a.name].invalid\">{{'PatternErr' |translate}}</mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <mat-form-field>\r\n <mat-select formControlName=\"roles\" [placeholder]=\"'Roles'|translate\" multiple required>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.roles.hasError('required')\">{{'Required'|translate:('Roles'|translate)}}</mat-error>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" [disabled]=\"!form.valid\">{{'OK'| translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel'| translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<style scoped>\r\n table {\r\n width: 100%\r\n }\r\n</style>\r\n", styles: ["\n table {\n width: 100%\n }\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i6$1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i6$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": TranslatePipe, "async": i10.AsyncPipe } });
28319
28393
  PatternsComponent = __decorate([
28320
28394
  BizDoc({
28321
28395
  selector: 'bizdoc-patterns'
@@ -28327,7 +28401,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
28327
28401
  }], ctorParameters: function () { return [{ type: SessionService }, { type: i7$2.Directionality }, { type: i1$2.FormBuilder }, { type: UtilityRef, decorators: [{
28328
28402
  type: Inject,
28329
28403
  args: [UtilityRef]
28330
- }] }, { type: DatasourceService }, { type: i1.HttpClient }, { type: PromptService }, { type: i3$2.MatDialog }]; }, propDecorators: { properties: [{
28404
+ }] }, { type: DatasourceService }, { type: i1.HttpClient }, { type: PromptService }, { type: i3$1.MatDialog }]; }, propDecorators: { properties: [{
28331
28405
  type: ViewChild,
28332
28406
  args: ['properties', { static: true }]
28333
28407
  }], sort: [{
@@ -28719,8 +28793,8 @@ let PositionsComponent = class PositionsComponent {
28719
28793
  this._destroy.complete();
28720
28794
  }
28721
28795
  };
28722
- PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PositionsComponent, deps: [{ token: SessionService }, { token: UtilityRef }, { token: DatasourceService }, { token: PromptService }, { token: AccountService }, { token: WindowTitleService }, { token: TranslateService }, { token: Popup }, { token: i3$2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
28723
- PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PositionsComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
28796
+ PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PositionsComponent, deps: [{ token: SessionService }, { token: UtilityRef }, { token: DatasourceService }, { token: PromptService }, { token: AccountService }, { token: WindowTitleService }, { token: TranslateService }, { token: Popup }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
28797
+ PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PositionsComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-button [matMenuTriggerFor]=\"typeMenu\">{{type?.title}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #typeMenu>\r\n <button mat-menu-item *ngFor=\"let t of types\" (click)=\"change(t.name)\">{{t.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\">\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n</table>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: ["table{width:100%}.form{padding:8px}table :ng-deep .mat-cell{cursor:pointer;border-left-width:1px;border-left-style:outset;padding:0 4px!important}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8$2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i10$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i6$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i5$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i5$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i6$2.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i5$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i5$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i5$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i5$1.MatCellDef, selector: "[matCellDef]" }, { type: i5$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i5$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": TranslatePipe, "sanitizeHtml": SanitizeHtmlPipe } });
28724
28798
  PositionsComponent = __decorate([
28725
28799
  BizDoc({ selector: 'bizdoc-positions' })
28726
28800
  /** positions component*/
@@ -28731,7 +28805,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
28731
28805
  }], ctorParameters: function () { return [{ type: SessionService }, { type: UtilityRef, decorators: [{
28732
28806
  type: Inject,
28733
28807
  args: [UtilityRef]
28734
- }] }, { type: DatasourceService }, { type: PromptService }, { type: AccountService }, { type: WindowTitleService }, { type: TranslateService }, { type: Popup }, { type: i3$2.MatDialog }]; }, propDecorators: { _fileElement: [{
28808
+ }] }, { type: DatasourceService }, { type: PromptService }, { type: AccountService }, { type: WindowTitleService }, { type: TranslateService }, { type: Popup }, { type: i3$1.MatDialog }]; }, propDecorators: { _fileElement: [{
28735
28809
  type: ViewChild,
28736
28810
  args: ['file', { static: true }]
28737
28811
  }], sort: [{
@@ -28943,8 +29017,8 @@ let ProfilerComponent = class ProfilerComponent {
28943
29017
  this._destroy.complete();
28944
29018
  }
28945
29019
  };
28946
- ProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ProfilerComponent, deps: [{ token: PromptService }, { token: UtilityRef }, { token: SessionService }, { token: i3$2.MatDialog }, { token: DocumentInfo }, { token: i2$4.MediaObserver }, { token: ChatInfo }, { token: GuideService }, { token: PanesRouter }, { token: PaneRef }, { token: TranslateService }, { token: AccountService }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
28947
- ProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)", "window:resize": "resize()" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assign", first: true, predicate: ["assign"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <div>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-grid-list [cols]=\"cols\" [style.display]=\"data ? '': 'none'\">\r\n <mat-grid-tile>\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data?.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <button mat-icon-button (click)=\"chat(data.info.id)\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data?.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.positions.length; else none\">\r\n <tr *ngFor=\"let p of data?.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n</mat-grid-list>\r\n<!-- dialog -->\r\n<ng-template #assign>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-card{width:calc(100% - 50px);height:calc(100% - 50px);overflow:hidden}.mat-card .mat-card-content{height:inherit}.mat-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-table{width:100%}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6$3.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { type: i6$3.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { type: i7$4.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i7$4.MatCardHeader, selector: "mat-card-header" }, { type: i8$4.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i7$4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i7$4.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i8$4.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "async": i10.AsyncPipe, "translate": TranslatePipe, "amDuration": DurationPipe, "amDifference": DifferencePipe, "role": RolePipe } });
29020
+ ProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ProfilerComponent, deps: [{ token: PromptService }, { token: UtilityRef }, { token: SessionService }, { token: i3$1.MatDialog }, { token: DocumentInfo }, { token: i2$4.MediaObserver }, { token: ChatInfo }, { token: GuideService }, { token: PanesRouter }, { token: PaneRef }, { token: TranslateService }, { token: AccountService }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
29021
+ ProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)", "window:resize": "resize()" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assign", first: true, predicate: ["assign"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <div>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-grid-list [cols]=\"cols\" [style.display]=\"data ? '': 'none'\">\r\n <mat-grid-tile>\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data?.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <button mat-icon-button (click)=\"chat(data.info.id)\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data?.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.positions.length; else none\">\r\n <tr *ngFor=\"let p of data?.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n</mat-grid-list>\r\n<!-- dialog -->\r\n<ng-template #assign>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-card{width:calc(100% - 50px);height:calc(100% - 50px);overflow:hidden}.mat-card .mat-card-content{height:inherit}.mat-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-table{width:100%}\n"], components: [{ type: i7$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6$3.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { type: i6$3.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { type: i7$4.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i7$4.MatCardHeader, selector: "mat-card-header" }, { type: i8$4.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i7$4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i7$4.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i8$4.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "async": i10.AsyncPipe, "translate": TranslatePipe, "amDuration": DurationPipe, "amDifference": DifferencePipe, "role": RolePipe } });
28948
29022
  ProfilerComponent = __decorate([
28949
29023
  BizDoc({ selector: 'bizdoc-user-profiler' })
28950
29024
  /** component*/
@@ -28954,7 +29028,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
28954
29028
  args: [{ host: {
28955
29029
  class: 'pane'
28956
29030
  }, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <div>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-grid-list [cols]=\"cols\" [style.display]=\"data ? '': 'none'\">\r\n <mat-grid-tile>\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data?.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <button mat-icon-button (click)=\"chat(data.info.id)\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data?.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n <mat-grid-tile>\r\n <mat-card data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data?.positions.length; else none\">\r\n <tr *ngFor=\"let p of data?.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n </mat-grid-tile>\r\n</mat-grid-list>\r\n<!-- dialog -->\r\n<ng-template #assign>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-card{width:calc(100% - 50px);height:calc(100% - 50px);overflow:hidden}.mat-card .mat-card-content{height:inherit}.mat-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-table{width:100%}\n"] }]
28957
- }], ctorParameters: function () { return [{ type: PromptService }, { type: UtilityRef }, { type: SessionService }, { type: i3$2.MatDialog }, { type: DocumentInfo }, { type: i2$4.MediaObserver }, { type: ChatInfo }, { type: GuideService }, { type: PanesRouter }, { type: PaneRef }, { type: TranslateService }, { type: AccountService }, { type: i1$2.FormBuilder }]; }, propDecorators: { chart: [{
29031
+ }], ctorParameters: function () { return [{ type: PromptService }, { type: UtilityRef }, { type: SessionService }, { type: i3$1.MatDialog }, { type: DocumentInfo }, { type: i2$4.MediaObserver }, { type: ChatInfo }, { type: GuideService }, { type: PanesRouter }, { type: PaneRef }, { type: TranslateService }, { type: AccountService }, { type: i1$2.FormBuilder }]; }, propDecorators: { chart: [{
28958
29032
  type: ViewChild,
28959
29033
  args: ['activity']
28960
29034
  }], chartElement: [{