@bizdoc/core 1.13.24 → 1.13.27

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 (136) hide show
  1. package/assets/bizdoc-schema.json +15 -10
  2. package/assets/i18n/cldr-data/main/ar/ca-buddhist.json +530 -530
  3. package/assets/i18n/cldr-data/main/ar/ca-chinese.json +1254 -1254
  4. package/assets/i18n/cldr-data/main/ar/ca-coptic.json +539 -539
  5. package/assets/i18n/cldr-data/main/ar/ca-dangi.json +1254 -1254
  6. package/assets/i18n/cldr-data/main/ar/ca-ethiopic-amete-alem.json +536 -536
  7. package/assets/i18n/cldr-data/main/ar/ca-ethiopic.json +539 -539
  8. package/assets/i18n/cldr-data/main/ar/ca-generic.json +533 -533
  9. package/assets/i18n/cldr-data/main/ar/ca-gregorian.json +557 -557
  10. package/assets/i18n/cldr-data/main/ar/ca-hebrew.json +542 -542
  11. package/assets/i18n/cldr-data/main/ar/ca-indian.json +530 -530
  12. package/assets/i18n/cldr-data/main/ar/ca-islamic-civil.json +530 -530
  13. package/assets/i18n/cldr-data/main/ar/ca-islamic-rgsa.json +530 -530
  14. package/assets/i18n/cldr-data/main/ar/ca-islamic-tbla.json +530 -530
  15. package/assets/i18n/cldr-data/main/ar/ca-islamic-umalqura.json +530 -530
  16. package/assets/i18n/cldr-data/main/ar/ca-islamic.json +530 -530
  17. package/assets/i18n/cldr-data/main/ar/ca-japanese.json +1238 -1238
  18. package/assets/i18n/cldr-data/main/ar/ca-persian.json +530 -530
  19. package/assets/i18n/cldr-data/main/ar/ca-roc.json +533 -533
  20. package/assets/i18n/cldr-data/main/ar/characters.json +52 -52
  21. package/assets/i18n/cldr-data/main/ar/currencies.json +2306 -2306
  22. package/assets/i18n/cldr-data/main/ar/dateFields.json +1039 -1039
  23. package/assets/i18n/cldr-data/main/ar/delimiters.json +18 -18
  24. package/assets/i18n/cldr-data/main/ar/languages.json +556 -556
  25. package/assets/i18n/cldr-data/main/ar/layout.json +18 -18
  26. package/assets/i18n/cldr-data/main/ar/listPatterns.json +68 -68
  27. package/assets/i18n/cldr-data/main/ar/localeDisplayNames.json +230 -230
  28. package/assets/i18n/cldr-data/main/ar/measurementSystemNames.json +19 -19
  29. package/assets/i18n/cldr-data/main/ar/numbers.json +511 -511
  30. package/assets/i18n/cldr-data/main/ar/posix.json +18 -18
  31. package/assets/i18n/cldr-data/main/ar/scripts.json +202 -202
  32. package/assets/i18n/cldr-data/main/ar/territories.json +324 -324
  33. package/assets/i18n/cldr-data/main/ar/timeZoneNames.json +2268 -2268
  34. package/assets/i18n/cldr-data/main/ar/units.json +4587 -4587
  35. package/assets/i18n/cldr-data/main/ar/variants.json +119 -119
  36. package/assets/i18n/cldr-data/main/de/ca-buddhist.json +530 -530
  37. package/assets/i18n/cldr-data/main/de/ca-chinese.json +1254 -1254
  38. package/assets/i18n/cldr-data/main/de/ca-coptic.json +539 -539
  39. package/assets/i18n/cldr-data/main/de/ca-dangi.json +1254 -1254
  40. package/assets/i18n/cldr-data/main/de/ca-ethiopic-amete-alem.json +536 -536
  41. package/assets/i18n/cldr-data/main/de/ca-ethiopic.json +539 -539
  42. package/assets/i18n/cldr-data/main/de/ca-generic.json +533 -533
  43. package/assets/i18n/cldr-data/main/de/ca-gregorian.json +551 -551
  44. package/assets/i18n/cldr-data/main/de/ca-hebrew.json +542 -542
  45. package/assets/i18n/cldr-data/main/de/ca-indian.json +530 -530
  46. package/assets/i18n/cldr-data/main/de/ca-islamic-civil.json +530 -530
  47. package/assets/i18n/cldr-data/main/de/ca-islamic-rgsa.json +530 -530
  48. package/assets/i18n/cldr-data/main/de/ca-islamic-tbla.json +530 -530
  49. package/assets/i18n/cldr-data/main/de/ca-islamic-umalqura.json +530 -530
  50. package/assets/i18n/cldr-data/main/de/ca-islamic.json +530 -530
  51. package/assets/i18n/cldr-data/main/de/ca-japanese.json +1238 -1238
  52. package/assets/i18n/cldr-data/main/de/ca-persian.json +530 -530
  53. package/assets/i18n/cldr-data/main/de/ca-roc.json +533 -533
  54. package/assets/i18n/cldr-data/main/de/characters.json +52 -52
  55. package/assets/i18n/cldr-data/main/de/contextTransforms.json +18 -18
  56. package/assets/i18n/cldr-data/main/de/currencies.json +1932 -1932
  57. package/assets/i18n/cldr-data/main/de/dateFields.json +679 -679
  58. package/assets/i18n/cldr-data/main/de/delimiters.json +18 -18
  59. package/assets/i18n/cldr-data/main/de/languages.json +640 -640
  60. package/assets/i18n/cldr-data/main/de/layout.json +18 -18
  61. package/assets/i18n/cldr-data/main/de/listPatterns.json +68 -68
  62. package/assets/i18n/cldr-data/main/de/localeDisplayNames.json +230 -230
  63. package/assets/i18n/cldr-data/main/de/measurementSystemNames.json +19 -19
  64. package/assets/i18n/cldr-data/main/de/numbers.json +155 -155
  65. package/assets/i18n/cldr-data/main/de/posix.json +18 -18
  66. package/assets/i18n/cldr-data/main/de/scripts.json +209 -209
  67. package/assets/i18n/cldr-data/main/de/territories.json +324 -324
  68. package/assets/i18n/cldr-data/main/de/timeZoneNames.json +2332 -2332
  69. package/assets/i18n/cldr-data/main/de/units.json +2546 -2546
  70. package/assets/i18n/cldr-data/main/de/variants.json +119 -119
  71. package/assets/i18n/cldr-data/main/ru/ca-buddhist.json +524 -524
  72. package/assets/i18n/cldr-data/main/ru/ca-chinese.json +1248 -1248
  73. package/assets/i18n/cldr-data/main/ru/ca-coptic.json +533 -533
  74. package/assets/i18n/cldr-data/main/ru/ca-dangi.json +1248 -1248
  75. package/assets/i18n/cldr-data/main/ru/ca-ethiopic-amete-alem.json +530 -530
  76. package/assets/i18n/cldr-data/main/ru/ca-ethiopic.json +533 -533
  77. package/assets/i18n/cldr-data/main/ru/ca-generic.json +527 -527
  78. package/assets/i18n/cldr-data/main/ru/ca-gregorian.json +546 -546
  79. package/assets/i18n/cldr-data/main/ru/ca-hebrew.json +536 -536
  80. package/assets/i18n/cldr-data/main/ru/ca-indian.json +524 -524
  81. package/assets/i18n/cldr-data/main/ru/ca-islamic-civil.json +524 -524
  82. package/assets/i18n/cldr-data/main/ru/ca-islamic-rgsa.json +524 -524
  83. package/assets/i18n/cldr-data/main/ru/ca-islamic-tbla.json +524 -524
  84. package/assets/i18n/cldr-data/main/ru/ca-islamic-umalqura.json +524 -524
  85. package/assets/i18n/cldr-data/main/ru/ca-islamic.json +524 -524
  86. package/assets/i18n/cldr-data/main/ru/ca-japanese.json +1232 -1232
  87. package/assets/i18n/cldr-data/main/ru/ca-persian.json +524 -524
  88. package/assets/i18n/cldr-data/main/ru/ca-roc.json +527 -527
  89. package/assets/i18n/cldr-data/main/ru/characters.json +52 -52
  90. package/assets/i18n/cldr-data/main/ru/contextTransforms.json +62 -62
  91. package/assets/i18n/cldr-data/main/ru/currencies.json +2001 -2001
  92. package/assets/i18n/cldr-data/main/ru/dateFields.json +859 -859
  93. package/assets/i18n/cldr-data/main/ru/delimiters.json +18 -18
  94. package/assets/i18n/cldr-data/main/ru/languages.json +557 -557
  95. package/assets/i18n/cldr-data/main/ru/layout.json +18 -18
  96. package/assets/i18n/cldr-data/main/ru/listPatterns.json +68 -68
  97. package/assets/i18n/cldr-data/main/ru/localeDisplayNames.json +230 -230
  98. package/assets/i18n/cldr-data/main/ru/measurementSystemNames.json +19 -19
  99. package/assets/i18n/cldr-data/main/ru/numbers.json +231 -231
  100. package/assets/i18n/cldr-data/main/ru/posix.json +18 -18
  101. package/assets/i18n/cldr-data/main/ru/scripts.json +209 -209
  102. package/assets/i18n/cldr-data/main/ru/territories.json +324 -324
  103. package/assets/i18n/cldr-data/main/ru/timeZoneNames.json +2317 -2317
  104. package/assets/i18n/cldr-data/main/ru/units.json +3647 -3647
  105. package/assets/i18n/cldr-data/main/ru/variants.json +119 -119
  106. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +6 -6
  107. package/esm2020/lib/compose/trace/flow.component.mjs +10 -13
  108. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +2 -2
  109. package/esm2020/lib/core/controls/file.input.mjs +3 -3
  110. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  111. package/esm2020/lib/core/info/attachment-info.service.mjs +1 -1
  112. package/esm2020/lib/core/mailbox.service.mjs +3 -3
  113. package/esm2020/lib/core/translate.service.mjs +24 -7
  114. package/esm2020/lib/core/translations.mjs +8 -4
  115. package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
  116. package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
  117. package/esm2020/lib/cube/cube.service.mjs +12 -1
  118. package/esm2020/lib/cube/grid/grid.component.mjs +3 -2
  119. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +10 -7
  120. package/esm2020/lib/cube/matrix/table.component.mjs +3 -2
  121. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  122. package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -3
  123. package/esm2020/lib/cube/sum/sum.component.mjs +21 -21
  124. package/esm2020/lib/shared.module.mjs +3 -1
  125. package/esm2020/lib/views/cube/matrix.component.mjs +1 -1
  126. package/fesm2015/bizdoc-core.mjs +89 -58
  127. package/fesm2015/bizdoc-core.mjs.map +1 -1
  128. package/fesm2020/bizdoc-core.mjs +89 -58
  129. package/fesm2020/bizdoc-core.mjs.map +1 -1
  130. package/lib/core/controls/address.input.d.ts +1 -1
  131. package/lib/core/mailbox.service.d.ts +1 -1
  132. package/lib/core/translations.d.ts +4 -0
  133. package/lib/cube/cube.service.d.ts +2 -1
  134. package/lib/cube/grid/spreadsheet.component.d.ts +0 -1
  135. package/lib/cube/sum/sum.component.d.ts +4 -1
  136. package/package.json +13 -13
@@ -146,6 +146,7 @@ import player from 'lottie-web/build/player/lottie';
146
146
  import relativeTime from 'dayjs/plugin/relativeTime';
147
147
  import duration from 'dayjs/plugin/duration';
148
148
  import calendar from 'dayjs/plugin/calendar';
149
+ import updateLocale from 'dayjs/plugin/updateLocale';
149
150
 
150
151
  const expandListItemAnimation = trigger('detailExpand', [
151
152
  state('collapsed', style({ height: '0px', minHeight: '0', display: '' })),
@@ -1261,9 +1262,9 @@ class MailboxService {
1261
1262
  folder.count++;
1262
1263
  });
1263
1264
  }
1264
- formatDownloadUrl(documentId, fileId) {
1265
+ formatDownloadUrl(documentId, fileId, inline) {
1265
1266
  const token = this._auth.getAccessToken();
1266
- return `/api/attachments/${documentId}/${fileId}?access_token=${token}`;
1267
+ return `/api/attachments/${documentId}/${fileId}?access_token=${token}&inline=${inline ? true : false}`;
1267
1268
  }
1268
1269
  download(documentId, fileId) {
1269
1270
  //new Observable<any>(observe => {
@@ -1940,6 +1941,8 @@ const STRINGS = {
1940
1941
  'ar': {},
1941
1942
  'ru': {},
1942
1943
  'en': {
1944
+ TodayAt: 'Today at',
1945
+ Tomorrow: 'Tomorrow',
1943
1946
  Editing: '{0} editing...',
1944
1947
  CheckOut: 'Check out',
1945
1948
  CheckIn: 'Check in',
@@ -2123,8 +2126,8 @@ const STRINGS = {
2123
2126
  ChangeLanguage: 'Language',
2124
2127
  NewMail: 'New {0} #{1} {2}',
2125
2128
  OpenNew: 'Open',
2126
- SendErr: 'Unable to send message. Contact support.',
2127
- SubmitErr: 'Unable to submit. Contact support.',
2129
+ SendErr: 'Something went wrong -:(',
2130
+ SubmitErr: 'Something went wrong -:(',
2128
2131
  SaveErr: 'Unable to save. Please make sure you filled the form correctly.',
2129
2132
  VersionBy: 'By:',
2130
2133
  VersionDate: 'Date:',
@@ -2263,7 +2266,7 @@ const STRINGS = {
2263
2266
  Mute: 'Mute',
2264
2267
  Unmute: 'Unmute',
2265
2268
  NoNotifications: 'No notifications',
2266
- Err: 'Unable to complete task -:(',
2269
+ Err: 'Something went wrong -:(',
2267
2270
  SendSelected: 'Send {0} item(s)',
2268
2271
  SaveChanges: 'Save changes',
2269
2272
  SaveChangesAsk: 'Are you sure you want to exit without saving?',
@@ -2400,6 +2403,8 @@ const STRINGS = {
2400
2403
  Working: 'Working on it...'
2401
2404
  },
2402
2405
  'he': {
2406
+ TodayAt: 'היום ב-',
2407
+ Tomorrow: 'מחר',
2403
2408
  Editing: '{0} עורך/ת...',
2404
2409
  EditingMale: '{0} עורך...',
2405
2410
  EditingFemale: '{0} עורכת...',
@@ -2976,19 +2981,36 @@ class TranslateService {
2976
2981
  this._session = _session;
2977
2982
  this._http = _http;
2978
2983
  TranslateService.resource = STRINGS['en'];
2984
+ const culture = _session.language.split('-')[0];
2979
2985
  if ('en' !== _session.language) {
2980
2986
  Object.assign(TranslateService.resource, STRINGS[_session.language]);
2981
- const culture = _session.language.split('-')[0];
2982
2987
  dayjs.locale(culture);
2983
2988
  // syncfusion
2984
2989
  L10n.load(L18N_STRINGS);
2985
2990
  setCulture(culture);
2986
- culture === 'he' && registerLocaleData(localeHe, 'he');
2987
- culture === 'ru' && registerLocaleData(localeRu, 'ru');
2988
- culture === 'ar' && registerLocaleData(localeAr, 'ar');
2989
- culture === 'de' && registerLocaleData(localeDe, 'de');
2991
+ switch (culture) {
2992
+ case 'he':
2993
+ registerLocaleData(localeHe, 'he');
2994
+ break;
2995
+ case 'ru':
2996
+ registerLocaleData(localeRu, 'ru');
2997
+ break;
2998
+ case 'ar':
2999
+ registerLocaleData(localeAr, 'ar');
3000
+ break;
3001
+ case 'de':
3002
+ registerLocaleData(localeDe, 'de');
3003
+ break;
3004
+ }
2990
3005
  }
2991
- ;
3006
+ dayjs.updateLocale(culture, {
3007
+ //sameDay: `[${this.get('TodayAt')}] h:mm A`,
3008
+ //nextDay: `[${this.get('Tomorrow')}] h:mm A`,
3009
+ //nextWeek: 'dddd',
3010
+ //lastDay: `[${this.get('Yesterday')}] h:mm A`,
3011
+ //lastWeek: '[Last] dddd LT',
3012
+ sameElse: 'LLL'
3013
+ });
2992
3014
  _session.loaded.subscribe(() => this._gender = this._session.gender);
2993
3015
  }
2994
3016
  static set(resources) {
@@ -4706,7 +4728,7 @@ class AttachmentPreview {
4706
4728
  this._afterClosed = new Subject();
4707
4729
  this.dir = _directionality.value;
4708
4730
  this.isImage = isImage(this.data.file.contentType);
4709
- this.objectData = sanitizer.bypassSecurityTrustResourceUrl(this._url());
4731
+ this.objectData = sanitizer.bypassSecurityTrustResourceUrl(this._url(true));
4710
4732
  this.beforeClose().subscribe(() => this.slideDown = 'leave');
4711
4733
  }
4712
4734
  resize() {
@@ -4724,8 +4746,8 @@ class AttachmentPreview {
4724
4746
  download() {
4725
4747
  location.assign(this._url());
4726
4748
  }
4727
- _url() {
4728
- return this._service.formatDownloadUrl(this.data.documentId, this.data.file.id);
4749
+ _url(inline) {
4750
+ return this._service.formatDownloadUrl(this.data.documentId, this.data.file.id, inline);
4729
4751
  }
4730
4752
  rotate() {
4731
4753
  const elem = (this.isImage ? this.img : this.obj).nativeElement;
@@ -4768,7 +4790,7 @@ class AttachmentPreview {
4768
4790
  }
4769
4791
  }
4770
4792
  AttachmentPreview.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AttachmentPreview, deps: [{ token: i7$2.Directionality }, { token: i0.Renderer2 }, { token: FILE_PREVIEW_DIALOG_DATA }, { token: i1$5.DomSanitizer }, { token: MailboxService }, { token: i1$4.OverlayRef }], target: i0.ɵɵFactoryTarget.Component });
4771
- AttachmentPreview.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AttachmentPreview, selector: "bizdoc-attachment-preview", host: { listeners: { "document:resize": "resize()", "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "obj", first: true, predicate: ["obj"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper\" fxLayout=\"row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj></object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 1 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"] }, { type: i8$1.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "translate": TranslatePipe }, animations: [
4793
+ AttachmentPreview.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AttachmentPreview, selector: "bizdoc-attachment-preview", host: { listeners: { "document:resize": "resize()", "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "obj", first: true, predicate: ["obj"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper\" fxLayout=\"row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj width=\"250\"\r\n height=\"200\">\r\n </object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 1 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"] }, { type: i8$1.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i7$2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "translate": TranslatePipe }, animations: [
4772
4794
  trigger('fade', [
4773
4795
  state('fadeOut', style({ opacity: 0 })),
4774
4796
  state('fadeIn', style({ opacity: 1 })),
@@ -4807,7 +4829,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
4807
4829
  state('leave', style({ transform: 'translate3d(0, 25%, 0)', opacity: 0 })),
4808
4830
  transition('* => *', animate(ANIMATION_TIMINGS)),
4809
4831
  ])
4810
- ], template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper\" fxLayout=\"row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj></object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 1 auto}\n"] }]
4832
+ ], template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper\" fxLayout=\"row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj width=\"250\"\r\n height=\"200\">\r\n </object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 1 auto}\n"] }]
4811
4833
  }], ctorParameters: function () {
4812
4834
  return [{ type: i7$2.Directionality }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
4813
4835
  type: Inject,
@@ -5387,10 +5409,10 @@ class FileInput {
5387
5409
  }
5388
5410
  FileInput.nextId = 0;
5389
5411
  FileInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FileInput, deps: [{ token: i0.ElementRef }, { token: MailboxService }, { token: i1$5.DomSanitizer }, { token: AttachmentInfo }, { token: TranslateService }, { token: SessionService }, { token: PromptService }, { token: i1$2.NgControl, optional: true, self: true }, { token: DOCUMENT_MODEL }], target: i0.ɵɵFactoryTarget.Component });
5390
- FileInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: FileInput, selector: "bizdoc-file-upload", inputs: { multiple: "multiple", accept: "accept", icon: "icon", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled" }, host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)" }, properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy" }, classAttribute: "file-dropable" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <mat-icon *ngIf=\"a.icon\" [svgIcon]=\"a.icon\" [inline]=\"true\"></mat-icon>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\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: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i12$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { 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: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "translate": TranslatePipe, "amCalendar": CalendarPipe } });
5412
+ FileInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: FileInput, selector: "bizdoc-file-upload", inputs: { multiple: "multiple", accept: "accept", icon: "icon", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled" }, host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)" }, properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy" }, classAttribute: "file-dropable" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <mat-icon *ngIf=\"a.icon\" [svgIcon]=\"a.icon\" [inline]=\"true\"></mat-icon>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\" *ngIf=\"multiple\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\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: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i12$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { 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: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "translate": TranslatePipe, "amCalendar": CalendarPipe } });
5391
5413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FileInput, decorators: [{
5392
5414
  type: Component,
5393
- args: [{ host: { class: 'file-dropable' }, selector: 'bizdoc-file-upload', template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <mat-icon *ngIf=\"a.icon\" [svgIcon]=\"a.icon\" [inline]=\"true\"></mat-icon>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"] }]
5415
+ args: [{ host: { class: 'file-dropable' }, selector: 'bizdoc-file-upload', template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <mat-icon *ngIf=\"a.icon\" [svgIcon]=\"a.icon\" [inline]=\"true\"></mat-icon>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\" *ngIf=\"multiple\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"] }]
5394
5416
  }], ctorParameters: function () {
5395
5417
  return [{ type: i0.ElementRef }, { type: MailboxService }, { type: i1$5.DomSanitizer }, { type: AttachmentInfo }, { type: TranslateService }, { type: SessionService }, { type: PromptService }, { type: i1$2.NgControl, decorators: [{
5396
5418
  type: Optional
@@ -6625,6 +6647,17 @@ function modelize() {
6625
6647
  });
6626
6648
  return data;
6627
6649
  }));
6650
+ }
6651
+ function errResource(error) {
6652
+ switch (error.status) {
6653
+ case 401:
6654
+ return 'Unauthorized';
6655
+ case 426:
6656
+ return 'LicenseErr';
6657
+ case 406:
6658
+ return 'Unauthorized';
6659
+ }
6660
+ return null;
6628
6661
  }
6629
6662
 
6630
6663
  class ArraySortPipe {
@@ -9528,7 +9561,7 @@ class CubeAccumulationChartComponent {
9528
9561
  this._draw();
9529
9562
  this.loadingChange.emit(false);
9530
9563
  }, (e) => {
9531
- this._sb.error(e.status === 406 ? 'Unauthorized' : null);
9564
+ this._sb.error(errResource(e));
9532
9565
  this.loadingChange.emit(false);
9533
9566
  });
9534
9567
  }
@@ -9782,7 +9815,7 @@ class CubeChartComponent {
9782
9815
  this._draw();
9783
9816
  this.loadingChange.emit(false);
9784
9817
  }, (e) => {
9785
- this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
9818
+ this._sb.error(errResource(e));
9786
9819
  this.loadingChange.emit(false);
9787
9820
  });
9788
9821
  }
@@ -10073,7 +10106,7 @@ class CubeGridComponent {
10073
10106
  this.loadingChange.emit(false);
10074
10107
  });
10075
10108
  }, (e) => {
10076
- this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
10109
+ this._sb.error(errResource(e));
10077
10110
  this.loadingChange.emit(false);
10078
10111
  });
10079
10112
  }
@@ -10379,7 +10412,7 @@ class CubePivotComponent {
10379
10412
  this._draw();
10380
10413
  this.loadingChange.emit(false);
10381
10414
  }, (e) => {
10382
- this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
10415
+ this._sb.error(errResource(e));
10383
10416
  this.loadingChange.emit(false);
10384
10417
  });
10385
10418
  }
@@ -10760,18 +10793,20 @@ class CubeSpreadsheetComponent {
10760
10793
  this._draw();
10761
10794
  this.loadingChange.emit(false);
10762
10795
  });
10763
- }, e => this._handleErr(e));
10796
+ }, e => {
10797
+ this._sb.error(errResource(e));
10798
+ this.loadingChange.emit(false);
10799
+ });
10764
10800
  else
10765
10801
  this._service.table(this._cube.name, this._xAxis, { filters: this.filters, indices: this._indices }).
10766
10802
  subscribe(data => {
10767
10803
  this._datatable(data);
10768
10804
  this._draw();
10769
10805
  this.loadingChange.emit(false);
10770
- }, e => this._handleErr(e));
10771
- }
10772
- _handleErr(response) {
10773
- this._sb.error(response.status === 401 ? 'Unauthorized' : response.status === 426 ? 'LicenseErr' : null);
10774
- this.loadingChange.emit(false);
10806
+ }, e => {
10807
+ this._sb.error(errResource(e));
10808
+ this.loadingChange.emit(false);
10809
+ });
10775
10810
  }
10776
10811
  _datatable(data) {
10777
10812
  var _a;
@@ -14139,20 +14174,17 @@ class FlowViewComponent extends TraceBase {
14139
14174
  }
14140
14175
  for (let connector of dconnectors) {
14141
14176
  let sources = nodes.filter(n => n.addInfo.node.id === connector.sourceId), targets = nodes.filter(n => n.addInfo.node.id === connector.targetId);
14142
- for (let source of sources) {
14177
+ for (let source of sources)
14143
14178
  for (let target of targets) {
14144
- if (!connector.originId || !source.addInfo.recipient ||
14145
- connector.originId === source.addInfo.recipient.id)
14146
- connectors.push({
14147
- sourceID: source.id,
14148
- targetID: target.id,
14149
- addInfo: {
14150
- estimate: connector.estimate,
14151
- time: connector.time
14152
- }
14153
- });
14179
+ connectors.push({
14180
+ sourceID: source.id,
14181
+ targetID: target.id,
14182
+ addInfo: {
14183
+ estimate: connector.estimate,
14184
+ time: connector.time
14185
+ }
14186
+ });
14154
14187
  }
14155
- }
14156
14188
  }
14157
14189
  return { connectors, nodes, indicators };
14158
14190
  });
@@ -14901,7 +14933,7 @@ class VersionPaneComponent {
14901
14933
  lastDay: `[${this._translate.get('Yesterday')}] HH:mm`,
14902
14934
  lastWeek: 'dddd HH:mm',
14903
14935
  sameDay: `[${this._translate.get('Today')}] HH:mm`,
14904
- sameElse: 'MMM Do HH:mm'
14936
+ sameElse: 'MMM D HH:mm'
14905
14937
  };
14906
14938
  _pane.title = _translate.get('Version');
14907
14939
  }
@@ -15422,7 +15454,7 @@ class CubeMatrixComponent {
15422
15454
  clearTimeout(progressTask);
15423
15455
  this.loadingChange.next(this.loading = false);
15424
15456
  }, (e) => {
15425
- this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
15457
+ this._sb.error(errResource(e));
15426
15458
  clearTimeout(progressTask);
15427
15459
  this.loadingChange.next(this.loading = false);
15428
15460
  this.loadingChange.error(e);
@@ -17823,10 +17855,10 @@ class AppHttpInterceptor {
17823
17855
  if (this._authenticating)
17824
17856
  return this._authenticating;
17825
17857
  else if (e.status === 401) {
17826
- this._session.ok && this._router.navigate(['broken']);
17858
+ //this._session.ok && this._router.navigate(['broken']);
17827
17859
  this._authenticating = this._auth.authorize().pipe(switchMap$1(() => {
17828
17860
  this._authenticating = null;
17829
- this._session.ok && history.back();
17861
+ //this._session.ok && history.back();
17830
17862
  return forward();
17831
17863
  }));
17832
17864
  return this._authenticating;
@@ -25899,9 +25931,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
25899
25931
  }], ctorParameters: function () { return [{ type: SessionService }, { type: DocumentViewRef }, { type: CubeService }, { type: RouterImpl }]; } });
25900
25932
 
25901
25933
  class CubeSumComponent {
25902
- constructor(_ds, _service, _session) {
25934
+ constructor(_ds, _service, _sb, _session) {
25903
25935
  this._ds = _ds;
25904
25936
  this._service = _service;
25937
+ this._sb = _sb;
25905
25938
  this._session = _session;
25906
25939
  this.onExplore = new EventEmitter();
25907
25940
  this.back = true;
@@ -25942,13 +25975,7 @@ class CubeSumComponent {
25942
25975
  indices: this.indices,
25943
25976
  scope: this.scope,
25944
25977
  filters
25945
- }).toPromise();
25946
- function fill(serie, point) {
25947
- if (serie.index)
25948
- this.current.indices.push({ name: serie.index, title: serie.title, value: point.y });
25949
- else
25950
- this.current = { axis: point.x, name: axis, value: point.y, indices: [] };
25951
- }
25978
+ }).toPromise().catch(this._handleErr.bind(this));
25952
25979
  for (var i = 0; i < results.length; i++) {
25953
25980
  const { index, title, points } = results[i];
25954
25981
  for (var j = 0; j < points.length; j++) {
@@ -25990,7 +26017,7 @@ class CubeSumComponent {
25990
26017
  indices: this.indices,
25991
26018
  scope: this.scope,
25992
26019
  filters
25993
- }).toPromise();
26020
+ }).toPromise().catch(this._handleErr.bind(this));
25994
26021
  const level = { axis, indices: [], scope };
25995
26022
  for (var i = 0; i < results.length; i++) {
25996
26023
  const { index, title, points } = results[i];
@@ -26010,6 +26037,9 @@ class CubeSumComponent {
26010
26037
  this.next = yield parallel(1);
26011
26038
  });
26012
26039
  }
26040
+ _handleErr(response) {
26041
+ this._sb.error(errResource(response));
26042
+ }
26013
26043
  _fish(axis) {
26014
26044
  return __awaiter(this, void 0, void 0, function* () {
26015
26045
  this.loading = true;
@@ -26020,7 +26050,7 @@ class CubeSumComponent {
26020
26050
  indices: this.indices, filters,
26021
26051
  scope: this.scope
26022
26052
  }).
26023
- toPromise();
26053
+ toPromise().catch(this._handleErr.bind(this));
26024
26054
  this.current = {
26025
26055
  axis,
26026
26056
  value: 0,
@@ -26217,7 +26247,7 @@ class CubeSumComponent {
26217
26247
  const results = this._scoperesults = yield this._service.series(this._cube.name, this.xAxis, {
26218
26248
  indices: this.indices, filters,
26219
26249
  scope: this.scope
26220
- }).toPromise();
26250
+ }).toPromise().catch(this._handleErr.bind(this));
26221
26251
  this._scope = scope;
26222
26252
  if (!results.some(s => s.points.length))
26223
26253
  return;
@@ -26271,7 +26301,7 @@ class CubeSumComponent {
26271
26301
  this.onExplore.emit({ axes, index });
26272
26302
  }
26273
26303
  }
26274
- CubeSumComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CubeSumComponent, deps: [{ token: DatasourceService }, { token: CubeService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
26304
+ CubeSumComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CubeSumComponent, deps: [{ token: DatasourceService }, { token: CubeService }, { token: PromptService }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
26275
26305
  CubeSumComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CubeSumComponent, selector: "bizdoc-cube-sum", inputs: { xAxis: "xAxis", periodPolicy: "periodPolicy", parentAxis: "parentAxis", filters: "filters", cube: "cube", indices: "indices", scope: "scope" }, outputs: { onExplore: "explore" }, usesOnChanges: true, ngImport: i0, template: " <!-- levels -->\r\n<div class=\"row\">\r\n <div *ngIf=\"prev\" class=\"level prev-level\">\r\n <div class=\"level-header row\">\r\n <mat-icon class=\"cliclable mat-icon-rtl-mirror\" [inline]=true (click)=\"goprev()\" *ngIf=\"back\">keyboard_arrow_left</mat-icon>\r\n <div div class=\"mat-h1 title\">\r\n {{'PrevLevel'| translate}}\r\n </div>\r\n <span class=\"divider\"></span>\r\n <mat-icon *ngIf=\"forward\" class=\"cliclable mat-icon-rtl-mirror\" [inline]=true (click)=\"gonext()\">keyboard_arrow_right</mat-icon>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: prev}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"current\" class=\"level current-level\">\r\n <div class=\"level-header row\">\r\n <div div class=\"mat-h1 title\">\r\n {{'CurrentLevel'| translate : primaryAxis.title}}\r\n </div>\r\n <span class=\"divider\"></span>\r\n <mat-icon [bizdocTooltip]=\"help\" *ngIf=\"help\" [inline]=\"true\">help_outline</mat-icon>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: current}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"next\" class=\"level next-level\">\r\n <div class=\"level-header\">\r\n <div div class=\"mat-h1 title\">\r\n {{'NextLevel'| translate}}\r\n </div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: next}\"></ng-container>\r\n </div>\r\n</div>\r\n<!-- level -->\r\n<ng-template #level let-use=\"use\" let-help=\"help\">\r\n <div>\r\n <h2 class=\"mat-h1\" [class.cliclable]=\"use.value !== 0\" (click)=\"explore(use)\">{{use.title}}</h2>\r\n <div class=\"row\">\r\n <h3 class=\"mat-h1\" [class.cliclable]=\"use.value !== 0\" (click)=\"explore(use)\">{{use.value | currency : currencyCode : 'symbol' : digitsInfo}}</h3>\r\n <span class=\"divider\"></span>\r\n <div *ngIf=\"use.chain && use.value !== use.chain.value\">\r\n <span *ngIf=\"use.value !== 0 && use.chain.value !== 0\">{{Math.round(use.value / use.chain.value * 100) }}%</span>\r\n <mat-icon>{{use.value > use.chain.value ? 'trending_up':'trending_down' }}</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- -->\r\n <div class=\"row\">\r\n <div *ngFor=\"let i of use.indices\" class=\"index\">\r\n <h4 class=\"mat-h3 title\">{{i.title}}</h4>\r\n <h5 class=\"mat-h3\" [class.cliclable]=\"i.value !== 0\" (click)=\"explore(use, i.name)\">{{i.value | currency : currencyCode : 'symbol' : digitsInfo}}</h5>\r\n </div>\r\n </div>\r\n <div class=\"bar\" *ngIf=\"use.indices.length\" [class.available]=\"use.percent < 100\">\r\n <div class=\"value\" [style.flexBasis]=\"Math.round(use.percent < 100 ?\r\n 100 - use.percent :\r\n 100 / use.percent * 100) + '%'\"\r\n [@bar]=\"use.animation\"></div>\r\n <div class=\"overflow\" *ngIf=\"use.percent > 0\"></div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{padding:0 8px}.level{border-width:thin;border-radius:3px;padding:8px;margin:3px;flex:1 1 0;border-style:solid}.level .cliclable{cursor:pointer}.level.next-level{border-style:dashed}.level .level-header{align-items:center}.level .level-header .title{margin:0;line-height:22px;font-size:inherit;font-feature-settings:\"pcap\",\"c2pc\";font-variant-caps:all-petite-caps}.level h3{margin:0;font-size:x-large}.level h2{font-weight:400;font-size:larger;margin:0}.level .percent{display:flex;align-items:center}.level .index{padding:0 4px}.level .index h5,.level .index h4{margin:0}.level .bar{display:flex}.level .bar .value,.level .bar .overflow{height:12px}.level .bar .value{flex:0 0 0%}.level .bar .overflow{flex:1 1 0%;box-sizing:border-box}.level .bar.available .overflow{border-width:1px;border-style:dashed}\n"], components: [{ 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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": TranslatePipe, "currency": i10.CurrencyPipe }, animations: [trigger('bar', [
26276
26306
  transition('*<=>*', [style({
26277
26307
  flexBasis: '{{startWidth}}%'
@@ -26284,7 +26314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
26284
26314
  flexBasis: '{{startWidth}}%'
26285
26315
  }), animate('500ms ease')], { params: { startWidth: 100 } }),
26286
26316
  ])], template: " <!-- levels -->\r\n<div class=\"row\">\r\n <div *ngIf=\"prev\" class=\"level prev-level\">\r\n <div class=\"level-header row\">\r\n <mat-icon class=\"cliclable mat-icon-rtl-mirror\" [inline]=true (click)=\"goprev()\" *ngIf=\"back\">keyboard_arrow_left</mat-icon>\r\n <div div class=\"mat-h1 title\">\r\n {{'PrevLevel'| translate}}\r\n </div>\r\n <span class=\"divider\"></span>\r\n <mat-icon *ngIf=\"forward\" class=\"cliclable mat-icon-rtl-mirror\" [inline]=true (click)=\"gonext()\">keyboard_arrow_right</mat-icon>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: prev}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"current\" class=\"level current-level\">\r\n <div class=\"level-header row\">\r\n <div div class=\"mat-h1 title\">\r\n {{'CurrentLevel'| translate : primaryAxis.title}}\r\n </div>\r\n <span class=\"divider\"></span>\r\n <mat-icon [bizdocTooltip]=\"help\" *ngIf=\"help\" [inline]=\"true\">help_outline</mat-icon>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: current}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"next\" class=\"level next-level\">\r\n <div class=\"level-header\">\r\n <div div class=\"mat-h1 title\">\r\n {{'NextLevel'| translate}}\r\n </div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: next}\"></ng-container>\r\n </div>\r\n</div>\r\n<!-- level -->\r\n<ng-template #level let-use=\"use\" let-help=\"help\">\r\n <div>\r\n <h2 class=\"mat-h1\" [class.cliclable]=\"use.value !== 0\" (click)=\"explore(use)\">{{use.title}}</h2>\r\n <div class=\"row\">\r\n <h3 class=\"mat-h1\" [class.cliclable]=\"use.value !== 0\" (click)=\"explore(use)\">{{use.value | currency : currencyCode : 'symbol' : digitsInfo}}</h3>\r\n <span class=\"divider\"></span>\r\n <div *ngIf=\"use.chain && use.value !== use.chain.value\">\r\n <span *ngIf=\"use.value !== 0 && use.chain.value !== 0\">{{Math.round(use.value / use.chain.value * 100) }}%</span>\r\n <mat-icon>{{use.value > use.chain.value ? 'trending_up':'trending_down' }}</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- -->\r\n <div class=\"row\">\r\n <div *ngFor=\"let i of use.indices\" class=\"index\">\r\n <h4 class=\"mat-h3 title\">{{i.title}}</h4>\r\n <h5 class=\"mat-h3\" [class.cliclable]=\"i.value !== 0\" (click)=\"explore(use, i.name)\">{{i.value | currency : currencyCode : 'symbol' : digitsInfo}}</h5>\r\n </div>\r\n </div>\r\n <div class=\"bar\" *ngIf=\"use.indices.length\" [class.available]=\"use.percent < 100\">\r\n <div class=\"value\" [style.flexBasis]=\"Math.round(use.percent < 100 ?\r\n 100 - use.percent :\r\n 100 / use.percent * 100) + '%'\"\r\n [@bar]=\"use.animation\"></div>\r\n <div class=\"overflow\" *ngIf=\"use.percent > 0\"></div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{padding:0 8px}.level{border-width:thin;border-radius:3px;padding:8px;margin:3px;flex:1 1 0;border-style:solid}.level .cliclable{cursor:pointer}.level.next-level{border-style:dashed}.level .level-header{align-items:center}.level .level-header .title{margin:0;line-height:22px;font-size:inherit;font-feature-settings:\"pcap\",\"c2pc\";font-variant-caps:all-petite-caps}.level h3{margin:0;font-size:x-large}.level h2{font-weight:400;font-size:larger;margin:0}.level .percent{display:flex;align-items:center}.level .index{padding:0 4px}.level .index h5,.level .index h4{margin:0}.level .bar{display:flex}.level .bar .value,.level .bar .overflow{height:12px}.level .bar .value{flex:0 0 0%}.level .bar .overflow{flex:1 1 0%;box-sizing:border-box}.level .bar.available .overflow{border-width:1px;border-style:dashed}\n"] }]
26287
- }], ctorParameters: function () { return [{ type: DatasourceService }, { type: CubeService }, { type: SessionService }]; }, propDecorators: { xAxis: [{
26317
+ }], ctorParameters: function () { return [{ type: DatasourceService }, { type: CubeService }, { type: PromptService }, { type: SessionService }]; }, propDecorators: { xAxis: [{
26288
26318
  type: Input
26289
26319
  }], periodPolicy: [{
26290
26320
  type: Input
@@ -26577,7 +26607,7 @@ class CubeParallelComponent {
26577
26607
  this.width = Math.max(Math.round(this.size / this.items.length), 150) + 'px';
26578
26608
  this._loading.next(false);
26579
26609
  }, (e) => {
26580
- this._sb.error(e.status === 401 ? 'Unauthorized' : e.status === 426 ? 'LicenseErr' : null);
26610
+ this._sb.error(errResource(e));
26581
26611
  this._loading.next(false);
26582
26612
  });
26583
26613
  }
@@ -27097,6 +27127,7 @@ dayjs.extend(relativeTime, {
27097
27127
  });
27098
27128
  dayjs.extend(duration);
27099
27129
  dayjs.extend(calendar);
27130
+ dayjs.extend(updateLocale);
27100
27131
  const CORE_COMPONENTS = [CubeCompareWidget, CubeParallelViewComponent, CubeExploreViewComponent, CubeChartViewComponent, CubeDocumentSumComponent, CubeDocumentMatrixComponent, CubeDocumentViewComponent, CubePivotViewComponent, TimelineViewComponent,
27101
27132
  SubstitutionComponent, MoveToActionComponent, AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
27102
27133
  ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,