@bizdoc/core 3.3.2 → 3.3.4

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.
@@ -138,7 +138,7 @@ import { LinearGaugeModule, AnnotationsService, GaugeTooltipService } from '@syn
138
138
  import * as i6$6 from '@syncfusion/ej2-angular-charts';
139
139
  import { RangeNavigator, AreaSeries, LineSeries, DateTime, RangeTooltip, Sparkline, SparklineTooltip, AccumulationChart as AccumulationChart$1, PieSeries, PyramidSeries, FunnelSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationAnnotation, AccumulationLegend, AccumulationSelection, Chart as Chart$1, Highlight, StripLine, BoxAndWhiskerSeries, Category, Tooltip as Tooltip$1, Legend, Selection, Zoom, Crosshair, DataLabel, BarSeries, BubbleSeries, ColumnSeries, PolarSeries, RadarSeries, SplineSeries, ScrollBar, SplineAreaSeries, ScatterSeries, StackingStepAreaSeries, StackingLineSeries, StackingAreaSeries, StackingColumnSeries, StackingBarSeries, StepAreaSeries, StepLineSeries, ChartAnnotation, ChartModule, AccumulationChartModule, SparklineModule, RangeNavigatorModule, BulletChartModule, RangeTooltipService, AccumulationDistributionIndicatorService, FunnelSeriesService, StackingStepAreaSeriesService, PieSeriesService, PyramidSeriesService, LineSeriesService, ScatterSeriesService, ColumnSeriesService, SplineSeriesService, SplineAreaSeriesService, StripLineService, AreaSeriesService, ScrollBarService, StepLineSeriesService, StepAreaSeriesService, StackingColumnSeriesService, StackingLineSeriesService, StackingAreaSeriesService, BarSeriesService, StackingBarSeriesService, RangeColumnSeriesService, BubbleSeriesService, TooltipService, CrosshairService, CategoryService, DateTimeService, LogarithmicService, LegendService, ZoomService, DataLabelService, SelectionService, ChartAnnotationService, WaterfallSeriesService, RangeAreaSeriesService, PolarSeriesService, RadarSeriesService, DateTimeCategoryService, MultiLevelLabelService, ParetoSeriesService, TooltipRenderService, SparklineTooltipService, SplineRangeAreaSeriesService, AccumulationAnnotationService, AccumulationDataLabelService, AccumulationLegendService, AccumulationSelectionService, AccumulationTooltipService, BulletTooltipService, ChartComponent } from '@syncfusion/ej2-angular-charts';
140
140
  import * as i8$3 from '@syncfusion/ej2-angular-grids';
141
- import { Grid as Grid$1, ExcelExport, Sort, Group, Page, Freeze, Selection as Selection$1, Aggregate, GridModule, PagerModule, ExcelExportService, AggregateService, FreezeService, GroupService, PageService, ResizeService, SortService, SelectionService as SelectionService$1, GridComponent } from '@syncfusion/ej2-angular-grids';
141
+ import { Grid as Grid$1, ExcelExport, Sort, Group, Page, Freeze, Selection as Selection$1, Aggregate, ExcelFilter, Filter, ColumnMenu, ForeignKey, Resize, Reorder, Search, Scroll, ColumnChooser, GridModule, PagerModule, ExcelExportService, AggregateService, FreezeService, ColumnChooserService, ColumnMenuService, FilterService, ForeignKeyService, InfiniteScrollService, ReorderService, VirtualScrollService, SearchService as SearchService$1, ToolbarService as ToolbarService$1, GroupService, PageService, ResizeService, SortService, SelectionService as SelectionService$1, GridComponent } from '@syncfusion/ej2-angular-grids';
142
142
  import { CircularGauge, Annotations, GaugeTooltip, Legend as Legend$1, CircularGaugeModule, AnnotationsService as AnnotationsService$1, GaugeTooltipService as GaugeTooltipService$1, LegendService as LegendService$1 } from '@syncfusion/ej2-angular-circulargauge';
143
143
  import { PivotView as PivotView$1, GroupingBar, ExcelExport as ExcelExport$1, PivotChart, CalculatedField, PivotViewModule, ExcelExportService as ExcelExportService$1, GroupingBarService, NumberFormattingService, GroupingService, PivotChartService, ConditionalFormattingService, CalculatedFieldService, PivotViewComponent } from '@syncfusion/ej2-angular-pivotview';
144
144
  import * as i9 from '@syncfusion/ej2-angular-spreadsheet';
@@ -1510,14 +1510,63 @@ const L18N_STRINGS = {
1510
1510
  },
1511
1511
  grid: {
1512
1512
  EmptyRecord: 'אין רשומות',
1513
- GroupDropArea: '',
1513
+ GroupDropArea: 'גרור/י עמודה לכאן',
1514
+ UnGroup: '',
1515
+ Item: '',
1516
+ UnGroupButton: '',
1514
1517
  Items: 'רשומות',
1518
+ Expanded: '',
1519
+ Collapsed: '',
1520
+ Matchs: 'לא נמצאו רשומות',
1521
+ NoResult: 'לא נמצאו רשומות',
1522
+ FilterButton: 'סינון',
1523
+ ClearButton: 'נקה',
1524
+ Clear: 'נקה',
1525
+ ClearFilter: 'נקה סינון',
1526
+ StartsWith: 'מתחיל ב-',
1527
+ EndsWith: 'מסתיים ב-',
1528
+ Contains: 'מכיל',
1529
+ Equal: 'שווה',
1530
+ NotEqual: 'שונה',
1531
+ LessThan: 'פחות מ-',
1532
+ LessThanOrEqual: 'פחות מ- או שווה',
1533
+ GreaterThan: 'גדול מ-',
1534
+ GreaterThanOrEqual: 'גדול מ- או שווה',
1535
+ ChooseDate: 'בחר/י תאריך',
1536
+ EnterValue: 'הקלד/י ערך',
1537
+ SelectAll: 'בחר הכל',
1538
+ Blanks: 'רווחים',
1539
+ AND: 'וגם',
1540
+ OR: 'או',
1541
+ IsNotEmpty: 'לא ריק',
1542
+ IsEmpty: 'ריק',
1543
+ Between: 'בין',
1544
+ MatchCase: 'אותיות גדולות/קטנות',
1545
+ ShowRowsWhere: 'הצג רשומות בהן',
1546
+ DateTimeFilter: 'סינון תאריך ושעה',
1547
+ DateFilter: 'סינון תאריך',
1548
+ TextFilter: 'סינון טקסטואלי',
1549
+ NumberFilter: 'סינון מספרי',
1550
+ CustomFilterDatePlaceHolder: '',
1551
+ CustomFilterPlaceHolder: '',
1552
+ CustomFilter: 'סנן מותאם',
1553
+ SortLargestToSmallest: 'מיון מערך גבוה לנמוך',
1554
+ SortSmallestToLargest: 'מיון מערך נמוך לגבוה',
1555
+ SortByNewest: 'מיון לפי חדש',
1556
+ SortByOldest: 'מיון לפי ישן',
1557
+ SortZtoA: 'מיון בסדר יורד',
1558
+ SortAtoZ: 'מיון בסדר עולה',
1559
+ AddCurrentSelection: '',
1515
1560
  currentPageInfo: '{0} מתוך {1} עמודים',
1516
1561
  totalItemsInfo: '({0} רשומות)',
1517
1562
  firstPageTooltip: '',
1518
1563
  lastPageTooltip: '',
1519
1564
  nextPageTooltip: '',
1520
- previousPageTooltip: ''
1565
+ previousPageTooltip: '',
1566
+ True: 'כן',
1567
+ False: 'לא',
1568
+ FilterTrue: 'כן',
1569
+ FilterFalse: 'לא',
1521
1570
  },
1522
1571
  kanban: {
1523
1572
  'items': 'מסמכים',
@@ -1934,7 +1983,7 @@ const STRINGS = {
1934
1983
  ShowAs: 'Show as: {0}',
1935
1984
  Unauthorized: 'Unauthorized access',
1936
1985
  NotAcceptable: 'Unauthorized access',
1937
- LicenseErr: 'License',
1986
+ LicenseErr: 'Limited license, contact support',
1938
1987
  RemoveAsk: 'Are you sure?',
1939
1988
  Comments: 'Comments',
1940
1989
  Remove: 'Remove',
@@ -8741,7 +8790,7 @@ class StatePipe {
8741
8790
  return state[args[0]] || state.title;
8742
8791
  return state.title;
8743
8792
  }
8744
- return `_${value}`;
8793
+ return value;
8745
8794
  }
8746
8795
  constructor(session) {
8747
8796
  this._map = new Map();
@@ -9508,6 +9557,7 @@ class FormRef {
9508
9557
  this._router = _router;
9509
9558
  this._configuration = _configuration;
9510
9559
  this._stateChange$ = new Subject();
9560
+ this._destroy$ = new Subject();
9511
9561
  this._create$ = new Subject();
9512
9562
  this._help = _configuration.guide;
9513
9563
  }
@@ -9541,6 +9591,7 @@ class FormRef {
9541
9591
  }
9542
9592
  /** release events */
9543
9593
  _destroy() {
9594
+ this._destroy$.next();
9544
9595
  this._stateChange$.complete();
9545
9596
  }
9546
9597
  }
@@ -15934,6 +15985,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
15934
15985
  }]
15935
15986
  }], ctorParameters: () => [] });
15936
15987
 
15988
+ class RolePipe {
15989
+ transform(value, ...args) {
15990
+ const role = this.map.get(value);
15991
+ if (role) {
15992
+ if (args.length)
15993
+ return role[args[0]] || role.title;
15994
+ return role.title;
15995
+ }
15996
+ return value;
15997
+ }
15998
+ constructor(session) {
15999
+ this.map = new Map();
16000
+ session.profile.roles.forEach(a => this.map.set(a.name, a));
16001
+ }
16002
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, deps: [{ token: SessionService }], target: i0.ɵɵFactoryTarget.Pipe }); }
16003
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, isStandalone: false, name: "role" }); }
16004
+ }
16005
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, decorators: [{
16006
+ type: Pipe,
16007
+ args: [{
16008
+ standalone: false,
16009
+ name: 'role'
16010
+ }]
16011
+ }], ctorParameters: () => [{ type: SessionService }] });
16012
+
15937
16013
  /** component showing trace table */
15938
16014
  class TraceViewComponent extends TraceBase {
15939
16015
  constructor(session, _translate, _accounts, _chat, hub) {
@@ -15998,17 +16074,19 @@ class TraceViewComponent extends TraceBase {
15998
16074
  }
15999
16075
  const trace = [];
16000
16076
  for (let l of log) {
16001
- let action;
16077
+ let action, fileName;
16002
16078
  switch (l.type) {
16003
16079
  case 'ActionTaken':
16004
16080
  {
16005
16081
  action = this._session.profile.actions.find(a => a.name === l.action);
16006
- if (action.loggable === false)
16082
+ if (!action || action.loggable === false)
16007
16083
  continue;
16008
16084
  break;
16009
16085
  }
16010
16086
  case 'CheckIn':
16011
16087
  case 'CheckOut':
16088
+ let attachment = attachments.find(f => f.id === l.fileId);
16089
+ fileName = attachment.fileName;
16012
16090
  break;
16013
16091
  case 'ModelChange':
16014
16092
  break;
@@ -16024,17 +16102,12 @@ class TraceViewComponent extends TraceBase {
16024
16102
  time: l.time,
16025
16103
  type: l.type,
16026
16104
  duration: l.duration,
16105
+ fileName,
16106
+ role: l.role,
16027
16107
  note: l.note,
16028
16108
  state: l.state
16029
16109
  };
16030
16110
  trace.push(step);
16031
- switch (l.type) {
16032
- case 'CheckIn':
16033
- case 'CheckOut':
16034
- let attachment = attachments.find(f => f.id === l.fileId);
16035
- step.fileName = attachment.fileName;
16036
- break;
16037
- }
16038
16111
  if (l.recipientId) {
16039
16112
  let recipient = recipients.find(r => r.id === l.recipientId);
16040
16113
  if (recipient.role)
@@ -16133,14 +16206,21 @@ class TraceViewComponent extends TraceBase {
16133
16206
  if (by.role)
16134
16207
  step.role = by.role;
16135
16208
  }
16209
+ if (action)
16210
+ step.action = await actionBy(action, who.gender);
16136
16211
  }
16137
- else if (l.userId === this._session.userId)
16212
+ else if (l.userId === this._session.userId) {
16138
16213
  step.name = this._translate.get('You');
16214
+ if (action)
16215
+ step.action = await actionBy(action, this._session.gender);
16216
+ }
16139
16217
  else {
16140
16218
  let who = await profileOf(l.userId);
16141
16219
  step.name = nameOf(who);
16142
16220
  if (who.role)
16143
16221
  step.role = who.role;
16222
+ if (action)
16223
+ step.action = await actionBy(action, who.gender);
16144
16224
  }
16145
16225
  }
16146
16226
  for (let recipient of recipients) {
@@ -16223,7 +16303,9 @@ class TraceViewComponent extends TraceBase {
16223
16303
  _filter() {
16224
16304
  switch (this._showMode) {
16225
16305
  case 'active':
16226
- this.data = this.model.issued ? this._data.filter(l => l.time >= this.model.issued) : this._data.slice();
16306
+ this.data = this.model.issued ?
16307
+ this._data.filter(l => l.time >= this.model.issued) :
16308
+ this._data.slice();
16227
16309
  break;
16228
16310
  case 'route':
16229
16311
  this.data = this._data.filter(l => l.type === 'ActionTaken' || l.type === 'Estimate' || l.type === 'Pending');
@@ -16254,11 +16336,11 @@ class TraceViewComponent extends TraceBase {
16254
16336
  this.versionSelected.emit(log.time);
16255
16337
  }
16256
16338
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: TraceViewComponent, deps: [{ token: SessionService }, { token: TranslateService }, { token: AccountService }, { token: ChatInfo }, { token: HubService }], target: i0.ɵɵFactoryTarget.Component }); }
16257
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: TraceViewComponent, isStandalone: false, selector: "bizdoc-trace", inputs: { model: "model", version: "version" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: 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-mdc-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n @for(l of data; track l){\r\n <tr class=\"mat-mdc-row\" @item>\r\n <td class=\"mat-mdc-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n @if(l.role) {<span>{{'JoinComma'|translate}}{{l.role}}</span>}\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @switch (l.type) {\r\n @case('ActionTaken') {\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n }\r\n @case('Submit') {\r\n <span>{{'Issued' | translate}}</span>\r\n }\r\n @case('Pending') {\r\n <span>{{'IsPending' | translate}}</span>\r\n }\r\n @case('CheckOut') {\r\n <span>{{'CheckedIn' | translate : l.fileName}}</span>\r\n }\r\n @case('CheckIn') {\r\n <span>{{'CheckedOut' | translate : l.fileName}}</span>\r\n }\r\n @case('Estimate') {\r\n <span>{{'Estimate' | translate}}</span>\r\n }\r\n @case('ModelChange') {\r\n <span>{{'Changed' | translate}}</span>\r\n }\r\n }\r\n @if(l.fyi) {\r\n <span>&nbsp;{{'FYI'|translate}}</span>\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if(l.estimate) {\r\n @if(l.durationMax && l.durationMax === l.durationMin)\r\n {<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n }\r\n @if(l.durationMax && l.durationMax !== l.durationMin){<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>}\r\n }\r\n @else {\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n @if(l.duration) {<span [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>}\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if (l.note) {<span>{{l.note}}</span> }\r\n @if (l.type==='ModelChange') {<button mat-icon-button (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"], dependencies: [{ kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: DurationPipe, name: "amDuration" }, { kind: "pipe", type: DurationFormatPipe, name: "amDurationFormat" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }], animations: [listAnimation, itemAnimation] }); }
16339
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: TraceViewComponent, isStandalone: false, selector: "bizdoc-trace", inputs: { model: "model", version: "version" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: 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-mdc-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n @for(l of data; track l){\r\n <tr class=\"mat-mdc-row\" @item>\r\n <td class=\"mat-mdc-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n @if(l.role) {<span>{{'JoinComma'|translate}}{{l.role | role}}</span>}\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @switch (l.type) {\r\n @case('ActionTaken') {\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n }\r\n @case('Submit') {\r\n <span>{{'Issued' | translate}}</span>\r\n }\r\n @case('Pending') {\r\n <span>{{'IsPending' | translate}}</span>\r\n }\r\n @case('CheckOut') {\r\n <span>{{'CheckedIn' | translate : l.fileName}}</span>\r\n }\r\n @case('CheckIn') {\r\n <span>{{'CheckedOut' | translate : l.fileName}}</span>\r\n }\r\n @case('Estimate') {\r\n <span>{{'Estimate' | translate}}</span>\r\n }\r\n @case('ModelChange') {\r\n <span>{{'Changed' | translate}}</span>\r\n }\r\n }\r\n @if(l.fyi) {\r\n <span>&nbsp;{{'FYI'|translate}}</span>\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if(l.estimate) {\r\n @if(l.durationMax && l.durationMax === l.durationMin)\r\n {<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n }\r\n @if(l.durationMax && l.durationMax !== l.durationMin){<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>}\r\n }\r\n @else {\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n @if(l.duration) {<span [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>}\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if (l.note) {<span>{{l.note}}</span> }\r\n @if (l.type==='ModelChange') {<button mat-icon-button (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"], dependencies: [{ kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: DurationPipe, name: "amDuration" }, { kind: "pipe", type: DurationFormatPipe, name: "amDurationFormat" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: RolePipe, name: "role" }], animations: [listAnimation, itemAnimation] }); }
16258
16340
  }
16259
16341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: TraceViewComponent, decorators: [{
16260
16342
  type: Component,
16261
- args: [{ standalone: false, 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-mdc-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n @for(l of data; track l){\r\n <tr class=\"mat-mdc-row\" @item>\r\n <td class=\"mat-mdc-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n @if(l.role) {<span>{{'JoinComma'|translate}}{{l.role}}</span>}\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @switch (l.type) {\r\n @case('ActionTaken') {\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n }\r\n @case('Submit') {\r\n <span>{{'Issued' | translate}}</span>\r\n }\r\n @case('Pending') {\r\n <span>{{'IsPending' | translate}}</span>\r\n }\r\n @case('CheckOut') {\r\n <span>{{'CheckedIn' | translate : l.fileName}}</span>\r\n }\r\n @case('CheckIn') {\r\n <span>{{'CheckedOut' | translate : l.fileName}}</span>\r\n }\r\n @case('Estimate') {\r\n <span>{{'Estimate' | translate}}</span>\r\n }\r\n @case('ModelChange') {\r\n <span>{{'Changed' | translate}}</span>\r\n }\r\n }\r\n @if(l.fyi) {\r\n <span>&nbsp;{{'FYI'|translate}}</span>\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if(l.estimate) {\r\n @if(l.durationMax && l.durationMax === l.durationMin)\r\n {<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n }\r\n @if(l.durationMax && l.durationMax !== l.durationMin){<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>}\r\n }\r\n @else {\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n @if(l.duration) {<span [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>}\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if (l.note) {<span>{{l.note}}</span> }\r\n @if (l.type==='ModelChange') {<button mat-icon-button (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"] }]
16343
+ args: [{ standalone: false, 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-mdc-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n @for(l of data; track l){\r\n <tr class=\"mat-mdc-row\" @item>\r\n <td class=\"mat-mdc-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n @if(l.role) {<span>{{'JoinComma'|translate}}{{l.role | role}}</span>}\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @switch (l.type) {\r\n @case('ActionTaken') {\r\n <span [innerHTML]=\"l.action | sanitizeHtml\" (click)=\"chat($event)\" class=\"to\"></span>\r\n }\r\n @case('Submit') {\r\n <span>{{'Issued' | translate}}</span>\r\n }\r\n @case('Pending') {\r\n <span>{{'IsPending' | translate}}</span>\r\n }\r\n @case('CheckOut') {\r\n <span>{{'CheckedIn' | translate : l.fileName}}</span>\r\n }\r\n @case('CheckIn') {\r\n <span>{{'CheckedOut' | translate : l.fileName}}</span>\r\n }\r\n @case('Estimate') {\r\n <span>{{'Estimate' | translate}}</span>\r\n }\r\n @case('ModelChange') {\r\n <span>{{'Changed' | translate}}</span>\r\n }\r\n }\r\n @if(l.fyi) {\r\n <span>&nbsp;{{'FYI'|translate}}</span>\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if(l.estimate) {\r\n @if(l.durationMax && l.durationMax === l.durationMin)\r\n {<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n }\r\n @if(l.durationMax && l.durationMax !== l.durationMin){<span [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>}\r\n }\r\n @else {\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n @if(l.duration) {<span [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\">&nbsp;({{l.duration | amDuration:'s'}})</span>}\r\n }\r\n </td>\r\n <td class=\"mat-mdc-cell\">\r\n @if (l.note) {<span>{{l.note}}</span> }\r\n @if (l.type==='ModelChange') {<button mat-icon-button (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"] }]
16262
16344
  }], ctorParameters: () => [{ type: SessionService }, { type: TranslateService }, { type: AccountService }, { type: ChatInfo }, { type: HubService }], propDecorators: { model: [{
16263
16345
  type: Input
16264
16346
  }], version: [{
@@ -17833,11 +17915,11 @@ class DocumentFactory {
17833
17915
  const portal = new ComponentPortal(comp, null, injector);
17834
17916
  const compRef = overlayRef.attach(portal);
17835
17917
  formRef._mode = compRef.instance.mode = 'overlay';
17836
- // create on form create() call
17918
+ // create on form continue() call
17837
17919
  formRef._create$.
17838
17920
  subscribe({
17839
17921
  next: m => {
17840
- if (m !== false)
17922
+ if (m && m !== false)
17841
17923
  this._mailbox.create(formId, m).subscribe({
17842
17924
  next: d => {
17843
17925
  observe.next(d);
@@ -17862,7 +17944,8 @@ class DocumentFactory {
17862
17944
  }
17863
17945
  });
17864
17946
  // callback
17865
- this._messaging.callback$.pipe(takeUntil$1(formRef._create$)).subscribe(e => compRef.instance.onMessage && compRef.instance.onMessage(e.message));
17947
+ this._messaging.callback$.pipe(takeUntil$1(formRef._destroy$)).
17948
+ subscribe(e => compRef.instance.onMessage && compRef.instance.onMessage(e.message));
17866
17949
  // escape
17867
17950
  merge(overlayRef.backdropClick(), overlayRef.keydownEvents().pipe(filter$1(k => k.key === 'Escape'))).
17868
17951
  subscribe(() => {
@@ -22532,12 +22615,13 @@ Diagram$1.Inject(FlowchartLayout /*, HierarchicalTree, ComplexHierarchicalTree*/
22532
22615
 
22533
22616
  class SyncfusionGridModule {
22534
22617
  constructor() {
22535
- Grid$1.Inject(ExcelExport, Sort, Group, Page, Freeze, Selection$1, Aggregate);
22618
+ Grid$1.Inject(ExcelExport, Sort, Group, Page, Freeze, Selection$1, Aggregate, ExcelFilter, Filter, ColumnMenu, ForeignKey, Resize, Reorder, Search, Scroll, ColumnChooser);
22536
22619
  }
22537
22620
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SyncfusionGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22538
22621
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: SyncfusionGridModule, imports: [GridModule, PagerModule], exports: [GridModule, PagerModule] }); }
22539
22622
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: SyncfusionGridModule, providers: [
22540
22623
  ExcelExportService, AggregateService, FreezeService,
22624
+ ColumnChooserService, ColumnMenuService, FilterService, ForeignKeyService, InfiniteScrollService, ReorderService, VirtualScrollService, SearchService$1, ToolbarService$1,
22541
22625
  GroupService, PageService, ResizeService, SortService, SelectionService$1
22542
22626
  ], imports: [GridModule, PagerModule, GridModule, PagerModule] }); }
22543
22627
  }
@@ -22548,6 +22632,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
22548
22632
  exports: [GridModule, PagerModule],
22549
22633
  providers: [
22550
22634
  ExcelExportService, AggregateService, FreezeService,
22635
+ ColumnChooserService, ColumnMenuService, FilterService, ForeignKeyService, InfiniteScrollService, ReorderService, VirtualScrollService, SearchService$1, ToolbarService$1,
22551
22636
  GroupService, PageService, ResizeService, SortService, SelectionService$1
22552
22637
  ]
22553
22638
  }]
@@ -26533,7 +26618,7 @@ class ActionPipe {
26533
26618
  return action[args[0]] || (args[1] !== false ? action.title : null);
26534
26619
  return action.title;
26535
26620
  }
26536
- return `_${value}`;
26621
+ return value;
26537
26622
  }
26538
26623
  constructor(session) {
26539
26624
  this.map = new Map();
@@ -27726,31 +27811,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
27726
27811
  type: Output
27727
27812
  }] } });
27728
27813
 
27729
- class RolePipe {
27730
- transform(value, ...args) {
27731
- const role = this.map.get(value);
27732
- if (role) {
27733
- if (args.length)
27734
- return role[args[0]] || role.title;
27735
- return role.title;
27736
- }
27737
- return `_${value}`;
27738
- }
27739
- constructor(session) {
27740
- this.map = new Map();
27741
- session.profile.roles.forEach(a => this.map.set(a.name, a));
27742
- }
27743
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, deps: [{ token: SessionService }], target: i0.ɵɵFactoryTarget.Pipe }); }
27744
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, isStandalone: false, name: "role" }); }
27745
- }
27746
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RolePipe, decorators: [{
27747
- type: Pipe,
27748
- args: [{
27749
- standalone: false,
27750
- name: 'role'
27751
- }]
27752
- }], ctorParameters: () => [{ type: SessionService }] });
27753
-
27754
27814
  class JoinPipe {
27755
27815
  transform(value, ...args) {
27756
27816
  return this._translate.join(value);