@bizdoc/core 1.15.5 → 1.15.6

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 (86) hide show
  1. package/assets/system/icons.json +1 -0
  2. package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +2 -2
  3. package/esm2020/lib/admin/configuration-designer/designer.base.mjs +44 -3
  4. package/esm2020/lib/admin/configuration-designer/designer.component.mjs +109 -45
  5. package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +5 -12
  6. package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +5 -6
  7. package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +7 -6
  8. package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +5 -1
  9. package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +61 -0
  10. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +32 -23
  11. package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +11 -13
  12. package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +44 -18
  13. package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +9 -9
  14. package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +41 -9
  15. package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +5 -4
  16. package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +5 -4
  17. package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +9 -13
  18. package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +15 -14
  19. package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +5 -9
  20. package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +9 -11
  21. package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +6 -4
  22. package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +13 -14
  23. package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +5 -4
  24. package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +9 -10
  25. package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +6 -4
  26. package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +5 -12
  27. package/esm2020/lib/admin/configuration-designer/icon-picker.component.mjs +162 -0
  28. package/esm2020/lib/admin/configuration-designer/privileges.component.mjs +24 -16
  29. package/esm2020/lib/admin/core/color-picker.input.mjs +9 -33
  30. package/esm2020/lib/admin/form/designer/designer.component.mjs +140 -18
  31. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +6 -6
  32. package/esm2020/lib/compose/box/box.component.mjs +43 -0
  33. package/esm2020/lib/compose/document.component.mjs +2 -2
  34. package/esm2020/lib/compose/form-ref.mjs +7 -2
  35. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  36. package/esm2020/lib/compose/form.component.mjs +2 -2
  37. package/esm2020/lib/compose/new-menu.component.mjs +3 -3
  38. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +2 -2
  39. package/esm2020/lib/core/functions.mjs +6 -1
  40. package/esm2020/lib/core/mailbox.service.mjs +2 -2
  41. package/esm2020/lib/core/models.mjs +1 -1
  42. package/esm2020/lib/core/translations.mjs +2 -1
  43. package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
  44. package/esm2020/lib/cube/matrix/table.component.mjs +1 -1
  45. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +1 -1
  46. package/esm2020/lib/shared.module.mjs +5 -4
  47. package/esm2020/lib/system.module.mjs +8 -4
  48. package/esm2020/lib/views/cube/chart.component.mjs +1 -1
  49. package/fesm2015/bizdoc-core.mjs +699 -242
  50. package/fesm2015/bizdoc-core.mjs.map +1 -1
  51. package/fesm2020/bizdoc-core.mjs +692 -242
  52. package/fesm2020/bizdoc-core.mjs.map +1 -1
  53. package/lib/admin/configuration-designer/designer.base.d.ts +78 -31
  54. package/lib/admin/configuration-designer/designer.component.d.ts +14 -3
  55. package/lib/admin/configuration-designer/elements/action.component.d.ts +2 -6
  56. package/lib/admin/configuration-designer/elements/box-form.component.d.ts +2 -4
  57. package/lib/admin/configuration-designer/elements/configuration-datasource.component.d.ts +26 -0
  58. package/lib/admin/configuration-designer/elements/cube.component.d.ts +5 -9
  59. package/lib/admin/configuration-designer/elements/folder.component.d.ts +3 -9
  60. package/lib/admin/configuration-designer/elements/form.component.d.ts +6 -11
  61. package/lib/admin/configuration-designer/elements/guide.component.d.ts +2 -7
  62. package/lib/admin/configuration-designer/elements/matrix-view.component.d.ts +7 -1
  63. package/lib/admin/configuration-designer/elements/report.component.d.ts +2 -10
  64. package/lib/admin/configuration-designer/elements/role.component.d.ts +4 -9
  65. package/lib/admin/configuration-designer/elements/rule.component.d.ts +2 -6
  66. package/lib/admin/configuration-designer/elements/state.component.d.ts +3 -6
  67. package/lib/admin/configuration-designer/elements/sum-view.component.d.ts +1 -0
  68. package/lib/admin/configuration-designer/elements/type.component.d.ts +3 -13
  69. package/lib/admin/configuration-designer/elements/utility.component.d.ts +2 -4
  70. package/lib/admin/configuration-designer/elements/view.component.d.ts +5 -7
  71. package/lib/admin/configuration-designer/elements/widget.component.d.ts +2 -6
  72. package/lib/admin/configuration-designer/icon-picker.component.d.ts +67 -0
  73. package/lib/admin/configuration-designer/privileges.component.d.ts +3 -4
  74. package/lib/admin/core/color-picker.input.d.ts +3 -6
  75. package/lib/admin/form/designer/designer.component.d.ts +59 -19
  76. package/lib/admin/form/workflow/workflow.component.d.ts +2 -2
  77. package/lib/compose/box/box.component.d.ts +17 -0
  78. package/lib/compose/form-ref.d.ts +6 -2
  79. package/lib/core/models.d.ts +4 -1
  80. package/lib/core/translations.d.ts +1 -0
  81. package/lib/cube/matrix/table.component.d.ts +0 -1
  82. package/lib/dashboard/cube/cube-analysis.base.d.ts +1 -0
  83. package/lib/shared.module.d.ts +183 -182
  84. package/lib/system.module.d.ts +61 -59
  85. package/lib/views/cube/chart.component.d.ts +2 -1
  86. package/package.json +1 -1
@@ -26,7 +26,7 @@ import * as i1$4 from '@angular/common';
26
26
  import { registerLocaleData, CommonModule, getLocaleNumberFormat, NumberFormatStyle, getCurrencySymbol, formatNumber, formatPercent, formatCurrency } from '@angular/common';
27
27
  import * as i5 from '@angular/flex-layout/flex';
28
28
  import * as i9 from '@angular/material/button';
29
- import { MatButtonModule, MatButton } from '@angular/material/button';
29
+ import { MatButtonModule } from '@angular/material/button';
30
30
  import { L10n, setCulture, loadCldr, setCurrencyCode, Internationalization, enableRtl, registerLicense } from '@syncfusion/ej2-base';
31
31
  import 'dayjs/locale/he';
32
32
  import 'dayjs/locale/de';
@@ -110,7 +110,7 @@ import * as i4$5 from '@angular/material/list';
110
110
  import { MatListModule } from '@angular/material/list';
111
111
  import * as i8$3 from '@angular/material/toolbar';
112
112
  import { MatToolbarModule } from '@angular/material/toolbar';
113
- import * as i6$5 from '@angular/material/radio';
113
+ import * as i4$6 from '@angular/material/radio';
114
114
  import { MatRadioModule } from '@angular/material/radio';
115
115
  import * as i2$4 from '@angular/flex-layout';
116
116
  import { FlexLayoutModule } from '@angular/flex-layout';
@@ -478,11 +478,16 @@ function mapToArray(map) {
478
478
  function isImage(contentType) {
479
479
  return IMAGE_TYPE.indexOf(contentType) > -1;
480
480
  }
481
- function cleanup(params) {
481
+ function cleanup$1(params) {
482
482
  Object.keys(params).forEach(k => {
483
483
  const val = params[k];
484
484
  if (val === null || val === undefined || (isArray(val) && !val.length))
485
485
  delete params[k];
486
+ else if (isObject(val)) {
487
+ cleanup$1(val);
488
+ if (!Object.keys(val).length)
489
+ delete params[k];
490
+ }
486
491
  });
487
492
  return params;
488
493
  }
@@ -1188,6 +1193,7 @@ const STRINGS = {
1188
1193
  'ar': {},
1189
1194
  'ru': {},
1190
1195
  'en': {
1196
+ Summary: 'Summary',
1191
1197
  SecurityLevel: 'Security level',
1192
1198
  Global: 'Global',
1193
1199
  Indices: 'Indices',
@@ -3450,7 +3456,7 @@ class MailboxService {
3450
3456
  }
3451
3457
  findAll(filter, options) {
3452
3458
  const params = Object.assign(Object.assign({}, filter), options);
3453
- cleanup(params);
3459
+ cleanup$1(params);
3454
3460
  return this._http.get('/api/mail', { params });
3455
3461
  }
3456
3462
  create(form) {
@@ -3502,7 +3508,7 @@ class MailboxService {
3502
3508
  // return throwError({ status: res.status, error: res.body });
3503
3509
  // }))
3504
3510
  // }), this._notify<T>());
3505
- return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}`, model, { params })), this._notify());
3511
+ return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}`, cleanup$1(model), { params })), this._notify());
3506
3512
  }
3507
3513
  delete(id) {
3508
3514
  return this._http.delete(`/api/mail/${id}`).pipe(tap(() => this._delete$.next(id)));
@@ -7304,10 +7310,10 @@ class CubeFilterComponent {
7304
7310
  }
7305
7311
  }
7306
7312
  CubeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: CubeFilterComponent, deps: [{ token: CubeService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2$1.FormBuilder }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
7307
- CubeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: { cube: "cube", exclude: "exclude", include: "include", axes: "axes" }, outputs: { axesChange: "axesChange" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngFor=\"let a of visibleAxes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n", styles: ["form{padding:8px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.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"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$4.SlicePipe, name: "slice" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: FilterPipe, name: "filter" }] });
7313
+ CubeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: { cube: "cube", exclude: "exclude", include: "include", axes: "axes" }, outputs: { axesChange: "axesChange" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngFor=\"let a of visibleAxes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title||a.name\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n", styles: ["form{padding:8px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.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"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$4.SlicePipe, name: "slice" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: FilterPipe, name: "filter" }] });
7308
7314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: CubeFilterComponent, decorators: [{
7309
7315
  type: Component,
7310
- args: [{ selector: 'bizdoc-cube-filter', template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngFor=\"let a of visibleAxes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n", styles: ["form{padding:8px}\n"] }]
7316
+ args: [{ selector: 'bizdoc-cube-filter', template: "<form [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field *ngFor=\"let a of visibleAxes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title||a.name\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'SimplePatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n", styles: ["form{padding:8px}\n"] }]
7311
7317
  }], ctorParameters: function () { return [{ type: CubeService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2$1.FormBuilder }, { type: SessionService }]; }, propDecorators: { cube: [{
7312
7318
  type: Input
7313
7319
  }], exclude: [{
@@ -7353,7 +7359,7 @@ class BrowseFilterComponent {
7353
7359
  pipe(debounceTime(250), filter(v => isString(v)), takeUntil(this._destroy), switchMap(v => this._mailbox.senders(v)));
7354
7360
  this.form.valueChanges.pipe(takeUntil(this._destroy), debounceTime(FILTER_DEBOUNCE)).subscribe(v => {
7355
7361
  const value = Object.assign({}, v);
7356
- cleanup(value);
7362
+ cleanup$1(value);
7357
7363
  this.valuesChange.emit(value);
7358
7364
  });
7359
7365
  this._initialize();
@@ -7404,7 +7410,7 @@ class BrowseFilterComponent {
7404
7410
  }
7405
7411
  axesChange(axes) {
7406
7412
  const value = Object.assign(Object.assign({}, this.form.value), axes);
7407
- cleanup(value);
7413
+ cleanup$1(value);
7408
7414
  this.valuesChange.emit(value);
7409
7415
  }
7410
7416
  toggleTag(tag) {
@@ -8660,12 +8666,17 @@ function assign(model1, model2) {
8660
8666
  }
8661
8667
 
8662
8668
  class FormRef {
8663
- constructor( /*private _router: RouterImpl*/) {
8669
+ constructor(/*private _router: RouterImpl*/ _configuration) {
8670
+ this._configuration = _configuration;
8664
8671
  this._saving = new Subject();
8665
8672
  this._stateChange = new Subject();
8666
8673
  this._modelChange = new Subject();
8667
8674
  this._navigating = new Subject();
8668
8675
  }
8676
+ /** configuration options */
8677
+ get options() {
8678
+ return this._configuration.options || {};
8679
+ }
8669
8680
  /** intercept save */
8670
8681
  get saving() {
8671
8682
  return this._saving.asObservable();
@@ -8966,7 +8977,7 @@ class ComposeFormComponent {
8966
8977
  if (!this.form.template)
8967
8978
  throw (`Form '${this.form.name}' model missing '[Template()]' attribute.`);
8968
8979
  const factory = this._cf.resolve(this.form.template);
8969
- this._formRef = new FormRef();
8980
+ this._formRef = new FormRef(this.form);
8970
8981
  this._formRef._navigating.
8971
8982
  subscribe(p => this.page = p);
8972
8983
  this._formRef._stateChange.pipe(startWith()).
@@ -13175,7 +13186,7 @@ class ReportArgumentsComponent {
13175
13186
  form.patchValue(this.args, { emitEvent: false });
13176
13187
  form.valueChanges.pipe(debounceTime(ARGUMENTS_DEBOUNCE), takeUntil(this._destroy)).subscribe(c => {
13177
13188
  if (form.valid) {
13178
- cleanup(c);
13189
+ cleanup$1(c);
13179
13190
  this.args = c;
13180
13191
  this.argsChange.emit(c);
13181
13192
  }
@@ -13391,7 +13402,7 @@ class WorkflowNodeComponent {
13391
13402
  connector.addInfo = this.connector.getRawValue();
13392
13403
  else
13393
13404
  Object.assign(connector.addInfo, this.connector.getRawValue());
13394
- cleanup(connector.addInfo);
13405
+ cleanup$1(connector.addInfo);
13395
13406
  if (connector.annotations.length) {
13396
13407
  connector.annotations[0].content = content;
13397
13408
  this.diagram.dataBind();
@@ -13433,7 +13444,7 @@ class WorkflowNodeComponent {
13433
13444
  }]);
13434
13445
  }
13435
13446
  Object.assign(addInfo, m);
13436
- cleanup(addInfo);
13447
+ cleanup$1(addInfo);
13437
13448
  this.change.emit();
13438
13449
  }
13439
13450
  if (tool.template) {
@@ -13574,8 +13585,8 @@ function paletteIconClick() {
13574
13585
  /** workflow component*/
13575
13586
  class WorkflowComponent {
13576
13587
  /** workflow ctor */
13577
- constructor(ps, _service, _pane, _router, _session, _translate) {
13578
- this.ps = ps;
13588
+ constructor(_ps, _service, _pane, _router, _session, _translate) {
13589
+ this._ps = _ps;
13579
13590
  this._service = _service;
13580
13591
  this._pane = _pane;
13581
13592
  this._router = _router;
@@ -14068,9 +14079,9 @@ class WorkflowComponent {
14068
14079
  this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version');
14069
14080
  this.saving = true;
14070
14081
  return this._service.save(this._form).toPromise().then(v => {
14071
- this.ps.toast('ChangesSaved');
14082
+ this._ps.toast('ChangesSaved');
14072
14083
  if (this._form.workflow.version < v) {
14073
- this.ps.toast('DiagramVersion', v);
14084
+ this._ps.toast('DiagramVersion', v);
14074
14085
  const node = this.diagram.getNodeObject('version');
14075
14086
  node.shape.content = this._translate.get('DiagramVersion', v);
14076
14087
  this.diagram.dataBind();
@@ -14079,7 +14090,7 @@ class WorkflowComponent {
14079
14090
  this.dirty = false;
14080
14091
  this.saving = false;
14081
14092
  }, () => {
14082
- this.ps.error();
14093
+ this._ps.error();
14083
14094
  this.saving = false;
14084
14095
  });
14085
14096
  }
@@ -15400,7 +15411,7 @@ class VersionCompareComponent {
15400
15411
  const componentFactory = this._cf.resolve(this._form.template);
15401
15412
  const injector = Injector.create([
15402
15413
  { provide: VersionCompareComponent, useValue: this },
15403
- { provide: FormRef, useValue: new FormRef() },
15414
+ { provide: FormRef, useValue: new FormRef(this._form) },
15404
15415
  { provide: DOCUMENT_MODEL, useValue: this.model }
15405
15416
  ], this._injector);
15406
15417
  this._container.clear();
@@ -17816,7 +17827,7 @@ class DocumentInfoComponent {
17816
17827
  ngOnChanges(_) {
17817
17828
  const form = this._session.profile.forms.find(f => f.name === this.model.formId);
17818
17829
  this._formRef && this._formRef._destroy();
17819
- this._formRef = new FormRef();
17830
+ this._formRef = new FormRef(form);
17820
17831
  const factory = this._cf.resolve(form.template);
17821
17832
  const injector = Injector.create([{
17822
17833
  provide: DOCUMENT_MODEL, useValue: this.model
@@ -20063,10 +20074,10 @@ class ComposeMenuComponent {
20063
20074
  }
20064
20075
  }
20065
20076
  ComposeMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ComposeMenuComponent, deps: [{ token: SessionService }, { token: MailboxService }, { token: PromptService }, { token: PanesRouter }], target: i0.ɵɵFactoryTarget.Component });
20066
- ComposeMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: { change: "change" }, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"working ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <span class=\"mat-subheader\">BizDoc</span>\r\n <h1 class=\"mat-display-1\">{{'New'|translate}}</h1>\r\n\r\n <mat-nav-list>\r\n <mat-list-item *ngFor=\"let f of forms\" (click)=\"create(f.name)\" [attr.data-help]=\"f.name + '-form'\">\r\n <mat-icon matListIcon>{{f.icon}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n <!--<mat-spinner radius=\"25\" *ngIf=\"creating===f.name\"></mat-spinner>-->\r\n </mat-list-item>\r\n </mat-nav-list>\r\n</div>\r\n", styles: ["h1{margin:0 16px}form{padding:8px}hr{opacity:.4}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i4$5.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i4$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i4$5.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [] });
20077
+ ComposeMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: { change: "change" }, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"working ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <span class=\"mat-subheader\">BizDoc</span>\r\n <h1 class=\"mat-display-1\">{{'New'|translate}}</h1>\r\n\r\n <mat-nav-list>\r\n <mat-list-item *ngFor=\"let f of forms\" (click)=\"create(f.name)\" [attr.data-help]=\"f.name + '-form'\">\r\n <mat-icon matListIcon>{{f.icon || 'description'}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n <!--<mat-spinner radius=\"25\" *ngIf=\"creating===f.name\"></mat-spinner>-->\r\n </mat-list-item>\r\n </mat-nav-list>\r\n</div>\r\n", styles: ["h1{margin:0 16px}form{padding:8px}hr{opacity:.4}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i4$5.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i4$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i4$5.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [] });
20067
20078
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ComposeMenuComponent, decorators: [{
20068
20079
  type: Component,
20069
- args: [{ selector: 'bizdoc-new-menu', animations: [], template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"working ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <span class=\"mat-subheader\">BizDoc</span>\r\n <h1 class=\"mat-display-1\">{{'New'|translate}}</h1>\r\n\r\n <mat-nav-list>\r\n <mat-list-item *ngFor=\"let f of forms\" (click)=\"create(f.name)\" [attr.data-help]=\"f.name + '-form'\">\r\n <mat-icon matListIcon>{{f.icon}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n <!--<mat-spinner radius=\"25\" *ngIf=\"creating===f.name\"></mat-spinner>-->\r\n </mat-list-item>\r\n </mat-nav-list>\r\n</div>\r\n", styles: ["h1{margin:0 16px}form{padding:8px}hr{opacity:.4}\n"] }]
20080
+ args: [{ selector: 'bizdoc-new-menu', animations: [], template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"working ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <span class=\"mat-subheader\">BizDoc</span>\r\n <h1 class=\"mat-display-1\">{{'New'|translate}}</h1>\r\n\r\n <mat-nav-list>\r\n <mat-list-item *ngFor=\"let f of forms\" (click)=\"create(f.name)\" [attr.data-help]=\"f.name + '-form'\">\r\n <mat-icon matListIcon>{{f.icon || 'description'}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n <!--<mat-spinner radius=\"25\" *ngIf=\"creating===f.name\"></mat-spinner>-->\r\n </mat-list-item>\r\n </mat-nav-list>\r\n</div>\r\n", styles: ["h1{margin:0 16px}form{padding:8px}hr{opacity:.4}\n"] }]
20070
20081
  }], ctorParameters: function () { return [{ type: SessionService }, { type: MailboxService }, { type: PromptService }, { type: PanesRouter }]; }, propDecorators: { change: [{
20071
20082
  type: Output
20072
20083
  }] } });
@@ -20357,10 +20368,10 @@ class FormSelectorSheet {
20357
20368
  }
20358
20369
  }
20359
20370
  FormSelectorSheet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormSelectorSheet, deps: [{ token: i2$3.MatDialog }, { token: i2$5.MatBottomSheetRef }, { token: PromptService }, { token: MailboxService }, { token: i1$3.Router }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Component });
20360
- FormSelectorSheet.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: FormSelectorSheet, selector: "bizdoc-form-selector", ngImport: i0, template: "<mat-nav-list role=\"list\">\r\n <a mat-list-item role=\"listitem\" *ngFor=\"let f of forms\" (click)=\"open(f.name)\">\r\n <div matLine>{{f.title}}</div>\r\n <mat-icon>{{f.icon}}</mat-icon>\r\n </a>\r\n <mat-divider></mat-divider>\r\n <a mat-list-item role=\"listitem\" (click)=\"copy($event)\">\r\n <div matLine>{{'Elipsis'| translate: ('Copy' | translate)}}</div>\r\n </a>\r\n</mat-nav-list>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i4$5.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i4$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
20371
+ FormSelectorSheet.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: FormSelectorSheet, selector: "bizdoc-form-selector", ngImport: i0, template: "<mat-nav-list role=\"list\">\r\n <a mat-list-item role=\"listitem\" *ngFor=\"let f of forms\" (click)=\"open(f.name)\">\r\n <div matLine>{{f.title}}</div>\r\n <mat-icon>{{f.icon || 'description'}}</mat-icon>\r\n </a>\r\n <mat-divider></mat-divider>\r\n <a mat-list-item role=\"listitem\" (click)=\"copy($event)\">\r\n <div matLine>{{'Elipsis'| translate: ('Copy' | translate)}}</div>\r\n </a>\r\n</mat-nav-list>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i4$5.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i4$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
20361
20372
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormSelectorSheet, decorators: [{
20362
20373
  type: Component,
20363
- args: [{ selector: 'bizdoc-form-selector', template: "<mat-nav-list role=\"list\">\r\n <a mat-list-item role=\"listitem\" *ngFor=\"let f of forms\" (click)=\"open(f.name)\">\r\n <div matLine>{{f.title}}</div>\r\n <mat-icon>{{f.icon}}</mat-icon>\r\n </a>\r\n <mat-divider></mat-divider>\r\n <a mat-list-item role=\"listitem\" (click)=\"copy($event)\">\r\n <div matLine>{{'Elipsis'| translate: ('Copy' | translate)}}</div>\r\n </a>\r\n</mat-nav-list>\r\n" }]
20374
+ args: [{ selector: 'bizdoc-form-selector', template: "<mat-nav-list role=\"list\">\r\n <a mat-list-item role=\"listitem\" *ngFor=\"let f of forms\" (click)=\"open(f.name)\">\r\n <div matLine>{{f.title}}</div>\r\n <mat-icon>{{f.icon || 'description'}}</mat-icon>\r\n </a>\r\n <mat-divider></mat-divider>\r\n <a mat-list-item role=\"listitem\" (click)=\"copy($event)\">\r\n <div matLine>{{'Elipsis'| translate: ('Copy' | translate)}}</div>\r\n </a>\r\n</mat-nav-list>\r\n" }]
20364
20375
  }], ctorParameters: function () { return [{ type: i2$3.MatDialog }, { type: i2$5.MatBottomSheetRef }, { type: PromptService }, { type: MailboxService }, { type: i1$3.Router }, { type: SessionService }]; } });
20365
20376
 
20366
20377
  class ChatComponent {
@@ -24853,7 +24864,6 @@ class ColorPicker {
24853
24864
  this.Object = Object;
24854
24865
  this._required = false;
24855
24866
  this._disabled = false;
24856
- this._opened = false;
24857
24867
  this.stateChanges = new Subject();
24858
24868
  this.valueChanges = new Subject();
24859
24869
  this.id = `color-picker-${ColorPicker.nextId++}`;
@@ -24899,7 +24909,7 @@ class ColorPicker {
24899
24909
  }
24900
24910
  get disabled() { return this._disabled; }
24901
24911
  set disabled(value) {
24902
- this._trigger.disabled = this._disabled = value;
24912
+ this._disabled = value;
24903
24913
  this.stateChanges.next();
24904
24914
  }
24905
24915
  setDescribedByIds(ids) {
@@ -24907,21 +24917,20 @@ class ColorPicker {
24907
24917
  }
24908
24918
  onContainerClick(_event) {
24909
24919
  this._onTouched && this._onTouched();
24910
- !this._opened && this.open();
24920
+ this.open();
24911
24921
  }
24912
24922
  ngOnDestroy() {
24913
24923
  this._destroy.next();
24924
+ this._destroy.complete();
24914
24925
  }
24915
24926
  open() {
24916
24927
  if (!this._overlayRef)
24917
24928
  this._overlayRef = this._createOverlay();
24918
24929
  const portal = new TemplatePortal(this._colorPalette, this._vc);
24919
24930
  this._overlayRef.attach(portal);
24920
- this._opened = true;
24921
24931
  }
24922
24932
  close() {
24923
24933
  this._overlayRef.detach();
24924
- this._opened = false;
24925
24934
  }
24926
24935
  _pick(color) {
24927
24936
  this.value = color;
@@ -24950,34 +24959,14 @@ class ColorPicker {
24950
24959
  }
24951
24960
  ColorPicker.nextId = 0;
24952
24961
  ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ColorPicker, deps: [{ token: i2$1.NgControl, optional: true, self: true }, { token: i1$2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i3$3.Directionality }], target: i0.ɵɵFactoryTarget.Component });
24953
- ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ColorPicker, selector: "bizdoc-color-picker", inputs: { label: "label", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_trigger", first: true, predicate: MatButton, descendants: true, static: true }, { propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `<button mat-button (click)='open()'>
24954
- <span>{{label}}</span>
24955
- <mat-icon>arrow_drop_down</mat-icon>
24956
- </button>
24957
- <ng-template>
24958
- <div class="color-palette">
24959
- <div *ngFor='let p of Object.keys(_palettes)' class="color-container">
24960
- <span *ngFor='let c of Object.keys(_palettes[p])' (click)='_pick(_palettes[p][c])' [style.background-color]='_palettes[p][c]' class="color-item"></span>
24961
- </div>
24962
- </div>
24963
- </ng-template>`, isInline: true, styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i9.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"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
24962
+ ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ColorPicker, selector: "bizdoc-color-picker", inputs: { label: "label", value: "value", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<button mat-button (click)='open()' [disabled]=\"disabled\">\r\n <span>{{label}}</span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n</button>\r\n<ng-template>\r\n <div class=\"color-palette\">\r\n <div *ngFor='let p of Object.keys(_palettes)' class=\"color-container\">\r\n <span *ngFor='let c of Object.keys(_palettes[p])' (click)='_pick(_palettes[p][c])' [style.background-color]='_palettes[p][c]' class=\"color-item\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i9.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"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
24964
24963
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ColorPicker, decorators: [{
24965
24964
  type: Component,
24966
- args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], template: `<button mat-button (click)='open()'>
24967
- <span>{{label}}</span>
24968
- <mat-icon>arrow_drop_down</mat-icon>
24969
- </button>
24970
- <ng-template>
24971
- <div class="color-palette">
24972
- <div *ngFor='let p of Object.keys(_palettes)' class="color-container">
24973
- <span *ngFor='let c of Object.keys(_palettes[p])' (click)='_pick(_palettes[p][c])' [style.background-color]='_palettes[p][c]' class="color-item"></span>
24974
- </div>
24975
- </div>
24976
- </ng-template>`, host: {
24965
+ args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], host: {
24977
24966
  '[class.floating]': 'shouldLabelFloat',
24978
24967
  '[id]': 'id',
24979
24968
  '[attr.aria-describedby]': 'describedBy'
24980
- }, styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"] }]
24969
+ }, template: "<button mat-button (click)='open()' [disabled]=\"disabled\">\r\n <span>{{label}}</span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n</button>\r\n<ng-template>\r\n <div class=\"color-palette\">\r\n <div *ngFor='let p of Object.keys(_palettes)' class=\"color-container\">\r\n <span *ngFor='let c of Object.keys(_palettes[p])' (click)='_pick(_palettes[p][c])' [style.background-color]='_palettes[p][c]' class=\"color-item\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"] }]
24981
24970
  }], ctorParameters: function () {
24982
24971
  return [{ type: i2$1.NgControl, decorators: [{
24983
24972
  type: Optional
@@ -24986,6 +24975,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
24986
24975
  }] }, { type: i1$2.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i3$3.Directionality }];
24987
24976
  }, propDecorators: { label: [{
24988
24977
  type: Input
24978
+ }], value: [{
24979
+ type: Input
24989
24980
  }], valueChanges: [{
24990
24981
  type: Output
24991
24982
  }], id: [{
@@ -25000,9 +24991,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
25000
24991
  }], describedBy: [{
25001
24992
  type: HostBinding,
25002
24993
  args: ['attr.aria-describedby']
25003
- }], _trigger: [{
25004
- type: ViewChild,
25005
- args: [MatButton, { static: true }]
25006
24994
  }], _colorPalette: [{
25007
24995
  type: ViewChild,
25008
24996
  args: [TemplateRef, { static: true }]
@@ -27772,12 +27760,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
27772
27760
  args: ['nameInput', { static: true, read: ElementRef }]
27773
27761
  }] } });
27774
27762
 
27763
+ let BoxFormComponent = class BoxFormComponent {
27764
+ constructor(_fb, ref) {
27765
+ this._fb = _fb;
27766
+ this.metadata = ref.options;
27767
+ const content = this._fb.group({});
27768
+ this.form = _fb.group({ content });
27769
+ this.metadata.sections.forEach(s => {
27770
+ const group = _fb.group({});
27771
+ s.rows.forEach(r => r.fields.forEach(f => group.addControl(f.name, _fb.control(null, f.required ? Validators.required : null))));
27772
+ content.addControl(s.name, group);
27773
+ });
27774
+ }
27775
+ onBind(data, version) {
27776
+ this.data = data;
27777
+ }
27778
+ };
27779
+ BoxFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BoxFormComponent, deps: [{ token: i2$1.FormBuilder }, { token: FormRef }], target: i0.ɵɵFactoryTarget.Component });
27780
+ BoxFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: BoxFormComponent, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\">\r\n <section *ngFor=\"let s of metadata.sections\" [formGroupName]=\"s.name\">\r\n <div *ngFor=\"let r of s.rows\" fxLayout=\"row\">\r\n <ng-container *ngFor=\"let f of r.fields\" [ngSwitch]=\"f.kind\">\r\n <mat-form-field *ngSwitchCase=\"'Select'\" appearance=\"outline\">\r\n <mat-label>{{f.label}}</mat-label>\r\n <bizdoc-select [type]=\"f.dataType\" [formControlName]=\"f.name\" [required]=\"f.required\"></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Date'\" appearance=\"outline\">\r\n <mat-label>{{f.label}}</mat-label>\r\n <input matInput\r\n [formControlName]=\"f.name\"\r\n [required]=\"f.required\"\r\n [min]=\"f.min\"\r\n [max]=\"f.max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Text'\" appearance=\"outline\">\r\n <mat-label>{{f.label}}</mat-label>\r\n <textarea matInput [formControl]=control cdkTextareaAutosize\r\n [formControlName]=\"f.name\"\r\n [required]=\"field.required\" [minlength]=\"field.min\" [maxlength]=\"field.max\"></textarea>\r\n </mat-form-field>\r\n <mat-checkbox [formControlName]=\"f.name\" *ngSwitchCase=\"'Checkbox'\">{{f.label}}</mat-checkbox>\r\n <mat-slide-toggle [formControlName]=\"f.name\" *ngSwitchCase=\"'Switch'\">{{f.label}}</mat-slide-toggle>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchDefault>\r\n <mat-label>{{f.label}}</mat-label>\r\n <input matInput [required]=\"f.required\" [formControlName]=\"f.name\" />\r\n </mat-form-field>\r\n &nbsp;\r\n </ng-container>\r\n </div>\r\n </section>\r\n</form>\r\n", styles: ["form{padding:8px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.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"] }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i4$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i9$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i10$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }] });
27781
+ BoxFormComponent = __decorate([
27782
+ BizDoc({ selector: 'bizdoc-box-form' })
27783
+ ], BoxFormComponent);
27784
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BoxFormComponent, decorators: [{
27785
+ type: Component,
27786
+ args: [{ template: "<form [formGroup]=\"form\" autocomplete=\"off\">\r\n <section *ngFor=\"let s of metadata.sections\" [formGroupName]=\"s.name\">\r\n <div *ngFor=\"let r of s.rows\" fxLayout=\"row\">\r\n <ng-container *ngFor=\"let f of r.fields\" [ngSwitch]=\"f.kind\">\r\n <mat-form-field *ngSwitchCase=\"'Select'\" appearance=\"outline\">\r\n <mat-label>{{f.label}}</mat-label>\r\n <bizdoc-select [type]=\"f.dataType\" [formControlName]=\"f.name\" [required]=\"f.required\"></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Date'\" appearance=\"outline\">\r\n <mat-label>{{f.label}}</mat-label>\r\n <input matInput\r\n [formControlName]=\"f.name\"\r\n [required]=\"f.required\"\r\n [min]=\"f.min\"\r\n [max]=\"f.max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Text'\" appearance=\"outline\">\r\n <mat-label>{{f.label}}</mat-label>\r\n <textarea matInput [formControl]=control cdkTextareaAutosize\r\n [formControlName]=\"f.name\"\r\n [required]=\"field.required\" [minlength]=\"field.min\" [maxlength]=\"field.max\"></textarea>\r\n </mat-form-field>\r\n <mat-checkbox [formControlName]=\"f.name\" *ngSwitchCase=\"'Checkbox'\">{{f.label}}</mat-checkbox>\r\n <mat-slide-toggle [formControlName]=\"f.name\" *ngSwitchCase=\"'Switch'\">{{f.label}}</mat-slide-toggle>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchDefault>\r\n <mat-label>{{f.label}}</mat-label>\r\n <input matInput [required]=\"f.required\" [formControlName]=\"f.name\" />\r\n </mat-form-field>\r\n &nbsp;\r\n </ng-container>\r\n </div>\r\n </section>\r\n</form>\r\n", styles: ["form{padding:8px}\n"] }]
27787
+ }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: FormRef }]; } });
27788
+
27775
27789
  /** configuration componenets */
27776
27790
  const CORE_COMPONENTS = [CubePerformanceWidget, CubeParallelViewComponent, CubeExploreViewComponent, CubeChartViewComponent, CubeDocumentSumComponent, CubeDocumentMatrixComponent, CubeDocumentViewComponent, CubePivotViewComponent, TimelineViewComponent,
27777
27791
  SubstitutionComponent, MoveToActionComponent, AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
27778
27792
  ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
27779
27793
  CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27780
- CubeDocumentsComponent, TasksComponent, UsageReportArgs, CubeUsageComponent
27794
+ CubeDocumentsComponent, TasksComponent, UsageReportArgs, CubeUsageComponent, BoxFormComponent
27781
27795
  ];
27782
27796
  /** common BizDoc components */
27783
27797
  class SharedModule {
@@ -27808,7 +27822,7 @@ class SharedModule {
27808
27822
  }
27809
27823
  }
27810
27824
  SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27811
- SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: SharedModule, declarations: [HelpTipComponent,
27825
+ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: SharedModule, declarations: [HelpTipComponent, BoxFormComponent,
27812
27826
  CubeUsageComponent,
27813
27827
  CubeDocumentsComponent,
27814
27828
  DateFormatPipe, CalendarPipe, DifferencePipe, DurationPipe, TimeAgoPipe,
@@ -27976,7 +27990,7 @@ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
27976
27990
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SharedModule, decorators: [{
27977
27991
  type: NgModule,
27978
27992
  args: [{
27979
- declarations: [HelpTipComponent,
27993
+ declarations: [HelpTipComponent, BoxFormComponent,
27980
27994
  CubeUsageComponent,
27981
27995
  CubeDocumentsComponent,
27982
27996
  DateFormatPipe, CalendarPipe, DifferencePipe, DurationPipe, TimeAgoPipe,
@@ -30665,6 +30679,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
30665
30679
  args: ['window:keydown.f1', ['$event']]
30666
30680
  }] } });
30667
30681
 
30682
+ //export const ICONS = ['10k', '10k', '10mp', '10mp', '11mp', '11mp', '123', '123', '12mp', '12mp', '13mp', '13mp', '14mp', '14mp', '15mp', '15mp', '16mp', '16mp', '17mp', '17mp', '18_up_rating', '18_up_rating', '18mp', '18mp', '19mp', '19mp', '1k', '1k', '1k_plus', '1k_plus', '1x_mobiledata', '1x_mobiledata', '20mp', '20mp', '21mp', '21mp', '22mp', '22mp', '23mp', '23mp', '24mp', '24mp', '2k', '2k', '2k_plus', '2k_plus', '2mp', '2mp', '30fps', '30fps', '30fps_select', '30fps_select', '360', '360', '3d_rotation', '3d_rotation', '3g_mobiledata', '3g_mobiledata', '3k', '3k', '3k_plus', '3k_plus', '3mp', '3mp', '3p', '3p', '4g_mobiledata', '4g_mobiledata', '4g_plus_mobiledata', '4g_plus_mobiledata', '4k', '4k', '4k_plus', '4k_plus',
30683
+ // '4mp', '4mp', '5g', '5g', '5k', '5k', '5k_plus', '5k_plus', '5mp', '5mp', '60fps', '60fps', '60fps_select', '60fps_select', '6_ft_apart', '6_ft_apart', '6k', '6k', '6k_plus', '6k_plus', '6mp', '6mp', '7k', '7k', '7k_plus', '7k_plus', '7mp', '7mp', '8k', '8k', '8k_plus', '8k_plus', '8mp', '8mp', '9k', '9k', '9k_plus', '9k_plus', '9mp', '9mp', 'abc', 'abc', 'ac_unit', 'ac_unit', 'access_alarm', 'access_alarms', 'access_time', 'access_time_filled', 'accessibility', 'accessibility', 'accessibility_new', 'accessibility_new', 'accessible', 'accessible', 'accessible_forward', 'accessible_forward', 'account_balance', 'account_balance', 'account_balance_wallet', 'account_balance_wallet', 'account_box', 'account_box', 'account_circle', 'account_circle', 'account_tree', 'account_tree', 'activity_zone', 'ad_units', 'ad_units', 'adb', 'adb', 'add', 'add', 'add_a_photo', 'add_a_photo', 'add_alarm', 'add_alert', 'add_alert', 'add_box', 'add_box', 'add_business', 'add_business', 'add_call', 'add_call', 'add_card', 'add_card', 'add_chart', 'add_chart', 'add_circle', 'add_circle', 'add_circle_outline', 'add_comment', 'add_comment', 'add_home', 'add_home', 'add_home_work', 'add_home_work', 'add_ic_call', 'add_link', 'add_link', 'add_location', 'add_location', 'add_location_alt', 'add_location_alt', 'add_moderator', 'add_moderator', 'add_photo_alternate', 'add_photo_alternate', 'add_reaction', 'add_reaction', 'add_road', 'add_road', 'add_shopping_cart', 'add_shopping_cart', 'add_task', 'add_task', 'add_to_drive', 'add_to_drive', 'add_to_home_screen', 'add_to_home_screen', 'add_to_photos', 'add_to_photos', 'add_to_queue', 'add_to_queue', 'addchart', 'adf_scanner', 'adf_scanner', 'adjust', 'adjust', 'admin_panel_settings', 'admin_panel_settings', 'ads_click', 'ads_click', 'agender', 'agriculture', 'agriculture', 'air', 'air', 'air_freshener', 'air_purifier_gen', 'airline_seat_flat', 'airline_seat_flat', 'airline_seat_flat_angled', 'airline_seat_flat_angled', 'airline_seat_individual_suite', 'airline_seat_individual_suite', 'airline_seat_legroom_extra', 'airline_seat_legroom_extra', 'airline_seat_legroom_normal', 'airline_seat_legroom_normal', 'airline_seat_legroom_reduced', 'airline_seat_legroom_reduced', 'airline_seat_recline_extra', 'airline_seat_recline_extra', 'airline_seat_recline_normal', 'airline_seat_recline_normal', 'airline_stops', 'airline_stops', 'airlines', 'airlines', 'airplane_ticket', 'airplane_ticket', 'airplanemode_active', 'airplanemode_active', 'airplanemode_inactive', 'airplanemode_inactive', 'airplay', 'airplay', 'airport_shuttle', 'airport_shuttle', 'airware', 'airwave', 'alarm', 'alarm', 'alarm_add', 'alarm_add', 'alarm_off', 'alarm_off', 'alarm_on', 'alarm_on', 'album', 'album', 'align_horizontal_center', 'align_horizontal_center', 'align_horizontal_left', 'align_horizontal_left', 'align_horizontal_right', 'align_horizontal_right', 'align_vertical_bottom', 'align_vertical_bottom', 'align_vertical_center', 'align_vertical_center', 'align_vertical_top', 'align_vertical_top', 'all_inbox', 'all_inbox', 'all_inclusive', 'all_inclusive', 'all_out', 'all_out', 'alt_route', 'alt_route', 'alternate_email', 'alternate_email', 'amp_stories', 'analytics', 'analytics', 'anchor', 'anchor', 'android', 'android', 'animation', 'animation', 'announcement', 'aod', 'aod', 'aod_tablet', 'apartment', 'apartment', 'api', 'api', 'apk_document', 'apk_install', 'app_blocking', 'app_blocking', 'app_registration', 'app_registration', 'app_settings_alt', 'app_shortcut', 'app_shortcut', 'approval', 'approval', 'apps', 'apps', 'apps_outage', 'apps_outage', 'architecture', 'architecture', 'archive', 'archive', 'area_chart', 'area_chart', 'arming_countdown', 'arrow_back', 'arrow_back', 'arrow_back_ios', 'arrow_back_ios', 'arrow_back_ios_new', 'arrow_back_ios_new', 'arrow_circle_down', 'arrow_circle_down', 'arrow_circle_left', 'arrow_circle_left', 'arrow_circle_right', 'arrow_circle_right', 'arrow_circle_up', 'arrow_circle_up', 'arrow_downward', 'arrow_downward', 'arrow_drop_down', 'arrow_drop_down', 'arrow_drop_down_circle', 'arrow_drop_down_circle', 'arrow_drop_up', 'arrow_drop_up', 'arrow_forward', 'arrow_forward', 'arrow_forward_ios', 'arrow_forward_ios', 'arrow_left', 'arrow_left', 'arrow_outward', 'arrow_outward', 'arrow_right', 'arrow_right', 'arrow_right_alt', 'arrow_right_alt', 'arrow_upward', 'arrow_upward', 'arrows_more_down', 'arrows_more_up', 'art_track', 'art_track', 'article', 'article', 'aspect_ratio', 'aspect_ratio', 'assessment', 'assignment', 'assignment', 'assignment_ind', 'assignment_ind', 'assignment_late', 'assignment_late', 'assignment_return', 'assignment_return', 'assignment_returned', 'assignment_returned', 'assignment_turned_in', 'assignment_turned_in', 'assist_walker', 'assist_walker', 'assistant', 'assistant', 'assistant_direction', 'assistant_direction', 'assistant_navigation', 'assistant_navigation', 'assistant_photo', 'assured_workload', 'assured_workload', 'astrophotography_auto', 'astrophotography_off', 'atm', 'atm', 'atr', 'attach_email', 'attach_email', 'attach_file', 'attach_file', 'attach_money', 'attach_money', 'attachment', 'attachment', 'attractions', 'attractions', 'attribution', 'attribution', 'audio_file', 'audio_file', 'audiotrack', 'auto_activity_zone', 'auto_awesome', 'auto_awesome', 'auto_awesome_mosaic', 'auto_awesome_mosaic', 'auto_awesome_motion', 'auto_awesome_motion', 'auto_delete', 'auto_delete', 'auto_fix_high', 'auto_fix_normal', 'auto_fix_off', 'auto_graph', 'auto_graph', 'auto_mode', 'auto_mode', 'auto_read_pause', 'auto_read_play', 'auto_schedule', 'auto_stories', 'auto_stories', 'autofps_select', 'autofps_select', 'autorenew', 'autorenew', 'av_timer', 'av_timer', 'baby_changing_station', 'baby_changing_station', 'back_hand', 'back_hand', 'background_replace', 'backpack', 'backpack', 'backspace', 'backspace', 'backup', 'backup', 'backup_table', 'backup_table', 'badge', 'badge', 'badge_critical_battery', 'bakery_dining', 'bakery_dining', 'balance', 'balance', 'balcony', 'balcony', 'ballot', 'ballot', 'bar_chart', 'bar_chart', 'barcode', 'barcode_scanner', 'batch_prediction', 'batch_prediction', 'bathroom', 'bathroom', 'bathtub', 'bathtub', 'battery_0_bar', 'battery_0_bar', 'battery_1_bar', 'battery_1_bar', 'battery_20', 'battery_20', 'battery_2_bar', 'battery_2_bar', 'battery_30', 'battery_30', 'battery_3_bar', 'battery_3_bar', 'battery_4_bar', 'battery_4_bar', 'battery_50', 'battery_50', 'battery_5_bar', 'battery_5_bar', 'battery_60', 'battery_60', 'battery_6_bar', 'battery_6_bar', 'battery_80', 'battery_80', 'battery_90', 'battery_90', 'battery_alert', 'battery_alert', 'battery_charging_20', 'battery_charging_20', 'battery_charging_30', 'battery_charging_30', 'battery_charging_50', 'battery_charging_50', 'battery_charging_60', 'battery_charging_60', 'battery_charging_80', 'battery_charging_80', 'battery_charging_90', 'battery_charging_90', 'battery_charging_full', 'battery_charging_full', 'battery_full', 'battery_full', 'battery_full_alt', 'battery_horiz_000', 'battery_horiz_050', 'battery_horiz_075', 'battery_low', 'battery_profile', 'battery_saver', 'battery_saver', 'battery_std', 'battery_unknown', 'battery_unknown', 'battery_vert_005', 'battery_vert_020', 'battery_vert_050', 'battery_very_low', 'beach_access', 'beach_access', 'bed', 'bed', 'bedroom_baby', 'bedroom_baby', 'bedroom_child', 'bedroom_child', 'bedroom_parent', 'bedroom_parent', 'bedtime', 'bedtime', 'bedtime_off', 'bedtime_off', 'beenhere', 'beenhere', 'bento', 'bento', 'bike_scooter', 'bike_scooter', 'biotech', 'biotech', 'blanket', 'blender', 'blender', 'blind', 'blind', 'blinds', 'blinds', 'blinds_closed', 'blinds_closed', 'block', 'block', 'block_flipped', 'bloodtype', 'bloodtype', 'bluetooth', 'bluetooth', 'bluetooth_audio', 'bluetooth_connected', 'bluetooth_connected', 'bluetooth_disabled', 'bluetooth_disabled', 'bluetooth_drive', 'bluetooth_drive', 'bluetooth_searching', 'bluetooth_searching', 'blur_circular', 'blur_circular', 'blur_linear', 'blur_linear', 'blur_medium', 'blur_off', 'blur_off', 'blur_on', 'blur_on', 'blur_short', 'bolt', 'bolt', 'book', 'book', 'book_online', 'book_online', 'bookmark', 'bookmark', 'bookmark_add', 'bookmark_add', 'bookmark_added', 'bookmark_added', 'bookmark_border', 'bookmark_remove', 'bookmark_remove', 'bookmarks', 'bookmarks', 'border_all', 'border_all', 'border_bottom', 'border_bottom', 'border_clear', 'border_clear', 'border_color', 'border_color', 'border_horizontal', 'border_horizontal', 'border_inner', 'border_inner', 'border_left', 'border_left', 'border_outer', 'border_outer', 'border_right', 'border_right', 'border_style', 'border_style', 'border_top', 'border_top', 'border_vertical', 'border_vertical', 'boy', 'boy', 'branding_watermark', 'branding_watermark', 'breakfast_dining', 'breakfast_dining', 'breaking_news_alt_1', 'brightness_1', 'brightness_1', 'brightness_2', 'brightness_2', 'brightness_3', 'brightness_3', 'brightness_4', 'brightness_4', 'brightness_5', 'brightness_5', 'brightness_6', 'brightness_6', 'brightness_7', 'brightness_7', 'brightness_auto', 'brightness_auto', 'brightness_high', 'brightness_high', 'brightness_low', 'brightness_low', 'brightness_medium', 'brightness_medium', 'bring_your_own_ip', 'broadcast_on_home', 'broadcast_on_home', 'broadcast_on_personal', 'broadcast_on_personal', 'broken_image', 'broken_image', 'browse_activity', 'browse_gallery', 'browse_gallery', 'browser_not_supported', 'browser_updated', 'browser_updated', 'brunch_dining', 'brunch_dining', 'brush', 'brush', 'bubble_chart', 'bubble_chart', 'bug_report', 'bug_report', 'build', 'build', 'build_circle', 'build_circle', 'bungalow', 'bungalow', 'burst_mode', 'burst_mode', 'bus_alert', 'bus_alert', 'business', 'business_center', 'business_center', 'cabin', 'cabin', 'cable', 'cable', 'cached', 'cached', 'cake', 'cake', 'calculate', 'calculate', 'calendar_add_on', 'calendar_apps_script', 'calendar_month', 'calendar_month', 'calendar_today', 'calendar_today', 'calendar_view_day', 'calendar_view_day', 'calendar_view_month', 'calendar_view_month', 'calendar_view_week', 'calendar_view_week', 'call', 'call', 'call_end', 'call_end', 'call_made', 'call_made', 'call_merge', 'call_merge', 'call_missed', 'call_missed', 'call_missed_outgoing', 'call_missed_outgoing', 'call_received', 'call_received', 'call_split', 'call_split', 'call_to_action', 'call_to_action', 'camera', 'camera', 'camera_alt', 'camera_enhance', 'camera_enhance', 'camera_front', 'camera_front', 'camera_indoor', 'camera_indoor', 'camera_outdoor', 'camera_outdoor', 'camera_rear', 'camera_rear', 'camera_roll', 'camera_roll', 'cameraswitch', 'cameraswitch', 'campaign', 'campaign', 'camping', 'cancel', 'cancel', 'cancel_presentation', 'cancel_presentation', 'cancel_schedule_send', 'cancel_schedule_send', 'candlestick_chart', 'candlestick_chart', 'car_crash', 'car_crash', 'car_rental', 'car_rental', 'car_repair', 'car_repair', 'card_giftcard', 'card_membership', 'card_membership', 'card_travel', 'card_travel', 'carpenter', 'carpenter', 'cases', 'cases', 'casino', 'casino', 'cast', 'cast', 'cast_connected', 'cast_connected', 'cast_for_education', 'cast_for_education', 'castle', 'castle', 'catching_pokemon', 'category', 'category', 'celebration', 'celebration', 'cell_tower', 'cell_tower', 'cell_wifi', 'cell_wifi', 'center_focus_strong', 'center_focus_strong', 'center_focus_weak', 'center_focus_weak', 'chair', 'chair', 'chair_alt', 'chair_alt', 'chalet', 'chalet', 'change_circle', 'change_circle', 'change_history', 'change_history', 'charger', 'charging_station', 'charging_station', 'chat', 'chat', 'chat_add_on', 'chat_apps_script', 'chat_bubble', 'chat_bubble', 'chat_bubble_outline', 'check', 'check', 'check_box', 'check_box', 'check_box_outline_blank', 'check_box_outline_blank', 'check_circle', 'check_circle', 'check_circle_outline', 'check_indeterminate_small', 'check_small', 'checklist', 'checklist', 'checklist_rtl', 'checklist_rtl', 'checkroom', 'checkroom', 'chevron_left', 'chevron_left', 'chevron_right', 'chevron_right', 'child_care', 'child_care', 'child_friendly', 'child_friendly', 'chrome_reader_mode', 'chrome_reader_mode', 'chromecast_2', 'chromecast_device', 'church', 'church', 'circle', 'circle', 'circle_notifications', 'circle_notifications', 'clarify', 'class', 'clean_hands', 'clean_hands', 'cleaning_bucket', 'cleaning_services', 'cleaning_services', 'clear', 'clear_all', 'clear_all', 'clear_day', 'clear_night', 'climate_mini_split', 'close', 'close', 'close_fullscreen', 'close_fullscreen', 'closed_caption', 'closed_caption', 'closed_caption_disabled', 'closed_caption_disabled', 'closed_caption_off', 'cloud', 'cloud', 'cloud_circle', 'cloud_circle', 'cloud_done', 'cloud_done', 'cloud_download', 'cloud_download', 'cloud_off', 'cloud_off', 'cloud_queue', 'cloud_queue', 'cloud_sync', 'cloud_sync', 'cloud_upload', 'cloud_upload', 'cloudy', 'cloudy_filled', 'cloudy_snowing', 'cloudy_snowing', 'co2', 'co2', 'co_present', 'co_present', 'code', 'code', 'code_off', 'code_off', 'coffee', 'coffee', 'coffee_maker', 'coffee_maker', 'collections', 'collections_bookmark', 'collections_bookmark', 'color_lens', 'colorize', 'colorize', 'comment', 'comment', 'comment_bank', 'comment_bank', 'comments_disabled', 'comments_disabled', 'commit', 'commit', 'communication', 'commute', 'commute', 'compare', 'compare', 'compare_arrows', 'compare_arrows', 'compass_calibration', 'compass_calibration', 'component_exchange', 'compost', 'compost', 'compress', 'compress', 'computer', 'computer', 'confirmation_number', 'confirmation_number', 'connect_without_contact', 'connect_without_contact', 'connected_tv', 'connected_tv', 'connecting_airports', 'connecting_airports', 'construction', 'construction', 'contact_emergency', 'contact_emergency', 'contact_mail', 'contact_mail', 'contact_page', 'contact_page', 'contact_phone', 'contact_phone', 'contact_support', 'contact_support', 'contactless', 'contactless', 'contacts', 'contacts', 'content_copy', 'content_copy', 'content_cut', 'content_cut', 'content_paste', 'content_paste', 'content_paste_go', 'content_paste_go', 'content_paste_off', 'content_paste_off', 'content_paste_search', 'content_paste_search', 'contrast', 'contrast', 'control_camera', 'control_camera', 'control_point', 'control_point_duplicate', 'control_point_duplicate', 'controller_gen', 'conversion_path', 'cookie', 'cookie', 'cooking', 'cool_to_dry', 'copy_all', 'copy_all', 'copyright', 'copyright', 'coronavirus', 'coronavirus', 'corporate_fare', 'corporate_fare', 'cottage', 'cottage', 'countertops', 'countertops', 'create', 'create_new_folder', 'create_new_folder', 'credit_card', 'credit_card', 'credit_card_off', 'credit_card_off', 'credit_score', 'credit_score', 'crib', 'crib', 'crisis_alert', 'crisis_alert', 'crop', 'crop', 'crop_16_9', 'crop_16_9', 'crop_3_2', 'crop_3_2', 'crop_5_4', 'crop_5_4', 'crop_7_5', 'crop_7_5', 'crop_din', 'crop_free', 'crop_free', 'crop_landscape', 'crop_landscape', 'crop_original', 'crop_portrait', 'crop_portrait', 'crop_rotate', 'crop_rotate', 'crop_square', 'crop_square', 'cruelty_free', 'cruelty_free', 'css', 'css', 'currency_bitcoin', 'currency_bitcoin', 'currency_exchange', 'currency_exchange', 'currency_franc', 'currency_franc', 'currency_lira', 'currency_lira', 'currency_pound', 'currency_pound', 'currency_ruble', 'currency_ruble', 'currency_rupee', 'currency_rupee', 'currency_yen', 'currency_yen', 'currency_yuan', 'currency_yuan', 'curtains', 'curtains', 'curtains_closed', 'curtains_closed', 'cut', 'cyclone', 'cyclone', 'dangerous', 'dangerous', 'dark_mode', 'dark_mode', 'dashboard', 'dashboard', 'dashboard_customize', 'dashboard_customize', 'data_array', 'data_array', 'data_exploration', 'data_exploration', 'data_object', 'data_object', 'data_saver_off', 'data_saver_on', 'data_saver_on', 'data_thresholding', 'data_thresholding', 'data_usage', 'data_usage', 'database', 'dataset', 'dataset', 'dataset_linked', 'dataset_linked', 'date_range', 'date_range', 'deblur', 'deblur', 'deck', 'deck', 'dehaze', 'dehaze', 'delete', 'delete', 'delete_forever', 'delete_forever', 'delete_outline', 'delete_sweep', 'delete_sweep', 'delivery_dining', 'density_large', 'density_large', 'density_medium', 'density_medium', 'density_small', 'density_small', 'dentistry', 'departure_board', 'departure_board', 'description', 'description', 'deselect', 'deselect', 'design_services', 'design_services', 'desk', 'desk', 'desktop_access_disabled', 'desktop_access_disabled', 'desktop_mac', 'desktop_mac', 'desktop_windows', 'desktop_windows', 'details', 'details', 'detection_and_zone', 'detector', 'detector_alarm', 'detector_battery', 'detector_co', 'detector_offline', 'detector_smoke', 'detector_status', 'developer_board', 'developer_board', 'developer_board_off', 'developer_board_off', 'developer_mode', 'developer_mode', 'device_hub', 'device_hub', 'device_reset', 'device_thermostat', 'device_thermostat', 'device_unknown', 'device_unknown', 'devices', 'devices', 'devices_fold', 'devices_fold', 'devices_other', 'devices_other', 'dew_point', 'dialer_sip', 'dialer_sip', 'dialpad', 'dialpad', 'diamond', 'diamond', 'difference', 'difference', 'digital_out_of_home', 'dining', 'dining', 'dinner_dining', 'dinner_dining', 'directions', 'directions', 'directions_alt', 'directions_alt_off', 'directions_bike', 'directions_bike', 'directions_boat', 'directions_boat', 'directions_boat_filled', 'directions_bus', 'directions_bus', 'directions_bus_filled', 'directions_car', 'directions_car', 'directions_car_filled', 'directions_off', 'directions_off', 'directions_railway', 'directions_railway', 'directions_railway_filled', 'directions_run', 'directions_run', 'directions_subway', 'directions_subway', 'directions_subway_filled', 'directions_transit', 'directions_transit_filled', 'directions_walk', 'directions_walk', 'dirty_lens', 'dirty_lens', 'disabled_by_default', 'disabled_by_default', 'disabled_visible', 'disabled_visible', 'disc_full', 'disc_full', 'discount', 'discover_tune', 'dishwasher_gen', 'display_settings', 'display_settings', 'diversity_1', 'diversity_1', 'diversity_2', 'diversity_2', 'diversity_3', 'diversity_3', 'dns', 'dns', 'do_disturb', 'do_disturb_alt', 'do_disturb_off', 'do_disturb_on', 'do_not_disturb', 'do_not_disturb_alt', 'do_not_disturb_off', 'do_not_disturb_off', 'do_not_disturb_on', 'do_not_disturb_on', 'do_not_disturb_on_total_silence', 'do_not_disturb_on_total_silence', 'do_not_step', 'do_not_step', 'do_not_touch', 'do_not_touch', 'dock', 'dock', 'docs_add_on', 'docs_apps_script', 'document_scanner', 'document_scanner', 'domain', 'domain', 'domain_add', 'domain_add', 'domain_disabled', 'domain_disabled', 'domain_verification', 'domain_verification', 'done', 'done', 'done_all', 'done_all', 'done_outline', 'done_outline', 'donut_large', 'donut_large', 'donut_small', 'donut_small', 'door_back', 'door_back', 'door_front', 'door_front', 'door_open', 'door_sensor', 'door_sliding', 'door_sliding', 'doorbell', 'doorbell', 'doorbell_3p', 'doorbell_chime', 'double_arrow', 'double_arrow', 'downhill_skiing', 'downhill_skiing', 'download', 'download', 'download_done', 'download_done', 'download_for_offline', 'download_for_offline', 'downloading', 'downloading', 'draft', 'drafts', 'drafts', 'drag_handle', 'drag_handle', 'drag_indicator', 'drag_indicator', 'draw', 'draw', 'dresser', 'drive_eta', 'drive_file_move', 'drive_file_move', 'drive_file_move_outline', 'drive_file_move_outline', 'drive_file_move_rtl', 'drive_file_move_rtl', 'drive_file_rename_outline', 'drive_file_rename_outline', 'drive_folder_upload', 'drive_folder_upload', 'dry', 'dry', 'dry_cleaning', 'dry_cleaning', 'duo', 'duo', 'dvr', 'dvr', 'dynamic_feed', 'dynamic_feed', 'dynamic_form', 'dynamic_form', 'e911_avatar', 'e911_emergency', 'e_mobiledata', 'e_mobiledata', 'earbuds', 'earbuds', 'earbuds_battery', 'earbuds_battery', 'early_on', 'east', 'east', 'eco', 'edgesensor_high', 'edgesensor_high', 'edgesensor_low', 'edgesensor_low', 'edit', 'edit', 'edit_attributes', 'edit_attributes', 'edit_calendar', 'edit_calendar', 'edit_document', 'edit_document', 'edit_location', 'edit_location', 'edit_location_alt', 'edit_location_alt', 'edit_note', 'edit_note', 'edit_notifications', 'edit_notifications', 'edit_off', 'edit_off', 'edit_road', 'edit_road', 'edit_square', 'edit_square', 'egg', 'egg', 'egg_alt', 'egg_alt', 'eject', 'eject', 'elderly', 'elderly', 'elderly_woman', 'elderly_woman', 'electric_bike', 'electric_bike', 'electric_bolt', 'electric_bolt', 'electric_car', 'electric_car', 'electric_meter', 'electric_meter', 'electric_moped', 'electric_moped', 'electric_rickshaw', 'electric_rickshaw', 'electric_scooter', 'electric_scooter', 'electrical_services', 'electrical_services', 'elevator', 'elevator', 'email', 'emergency', 'emergency', 'emergency_heat', 'emergency_home', 'emergency_recording', 'emergency_recording', 'emergency_share', 'emergency_share', 'emoji_emotions', 'emoji_events', 'emoji_flags', 'emoji_food_beverage', 'emoji_food_beverage', 'emoji_nature', 'emoji_nature', 'emoji_objects', 'emoji_objects', 'emoji_people', 'emoji_people', 'emoji_symbols', 'emoji_symbols', 'emoji_transportation', 'emoji_transportation', 'enable', 'energy_program_saving', 'energy_program_time_used', 'energy_savings_leaf', 'energy_savings_leaf', 'engineering', 'engineering', 'enhanced_encryption', 'enhanced_encryption', 'equalizer', 'equalizer', 'error', 'error', 'error_circle_rounded', 'error_outline', 'escalator', 'escalator', 'escalator_warning', 'escalator_warning', 'euro', 'euro', 'euro_symbol', 'euro_symbol', 'ev_charger', 'ev_shadow', 'ev_station', 'ev_station', 'event', 'event', 'event_available', 'event_available', 'event_busy', 'event_busy', 'event_note', 'event_note', 'event_repeat', 'event_repeat', 'event_seat', 'event_seat', 'event_upcoming', 'exclamation', 'exit_to_app', 'exit_to_app', 'expand', 'expand', 'expand_circle_down', 'expand_circle_down', 'expand_less', 'expand_less', 'expand_more', 'expand_more', 'explicit', 'explicit', 'explore', 'explore', 'explore_off', 'explore_off', 'exposure', 'exposure', 'exposure_neg_1', 'exposure_neg_1', 'exposure_neg_2', 'exposure_neg_2', 'exposure_plus_1', 'exposure_plus_1', 'exposure_plus_2', 'exposure_plus_2', 'exposure_zero', 'exposure_zero', 'extension', 'extension', 'extension_off', 'extension_off', 'face', 'face', 'face_2', 'face_2', 'face_3', 'face_3', 'face_4', 'face_4', 'face_5', 'face_5', 'face_6', 'face_6', 'face_retouching_natural', 'face_retouching_natural', 'face_retouching_off', 'face_retouching_off', 'face_unlock', 'fact_check', 'fact_check', 'factory', 'factory', 'familiar_face_and_zone', 'family_restroom', 'family_restroom', 'fast_forward', 'fast_forward', 'fast_rewind', 'fast_rewind', 'fastfood', 'fastfood', 'faucet', 'favorite', 'favorite', 'favorite_border', 'fax', 'fax', 'featured_play_list', 'featured_play_list', 'featured_video', 'featured_video', 'feed', 'feed', 'feedback', 'female', 'female', 'femur', 'femur_alt', 'fence', 'fence', 'festival', 'festival', 'fiber_dvr', 'fiber_dvr', 'fiber_manual_record', 'fiber_manual_record', 'fiber_new', 'fiber_new', 'fiber_pin', 'fiber_pin', 'fiber_smart_record', 'fiber_smart_record', 'file_copy', 'file_copy', 'file_download', 'file_download', 'file_download_done', 'file_download_done', 'file_download_off', 'file_download_off', 'file_open', 'file_open', 'file_present', 'file_present', 'file_upload', 'file_upload', 'file_upload_off', 'file_upload_off', 'filter', 'filter', 'filter_1', 'filter_1', 'filter_2', 'filter_2', 'filter_3', 'filter_3', 'filter_4', 'filter_4', 'filter_5', 'filter_5', 'filter_6', 'filter_6', 'filter_7', 'filter_7', 'filter_8', 'filter_8', 'filter_9', 'filter_9', 'filter_9_plus', 'filter_9_plus', 'filter_alt', 'filter_alt', 'filter_alt_off', 'filter_alt_off', 'filter_b_and_w', 'filter_b_and_w', 'filter_center_focus', 'filter_center_focus', 'filter_drama', 'filter_drama', 'filter_frames', 'filter_frames', 'filter_hdr', 'filter_hdr', 'filter_list', 'filter_list', 'filter_list_alt', 'filter_list_off', 'filter_list_off', 'filter_none', 'filter_none', 'filter_tilt_shift', 'filter_tilt_shift', 'filter_vintage', 'filter_vintage', 'find_in_page', 'find_in_page', 'find_replace', 'find_replace', 'fingerprint', 'fingerprint', 'fire_extinguisher', 'fire_extinguisher', 'fire_hydrant', 'fire_hydrant_alt', 'fire_truck', 'fire_truck', 'fireplace', 'fireplace', 'first_page', 'first_page', 'fit_screen', 'fit_screen', 'fitbit', 'fitness_center', 'fitness_center', 'flag', 'flag', 'flag_circle', 'flag_circle', 'flaky', 'flaky', 'flare', 'flare', 'flash_auto', 'flash_auto', 'flash_off', 'flash_off', 'flash_on', 'flash_on', 'flashlight_off', 'flashlight_off', 'flashlight_on', 'flashlight_on', 'flatware', 'flatware', 'flight', 'flight', 'flight_class', 'flight_class', 'flight_land', 'flight_land', 'flight_takeoff', 'flight_takeoff', 'flip', 'flip', 'flip_camera_android', 'flip_camera_android', 'flip_camera_ios', 'flip_camera_ios', 'flip_to_back', 'flip_to_back', 'flip_to_front', 'flip_to_front', 'flood', 'flood', 'floor_lamp', 'fluorescent', 'fluorescent', 'flutter_dash', 'flutter_dash', 'fmd_bad', 'fmd_bad', 'fmd_good', 'foggy', 'foggy', 'folder', 'folder', 'folder_copy', 'folder_copy', 'folder_delete', 'folder_delete', 'folder_off', 'folder_off', 'folder_open', 'folder_open', 'folder_shared', 'folder_shared', 'folder_special', 'folder_special', 'folder_zip', 'folder_zip', 'follow_the_signs', 'follow_the_signs', 'font_download', 'font_download', 'font_download_off', 'font_download_off', 'food_bank', 'food_bank', 'foot_bones', 'forest', 'forest', 'fork_left', 'fork_left', 'fork_right', 'fork_right', 'format_align_center', 'format_align_center', 'format_align_justify', 'format_align_justify', 'format_align_left', 'format_align_left', 'format_align_right', 'format_align_right', 'format_bold', 'format_bold', 'format_clear', 'format_clear', 'format_color_fill', 'format_color_fill', 'format_color_reset', 'format_color_reset', 'format_color_text', 'format_color_text', 'format_indent_decrease', 'format_indent_decrease', 'format_indent_increase', 'format_indent_increase', 'format_italic', 'format_italic', 'format_line_spacing', 'format_line_spacing', 'format_list_bulleted', 'format_list_bulleted', 'format_list_numbered', 'format_list_numbered', 'format_list_numbered_rtl', 'format_list_numbered_rtl', 'format_overline', 'format_overline', 'format_paint', 'format_paint', 'format_quote', 'format_quote', 'format_shapes', 'format_shapes', 'format_size', 'format_size', 'format_strikethrough', 'format_strikethrough', 'format_textdirection_l_to_r', 'format_textdirection_l_to_r', 'format_textdirection_r_to_l', 'format_textdirection_r_to_l', 'format_underlined', 'format_underlined', 'format_underlined_squiggle', 'forms_add_on', 'forms_apps_script', 'fort', 'fort', 'forum', 'forum', 'forward', 'forward', 'forward_10', 'forward_10', 'forward_30', 'forward_30', 'forward_5', 'forward_5', 'forward_to_inbox', 'forward_to_inbox', 'foundation', 'foundation', 'frame_person', 'free_breakfast', 'free_cancellation', 'free_cancellation', 'front_hand', 'front_hand', 'full_stacked_bar_chart', 'fullscreen', 'fullscreen', 'fullscreen_exit', 'fullscreen_exit', 'functions', 'functions', 'g_mobiledata', 'g_mobiledata', 'g_translate', 'g_translate', 'gamepad', 'games', 'garage', 'garage', 'garage_home', 'garden_cart', 'gas_meter', 'gas_meter', 'gate', 'gavel', 'gavel', 'generating_tokens', 'generating_tokens', 'gesture', 'gesture', 'get_app', 'gif', 'gif', 'gif_box', 'gif_box', 'girl', 'girl', 'gite', 'gite', 'glyphs', 'golf_course', 'golf_course', 'google_plus_reshare', 'google_wifi', 'gpp_bad', 'gpp_bad', 'gpp_good', 'gpp_maybe', 'gpp_maybe', 'gps_fixed', 'gps_not_fixed', 'gps_off', 'grade', 'grade', 'gradient', 'gradient', 'grading', 'grading', 'grain', 'grain', 'graphic_eq', 'graphic_eq', 'grass', 'grass', 'grid_3x3', 'grid_3x3', 'grid_4x4', 'grid_4x4', 'grid_goldenratio', 'grid_goldenratio', 'grid_off', 'grid_off', 'grid_on', 'grid_on', 'grid_view', 'grid_view', 'group', 'group', 'group_add', 'group_add', 'group_off', 'group_off', 'group_remove', 'group_remove', 'group_work', 'group_work', 'grouped_bar_chart', 'groups', 'groups', 'groups_2', 'groups_2', 'groups_3', 'groups_3', 'h_mobiledata', 'h_mobiledata', 'h_plus_mobiledata', 'h_plus_mobiledata', 'hail', 'hail', 'hand_bones', 'hand_gesture', 'handshake', 'handshake', 'handyman', 'handyman', 'hardware', 'hardware', 'hd', 'hd', 'hdr_auto', 'hdr_auto', 'hdr_auto_select', 'hdr_auto_select', 'hdr_enhanced_select', 'hdr_enhanced_select', 'hdr_off', 'hdr_off', 'hdr_off_select', 'hdr_off_select', 'hdr_on', 'hdr_on', 'hdr_on_select', 'hdr_on_select', 'hdr_plus', 'hdr_plus', 'hdr_strong', 'hdr_strong', 'hdr_weak', 'hdr_weak', 'headphones', 'headphones', 'headphones_battery', 'headphones_battery', 'headset', 'headset_mic', 'headset_mic', 'headset_off', 'headset_off', 'healing', 'healing', 'health_and_safety', 'health_and_safety', 'hearing', 'hearing', 'hearing_disabled', 'hearing_disabled', 'heart_broken', 'heart_broken', 'heart_minus', 'heart_plus', 'heat_pump', 'heat_pump', 'heat_pump_balance', 'height', 'height', 'help', 'help', 'help_center', 'help_center', 'help_outline', 'hevc', 'hevc', 'hexagon', 'hexagon', 'hide', 'hide_image', 'hide_image', 'hide_source', 'hide_source', 'high_quality', 'high_quality', 'highlight', 'highlight', 'highlight_alt', 'highlight_off', 'hiking', 'hiking', 'history', 'history', 'history_edu', 'history_edu', 'history_toggle_off', 'history_toggle_off', 'hive', 'hive', 'hls', 'hls', 'hls_off', 'hls_off', 'holiday_village', 'holiday_village', 'home', 'home', 'home_app_logo', 'home_filled', 'home_iot_device', 'home_max', 'home_max', 'home_max_dots', 'home_mini', 'home_mini', 'home_pin', 'home_repair_service', 'home_repair_service', 'home_speaker', 'home_work', 'home_work', 'horizontal_distribute', 'horizontal_distribute', 'horizontal_rule', 'horizontal_rule', 'horizontal_split', 'horizontal_split', 'hot_tub', 'hot_tub', 'hotel', 'hotel', 'hotel_class', 'hotel_class', 'hourglass_bottom', 'hourglass_bottom', 'hourglass_disabled', 'hourglass_disabled', 'hourglass_empty', 'hourglass_empty', 'hourglass_full', 'hourglass_full', 'hourglass_top', 'hourglass_top', 'house', 'house', 'house_siding', 'house_siding', 'house_with_shield', 'houseboat', 'houseboat', 'how_to_reg', 'how_to_reg', 'how_to_vote', 'how_to_vote', 'html', 'html', 'http', 'http', 'https', 'hub', 'hub', 'humerus', 'humerus_alt', 'humidity_high', 'humidity_low', 'humidity_mid', 'hvac', 'hvac', 'ice_skating', 'ice_skating', 'icecream', 'icecream', 'image', 'image', 'image_aspect_ratio', 'image_aspect_ratio', 'image_not_supported', 'image_not_supported', 'image_search', 'image_search', 'imagesearch_roller', 'imagesearch_roller', 'imagesmode', 'import_contacts', 'import_contacts', 'import_export', 'important_devices', 'important_devices', 'in_home_mode', 'inbox', 'inbox', 'incomplete_circle', 'incomplete_circle', 'indeterminate_check_box', 'indeterminate_check_box', 'info', 'info', 'info_outline', 'input', 'input', 'insert_chart', 'insert_chart', 'insert_chart_outlined', 'insert_comment', 'insert_drive_file', 'insert_emoticon', 'insert_invitation', 'insert_link', 'insert_page_break', 'insert_page_break', 'insert_photo', 'insights', 'insights', 'install_desktop', 'install_desktop', 'install_mobile', 'install_mobile', 'integration_instructions', 'integration_instructions', 'interests', 'interests', 'interpreter_mode', 'interpreter_mode', 'inventory', 'inventory', 'inventory_2', 'inventory_2', 'invert_colors', 'invert_colors', 'invert_colors_off', 'invert_colors_off', 'ios_share', 'ios_share', 'iron', 'iron', 'iso', 'javascript', 'javascript', 'join_full', 'join_full', 'join_inner', 'join_inner', 'join_left', 'join_left', 'join_right', 'join_right', 'kayaking', 'kayaking', 'kebab_dining', 'kebab_dining', 'kettle', 'key', 'key', 'key_off', 'key_off', 'key_visualizer', 'keyboard', 'keyboard', 'keyboard_alt', 'keyboard_alt', 'keyboard_arrow_down', 'keyboard_arrow_down', 'keyboard_arrow_left', 'keyboard_arrow_left', 'keyboard_arrow_right', 'keyboard_arrow_right', 'keyboard_arrow_up', 'keyboard_arrow_up', 'keyboard_backspace', 'keyboard_backspace', 'keyboard_capslock', 'keyboard_capslock', 'keyboard_command_key', 'keyboard_command_key', 'keyboard_control_key', 'keyboard_control_key', 'keyboard_double_arrow_down', 'keyboard_double_arrow_down', 'keyboard_double_arrow_left', 'keyboard_double_arrow_left', 'keyboard_double_arrow_right', 'keyboard_double_arrow_right', 'keyboard_double_arrow_up', 'keyboard_double_arrow_up', 'keyboard_hide', 'keyboard_hide', 'keyboard_option_key', 'keyboard_option_key', 'keyboard_return', 'keyboard_return', 'keyboard_tab', 'keyboard_tab', 'keyboard_voice', 'keyboard_voice', 'king_bed', 'king_bed', 'kitchen', 'kitchen', 'kitesurfing', 'kitesurfing', 'label', 'label', 'label_important', 'label_important', 'label_important_outline', 'label_off', 'label_off', 'lan', 'lan', 'landscape', 'landscape', 'landslide', 'landslide', 'language', 'language', 'laptop', 'laptop_chromebook', 'laptop_chromebook', 'laptop_mac', 'laptop_mac', 'laptop_windows', 'laptop_windows', 'last_page', 'last_page', 'launch', 'laundry', 'layers', 'layers', 'layers_clear', 'layers_clear', 'leaderboard', 'leaderboard', 'leak_add', 'leak_add', 'leak_remove', 'leak_remove', 'legend_toggle', 'legend_toggle', 'lens', 'lens', 'lens_blur', 'lens_blur', 'library_add', 'library_add', 'library_add_check', 'library_add_check', 'library_books', 'library_books', 'library_music', 'library_music', 'lift_to_talk', 'light', 'light', 'light_group', 'light_mode', 'light_mode', 'lightbulb', 'lightbulb', 'lightbulb_circle', 'lightbulb_circle', 'lightbulb_outline', 'line_axis', 'line_axis', 'line_style', 'line_style', 'line_weight', 'line_weight', 'linear_scale', 'linear_scale', 'link', 'link', 'link_off', 'link_off', 'linked_camera', 'linked_camera', 'liquor', 'liquor', 'list', 'list', 'list_alt', 'list_alt', 'live_help', 'live_help', 'live_tv', 'live_tv', 'living', 'living', 'local_activity', 'local_activity', 'local_airport', 'local_atm', 'local_atm', 'local_bar', 'local_bar', 'local_cafe', 'local_cafe', 'local_car_wash', 'local_car_wash', 'local_convenience_store', 'local_convenience_store', 'local_dining', 'local_dining', 'local_drink', 'local_drink', 'local_fire_department', 'local_fire_department', 'local_florist', 'local_florist', 'local_gas_station', 'local_gas_station', 'local_grocery_store', 'local_hospital', 'local_hospital', 'local_hotel', 'local_laundry_service', 'local_laundry_service', 'local_library', 'local_library', 'local_mall', 'local_mall', 'local_movies', 'local_offer', 'local_parking', 'local_parking', 'local_pharmacy', 'local_pharmacy', 'local_phone', 'local_pizza', 'local_pizza', 'local_play', 'local_police', 'local_police', 'local_post_office', 'local_post_office', 'local_printshop', 'local_see', 'local_see', 'local_shipping', 'local_shipping', 'local_taxi', 'local_taxi', 'location_automation', 'location_away', 'location_city', 'location_city', 'location_disabled', 'location_disabled', 'location_home', 'location_off', 'location_off', 'location_on', 'location_pin', 'location_searching', 'location_searching', 'lock', 'lock', 'lock_clock', 'lock_clock', 'lock_open', 'lock_open', 'lock_outline', 'lock_person', 'lock_person', 'lock_reset', 'lock_reset', 'login', 'login', 'logo_dev', 'logo_dev', 'logout', 'logout', 'looks', 'looks', 'looks_3', 'looks_3', 'looks_4', 'looks_4', 'looks_5', 'looks_5', 'looks_6', 'looks_6', 'looks_one', 'looks_one', 'looks_two', 'looks_two', 'loop', 'loupe', 'loupe', 'low_priority', 'low_priority', 'loyalty', 'loyalty', 'lte_mobiledata', 'lte_mobiledata', 'lte_plus_mobiledata', 'lte_plus_mobiledata', 'luggage', 'luggage', 'lunch_dining', 'lunch_dining', 'lyrics', 'lyrics', 'macro_off', 'macro_off', 'magic_button', 'mail', 'mail', 'mail_lock', 'mail_lock', 'mail_outline', 'male', 'male', 'man', 'man', 'man_2', 'man_2', 'man_3', 'man_3', 'man_4', 'man_4', 'manage_accounts', 'manage_accounts', 'manage_history', 'manage_history', 'manage_search', 'manage_search', 'map', 'map', 'maps_home_work', 'maps_ugc', 'maps_ugc', 'margin', 'margin', 'mark_as_unread', 'mark_as_unread', 'mark_chat_read', 'mark_chat_read', 'mark_chat_unread', 'mark_chat_unread', 'mark_email_read', 'mark_email_read', 'mark_email_unread', 'mark_email_unread', 'mark_unread_chat_alt', 'mark_unread_chat_alt', 'markunread', 'markunread_mailbox', 'markunread_mailbox', 'masks', 'masks', 'matter', 'maximize', 'maximize', 'media_bluetooth_off', 'media_bluetooth_off', 'media_bluetooth_on', 'media_bluetooth_on', 'mediation', 'mediation', 'medical_information', 'medical_information', 'medical_services', 'medical_services', 'medication', 'medication', 'medication_liquid', 'medication_liquid', 'meeting_room', 'meeting_room', 'memory', 'memory', 'menu', 'menu', 'menu_book', 'menu_book', 'menu_open', 'menu_open', 'merge', 'merge', 'merge_type', 'merge_type', 'message', 'mfg_nest_yale_lock', 'mic', 'mic', 'mic_external_off', 'mic_external_off', 'mic_external_on', 'mic_external_on', 'mic_none', 'mic_off', 'mic_off', 'microwave', 'microwave', 'microwave_gen', 'military_tech', 'military_tech', 'minimize', 'minimize', 'minor_crash', 'minor_crash', 'miscellaneous_services', 'missed_video_call', 'missed_video_call', 'mms', 'mms', 'mobile_friendly', 'mobile_friendly', 'mobile_off', 'mobile_off', 'mobile_screen_share', 'mobile_screen_share', 'mobiledata_off', 'mobiledata_off', 'mode', 'mode_comment', 'mode_comment', 'mode_cool', 'mode_cool_off', 'mode_edit', 'mode_edit_outline', 'mode_fan', 'mode_fan_off', 'mode_fan_off', 'mode_heat', 'mode_heat_cool', 'mode_heat_off', 'mode_night', 'mode_night', 'mode_of_travel', 'mode_of_travel', 'mode_off_on', 'mode_standby', 'mode_standby', 'model_training', 'model_training', 'monetization_on', 'monetization_on', 'money', 'money', 'money_off', 'money_off', 'money_off_csred', 'monitor', 'monitor', 'monitor_heart', 'monitor_heart', 'monitor_weight', 'monitor_weight', 'monitoring', 'monochrome_photos', 'monochrome_photos', 'mood', 'mood', 'mood_bad', 'mood_bad', 'mop', 'moped', 'more', 'more', 'more_down', 'more_horiz', 'more_horiz', 'more_time', 'more_time', 'more_up', 'more_vert', 'more_vert', 'mosque', 'mosque', 'motion_blur', 'motion_photos_auto', 'motion_photos_auto', 'motion_photos_off', 'motion_photos_off', 'motion_photos_on', 'motion_photos_pause', 'motion_photos_paused', 'motion_photos_paused', 'motion_sensor_active', 'motion_sensor_alert', 'motion_sensor_idle', 'motion_sensor_urgent', 'motorcycle', 'mouse', 'mouse', 'move_down', 'move_down', 'move_to_inbox', 'move_to_inbox', 'move_up', 'move_up', 'movie', 'movie', 'movie_creation', 'movie_filter', 'movie_filter', 'moving', 'moving', 'mp', 'mp', 'multicooker', 'multiline_chart', 'multiline_chart', 'multiple_stop', 'multiple_stop', 'museum', 'museum', 'music_note', 'music_note', 'music_off', 'music_off', 'music_video', 'music_video', 'my_location', 'my_location', 'nat', 'nat', 'nature', 'nature', 'nature_people', 'nature_people', 'navigate_before', 'navigate_before', 'navigate_next', 'navigate_next', 'navigation', 'navigation', 'near_me', 'near_me', 'near_me_disabled', 'near_me_disabled', 'nearby_error', 'nearby_error', 'nearby_off', 'nearby_off', 'nest_audio', 'nest_cam_floodlight', 'nest_cam_indoor', 'nest_cam_iq', 'nest_cam_iq_outdoor', 'nest_cam_magnet_mount', 'nest_cam_outdoor', 'nest_cam_stand', 'nest_cam_wall_mount', 'nest_cam_wired_stand', 'nest_cam_wired_stand', 'nest_clock_farsight_analog', 'nest_clock_farsight_digital', 'nest_connect', 'nest_detect', 'nest_display', 'nest_display_max', 'nest_doorbell_visitor', 'nest_eco_leaf', 'nest_farsight_weather', 'nest_found_savings', 'nest_heat_link_e', 'nest_heat_link_gen_3', 'nest_hello_doorbell', 'nest_locator_tag', 'nest_mini', 'nest_multi_room', 'nest_remote', 'nest_remote_comfort_sensor', 'nest_secure_alarm', 'nest_sunblock', 'nest_tag', 'nest_thermostat_e_eu', 'nest_thermostat_gen_3', 'nest_thermostat_sensor', 'nest_thermostat_sensor_eu', 'nest_thermostat_zirconium_eu', 'nest_true_radiant', 'nest_wake_on_approach', 'nest_wake_on_press', 'nest_wifi_gale', 'nest_wifi_mistral', 'nest_wifi_point', 'nest_wifi_point_vento', 'nest_wifi_router', 'network_cell', 'network_cell', 'network_check', 'network_check', 'network_locked', 'network_locked', 'network_ping', 'network_ping', 'network_wifi', 'network_wifi', 'network_wifi_1_bar', 'network_wifi_1_bar', 'network_wifi_2_bar', 'network_wifi_2_bar', 'network_wifi_3_bar', 'network_wifi_3_bar', 'new_label', 'new_label', 'new_releases', 'new_releases', 'newspaper', 'newspaper', 'next_plan', 'next_plan', 'next_week', 'next_week', 'nfc', 'nfc', 'night_shelter', 'night_shelter', 'night_sight_auto', 'night_sight_auto_off', 'nightlife', 'nightlife', 'nightlight', 'nightlight', 'nightlight_round', 'nights_stay', 'nights_stay', 'no_accounts', 'no_accounts', 'no_adult_content', 'no_adult_content', 'no_backpack', 'no_backpack', 'no_cell', 'no_crash', 'no_crash', 'no_drinks', 'no_drinks', 'no_encryption', 'no_encryption', 'no_encryption_gmailerrorred', 'no_flash', 'no_flash', 'no_food', 'no_food', 'no_luggage', 'no_luggage', 'no_meals', 'no_meals', 'no_meals_ouline', 'no_meeting_room', 'no_meeting_room', 'no_photography', 'no_photography', 'no_sim', 'no_sim', 'no_stroller', 'no_stroller', 'no_transfer', 'no_transfer', 'noise_aware', 'noise_aware', 'noise_control_off', 'noise_control_off', 'noise_control_on', 'nordic_walking', 'nordic_walking', 'north', 'north', 'north_east', 'north_east', 'north_west', 'north_west', 'not_accessible', 'not_accessible', 'not_interested', 'not_listed_location', 'not_listed_location', 'not_started', 'not_started', 'note', 'note', 'note_add', 'note_add', 'note_alt', 'note_alt', 'notes', 'notes', 'notification_add', 'notification_add', 'notification_important', 'notification_important', 'notifications', 'notifications', 'notifications_active', 'notifications_active', 'notifications_none', 'notifications_off', 'notifications_off', 'notifications_paused', 'notifications_paused', 'numbers', 'numbers', 'offline_bolt', 'offline_bolt', 'offline_pin', 'offline_pin', 'offline_share', 'offline_share', 'oil_barrel', 'oil_barrel', 'on_device_training', 'on_device_training', 'ondemand_video', 'online_prediction', 'online_prediction', 'opacity', 'opacity', 'open_in_browser', 'open_in_browser', 'open_in_full', 'open_in_full', 'open_in_new', 'open_in_new', 'open_in_new_off', 'open_in_new_off', 'open_with', 'open_with', 'orthopedics', 'other_houses', 'other_houses', 'outbound', 'outbound', 'outbox', 'outbox', 'outdoor_garden', 'outdoor_grill', 'outdoor_grill', 'outgoing_mail', 'outgoing_mail', 'outlet', 'outlet', 'outlined_flag', 'output', 'output', 'oven_gen', 'package', 'padding', 'padding', 'pages', 'pages', 'pageview', 'pageview', 'paid', 'paid', 'palette', 'palette', 'pan_tool', 'pan_tool', 'pan_tool_alt', 'pan_tool_alt', 'panorama', 'panorama', 'panorama_fish_eye', 'panorama_fish_eye', 'panorama_horizontal', 'panorama_horizontal', 'panorama_horizontal_select', 'panorama_photosphere', 'panorama_photosphere', 'panorama_photosphere_select', 'panorama_vertical', 'panorama_vertical', 'panorama_vertical_select', 'panorama_wide_angle', 'panorama_wide_angle', 'panorama_wide_angle_select', 'paragliding', 'paragliding', 'park', 'park', 'partly_cloudy_day', 'partly_cloudy_night', 'party_mode', 'party_mode', 'password', 'password', 'pattern', 'pattern', 'pause', 'pause', 'pause_circle', 'pause_circle', 'pause_circle_filled', 'pause_circle_outline', 'pause_presentation', 'pause_presentation', 'payment', 'payments', 'payments', 'pedal_bike', 'pedal_bike', 'pending', 'pending', 'pending_actions', 'pending_actions', 'pentagon', 'pentagon', 'people', 'people_alt', 'people_outline', 'percent', 'percent', 'pergola', 'perm_camera_mic', 'perm_camera_mic', 'perm_contact_calendar', 'perm_contact_calendar', 'perm_data_setting', 'perm_data_setting', 'perm_device_information', 'perm_device_information', 'perm_identity', 'perm_media', 'perm_media', 'perm_phone_msg', 'perm_phone_msg', 'perm_scan_wifi', 'perm_scan_wifi', 'person', 'person', 'person_2', 'person_2', 'person_3', 'person_3', 'person_4', 'person_4', 'person_add', 'person_add', 'person_add_alt', 'person_add_alt_1', 'person_add_disabled', 'person_add_disabled', 'person_filled', 'person_off', 'person_off', 'person_outline', 'person_pin', 'person_pin', 'person_pin_circle', 'person_pin_circle', 'person_remove', 'person_remove', 'person_remove_alt_1', 'person_search', 'person_search', 'personal_injury', 'personal_injury', 'personal_video', 'pest_control', 'pest_control', 'pest_control_rodent', 'pest_control_rodent', 'pets', 'pets', 'phishing', 'phishing', 'phone', 'phone_android', 'phone_android', 'phone_bluetooth_speaker', 'phone_bluetooth_speaker', 'phone_callback', 'phone_callback', 'phone_disabled', 'phone_disabled', 'phone_enabled', 'phone_enabled', 'phone_forwarded', 'phone_forwarded', 'phone_in_talk', 'phone_in_talk', 'phone_iphone', 'phone_iphone', 'phone_locked', 'phone_locked', 'phone_missed', 'phone_missed', 'phone_paused', 'phone_paused', 'phonelink', 'phonelink_erase', 'phonelink_erase', 'phonelink_lock', 'phonelink_lock', 'phonelink_off', 'phonelink_off', 'phonelink_ring', 'phonelink_ring', 'phonelink_setup', 'phonelink_setup', 'photo', 'photo', 'photo_album', 'photo_album', 'photo_camera', 'photo_camera', 'photo_camera_back', 'photo_camera_back', 'photo_camera_front', 'photo_camera_front', 'photo_filter', 'photo_filter', 'photo_frame', 'photo_library', 'photo_library', 'photo_size_select_actual', 'photo_size_select_large', 'photo_size_select_large', 'photo_size_select_small', 'photo_size_select_small', 'php', 'php', 'piano', 'piano', 'piano_off', 'piano_off', 'picture_as_pdf', 'picture_as_pdf', 'picture_in_picture', 'picture_in_picture', 'picture_in_picture_alt', 'picture_in_picture_alt', 'pie_chart', 'pie_chart', 'pie_chart_outline', 'pie_chart_outlined', 'pin', 'pin', 'pin_drop', 'pin_drop', 'pin_end', 'pin_end', 'pin_invoke', 'pin_invoke', 'pinch', 'pinch', 'pinch_zoom_in', 'pinch_zoom_out', 'pivot_table_chart', 'pivot_table_chart', 'pix', 'place', 'place_item', 'plagiarism', 'plagiarism', 'play_arrow', 'play_arrow', 'play_circle', 'play_circle', 'play_circle_filled', 'play_circle_outline', 'play_disabled', 'play_disabled', 'play_for_work', 'play_for_work', 'play_lesson', 'play_lesson', 'play_pause', 'playlist_add', 'playlist_add', 'playlist_add_check', 'playlist_add_check', 'playlist_add_check_circle', 'playlist_add_check_circle', 'playlist_add_circle', 'playlist_add_circle', 'playlist_play', 'playlist_play', 'playlist_remove', 'playlist_remove', 'plumbing', 'plumbing', 'plus_one', 'podcasts', 'podcasts', 'point_of_sale', 'point_of_sale', 'policy', 'policy', 'poll', 'polyline', 'polyline', 'polymer', 'polymer', 'pool', 'pool', 'portable_wifi_off', 'portable_wifi_off', 'portrait', 'post_add', 'post_add', 'potted_plant', 'power', 'power', 'power_input', 'power_input', 'power_off', 'power_off', 'power_rounded', 'power_settings_new', 'power_settings_new', 'precision_manufacturing', 'precision_manufacturing', 'pregnant_woman', 'pregnant_woman', 'present_to_all', 'present_to_all', 'preview', 'preview', 'price_change', 'price_change', 'price_check', 'price_check', 'print', 'print', 'print_disabled', 'print_disabled', 'priority', 'priority_high', 'priority_high', 'privacy', 'privacy_tip', 'privacy_tip', 'private_connectivity', 'private_connectivity', 'production_quantity_limits', 'production_quantity_limits', 'productivity', 'propane', 'propane', 'propane_tank', 'propane_tank', 'psychology', 'psychology', 'psychology_alt', 'psychology_alt', 'public', 'public', 'public_off', 'public_off', 'publish', 'publish', 'published_with_changes', 'published_with_changes', 'punch_clock', 'punch_clock', 'push_pin', 'push_pin', 'qr_code', 'qr_code', 'qr_code_2', 'qr_code_2', 'qr_code_scanner', 'qr_code_scanner', 'query_builder', 'query_stats', 'query_stats', 'question_answer', 'question_mark', 'question_mark', 'queue', 'queue_music', 'queue_music', 'queue_play_next', 'queue_play_next', 'quick_phrases', 'quickreply', 'quickreply', 'quiet_time', 'quiet_time_active', 'quiz', 'quiz', 'r_mobiledata', 'r_mobiledata', 'radar', 'radar', 'radio', 'radio', 'radio_button_checked', 'radio_button_checked', 'radio_button_unchecked', 'radio_button_unchecked', 'radiology', 'railway_alert', 'railway_alert', 'rainy', 'ramen_dining', 'ramen_dining', 'ramp_left', 'ramp_left', 'ramp_right', 'ramp_right', 'range_hood', 'rate_review', 'rate_review', 'raw_off', 'raw_off', 'raw_on', 'raw_on', 'read_more', 'read_more', 'real_estate_agent', 'real_estate_agent', 'receipt', 'receipt', 'receipt_long', 'receipt_long', 'recent_actors', 'recent_actors', 'recommend', 'recommend', 'record_voice_over', 'record_voice_over', 'rectangle', 'rectangle', 'recycling', 'recycling', 'redeem', 'redeem', 'redo', 'redo', 'reduce_capacity', 'reduce_capacity', 'refresh', 'refresh', 'remember_me', 'remember_me', 'remote_gen', 'remove', 'remove', 'remove_circle', 'remove_circle_outline', 'remove_done', 'remove_done', 'remove_from_queue', 'remove_from_queue', 'remove_moderator', 'remove_moderator', 'remove_red_eye', 'remove_road', 'remove_road', 'remove_shopping_cart', 'remove_shopping_cart', 'reorder', 'reorder', 'repartition', 'repartition', 'repeat', 'repeat', 'repeat_on', 'repeat_on', 'repeat_one', 'repeat_one', 'repeat_one_on', 'repeat_one_on', 'replay', 'replay', 'replay_10', 'replay_10', 'replay_30', 'replay_30', 'replay_5', 'replay_5', 'replay_circle_filled', 'replay_circle_filled', 'reply', 'reply', 'reply_all', 'reply_all', 'report', 'report', 'report_gmailerrorred', 'report_off', 'report_off', 'report_problem', 'request_page', 'request_page', 'request_quote', 'request_quote', 'reset_tv', 'reset_tv', 'restart_alt', 'restart_alt', 'restaurant', 'restaurant', 'restaurant_menu', 'restaurant_menu', 'restore', 'restore_from_trash', 'restore_from_trash', 'restore_page', 'restore_page', 'reviews', 'reviews', 'rheumatology', 'rib_cage', 'rice_bowl', 'rice_bowl', 'ring_volume', 'ring_volume', 'rocket', 'rocket', 'rocket_launch', 'rocket_launch', 'roller_shades', 'roller_shades', 'roller_shades_closed', 'roller_shades_closed', 'roller_skating', 'roller_skating', 'roofing', 'roofing', 'room', 'room_preferences', 'room_preferences', 'room_service', 'room_service', 'rotate_90_degrees_ccw', 'rotate_90_degrees_ccw', 'rotate_90_degrees_cw', 'rotate_90_degrees_cw', 'rotate_left', 'rotate_left', 'rotate_right', 'rotate_right', 'roundabout_left', 'roundabout_left', 'roundabout_right', 'roundabout_right', 'rounded_corner', 'rounded_corner', 'route', 'route', 'router', 'router', 'routine', 'rowing', 'rowing', 'rss_feed', 'rss_feed', 'rsvp', 'rsvp', 'rtt', 'rtt', 'rule', 'rule', 'rule_folder', 'rule_folder', 'run_circle', 'run_circle', 'running_with_errors', 'running_with_errors', 'rv_hookup', 'rv_hookup', 'safety_check', 'safety_check', 'safety_divider', 'safety_divider', 'sailing', 'sailing', 'sanitizer', 'sanitizer', 'satellite', 'satellite', 'satellite_alt', 'satellite_alt', 'save', 'save', 'save_alt', 'save_as', 'save_as', 'saved_search', 'saved_search', 'savings', 'savings', 'scale', 'scale', 'scanner', 'scanner', 'scatter_plot', 'scatter_plot', 'scene', 'schedule', 'schedule', 'schedule_send', 'schedule_send', 'schema', 'schema', 'school', 'school', 'science', 'science', 'score', 'score', 'scoreboard', 'scoreboard', 'screen_lock_landscape', 'screen_lock_landscape', 'screen_lock_portrait', 'screen_lock_portrait', 'screen_lock_rotation', 'screen_lock_rotation', 'screen_rotation', 'screen_rotation', 'screen_rotation_alt', 'screen_rotation_alt', 'screen_search_desktop', 'screen_search_desktop', 'screen_share', 'screen_share', 'screenshot', 'screenshot', 'screenshot_monitor', 'screenshot_monitor', 'scuba_diving', 'scuba_diving', 'sd', 'sd', 'sd_card', 'sd_card', 'sd_card_alert', 'sd_card_alert', 'sd_storage', 'search', 'search', 'search_off', 'search_off', 'security', 'security', 'security_update', 'security_update_good', 'security_update_good', 'security_update_warning', 'security_update_warning', 'segment', 'segment', 'select_all', 'select_all', 'select_check_box', 'self_improvement', 'self_improvement', 'sell', 'sell', 'send', 'send', 'send_and_archive', 'send_and_archive', 'send_time_extension', 'send_time_extension', 'send_to_mobile', 'send_to_mobile', 'sensor_door', 'sensor_door', 'sensor_occupied', 'sensor_occupied', 'sensor_window', 'sensor_window', 'sensors', 'sensors', 'sensors_off', 'sensors_off', 'sentiment_dissatisfied', 'sentiment_dissatisfied', 'sentiment_extremely_dissatisfied', 'sentiment_neutral', 'sentiment_neutral', 'sentiment_satisfied', 'sentiment_satisfied', 'sentiment_satisfied_alt', 'sentiment_very_dissatisfied', 'sentiment_very_dissatisfied', 'sentiment_very_satisfied', 'sentiment_very_satisfied', 'set_meal', 'set_meal', 'settings', 'settings', 'settings_accessibility', 'settings_accessibility', 'settings_alert', 'settings_applications', 'settings_applications', 'settings_backup_restore', 'settings_backup_restore', 'settings_bluetooth', 'settings_bluetooth', 'settings_brightness', 'settings_brightness', 'settings_cell', 'settings_cell', 'settings_ethernet', 'settings_ethernet', 'settings_input_antenna', 'settings_input_antenna', 'settings_input_component', 'settings_input_component', 'settings_input_composite', 'settings_input_hdmi', 'settings_input_hdmi', 'settings_input_svideo', 'settings_input_svideo', 'settings_overscan', 'settings_overscan', 'settings_phone', 'settings_phone', 'settings_power', 'settings_power', 'settings_remote', 'settings_remote', 'settings_suggest', 'settings_suggest', 'settings_system_daydream', 'settings_system_daydream', 'settings_voice', 'settings_voice', 'settop_component', 'severe_cold', 'severe_cold', 'shape_line', 'shape_line', 'share', 'share', 'share_location', 'share_location', 'share_reviews', 'shield', 'shield', 'shield_moon', 'shield_moon', 'shield_with_heart', 'shield_with_house', 'shop', 'shop', 'shop_2', 'shop_two', 'shop_two', 'shopping_bag', 'shopping_bag', 'shopping_basket', 'shopping_basket', 'shopping_cart', 'shopping_cart', 'shopping_cart_checkout', 'shopping_cart_checkout', 'short_text', 'short_text', 'shortcut', 'show_chart', 'show_chart', 'shower', 'shower', 'shuffle', 'shuffle', 'shuffle_on', 'shuffle_on', 'shutter_speed', 'shutter_speed', 'sick', 'sick', 'sign_language', 'sign_language', 'signal_cellular_0_bar', 'signal_cellular_0_bar', 'signal_cellular_1_bar', 'signal_cellular_1_bar', 'signal_cellular_2_bar', 'signal_cellular_2_bar', 'signal_cellular_3_bar', 'signal_cellular_3_bar', 'signal_cellular_4_bar', 'signal_cellular_4_bar', 'signal_cellular_alt', 'signal_cellular_alt', 'signal_cellular_alt_1_bar', 'signal_cellular_alt_1_bar', 'signal_cellular_alt_2_bar', 'signal_cellular_alt_2_bar', 'signal_cellular_connected_no_internet_0_bar', 'signal_cellular_connected_no_internet_0_bar', 'signal_cellular_connected_no_internet_1_bar', 'signal_cellular_connected_no_internet_2_bar', 'signal_cellular_connected_no_internet_3_bar', 'signal_cellular_connected_no_internet_4_bar', 'signal_cellular_connected_no_internet_4_bar', 'signal_cellular_no_sim', 'signal_cellular_nodata', 'signal_cellular_nodata', 'signal_cellular_null', 'signal_cellular_null', 'signal_cellular_off', 'signal_cellular_off', 'signal_disconnected', 'signal_wifi_0_bar', 'signal_wifi_0_bar', 'signal_wifi_1_bar', 'signal_wifi_1_bar_lock', 'signal_wifi_2_bar', 'signal_wifi_2_bar_lock', 'signal_wifi_3_bar', 'signal_wifi_3_bar_lock', 'signal_wifi_4_bar', 'signal_wifi_4_bar', 'signal_wifi_4_bar_lock', 'signal_wifi_bad', 'signal_wifi_bad', 'signal_wifi_connected_no_internet_0', 'signal_wifi_connected_no_internet_1', 'signal_wifi_connected_no_internet_2', 'signal_wifi_connected_no_internet_3', 'signal_wifi_connected_no_internet_4', 'signal_wifi_off', 'signal_wifi_off', 'signal_wifi_statusbar_1_bar', 'signal_wifi_statusbar_2_bar', 'signal_wifi_statusbar_3_bar', 'signal_wifi_statusbar_4_bar', 'signal_wifi_statusbar_connected_no_internet', 'signal_wifi_statusbar_connected_no_internet_1', 'signal_wifi_statusbar_connected_no_internet_2', 'signal_wifi_statusbar_connected_no_internet_3', 'signal_wifi_statusbar_connected_no_internet_4', 'signal_wifi_statusbar_not_connected', 'signal_wifi_statusbar_not_connected', 'signal_wifi_statusbar_null', 'signal_wifi_statusbar_null', 'signpost', 'signpost', 'sim_card', 'sim_card', 'sim_card_alert', 'sim_card_download', 'sim_card_download', 'single_bed', 'single_bed', 'sip', 'sip', 'skateboarding', 'skateboarding', 'skeleton', 'skip_next', 'skip_next', 'skip_previous', 'skip_previous', 'skull', 'sledding', 'sledding', 'slideshow', 'slideshow', 'slow_motion_video', 'slow_motion_video', 'smart_button', 'smart_button', 'smart_display', 'smart_display', 'smart_outlet', 'smart_screen', 'smart_screen', 'smart_toy', 'smart_toy', 'smartphone', 'smartphone', 'smoke_free', 'smoke_free', 'smoking_rooms', 'smoking_rooms', 'sms', 'sms', 'sms_failed', 'sms_failed', 'snippet_folder', 'snippet_folder', 'snooze', 'snooze', 'snowboarding', 'snowboarding', 'snowing', 'snowing', 'snowmobile', 'snowmobile', 'snowshoeing', 'snowshoeing', 'soap', 'soap', 'social_distance', 'social_distance', 'solar_power', 'solar_power', 'sort', 'sort', 'sort_by_alpha', 'sort_by_alpha', 'sos', 'sos', 'sound_detection_dog_barking', 'sound_detection_glass_break', 'sound_detection_loud_sound', 'soup_kitchen', 'soup_kitchen', 'source', 'south', 'south', 'south_america', 'south_america', 'south_east', 'south_east', 'south_west', 'south_west', 'spa', 'spa', 'space_bar', 'space_bar', 'space_dashboard', 'space_dashboard', 'spatial_audio', 'spatial_audio', 'spatial_audio_off', 'spatial_audio_off', 'spatial_tracking', 'spatial_tracking', 'speaker', 'speaker', 'speaker_group', 'speaker_group', 'speaker_notes', 'speaker_notes', 'speaker_notes_off', 'speaker_notes_off', 'speaker_phone', 'speaker_phone', 'speech_to_text', 'speed', 'speed', 'spellcheck', 'spellcheck', 'splitscreen', 'splitscreen', 'spoke', 'spoke', 'sports', 'sports', 'sports_bar', 'sports_bar', 'sports_baseball', 'sports_baseball', 'sports_basketball', 'sports_basketball', 'sports_cricket', 'sports_cricket', 'sports_esports', 'sports_esports', 'sports_football', 'sports_football', 'sports_golf', 'sports_golf', 'sports_gymnastics', 'sports_gymnastics', 'sports_handball', 'sports_handball', 'sports_hockey', 'sports_hockey', 'sports_kabaddi', 'sports_kabaddi', 'sports_martial_arts', 'sports_martial_arts', 'sports_mma', 'sports_mma', 'sports_motorsports', 'sports_motorsports', 'sports_rugby', 'sports_rugby', 'sports_score', 'sports_score', 'sports_soccer', 'sports_soccer', 'sports_tennis', 'sports_tennis', 'sports_volleyball', 'sports_volleyball', 'sprinkler', 'square', 'square', 'square_foot', 'square_foot', 'ssid_chart', 'ssid_chart', 'stacked_bar_chart', 'stacked_bar_chart', 'stacked_line_chart', 'stacked_line_chart', 'stadia_controller', 'stadium', 'stadium', 'stairs', 'stairs', 'star', 'star', 'star_border', 'star_border_purple500', 'star_half', 'star_half', 'star_outline', 'star_purple500', 'star_rate', 'stars', 'stars', 'start', 'start', 'stay_current_landscape', 'stay_current_landscape', 'stay_current_portrait', 'stay_current_portrait', 'stay_primary_landscape', 'stay_primary_landscape', 'stay_primary_portrait', 'stay_primary_portrait', 'sticky_note_2', 'sticky_note_2', 'stop', 'stop', 'stop_circle', 'stop_circle', 'stop_screen_share', 'stop_screen_share', 'storage', 'storage', 'store', 'store', 'store_mall_directory', 'storefront', 'storefront', 'storm', 'storm', 'straight', 'straight', 'straighten', 'straighten', 'stream', 'stream', 'streetview', 'streetview', 'strikethrough_s', 'strikethrough_s', 'stroller', 'stroller', 'style', 'style', 'styler', 'subdirectory_arrow_left', 'subdirectory_arrow_left', 'subdirectory_arrow_right', 'subdirectory_arrow_right', 'subject', 'subject', 'subscript', 'subscript', 'subscriptions', 'subscriptions', 'subtitles', 'subtitles', 'subtitles_off', 'subtitles_off', 'subway', 'subway', 'summarize', 'summarize', 'sunny', 'sunny', 'sunny_snowing', 'sunny_snowing', 'superscript', 'superscript', 'supervised_user_circle', 'supervised_user_circle', 'supervisor_account', 'supervisor_account', 'support', 'support', 'support_agent', 'support_agent', 'surfing', 'surfing', 'surround_sound', 'surround_sound', 'swap_calls', 'swap_calls', 'swap_horiz', 'swap_horiz', 'swap_horizontal_circle', 'swap_horizontal_circle', 'swap_vert', 'swap_vert', 'swap_vertical_circle', 'swap_vertical_circle', 'swipe', 'swipe', 'swipe_down', 'swipe_down', 'swipe_down_alt', 'swipe_down_alt', 'swipe_left', 'swipe_left', 'swipe_left_alt', 'swipe_left_alt', 'swipe_right', 'swipe_right', 'swipe_right_alt', 'swipe_right_alt', 'swipe_up', 'swipe_up', 'swipe_up_alt', 'swipe_up_alt', 'swipe_vertical', 'swipe_vertical', 'switch', 'switch_access_shortcut', 'switch_access_shortcut', 'switch_access_shortcut_add', 'switch_access_shortcut_add', 'switch_account', 'switch_account', 'switch_camera', 'switch_camera', 'switch_left', 'switch_left', 'switch_right', 'switch_right', 'switch_video', 'switch_video', 'swords', 'synagogue', 'synagogue', 'sync', 'sync', 'sync_alt', 'sync_alt', 'sync_disabled', 'sync_disabled', 'sync_lock', 'sync_lock', 'sync_problem', 'sync_problem', 'system_security_update', 'system_security_update_good', 'system_security_update_warning', 'system_update', 'system_update', 'system_update_alt', 'system_update_alt', 'tab', 'tab', 'tab_unselected', 'tab_unselected', 'table', 'table_bar', 'table_bar', 'table_chart', 'table_chart', 'table_restaurant', 'table_restaurant', 'table_rows', 'table_rows', 'table_view', 'table_view', 'tablet', 'tablet', 'tablet_android', 'tablet_android', 'tablet_mac', 'tablet_mac', 'tag', 'tag', 'tag_faces', 'takeout_dining', 'takeout_dining', 'tamper_detection_off', 'tamper_detection_on', 'tap_and_play', 'tap_and_play', 'tapas', 'tapas', 'task', 'task', 'task_alt', 'task_alt', 'taxi_alert', 'taxi_alert', 'team_dashboard', 'temp_preferences_custom', 'temp_preferences_eco', 'temple_buddhist', 'temple_buddhist', 'temple_hindu', 'temple_hindu', 'tenancy', 'terminal', 'terminal', 'terrain', 'text_decrease', 'text_decrease', 'text_fields', 'text_fields', 'text_format', 'text_format', 'text_increase', 'text_increase', 'text_rotate_up', 'text_rotate_up', 'text_rotate_vertical', 'text_rotate_vertical', 'text_rotation_angledown', 'text_rotation_angledown', 'text_rotation_angleup', 'text_rotation_angleup', 'text_rotation_down', 'text_rotation_down', 'text_rotation_none', 'text_rotation_none', 'text_snippet', 'text_snippet', 'text_to_speech', 'textsms', 'texture', 'texture', 'theater_comedy', 'theater_comedy', 'theaters', 'theaters', 'thermometer', 'thermostat', 'thermostat', 'thermostat_auto', 'thermostat_auto', 'thermostat_carbon', 'thumb_down', 'thumb_down', 'thumb_down_alt', 'thumb_down_off', 'thumb_down_off_alt', 'thumb_up', 'thumb_up', 'thumb_up_alt', 'thumb_up_off', 'thumb_up_off_alt', 'thumbs_up_down', 'thumbs_up_down', 'thunderstorm', 'thunderstorm', 'tibia', 'tibia_alt', 'time_auto', 'time_to_leave', 'timelapse', 'timelapse', 'timeline', 'timeline', 'timer', 'timer', 'timer_10', 'timer_10', 'timer_10_alt_1', 'timer_10_select', 'timer_10_select', 'timer_3', 'timer_3', 'timer_3_alt_1', 'timer_3_select', 'timer_3_select', 'timer_off', 'timer_off', 'tips_and_updates', 'tips_and_updates', 'tire_repair', 'tire_repair', 'title', 'title', 'toc', 'toc', 'today', 'today', 'toggle_off', 'toggle_off', 'toggle_on', 'toggle_on', 'token', 'token', 'toll', 'toll', 'tonality', 'tonality', 'tools_flat_head', 'tools_installation_kit', 'tools_ladder', 'tools_level', 'tools_phillips', 'tools_pliers_wire_stripper', 'tools_power_drill', 'tools_wrench', 'topic', 'topic', 'tornado', 'tornado', 'touch_app', 'touch_app', 'tour', 'tour', 'toys', 'toys', 'toys_fan', 'track_changes', 'track_changes', 'traffic', 'traffic', 'trail_length', 'trail_length_medium', 'trail_length_short', 'train', 'train', 'tram', 'tram', 'transcribe', 'transcribe', 'transfer_within_a_station', 'transfer_within_a_station', 'transform', 'transform', 'transgender', 'transgender', 'transit_enterexit', 'transit_enterexit', 'translate', 'translate', 'transportation', 'travel_explore', 'travel_explore', 'trending_down', 'trending_down', 'trending_flat', 'trending_flat', 'trending_up', 'trending_up', 'trip_origin', 'trip_origin', 'troubleshoot', 'try', 'tsunami', 'tsunami', 'tty', 'tty', 'tune', 'tune', 'tungsten', 'turn_left', 'turn_left', 'turn_right', 'turn_right', 'turn_sharp_left', 'turn_sharp_left', 'turn_sharp_right', 'turn_sharp_right', 'turn_slight_left', 'turn_slight_left', 'turn_slight_right', 'turn_slight_right', 'turned_in', 'turned_in_not', 'tv', 'tv', 'tv_gen', 'tv_off', 'tv_off', 'tv_with_assistant', 'two_wheeler', 'two_wheeler', 'type_specimen', 'type_specimen', 'u_turn_left', 'u_turn_left', 'u_turn_right', 'u_turn_right', 'ulna_radius', 'ulna_radius_alt', 'umbrella', 'umbrella', 'unarchive', 'unarchive', 'undo', 'undo', 'unfold_less', 'unfold_less', 'unfold_less_double', 'unfold_less_double', 'unfold_more', 'unfold_more', 'unfold_more_double', 'unfold_more_double', 'unpublished', 'unpublished', 'unsubscribe', 'unsubscribe', 'upcoming', 'upcoming', 'update', 'update', 'update_disabled', 'update_disabled', 'upgrade', 'upgrade', 'upload', 'upload', 'upload_file', 'upload_file', 'usb', 'usb', 'usb_off', 'usb_off',
30684
+ // 'vaccines', 'vaccines', 'valve', 'vape_free', 'vape_free', 'vaping_rooms', 'vaping_rooms', 'verified', 'verified', 'verified_user', 'verified_user', 'vertical_align_bottom', 'vertical_align_bottom', 'vertical_align_center', 'vertical_align_center', 'vertical_align_top', 'vertical_align_top', 'vertical_distribute', 'vertical_distribute', 'vertical_shades', 'vertical_shades', 'vertical_shades_closed', 'vertical_shades_closed', 'vertical_split', 'vertical_split', 'vibration', 'vibration', 'video_call', 'video_call', 'video_camera_back', 'video_camera_back', 'video_camera_front', 'video_camera_front', 'video_chat', 'video_chat', 'video_file', 'video_file', 'video_label', 'video_label', 'video_library', 'video_library', 'video_settings', 'video_settings', 'video_stable', 'video_stable', 'videocam', 'videocam', 'videocam_off', 'videocam_off', 'videogame_asset', 'videogame_asset', 'videogame_asset_off', 'videogame_asset_off', 'view_agenda', 'view_agenda', 'view_array', 'view_array', 'view_carousel', 'view_carousel', 'view_column', 'view_column', 'view_comfy', 'view_comfy', 'view_comfy_alt', 'view_comfy_alt', 'view_compact', 'view_compact', 'view_compact_alt', 'view_compact_alt', 'view_cozy', 'view_cozy', 'view_day', 'view_day', 'view_headline', 'view_headline', 'view_in_ar', 'view_in_ar', 'view_in_ar_new', 'view_kanban', 'view_kanban', 'view_list', 'view_list', 'view_module', 'view_module', 'view_quilt', 'view_quilt', 'view_sidebar', 'view_sidebar', 'view_stream', 'view_stream', 'view_timeline', 'view_timeline', 'view_week', 'view_week', 'vignette', 'vignette', 'villa', 'villa', 'visibility', 'visibility', 'visibility_off', 'visibility_off', 'voice_chat', 'voice_chat', 'voice_over_off', 'voice_over_off', 'voicemail', 'voicemail', 'volcano', 'volcano', 'volume_down', 'volume_down', 'volume_down_alt', 'volume_down_alt', 'volume_mute', 'volume_mute', 'volume_off', 'volume_off', 'volume_up', 'volume_up', 'volunteer_activism', 'volunteer_activism', 'vpn_key', 'vpn_key', 'vpn_key_off', 'vpn_key_off', 'vpn_lock', 'vpn_lock', 'vrpano', 'vrpano',
30685
+ // 'wallet', 'wallet', 'wallpaper', 'wallpaper', 'warehouse', 'warehouse', 'warning', 'warning', 'warning_amber', 'wash', 'wash', 'watch', 'watch', 'watch_later', 'watch_off', 'watch_off', 'water', 'water', 'water_damage', 'water_damage', 'water_drop', 'water_drop', 'water_heater', 'waterfall_chart', 'waterfall_chart', 'waves', 'waves', 'waving_hand', 'waving_hand', 'wb_auto', 'wb_auto', 'wb_cloudy', 'wb_incandescent', 'wb_incandescent', 'wb_iridescent', 'wb_iridescent', 'wb_shade', 'wb_shade', 'wb_sunny', 'wb_sunny', 'wb_twighlight', 'wb_twilight', 'wb_twilight', 'wc', 'wc', 'weather_snowy', 'web', 'web', 'web_asset', 'web_asset', 'web_asset_off', 'web_asset_off', 'web_stories', 'web_stories', 'webhook', 'webhook', 'weekend', 'weekend', 'weight', 'west', 'west', 'whatsapp', 'whatshot', 'whatshot', 'wheelchair_pickup', 'wheelchair_pickup', 'where_to_vote', 'where_to_vote', 'widgets', 'widgets', 'width_full', 'width_full', 'width_normal', 'width_normal', 'width_wide', 'width_wide', 'wifi', 'wifi', 'wifi_1_bar', 'wifi_1_bar', 'wifi_2_bar', 'wifi_2_bar', 'wifi_calling', 'wifi_calling', 'wifi_calling_1', 'wifi_calling_1', 'wifi_calling_2', 'wifi_calling_2', 'wifi_calling_3', 'wifi_calling_3', 'wifi_channel', 'wifi_channel', 'wifi_find', 'wifi_find', 'wifi_lock', 'wifi_lock', 'wifi_off', 'wifi_off', 'wifi_password', 'wifi_password', 'wifi_protected_setup', 'wifi_protected_setup', 'wifi_tethering', 'wifi_tethering', 'wifi_tethering_error', 'wifi_tethering_error', 'wifi_tethering_off', 'wifi_tethering_off', 'wind_power', 'wind_power', 'window', 'window', 'window_closed', 'window_open', 'window_sensor', 'wine_bar', 'wine_bar', 'woman', 'woman', 'woman_2', 'woman_2', 'work', 'work', 'work_history', 'work_history', 'work_off', 'work_outline', 'workspace_premium', 'workspace_premium', 'workspaces', 'workspaces', 'workspaces_filled', 'workspaces_outline', 'wrap_text', 'wrap_text', 'wrong_location', 'wrong_location', 'wysiwyg', 'wysiwyg',
30686
+ // 'yard', 'yard', 'youtube_searched_for', 'youtube_searched_for', 'zone_person_alert', 'zone_person_idle', 'zone_person_urgent', 'zoom_in', 'zoom_in', 'zoom_in_map', 'zoom_in_map', 'zoom_out', 'zoom_out', 'zoom_out_map', 'zoom_out_map'];
30668
30687
  class DesignerRef {
30669
30688
  constructor(_model) {
30670
30689
  this._model = _model;
@@ -30677,6 +30696,8 @@ class DesignerElementComponent {
30677
30696
  this._ref = _ref;
30678
30697
  this.change = new EventEmitter();
30679
30698
  }
30699
+ ngOnInit() {
30700
+ }
30680
30701
  get args() { return this.model.options; }
30681
30702
  }
30682
30703
  DesignerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementComponent, deps: [{ token: i2$1.FormBuilder }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Directive });
@@ -30691,6 +30712,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
30691
30712
  }, propDecorators: { change: [{
30692
30713
  type: Output
30693
30714
  }] } });
30715
+ class DesignerTypeElementComponent extends DesignerElementComponent {
30716
+ constructor() {
30717
+ super(...arguments);
30718
+ this.form = this._fb.group({
30719
+ name: this._fb.control(null, Validators.required),
30720
+ title: this._fb.control(null, Validators.required),
30721
+ });
30722
+ }
30723
+ assignargs(evt) {
30724
+ Object.assign(this.args, evt);
30725
+ this.change.emit();
30726
+ }
30727
+ ngOnInit() {
30728
+ const { name, title } = this.form.controls;
30729
+ this.model.draft && title.valueChanges.pipe().subscribe((t) => {
30730
+ t && name.setValue(programName(t));
30731
+ });
30732
+ }
30733
+ }
30734
+ DesignerTypeElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerTypeElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
30735
+ DesignerTypeElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: DesignerTypeElementComponent, usesInheritance: true, ngImport: i0 });
30736
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerTypeElementComponent, decorators: [{
30737
+ type: Directive
30738
+ }] });
30739
+ function programName(name) {
30740
+ return name.
30741
+ replace(/[A-Z]+/g, (c, i) => (i > 0 ? '-' : '') + c.toLowerCase()).
30742
+ replace(' ', '_');
30743
+ }
30744
+ /** */
30694
30745
  class DesignerCubeElementComponent extends DesignerElementComponent {
30695
30746
  constructor(fb, ref) {
30696
30747
  super(fb, ref);
@@ -30725,10 +30776,13 @@ class DesignerCubeElementComponent extends DesignerElementComponent {
30725
30776
  this._forthAxes(evt.value);
30726
30777
  }
30727
30778
  ngOnInit() {
30779
+ super.ngOnInit();
30728
30780
  const cubeId = this.args['cube'];
30729
30781
  this.cube = !cubeId ? this.cubes[0] : this.cubes.find(c => c.name === cubeId);
30730
- this._secondaryAxes(this.args['xAxis']);
30731
- this._thirdAxes(this.args['series']);
30782
+ if (this.args['xAxis']) {
30783
+ this._secondaryAxes(this.args['xAxis']);
30784
+ this.args['series'] && this._thirdAxes(this.args['series']);
30785
+ }
30732
30786
  }
30733
30787
  }
30734
30788
  DesignerCubeElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerCubeElementComponent, deps: [{ token: i2$1.FormBuilder }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Directive });
@@ -30794,10 +30848,10 @@ class DesignerItemComponent {
30794
30848
  }
30795
30849
  }
30796
30850
  DesignerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, deps: [{ token: i0.Injector }, { token: PaneRef, optional: true }, { token: BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
30797
- DesignerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: { editMode: "editMode", template: "template", model: "model", designer: "designer" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "_container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<span></span><ng-container #container></ng-container>', isInline: true, styles: [":host{flex:1}::ng-deep form{padding:8px}\n"] });
30851
+ DesignerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: { editMode: "editMode", template: "template", model: "model", designer: "designer" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "_container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<span></span><ng-container #container></ng-container>', isInline: true, styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}\n"] });
30798
30852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, decorators: [{
30799
30853
  type: Component,
30800
- args: [{ selector: 'bizdoc-designer-element', template: '<span></span><ng-container #container></ng-container>', styles: [":host{flex:1}::ng-deep form{padding:8px}\n"] }]
30854
+ args: [{ selector: 'bizdoc-designer-element', template: '<span></span><ng-container #container></ng-container>', styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}\n"] }]
30801
30855
  }], ctorParameters: function () {
30802
30856
  return [{ type: i0.Injector }, { type: PaneRef, decorators: [{
30803
30857
  type: Optional
@@ -30819,8 +30873,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
30819
30873
 
30820
30874
  /** */
30821
30875
  let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
30822
- constructor(_panes, _ref) {
30876
+ constructor(_panes, _ps, _ref) {
30823
30877
  this._panes = _panes;
30878
+ this._ps = _ps;
30824
30879
  this._ref = _ref;
30825
30880
  this.loading = true;
30826
30881
  this.saving = false;
@@ -30830,19 +30885,19 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
30830
30885
  this._ref.populate().subscribe(r => {
30831
30886
  this.model = r;
30832
30887
  this.sections = [
30833
- { elements: r.forms, type: 'Forms', template: 'form-designer' },
30834
- { elements: r.actions, type: 'Actions', template: 'action-designer' },
30835
- { elements: r.reports, type: 'Reports', template: 'report-designer' },
30836
- { elements: r.widgets, type: 'Widgets', template: 'widget-designer' },
30888
+ { elements: r.forms, type: 'Forms', template: 'form-designer', templates: r.tForms },
30889
+ { elements: r.actions, type: 'Actions', template: 'action-designer', templates: r.tActions },
30890
+ { elements: r.reports, type: 'Reports', template: 'report-designer', templates: r.tReports },
30891
+ { elements: r.widgets, type: 'Widgets', template: 'widget-designer', templates: r.tWidgets },
30837
30892
  { elements: r.views, type: 'Views', template: 'view-designer' },
30838
- { elements: r.guides, type: 'Guides', template: 'guide-designer' },
30839
- { elements: r.cubes, type: 'Cubes', template: 'cube-designer' },
30840
- { elements: r.folders, type: 'Folders', template: 'folder-designer' },
30841
- { elements: r.roles, type: 'Roles', template: 'role-designer' },
30842
- { elements: r.states, type: 'States', template: 'state-designer' },
30843
- { elements: r.utilities, type: 'Utilities', template: 'utility-designer' },
30844
- { elements: r.types, type: 'Types', template: 'type-designer' },
30845
- { elements: r.rules, type: 'Rules', template: 'rule-designer' },
30893
+ { elements: r.guides, type: 'Guides', template: 'guide-designer', templates: [{}] },
30894
+ { elements: r.cubes, type: 'Cubes', template: 'cube-designer', templates: r.tCubes },
30895
+ { elements: r.folders, type: 'Folders', template: 'folder-designer', templates: [{}] },
30896
+ { elements: r.roles, type: 'Roles', template: 'role-designer', templates: [{}] },
30897
+ { elements: r.states, type: 'States', template: 'state-designer', templates: [{}] },
30898
+ { elements: r.utilities, type: 'Utilities', template: 'utility-designer', templates: r.tUtilities },
30899
+ { elements: r.types, type: 'Types', template: 'type-designer', templates: r.tTypes },
30900
+ { elements: r.rules, type: 'Rules', template: 'rule-designer', templates: r.tRules },
30846
30901
  ];
30847
30902
  this.loading = false;
30848
30903
  });
@@ -30850,24 +30905,57 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
30850
30905
  drop(event) {
30851
30906
  moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
30852
30907
  }
30908
+ /**
30909
+ * Ctrl-s save
30910
+ * @param event
30911
+ */
30912
+ handleKeyboardEvent(event) {
30913
+ if (this.dirty && event.ctrlKey && (event.which === 83 || event.which === 115)) {
30914
+ this.save();
30915
+ event.preventDefault();
30916
+ }
30917
+ }
30853
30918
  discard(section, element) {
30854
30919
  ;
30855
30920
  }
30921
+ create(section) {
30922
+ if (section.templates.length === 1) {
30923
+ const [template] = section.templates, element = {
30924
+ type: template.type,
30925
+ name: template.title ? this._uniqueName(programName(template.title), section) : null,
30926
+ title: template.title ? this._uniqueTitle(template.title, section) : null,
30927
+ draft: true,
30928
+ template: template.template
30929
+ };
30930
+ section.elements.push(element);
30931
+ this.edit(element, section.template);
30932
+ }
30933
+ else { }
30934
+ }
30856
30935
  copy(section, element) {
30857
- let i = element.name.lastIndexOf('_'), n = 1;
30858
- let name = element.name.substr(0, i < 0 ? element.name.length : i + 1) + '_' + n;
30859
- while (section.elements.find(e => e.name === name)) {
30936
+ section.elements.splice(section.elements.indexOf(element) + 1, 0, Object.assign(JSON.parse(JSON.stringify(element)), {
30937
+ copyOf: element.name,
30938
+ name: this._uniqueName(element.name, section),
30939
+ title: this._uniqueTitle(element.title, section),
30940
+ draft: true
30941
+ }));
30942
+ this.dirty = true;
30943
+ }
30944
+ _uniqueName(name, section) {
30945
+ let i = name.lastIndexOf('_'), n = 0, val;
30946
+ do {
30860
30947
  n++;
30861
- name = element.name.substr(0, element.name.length - i) + '_' + n;
30862
- }
30863
- i = element.title.lastIndexOf(' '), n = 1;
30864
- let title = element.title.substr(0, i < 0 || parseInt(element.title.substr(i)) === NaN ? element.title.length : i - 1) + ' ' + n;
30865
- while (section.elements.find(e => e.title === title)) {
30948
+ val = (i < 0 || isNaN(parseInt(name.substr(i))) ? name : name.substr(0, i + 1)) + '_' + n;
30949
+ } while (section.elements.find(e => e.name === val));
30950
+ return val;
30951
+ }
30952
+ _uniqueTitle(title, section) {
30953
+ let i = title.lastIndexOf(' '), n = 0, val;
30954
+ do {
30866
30955
  n++;
30867
- title = element.title.substr(0, i < 0 || parseInt(element.title.substr(i)) === NaN ? element.title.length : i - 1) + ' ' + n;
30868
- }
30869
- section.elements.splice(section.elements.indexOf(element) + 1, 0, Object.assign(JSON.parse(JSON.stringify(element)), { copyOf: element.name, name, title }));
30870
- this.dirty = true;
30956
+ val = (i < 0 || isNaN(parseInt(title.substr(i))) ? title : title.substr(0, i - 1)) + ' ' + n;
30957
+ } while (section.elements.find(e => e.title === val));
30958
+ return val;
30871
30959
  }
30872
30960
  edit(element, template) {
30873
30961
  this._panes.navigate(DesignerItemComponent, {
@@ -30888,43 +30976,172 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
30888
30976
  }
30889
30977
  save() {
30890
30978
  this.saving = true;
30891
- this.sections.forEach(s => s.elements.forEach(e => e.options = cleanup(e.options)));
30892
- this._ref.execute(this.model).subscribe(() => this.saving = false);
30979
+ this.sections.forEach(s => s.elements.forEach(e => {
30980
+ if (e.privileges && !Object.keys(e.privileges).length)
30981
+ delete e.privileges;
30982
+ e.options = cleanup(e.options);
30983
+ }));
30984
+ return this._ref.execute(this.model).toPromise().then(() => {
30985
+ this._ps.toast('ChangesSaved');
30986
+ this.saving = false;
30987
+ }, () => {
30988
+ this._ps.error();
30989
+ this.saving = false;
30990
+ });
30893
30991
  }
30894
30992
  };
30895
- ConfigurationDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ConfigurationDesignerComponent, deps: [{ token: PanesRouter }, { token: UtilityRef }], target: i0.ɵɵFactoryTarget.Component });
30896
- ConfigurationDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ConfigurationDesignerComponent, selector: "ng-component", ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <bizdoc-designer-element [model]=\"e\" [template]=\"s.template\" [designer]=\"model\" (change)=\"dirty = true\"></bizdoc-designer-element>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <ng-container *ngIf=\"e.section !== 'utilities' || e.name !== model.utilityName\">\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.copyOf\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s.template)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}:host ::ng-deep .mat-card{margin:0 6px 6px}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.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"] }, { kind: "directive", type: i11$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i17.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i17.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i17.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i17.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i8$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i9.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"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: ["editMode", "template", "model", "designer"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [itemAnimation] });
30993
+ ConfigurationDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ConfigurationDesignerComponent, deps: [{ token: PanesRouter }, { token: PromptService }, { token: UtilityRef }], target: i0.ɵɵFactoryTarget.Component });
30994
+ ConfigurationDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ConfigurationDesignerComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <bizdoc-designer-element [model]=\"e\" [template]=\"s.template\" [designer]=\"model\" (change)=\"dirty = true\"></bizdoc-designer-element>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <!--<ng-container *ngIf=\"e.section !== 'utilities' || e.name !== model.utilityName\">\r\n </ng-container>-->\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.draft || e.empty\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s.template)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <div class=\"compose-element\" *ngIf=\"s.templates?.length\" matRipple>\r\n <button mat-icon-button (click)=\"create(s)\" [bizdocTooltip]=\"'New'|translate\" disableRipple=\"true\"><mat-icon>add</mat-icon></button>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}section .compose-element{border:2px dashed gray;min-width:126px;border-radius:3px;margin:1px 0 6px;text-align:center}section .compose-element button{top:50%;transform:translateY(-50%)}:host ::ng-deep .mat-card{margin:0 6px 6px}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.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"] }, { kind: "directive", type: i11$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i17.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i17.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i17.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i17.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i8$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i9.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"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: ["editMode", "template", "model", "designer"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], animations: [itemAnimation] });
30897
30995
  ConfigurationDesignerComponent = __decorate([
30898
30996
  BizDoc({ selector: 'bizdoc-configuration-designer' })
30899
30997
  ], ConfigurationDesignerComponent);
30900
30998
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ConfigurationDesignerComponent, decorators: [{
30901
30999
  type: Component,
30902
- args: [{ animations: [itemAnimation], template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <bizdoc-designer-element [model]=\"e\" [template]=\"s.template\" [designer]=\"model\" (change)=\"dirty = true\"></bizdoc-designer-element>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <ng-container *ngIf=\"e.section !== 'utilities' || e.name !== model.utilityName\">\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.copyOf\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n </ng-container>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s.template)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}:host ::ng-deep .mat-card{margin:0 6px 6px}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}\n"] }]
30903
- }], ctorParameters: function () { return [{ type: PanesRouter }, { type: UtilityRef }]; } });
31000
+ args: [{ animations: [itemAnimation], template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <bizdoc-designer-element [model]=\"e\" [template]=\"s.template\" [designer]=\"model\" (change)=\"dirty = true\"></bizdoc-designer-element>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <!--<ng-container *ngIf=\"e.section !== 'utilities' || e.name !== model.utilityName\">\r\n </ng-container>-->\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.draft || e.empty\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s.template)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <div class=\"compose-element\" *ngIf=\"s.templates?.length\" matRipple>\r\n <button mat-icon-button (click)=\"create(s)\" [bizdocTooltip]=\"'New'|translate\" disableRipple=\"true\"><mat-icon>add</mat-icon></button>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}section .compose-element{border:2px dashed gray;min-width:126px;border-radius:3px;margin:1px 0 6px;text-align:center}section .compose-element button{top:50%;transform:translateY(-50%)}:host ::ng-deep .mat-card{margin:0 6px 6px}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}\n"] }]
31001
+ }], ctorParameters: function () { return [{ type: PanesRouter }, { type: PromptService }, { type: UtilityRef }]; }, propDecorators: { handleKeyboardEvent: [{
31002
+ type: HostListener,
31003
+ args: ['document:keydown', ['$event']]
31004
+ }] } });
31005
+ function cleanup(params) {
31006
+ if (!params)
31007
+ return null;
31008
+ Object.keys(params).forEach(k => {
31009
+ const val = params[k];
31010
+ if (val === null || val === undefined || (isArray(val) && !val.length))
31011
+ delete params[k];
31012
+ else if (isObject(val))
31013
+ params[k] = cleanup(val);
31014
+ });
31015
+ if (!Object.keys(params).length)
31016
+ return null;
31017
+ return params;
31018
+ }
30904
31019
 
30905
31020
  /** */
30906
31021
  let FormDesignerComponent = class FormDesignerComponent {
30907
- constructor(_fb, _session, _ref) {
31022
+ constructor(_fb, _pane, _cd, _ps, _session, _ref) {
30908
31023
  this._fb = _fb;
31024
+ this._pane = _pane;
31025
+ this._cd = _cd;
31026
+ this._ps = _ps;
30909
31027
  this._session = _session;
30910
31028
  this._ref = _ref;
30911
31029
  this.loading = true;
30912
31030
  this.tools = true;
30913
31031
  this.saving = false;
31032
+ this.history = [];
31033
+ this.historyIndex = 0;
30914
31034
  this.form = this._fb.group({
30915
- name: this._fb.control(null),
30916
- label: this._fb.control(null),
30917
- dataType: this._fb.control(null)
31035
+ subject: null,
31036
+ value: null,
31037
+ cube: null,
31038
+ summary: null,
30918
31039
  });
31040
+ this.dirty = false;
31041
+ this.settings = false;
31042
+ this.datatypes = this._session.profile.types;
31043
+ this.cubes = this._session.profile.cubes;
30919
31044
  }
30920
31045
  ngOnInit() {
30921
- this.datatypes = this._session.profile.types;
30922
- this._ref.populate().subscribe(r => {
30923
- this.model = r;
31046
+ this._pane.queryParamsChange.subscribe(p => {
31047
+ const { formId } = p;
31048
+ formId && this._open(formId);
31049
+ });
31050
+ this.form.valueChanges.pipe().
31051
+ subscribe(v => {
31052
+ this._notifyChange();
31053
+ Object.assign(this.model, v);
31054
+ });
31055
+ }
31056
+ _open(formId) {
31057
+ this._ref.populate(formId).subscribe(r => {
31058
+ this._formId = formId;
31059
+ this.model = r || { sections: [] };
30924
31060
  this.loading = false;
30925
31061
  });
30926
31062
  }
31063
+ addSection(evt) {
31064
+ var _a;
31065
+ let n = 0, name, title;
31066
+ do {
31067
+ n++;
31068
+ name = 'section' + '-' + n;
31069
+ title = 'Section' + ' ' + n;
31070
+ } while (this.model.sections.find(s => s.name === name || s.title === title));
31071
+ this._notifyChange();
31072
+ this.model.sections.push({
31073
+ name,
31074
+ title,
31075
+ rows: [{ fields: [] }]
31076
+ });
31077
+ this._cd.detectChanges();
31078
+ (_a = evt.target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.focus();
31079
+ }
31080
+ addRow(section, evt) {
31081
+ var _a;
31082
+ this._notifyChange();
31083
+ section.rows.push({
31084
+ fields: []
31085
+ });
31086
+ (_a = evt.target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.focus();
31087
+ this._cd.detectChanges();
31088
+ }
31089
+ addField(section, row, kind, evt) {
31090
+ var _a;
31091
+ let n = 0, name, label;
31092
+ do {
31093
+ n++;
31094
+ name = 'field' + '_' + n;
31095
+ label = 'Field' + ' ' + n;
31096
+ } while (section.rows.find(r => r.fields.find(f => f.name === name || f.label === label) != null));
31097
+ this._notifyChange();
31098
+ row.fields.push({
31099
+ kind,
31100
+ name,
31101
+ label,
31102
+ });
31103
+ this._cd.detectChanges();
31104
+ (_a = evt.target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.focus();
31105
+ }
31106
+ removeField(row, field) {
31107
+ this._notifyChange();
31108
+ row.fields.remove(field);
31109
+ }
31110
+ removeSection(section) {
31111
+ this._notifyChange();
31112
+ this.model.sections.remove(section);
31113
+ }
31114
+ removeRow(section, row) {
31115
+ this._notifyChange();
31116
+ section.rows.remove(row);
31117
+ }
31118
+ _notifyChange() {
31119
+ this.history.push(this.model);
31120
+ this.historyIndex = this.history.length - 1;
31121
+ this.dirty = true;
31122
+ }
31123
+ undo() {
31124
+ this.model = this.history[this.historyIndex];
31125
+ this.historyIndex--;
31126
+ }
31127
+ redo() {
31128
+ this.model = this.history[this.historyIndex];
31129
+ this.historyIndex++;
31130
+ }
31131
+ /**
31132
+ * Ctrl-s save; Ctrl-z undo
31133
+ * @param event
31134
+ */
31135
+ handleKeyboardEvent(event) {
31136
+ if (this.dirty && event.ctrlKey) {
31137
+ if (event.which === 83 || event.which === 115) {
31138
+ this.save();
31139
+ event.preventDefault();
31140
+ }
31141
+ }
31142
+ }
30927
31143
  drop(event) {
31144
+ this._notifyChange();
30928
31145
  if (event.previousContainer === event.container) {
30929
31146
  moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
30930
31147
  }
@@ -30934,18 +31151,28 @@ let FormDesignerComponent = class FormDesignerComponent {
30934
31151
  }
30935
31152
  save() {
30936
31153
  this.saving = true;
30937
- this._ref.execute(this.model).subscribe(() => this.saving = false);
31154
+ this._ref.execute({ metadata: this.model, formId: this._formId }).subscribe(() => {
31155
+ this._ps.toast('ChangesSaved');
31156
+ this.dirty = false;
31157
+ this.saving = false;
31158
+ }, () => {
31159
+ this._ps.error();
31160
+ this.saving = false;
31161
+ });
30938
31162
  }
30939
31163
  };
30940
- FormDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormDesignerComponent, deps: [{ token: i2$1.FormBuilder }, { token: SessionService }, { token: UtilityRef }], target: i0.ɵɵFactoryTarget.Component });
30941
- FormDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: FormDesignerComponent, selector: "ng-component", ngImport: i0, template: "<mat-toolbar></mat-toolbar>\r\n<div class=\"row\">\r\n <div></div>\r\n <div *ngIf=\"tools\"></div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }] });
31164
+ FormDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormDesignerComponent, deps: [{ token: i2$1.FormBuilder }, { token: PaneRef }, { token: i0.ChangeDetectorRef }, { token: PromptService }, { token: SessionService }, { token: UtilityRef }], target: i0.ɵɵFactoryTarget.Component });
31165
+ FormDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: FormDesignerComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n <button mat-icon-button (click)=\"undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"historyIndex === 0\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"historyIndex === history.length - 1\"><mat-icon>redo</mat-icon></button>\r\n</mat-toolbar>\r\n<button mat-icon-button (click)=\"settings = !settings\" [bizdocTooltip]=\"'Settings'|translate\" type=\"button\"><mat-icon>settings</mat-icon></button>\r\n<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\" *ngIf=\"settings\">\r\n <mat-form-field>\r\n <mat-label>{{'Value'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"value\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Subject'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"subject\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Summary'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"summary\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Analysis'|translate}}</mat-label>\r\n <mat-select formControlName=\"cube\">\r\n <mat-option>{{'None'|translate}}</mat-option>\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c.name\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n<div class=\"form\" autocomplete=\"off\" *ngIf=\"model\" cdkDropList [cdkDropListData]=\"model.sections\" (cdkDropListDropped)=\"drop($event)\">\r\n <section class=\"column\" *ngFor=\"let s of model.sections\" cdkDrag>\r\n <div class=\"row\">\r\n <mat-icon class=\"section-drag\" cdkDragHandle>drag_indicator</mat-icon>\r\n <div class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput [(value)]=\"s.title\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput [(value)]=\"s.name\" />\r\n </mat-form-field>\r\n <div cdkDropList [cdkDropListData]=\"s.rows\" (cdkDropListDropped)=\"drop($event)\">\r\n <div *ngFor=\"let r of s.rows\" class=\"row designer-row\" cdkDrag>\r\n <mat-icon cdkDragHandle>drag_indicator</mat-icon>\r\n <div cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"r.fields\" (cdkDropListDropped)=\"drop($event)\" class=\"row\">\r\n <div *ngFor=\"let f of r.fields\" cdkDrag class=\"field row\">\r\n <mat-icon cdkDragHandle>drag_indicator</mat-icon>\r\n <div class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput required [(value)]=\"f.name\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Label'|translate}}</mat-label>\r\n <input matInput required [(value)]=\"f.label\" />\r\n </mat-form-field>\r\n <ng-container [ngSwitch]=\"f.kind\">\r\n <mat-form-field *ngSwitchCase=\"'Date'\">\r\n <input matInput [required]=\"f.required\" />\r\n </mat-form-field>\r\n <div *ngSwitchCase=\"'Text'\">\r\n </div>\r\n <mat-form-field *ngSwitchCase=\"'Select'\">\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select [(value)]=\"f.dataType\" required>\r\n <mat-option *ngFor=\"let t of datatypes\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div *ngSwitchDefault>\r\n <mat-form-field>\r\n <mat-label>{{'Type'|translate}}</mat-label>\r\n <mat-select [(value)]=\"f.kind\" required>\r\n <mat-option value=\"String\">{{'None'|translate}}</mat-option>\r\n <mat-option value=\"Number\">{{'Number'|translate}}</mat-option>\r\n <mat-option value=\"PhoneNumber\">{{'PhoneNumber'|translate}}</mat-option>\r\n <mat-option value=\"EmailAddress\">{{'EmailAddress'|translate}}</mat-option>\r\n <mat-option value=\"Url\">{{'Url'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"actions\">\r\n <button mat-stroked-button (click)=\"removeField(r, f)\" [bizdocTooltip]=\"'Discard'|translate\" type=\"button\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <div *cdkDragPlaceholder class=\"drag-placeholder\"></div>\r\n </div>\r\n </div>\r\n <div class=\"column\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"fieldKindMenu\" [bizdocTooltip]=\"'Add'|translate\" type=\"button\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #fieldKindMenu>\r\n <button mat-menu-item (click)=\"addField(s, r, 'String', $event)\">{{'Input'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Date', $event)\">{{'Date'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Select', $event)\">{{'Select'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Checkbox', $event)\">{{'Checkbox'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Switch', $event)\">{{'Switch'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Text', $event)\">{{'Text'|translate}}</button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n <button mat-stroked-button (click)=\"removeRow(s, r)\" [bizdocTooltip]=\"'Discard'|translate\" type=\"button\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <button mat-stroked-button (click)=\"addRow(s, $event)\" [bizdocTooltip]=\"'Add'|translate\" type=\"button\"><mat-icon>add</mat-icon></button>\r\n <button mat-stroked-button (click)=\"removeSection(s)\" [bizdocTooltip]=\"'Discard'|translate\" type=\"button\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>{{'Value'|translate}}</mat-label>\r\n <bizdoc-ace-input [(value)]=\"s.value\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n </section>\r\n <button mat-stroked-button (click)=\"addSection($event)\" [bizdocTooltip]=\"'Add'|translate\" type=\"button\"><mat-icon>add</mat-icon></button>\r\n</div>\r\n", styles: [".form{margin:8px}section,.designer-row,.field{border:2px solid transparent;border-radius:3px;padding:8px}section:hover,.designer-row:hover,.field:hover{border:2px dotted}section .designer-row .field{flex:1}.drag-placeholder{border:2px dashed}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i11$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i11$1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: i8$3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: AceInput, selector: "bizdoc-ace-input", inputs: ["params", "placeholder", "required", "disabled", "value"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
30942
31166
  FormDesignerComponent = __decorate([
30943
31167
  BizDoc({ selector: 'bizdoc-form-designer' })
30944
31168
  ], FormDesignerComponent);
30945
31169
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormDesignerComponent, decorators: [{
30946
31170
  type: Component,
30947
- args: [{ template: "<mat-toolbar></mat-toolbar>\r\n<div class=\"row\">\r\n <div></div>\r\n <div *ngIf=\"tools\"></div>\r\n</div>\r\n" }]
30948
- }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: SessionService }, { type: UtilityRef }]; } });
31171
+ args: [{ template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n <button mat-icon-button (click)=\"undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"historyIndex === 0\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"historyIndex === history.length - 1\"><mat-icon>redo</mat-icon></button>\r\n</mat-toolbar>\r\n<button mat-icon-button (click)=\"settings = !settings\" [bizdocTooltip]=\"'Settings'|translate\" type=\"button\"><mat-icon>settings</mat-icon></button>\r\n<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\" *ngIf=\"settings\">\r\n <mat-form-field>\r\n <mat-label>{{'Value'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"value\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Subject'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"subject\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Summary'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"summary\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Analysis'|translate}}</mat-label>\r\n <mat-select formControlName=\"cube\">\r\n <mat-option>{{'None'|translate}}</mat-option>\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c.name\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n<div class=\"form\" autocomplete=\"off\" *ngIf=\"model\" cdkDropList [cdkDropListData]=\"model.sections\" (cdkDropListDropped)=\"drop($event)\">\r\n <section class=\"column\" *ngFor=\"let s of model.sections\" cdkDrag>\r\n <div class=\"row\">\r\n <mat-icon class=\"section-drag\" cdkDragHandle>drag_indicator</mat-icon>\r\n <div class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput [(value)]=\"s.title\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput [(value)]=\"s.name\" />\r\n </mat-form-field>\r\n <div cdkDropList [cdkDropListData]=\"s.rows\" (cdkDropListDropped)=\"drop($event)\">\r\n <div *ngFor=\"let r of s.rows\" class=\"row designer-row\" cdkDrag>\r\n <mat-icon cdkDragHandle>drag_indicator</mat-icon>\r\n <div cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"r.fields\" (cdkDropListDropped)=\"drop($event)\" class=\"row\">\r\n <div *ngFor=\"let f of r.fields\" cdkDrag class=\"field row\">\r\n <mat-icon cdkDragHandle>drag_indicator</mat-icon>\r\n <div class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput required [(value)]=\"f.name\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Label'|translate}}</mat-label>\r\n <input matInput required [(value)]=\"f.label\" />\r\n </mat-form-field>\r\n <ng-container [ngSwitch]=\"f.kind\">\r\n <mat-form-field *ngSwitchCase=\"'Date'\">\r\n <input matInput [required]=\"f.required\" />\r\n </mat-form-field>\r\n <div *ngSwitchCase=\"'Text'\">\r\n </div>\r\n <mat-form-field *ngSwitchCase=\"'Select'\">\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select [(value)]=\"f.dataType\" required>\r\n <mat-option *ngFor=\"let t of datatypes\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div *ngSwitchDefault>\r\n <mat-form-field>\r\n <mat-label>{{'Type'|translate}}</mat-label>\r\n <mat-select [(value)]=\"f.kind\" required>\r\n <mat-option value=\"String\">{{'None'|translate}}</mat-option>\r\n <mat-option value=\"Number\">{{'Number'|translate}}</mat-option>\r\n <mat-option value=\"PhoneNumber\">{{'PhoneNumber'|translate}}</mat-option>\r\n <mat-option value=\"EmailAddress\">{{'EmailAddress'|translate}}</mat-option>\r\n <mat-option value=\"Url\">{{'Url'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"actions\">\r\n <button mat-stroked-button (click)=\"removeField(r, f)\" [bizdocTooltip]=\"'Discard'|translate\" type=\"button\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <div *cdkDragPlaceholder class=\"drag-placeholder\"></div>\r\n </div>\r\n </div>\r\n <div class=\"column\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"fieldKindMenu\" [bizdocTooltip]=\"'Add'|translate\" type=\"button\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #fieldKindMenu>\r\n <button mat-menu-item (click)=\"addField(s, r, 'String', $event)\">{{'Input'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Date', $event)\">{{'Date'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Select', $event)\">{{'Select'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Checkbox', $event)\">{{'Checkbox'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Switch', $event)\">{{'Switch'|translate}}</button>\r\n <button mat-menu-item (click)=\"addField(s, r, 'Text', $event)\">{{'Text'|translate}}</button>\r\n </mat-menu>\r\n <span class=\"divider\"></span>\r\n <button mat-stroked-button (click)=\"removeRow(s, r)\" [bizdocTooltip]=\"'Discard'|translate\" type=\"button\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <button mat-stroked-button (click)=\"addRow(s, $event)\" [bizdocTooltip]=\"'Add'|translate\" type=\"button\"><mat-icon>add</mat-icon></button>\r\n <button mat-stroked-button (click)=\"removeSection(s)\" [bizdocTooltip]=\"'Discard'|translate\" type=\"button\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>{{'Value'|translate}}</mat-label>\r\n <bizdoc-ace-input [(value)]=\"s.value\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n </section>\r\n <button mat-stroked-button (click)=\"addSection($event)\" [bizdocTooltip]=\"'Add'|translate\" type=\"button\"><mat-icon>add</mat-icon></button>\r\n</div>\r\n", styles: [".form{margin:8px}section,.designer-row,.field{border:2px solid transparent;border-radius:3px;padding:8px}section:hover,.designer-row:hover,.field:hover{border:2px dotted}section .designer-row .field{flex:1}.drag-placeholder{border:2px dashed}\n"] }]
31172
+ }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: PaneRef }, { type: i0.ChangeDetectorRef }, { type: PromptService }, { type: SessionService }, { type: UtilityRef }]; }, propDecorators: { handleKeyboardEvent: [{
31173
+ type: HostListener,
31174
+ args: ['document:keydown', ['$event']]
31175
+ }] } });
30949
31176
 
30950
31177
  let ParallelViewDesignComponent = class ParallelViewDesignComponent extends DesignerCubeElementComponent {
30951
31178
  constructor() {
@@ -30963,13 +31190,13 @@ let ParallelViewDesignComponent = class ParallelViewDesignComponent extends Desi
30963
31190
  }
30964
31191
  };
30965
31192
  ParallelViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ParallelViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
30966
- ParallelViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ParallelViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form *ngIf=\"cube; else none\" autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"cube.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n <div>\r\n <bizdoc-cube-parallel *ngIf=\"args.xAxis\" [cube]=\"args.cube\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [scope]=\"args.scope\"\r\n [size]=\"250\"></bizdoc-cube-parallel>\r\n </div>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n<ng-template #none></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeParallelComponent, selector: "bizdoc-cube-parallel", inputs: ["filters", "xAxis", "series", "indices", "cube", "size", "chartType", "scope", "palettes"], outputs: ["explore"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31193
+ ParallelViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ParallelViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"cube.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n <div>\r\n <bizdoc-cube-parallel *ngIf=\"args.xAxis\" [cube]=\"args.cube\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [scope]=\"args.scope\"\r\n [size]=\"250\"></bizdoc-cube-parallel>\r\n </div>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeParallelComponent, selector: "bizdoc-cube-parallel", inputs: ["filters", "xAxis", "series", "indices", "cube", "size", "chartType", "scope", "palettes"], outputs: ["explore"] }, { kind: "component", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
30967
31194
  ParallelViewDesignComponent = __decorate([
30968
31195
  BizDoc({ selector: 'parallel-view-designer' })
30969
31196
  ], ParallelViewDesignComponent);
30970
31197
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ParallelViewDesignComponent, decorators: [{
30971
31198
  type: Component,
30972
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form *ngIf=\"cube; else none\" autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"cube.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n <div>\r\n <bizdoc-cube-parallel *ngIf=\"args.xAxis\" [cube]=\"args.cube\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [scope]=\"args.scope\"\r\n [size]=\"250\"></bizdoc-cube-parallel>\r\n </div>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n<ng-template #none></ng-template>\r\n" }]
31199
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"cube.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n <div>\r\n <bizdoc-cube-parallel *ngIf=\"args.xAxis\" [cube]=\"args.cube\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [scope]=\"args.scope\"\r\n [size]=\"250\"></bizdoc-cube-parallel>\r\n </div>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n" }]
30973
31200
  }] });
30974
31201
 
30975
31202
  let SumViewDesignComponent = class SumViewDesignComponent extends DesignerCubeElementComponent {
@@ -30980,43 +31207,68 @@ let SumViewDesignComponent = class SumViewDesignComponent extends DesignerCubeEl
30980
31207
  xAxis: this._fb.control(null, Validators.required),
30981
31208
  series: null,
30982
31209
  indices: null,
31210
+ filters: this._fb.group({}),
30983
31211
  periodPolicy: null,
30984
31212
  aggregate: null,
30985
31213
  });
30986
31214
  }
30987
31215
  };
30988
31216
  SumViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SumViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
30989
- SumViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: SumViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<form autocomplete=\"off\" *ngIf=\"editMode; else info\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n<div>\r\n <bizdoc-cube-sum *ngIf=\"args.xAxis\" [xAxis]=\"args.xAxis\"\r\n [filters]=\"args.filters || {}\"\r\n [parentAxis]=\"args.series\"\r\n [scope]=\"args.scope\"\r\n [periodPolicy]=\"args.periodPolicy\"\r\n [indices]=\"args.indices\"\r\n [cube]=\"cube.name\"></bizdoc-cube-sum>\r\n</div>\r\n<ng-template #info></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeSumComponent, selector: "bizdoc-cube-sum", inputs: ["xAxis", "periodPolicy", "parentAxis", "filters", "cube", "indices", "scope"], outputs: ["explore"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31217
+ SumViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: SumViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n <div>\r\n <bizdoc-cube-sum *ngIf=\"args.xAxis\" [xAxis]=\"args.xAxis\"\r\n [filters]=\"args.filters || {}\"\r\n [parentAxis]=\"args.series\"\r\n [scope]=\"args.scope\"\r\n [periodPolicy]=\"args.periodPolicy\"\r\n [indices]=\"args.indices\"\r\n [cube]=\"cube.name\"></bizdoc-cube-sum>\r\n </div>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeSumComponent, selector: "bizdoc-cube-sum", inputs: ["xAxis", "periodPolicy", "parentAxis", "filters", "cube", "indices", "scope"], outputs: ["explore"] }, { kind: "component", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
30990
31218
  SumViewDesignComponent = __decorate([
30991
31219
  BizDoc({ selector: 'period-view-designer' })
30992
31220
  ], SumViewDesignComponent);
30993
31221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SumViewDesignComponent, decorators: [{
30994
31222
  type: Component,
30995
- args: [{ template: "<form autocomplete=\"off\" *ngIf=\"editMode; else info\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</form>\r\n<div>\r\n <bizdoc-cube-sum *ngIf=\"args.xAxis\" [xAxis]=\"args.xAxis\"\r\n [filters]=\"args.filters || {}\"\r\n [parentAxis]=\"args.series\"\r\n [scope]=\"args.scope\"\r\n [periodPolicy]=\"args.periodPolicy\"\r\n [indices]=\"args.indices\"\r\n [cube]=\"cube.name\"></bizdoc-cube-sum>\r\n</div>\r\n<ng-template #info></ng-template>\r\n" }]
31223
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n <div>\r\n <bizdoc-cube-sum *ngIf=\"args.xAxis\" [xAxis]=\"args.xAxis\"\r\n [filters]=\"args.filters || {}\"\r\n [parentAxis]=\"args.series\"\r\n [scope]=\"args.scope\"\r\n [periodPolicy]=\"args.periodPolicy\"\r\n [indices]=\"args.indices\"\r\n [cube]=\"cube.name\"></bizdoc-cube-sum>\r\n </div>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n" }]
30996
31224
  }] });
30997
31225
 
30998
31226
  let MatrixViewDesignComponent = class MatrixViewDesignComponent extends DesignerCubeElementComponent {
30999
31227
  constructor() {
31000
31228
  super(...arguments);
31229
+ this.sum = this._fb.array([]);
31001
31230
  this.form = this._fb.group({
31002
31231
  cube: null,
31003
31232
  xAxis: this._fb.control(null, Validators.required),
31004
31233
  series: this._fb.control(null, Validators.required),
31005
- sum: this._fb.array([]),
31006
31234
  indices: null,
31007
31235
  aggregate: null,
31008
- filters: null
31236
+ sum: this.sum,
31237
+ filters: null,
31009
31238
  });
31010
31239
  }
31240
+ ngOnInit() {
31241
+ if (this.args.sum) {
31242
+ if (isArray(this.args.sum))
31243
+ this.args.sum.forEach(s => this.add(s));
31244
+ else
31245
+ this.add(this.args.sum);
31246
+ }
31247
+ super.ngOnInit();
31248
+ }
31249
+ add(sum) {
31250
+ this.sum.push(this._fb.group({
31251
+ axis: (sum === null || sum === void 0 ? void 0 : sum.axis) || 'series',
31252
+ title: this._fb.control(sum === null || sum === void 0 ? void 0 : sum.title, Validators.required),
31253
+ value: sum === null || sum === void 0 ? void 0 : sum.value,
31254
+ format: sum === null || sum === void 0 ? void 0 : sum.format,
31255
+ precision: sum === null || sum === void 0 ? void 0 : sum.precision,
31256
+ explorable: sum === null || sum === void 0 ? void 0 : sum.explorable,
31257
+ calculate: sum === null || sum === void 0 ? void 0 : sum.calculate
31258
+ }));
31259
+ }
31260
+ drop(event) {
31261
+ moveItemInArray(this.model.axes, event.previousIndex, event.currentIndex);
31262
+ }
31011
31263
  };
31012
31264
  MatrixViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: MatrixViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31013
- MatrixViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: MatrixViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<form autocomplete=\"off\" *ngIf=\"editMode\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Filters'|translate}}</mat-label>\r\n <mat-select formControlName=\"filters\" multiple (selectionChange)=\"forthSelected($event)\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!forthAxes || !forthAxes.length\">\r\n <mat-option *ngFor=\"let x of forthAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint></mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31265
+ MatrixViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: MatrixViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Filters'|translate}}</mat-label>\r\n <mat-select formControlName=\"filters\" multiple (selectionChange)=\"forthSelected($event)\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!forthAxes || forthAxes?.length\">\r\n <mat-option *ngFor=\"let x of forthAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint></mat-hint>\r\n </mat-form-field>\r\n <h2 class=\"mat-title\">{{'Summary'|translate}}</h2>\r\n <div formArrayName=\"sum\" class=\"column\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"row\" *ngFor=\"let s of sum.controls; index as index\" [formGroup]=\"s\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-label>{{'Axis'|translate}}</mat-label>\r\n <mat-radio-group formControlName=\"axis\">\r\n <mat-radio-button value=\"xAxis\">{{'X'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"series\">{{'Y'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Calculate'|translate}}</mat-label>\r\n <mat-select formControlName=\"calculate\">\r\n <mat-option>{{'None'|translate}}</mat-option>\r\n <mat-option value=\"quarter\">{{'Quarter'|translate}}</mat-option>\r\n <mat-option value=\"year\">{{'Year'|translate}}</mat-option>\r\n <mat-option value=\"month\">{{'Month'|translate}}</mat-option>\r\n <mat-option value=\"accumulate\">{{'Accumulate'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"sum.removeAt(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"add()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n </form>\r\n <!--<ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n --> \r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i11$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4$6.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$6.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31014
31266
  MatrixViewDesignComponent = __decorate([
31015
31267
  BizDoc({ selector: 'matrix-view-designer' })
31016
31268
  ], MatrixViewDesignComponent);
31017
31269
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: MatrixViewDesignComponent, decorators: [{
31018
31270
  type: Component,
31019
- args: [{ template: "<form autocomplete=\"off\" *ngIf=\"editMode\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Filters'|translate}}</mat-label>\r\n <mat-select formControlName=\"filters\" multiple (selectionChange)=\"forthSelected($event)\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!forthAxes || !forthAxes.length\">\r\n <mat-option *ngFor=\"let x of forthAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint></mat-hint>\r\n </mat-form-field>\r\n</form>\r\n" }]
31271
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Filters'|translate}}</mat-label>\r\n <mat-select formControlName=\"filters\" multiple (selectionChange)=\"forthSelected($event)\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!forthAxes || forthAxes?.length\">\r\n <mat-option *ngFor=\"let x of forthAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint></mat-hint>\r\n </mat-form-field>\r\n <h2 class=\"mat-title\">{{'Summary'|translate}}</h2>\r\n <div formArrayName=\"sum\" class=\"column\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"row\" *ngFor=\"let s of sum.controls; index as index\" [formGroup]=\"s\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-label>{{'Axis'|translate}}</mat-label>\r\n <mat-radio-group formControlName=\"axis\">\r\n <mat-radio-button value=\"xAxis\">{{'X'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"series\">{{'Y'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Calculate'|translate}}</mat-label>\r\n <mat-select formControlName=\"calculate\">\r\n <mat-option>{{'None'|translate}}</mat-option>\r\n <mat-option value=\"quarter\">{{'Quarter'|translate}}</mat-option>\r\n <mat-option value=\"year\">{{'Year'|translate}}</mat-option>\r\n <mat-option value=\"month\">{{'Month'|translate}}</mat-option>\r\n <mat-option value=\"accumulate\">{{'Accumulate'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"sum.removeAt(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"add()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n </form>\r\n <!--<ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n --> \r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n" }]
31020
31272
  }] });
31021
31273
 
31022
31274
  let ChartViewDesignComponent = class ChartViewDesignComponent extends DesignerCubeElementComponent {
@@ -31044,20 +31296,170 @@ let ChartViewDesignComponent = class ChartViewDesignComponent extends DesignerCu
31044
31296
  }
31045
31297
  };
31046
31298
  ChartViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ChartViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31047
- ChartViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ChartViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form *ngIf=\"cubes.length; else none\" autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple (selectionChange)=\"seriesSelected($event)\" [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"cube?.indices?.length\">\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\" [disabled]=\"isAccum\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </form>\r\n <div *ngIf=\"args.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"args.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"\r\n [cube]=\"selectedCube.name\"\r\n [filters]=\"args.filters\"\r\n [xAxis]=\"args.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [indicesChartType]=\"args.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n<ng-template #none></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeAccumulationChartComponent, selector: "bizdoc-cube-accum", inputs: ["palettes", "height", "width", "cube", "xAxis", "filters", "chartType", "scope", "loading"], outputs: ["loadingChange", "explore"] }, { kind: "component", type: CubeChartComponent, selector: "bizdoc-cube-chart", inputs: ["width", "height", "cube", "xAxis", "series", "indices", "filters", "yAxis", "chartType", "indicesChartType", "scope", "loading", "palettes"], outputs: ["explore", "loadingChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31299
+ ChartViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ChartViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple (selectionChange)=\"seriesSelected($event)\" [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"cube?.indices?.length\">\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\" [disabled]=\"isAccum\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n <!--<div *ngIf=\"args.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"args.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"\r\n [cube]=\"selectedCube.name\"\r\n [filters]=\"args.filters\"\r\n [xAxis]=\"args.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [indicesChartType]=\"args.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>-->\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31048
31300
  ChartViewDesignComponent = __decorate([
31049
31301
  BizDoc({ selector: 'analysis-view-designer' })
31050
31302
  ], ChartViewDesignComponent);
31051
31303
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ChartViewDesignComponent, decorators: [{
31052
31304
  type: Component,
31053
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form *ngIf=\"cubes.length; else none\" autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple (selectionChange)=\"seriesSelected($event)\" [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"cube?.indices?.length\">\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\" [disabled]=\"isAccum\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </form>\r\n <div *ngIf=\"args.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"args.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"\r\n [cube]=\"selectedCube.name\"\r\n [filters]=\"args.filters\"\r\n [xAxis]=\"args.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [indicesChartType]=\"args.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n<ng-template #none></ng-template>\r\n" }]
31305
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple (selectionChange)=\"seriesSelected($event)\" [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"cube?.indices?.length\">\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title||x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\" [disabled]=\"isAccum\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n <!--<div *ngIf=\"args.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"args.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"\r\n [cube]=\"selectedCube.name\"\r\n [filters]=\"args.filters\"\r\n [xAxis]=\"args.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [indicesChartType]=\"args.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>-->\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n" }]
31054
31306
  }] });
31055
31307
 
31308
+ class IconPickerComponent {
31309
+ constructor(ngControl, _overlay, _http, _vc, _element, _dir) {
31310
+ this.ngControl = ngControl;
31311
+ this._overlay = _overlay;
31312
+ this._http = _http;
31313
+ this._vc = _vc;
31314
+ this._element = _element;
31315
+ this._dir = _dir;
31316
+ this.id = `color-picker-${IconPickerComponent.nextId++}`;
31317
+ this.errorState = false;
31318
+ this.describedBy = '';
31319
+ this.focused = false;
31320
+ this.valueChanges = new EventEmitter();
31321
+ this.categories = [];
31322
+ this.filter = new FormControl(null);
31323
+ this._required = false;
31324
+ this._disabled = false;
31325
+ this.stateChanges = new Subject();
31326
+ if (this.ngControl != null) {
31327
+ this.ngControl.valueAccessor = this;
31328
+ }
31329
+ }
31330
+ get value() { return this._value; }
31331
+ set value(val) {
31332
+ this._value = val;
31333
+ this._onChange && this._onChange(val);
31334
+ this.valueChanges.next(val);
31335
+ this.stateChanges.next();
31336
+ }
31337
+ get empty() {
31338
+ return this._value === null;
31339
+ }
31340
+ get shouldLabelFloat() {
31341
+ return this.focused || !this.empty;
31342
+ }
31343
+ get required() {
31344
+ return this._required;
31345
+ }
31346
+ set required(req) {
31347
+ this._required = req;
31348
+ this.stateChanges.next();
31349
+ }
31350
+ get disabled() { return this._disabled; }
31351
+ set disabled(value) {
31352
+ this._disabled = value;
31353
+ this.stateChanges.next();
31354
+ }
31355
+ registerOnChange(fn) {
31356
+ this._onChange = fn;
31357
+ }
31358
+ registerOnTouched(fn) {
31359
+ this._onTouched = fn;
31360
+ }
31361
+ writeValue(obj) {
31362
+ this._value = obj;
31363
+ }
31364
+ setDescribedByIds(ids) {
31365
+ this.describedBy = ids.join(' ');
31366
+ }
31367
+ onContainerClick(_event) {
31368
+ this._onTouched && this._onTouched();
31369
+ this.open();
31370
+ }
31371
+ ngOnInit() {
31372
+ if (!IconPickerComponent.icons)
31373
+ this._http.get('/assets/system/icons.json').subscribe(e => {
31374
+ IconPickerComponent.icons = e;
31375
+ this._list(e);
31376
+ });
31377
+ else
31378
+ this._list(IconPickerComponent.icons);
31379
+ this.filter.valueChanges.
31380
+ pipe(debounceTime$1(150)).
31381
+ subscribe(v => this._list(IconPickerComponent.icons.filter(i => i.tags.findIndex(t => t.indexOf(v) > -1) > -1)));
31382
+ }
31383
+ _list(e) {
31384
+ e.forEach(i => i.categories.forEach(c => {
31385
+ if (this.categories[c])
31386
+ this.categories[c].items.push(i);
31387
+ else
31388
+ this.categories.push(this.categories[c] = { items: [i] });
31389
+ }));
31390
+ }
31391
+ open() {
31392
+ this._overlayRef = this._overlay.create({
31393
+ positionStrategy: this._overlay.position().flexibleConnectedTo(this._element).withPositions([{
31394
+ originX: 'start',
31395
+ originY: 'bottom',
31396
+ overlayX: 'start',
31397
+ overlayY: 'top'
31398
+ }, {
31399
+ originX: 'start',
31400
+ originY: 'top',
31401
+ overlayX: 'start',
31402
+ overlayY: 'bottom'
31403
+ }]),
31404
+ hasBackdrop: true,
31405
+ direction: this._dir.value,
31406
+ backdropClass: 'cdk-overlay-transparent-backdrop',
31407
+ panelClass: 'home-panel'
31408
+ });
31409
+ const portal = new TemplatePortal(this.panel, this._vc);
31410
+ this._overlayRef.attach(portal);
31411
+ merge(this._overlayRef.backdropClick(), this._overlayRef.keydownEvents().pipe(filter$1(k => k.keyCode === ESCAPE))).subscribe(() => this._overlayRef.detach());
31412
+ }
31413
+ _trackBy(index, el) {
31414
+ return el.name;
31415
+ }
31416
+ _clear() { }
31417
+ close() {
31418
+ this._overlayRef.detach();
31419
+ }
31420
+ _pick(icon) {
31421
+ this.value = icon.name;
31422
+ this.close();
31423
+ }
31424
+ }
31425
+ IconPickerComponent.nextId = 0;
31426
+ IconPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: IconPickerComponent, deps: [{ token: i2$1.NgControl, optional: true, self: true }, { token: i1$2.Overlay }, { token: i1.HttpClient }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i3$3.Directionality }], target: i0.ɵɵFactoryTarget.Component });
31427
+ IconPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: IconPickerComponent, selector: "bizdoc-icon-picker", inputs: { value: "value", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "id": "this.id", "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" } }, viewQueries: [{ propertyName: "panel", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<button mat-button (click)=\"open()\" [disabled]=\"disabled\">\r\n <mat-icon>{{value}}</mat-icon>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n</button>\r\n<ng-template>\r\n <div class=\"icon-palette\">\r\n <input matInput [formControl]=\"filter\" (keydown.escape)=\"_clear()\" />\r\n <div *ngFor=\"let c of categories; trackBy: _trackBy\">\r\n <span></span>\r\n <div>\r\n <mat-icon *ngFor=\"let i of c.items; trackBy: _trackBy\" (click)=\"_pick(i)\">{{i.name}}</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".icon-palette{max-height:400px;overflow-y:auto;max-width:450px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
31428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: IconPickerComponent, decorators: [{
31429
+ type: Component,
31430
+ args: [{ selector: 'bizdoc-icon-picker', template: "<button mat-button (click)=\"open()\" [disabled]=\"disabled\">\r\n <mat-icon>{{value}}</mat-icon>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n</button>\r\n<ng-template>\r\n <div class=\"icon-palette\">\r\n <input matInput [formControl]=\"filter\" (keydown.escape)=\"_clear()\" />\r\n <div *ngFor=\"let c of categories; trackBy: _trackBy\">\r\n <span></span>\r\n <div>\r\n <mat-icon *ngFor=\"let i of c.items; trackBy: _trackBy\" (click)=\"_pick(i)\">{{i.name}}</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".icon-palette{max-height:400px;overflow-y:auto;max-width:450px}\n"] }]
31431
+ }], ctorParameters: function () {
31432
+ return [{ type: i2$1.NgControl, decorators: [{
31433
+ type: Optional
31434
+ }, {
31435
+ type: Self
31436
+ }] }, { type: i1$2.Overlay }, { type: i1.HttpClient }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i3$3.Directionality }];
31437
+ }, propDecorators: { id: [{
31438
+ type: HostBinding
31439
+ }], value: [{
31440
+ type: Input
31441
+ }], shouldLabelFloat: [{
31442
+ type: HostBinding,
31443
+ args: ['class.floating']
31444
+ }], required: [{
31445
+ type: Input
31446
+ }], disabled: [{
31447
+ type: Input
31448
+ }], describedBy: [{
31449
+ type: HostBinding,
31450
+ args: ['attr.aria-describedby']
31451
+ }], valueChanges: [{
31452
+ type: Output
31453
+ }], panel: [{
31454
+ type: ViewChild,
31455
+ args: [TemplateRef]
31456
+ }] } });
31457
+
31056
31458
  class PrivilegesDesignComponent {
31057
- constructor(_fb, _session, _service) {
31459
+ constructor(_fb, _service, _ref) {
31058
31460
  this._fb = _fb;
31059
- this._session = _session;
31060
31461
  this._service = _service;
31462
+ this._ref = _ref;
31061
31463
  this.change = new EventEmitter();
31062
31464
  this.form = this._fb.group({
31063
31465
  rule: null,
@@ -31065,8 +31467,12 @@ class PrivilegesDesignComponent {
31065
31467
  });
31066
31468
  }
31067
31469
  ngOnInit() {
31068
- this._service.roles().subscribe(r => this.roles = r //.concat(this._session.profile.roles)
31069
- );
31470
+ this._service.roles().subscribe(r => this.roles = r.
31471
+ concat(this._ref.model.roles.map(r => ({
31472
+ name: r.name,
31473
+ title: r.title,
31474
+ dataType: r.dataType
31475
+ }))));
31070
31476
  this.form.patchValue(this.model);
31071
31477
  this.form.valueChanges.subscribe(v => Object.assign(this.model, v));
31072
31478
  }
@@ -31074,26 +31480,29 @@ class PrivilegesDesignComponent {
31074
31480
  this.form.get('roles').setValue(evt.options.map(o => o.value));
31075
31481
  }
31076
31482
  }
31077
- PrivilegesDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PrivilegesDesignComponent, deps: [{ token: i2$1.FormBuilder }, { token: SessionService }, { token: SystemService }], target: i0.ɵɵFactoryTarget.Component });
31483
+ PrivilegesDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PrivilegesDesignComponent, deps: [{ token: i2$1.FormBuilder }, { token: SystemService }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Component });
31078
31484
  PrivilegesDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: { model: "model" }, outputs: { change: "change" }, ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <h2 class=\"mat-title\">{{'Privileges'|translate}}</h2>\r\n <mat-selection-list (selectionChange)=\"rolesChange($event)\" multiple *ngIf=\"roles\">\r\n <mat-list-option *ngFor=\"let r of roles\" [selected]=\"model?.roles?.indexOf(r.name) > -1\" [value]=\"r.name\">{{r.title}}</mat-list-option>\r\n <!--[disabled]=\"false\"-->\r\n </mat-selection-list>\r\n <!--<mat-form-field>\r\n <mat-label>{{'Roles'|translate}}</mat-label>\r\n <mat-select formControlName=\"roles\" multiple>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <bizdoc-ace-input [placeholder]=\"'Condition'|translate\" formControlName=\"rule\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'ProgrammableExpression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4$5.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i4$5.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: AceInput, selector: "bizdoc-ace-input", inputs: ["params", "placeholder", "required", "disabled", "value"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31079
31485
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PrivilegesDesignComponent, decorators: [{
31080
31486
  type: Component,
31081
31487
  args: [{ selector: 'bizdoc-privileges', template: "<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <h2 class=\"mat-title\">{{'Privileges'|translate}}</h2>\r\n <mat-selection-list (selectionChange)=\"rolesChange($event)\" multiple *ngIf=\"roles\">\r\n <mat-list-option *ngFor=\"let r of roles\" [selected]=\"model?.roles?.indexOf(r.name) > -1\" [value]=\"r.name\">{{r.title}}</mat-list-option>\r\n <!--[disabled]=\"false\"-->\r\n </mat-selection-list>\r\n <!--<mat-form-field>\r\n <mat-label>{{'Roles'|translate}}</mat-label>\r\n <mat-select formControlName=\"roles\" multiple>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <bizdoc-ace-input [placeholder]=\"'Condition'|translate\" formControlName=\"rule\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'ProgrammableExpression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n" }]
31082
- }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: SessionService }, { type: SystemService }]; }, propDecorators: { model: [{
31488
+ }], ctorParameters: function () {
31489
+ return [{ type: i2$1.FormBuilder }, { type: SystemService }, { type: DesignerRef, decorators: [{
31490
+ type: Inject,
31491
+ args: [DesignerRef]
31492
+ }] }];
31493
+ }, propDecorators: { model: [{
31083
31494
  type: Input
31084
31495
  }], change: [{
31085
31496
  type: Output
31086
31497
  }] } });
31087
31498
 
31088
- let FormDesignComponent = class FormDesignComponent extends DesignerElementComponent {
31499
+ let FormDesignComponent = class FormDesignComponent extends DesignerTypeElementComponent {
31089
31500
  constructor(fb, _router, _service, _session, ref) {
31090
31501
  super(fb, ref);
31091
31502
  this._router = _router;
31092
31503
  this._service = _service;
31093
31504
  this._session = _session;
31094
- this.form = this._fb.group({
31095
- rules: this._fb.array([])
31096
- });
31505
+ this.rules = this._fb.array([]);
31097
31506
  this.theme = this._session.theme.dark ? 'MaterialDark' : 'Material';
31098
31507
  this.axisSettings = {
31099
31508
  lineSettings: {},
@@ -31120,10 +31529,32 @@ let FormDesignComponent = class FormDesignComponent extends DesignerElementCompo
31120
31529
  });
31121
31530
  }
31122
31531
  ngOnInit() {
31532
+ this.form.addControl('rules', this._fb.control(null), { emitEvent: false });
31533
+ this.form.addControl('icon', this._fb.control(this.model.icon), { emitEvent: false });
31534
+ this.form.addControl('_rules', this.rules, { emitEvent: false });
31123
31535
  if (!this.model.privileges)
31124
31536
  this.model.privileges = {};
31125
31537
  this._service.range(this.model.name).subscribe(r => this.usage = r);
31126
- this.rules = this.model.rules ? Object.keys(this.model.rules).map(r => { }) : [];
31538
+ this.model.rules && this.rules.setValue(Object.keys(this.model.rules).
31539
+ map(r => {
31540
+ const rule = this.model.rules[r];
31541
+ return {
31542
+ name: r,
31543
+ value: rule.roles || [],
31544
+ rule: rule.rule,
31545
+ title: rule.title
31546
+ };
31547
+ }));
31548
+ this.rules.valueChanges.pipe().subscribe(v => {
31549
+ const rules = {};
31550
+ v.forEach((r) => rules[r.name] = {
31551
+ title: r.title,
31552
+ roles: r.roles,
31553
+ rule: r.rule,
31554
+ });
31555
+ this.form.get('rules').setValue(rules);
31556
+ });
31557
+ super.ngOnInit();
31127
31558
  }
31128
31559
  _formrule(name, permission) {
31129
31560
  return this._fb.group({
@@ -31134,27 +31565,30 @@ let FormDesignComponent = class FormDesignComponent extends DesignerElementCompo
31134
31565
  diagram() {
31135
31566
  this._router.navigate(['admin/forms', this.model.name]);
31136
31567
  }
31568
+ design() {
31569
+ this._router.navigate(['admin/utilities/form-designer'], { queryParams: { formId: this.model.name } });
31570
+ }
31137
31571
  ngOnDestroy() {
31138
31572
  this._destroy.next();
31139
31573
  this._destroy.complete();
31140
31574
  }
31141
31575
  };
31142
- FormDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormDesignComponent, deps: [{ token: i2$1.FormBuilder }, { token: RouterImpl }, { token: SystemService }, { token: SessionService }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Component });
31143
- FormDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: FormDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <!--\r\n [theme]=\"theme\"\r\n [axisSettings]=\"axisSettings\"\r\n -->\r\n\r\n <ejs-sparkline *ngIf=\"usage\" width='250px' height='200px'\r\n type=\"Line\"\r\n [id]=\"model.name\"\r\n [fill]=\"primary\"\r\n [dataSource]=\"usage\"\r\n xName=\"date\"\r\n yName=\"count\"\r\n lineWidth=\"2\"\r\n valueType=\"DateTime\"\r\n [markerSettings]=\"markerSettings\"\r\n [tooltipSettings]=\"tooltipSettings\"\r\n [enableRtl]=\"enableRtl\">\r\n </ejs-sparkline>\r\n <button mat-icon-button (click)=\"diagram()\" [bizdocTooltip]=\"'Workflow'|translate\"><mat-icon>schema</mat-icon></button>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i12.SparklineComponent, selector: "ejs-sparkline", inputs: ["axisSettings", "border", "containerArea", "dataLabelSettings", "dataSource", "enablePersistence", "enableRtl", "endPointColor", "fill", "format", "height", "highPointColor", "lineWidth", "locale", "lowPointColor", "markerSettings", "negativePointColor", "opacity", "padding", "palette", "query", "rangeBandSettings", "rangePadding", "startPointColor", "theme", "tiePointColor", "tooltipSettings", "type", "useGroupingSeparator", "valueType", "width", "xName", "yName"], outputs: ["axisRendering", "dataLabelRendering", "load", "loaded", "markerRendering", "pointRegionMouseClick", "pointRegionMouseMove", "pointRendering", "resize", "seriesRendering", "sparklineMouseClick", "sparklineMouseMove", "tooltipInitialize"] }, { kind: "component", type: i9.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"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31576
+ FormDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormDesignComponent, deps: [{ token: i2$1.FormBuilder }, { token: PanesRouter }, { token: SystemService }, { token: SessionService }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Component });
31577
+ FormDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: FormDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <div>\r\n <!--<mat-label>{{'Icon'|translate}}</mat-label>-->\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </div>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <!--\r\n [theme]=\"theme\"\r\n [axisSettings]=\"axisSettings\"\r\n -->\r\n\r\n <ejs-sparkline *ngIf=\"usage\" width='250px' height='200px'\r\n type=\"Line\"\r\n [id]=\"model.name\"\r\n [fill]=\"primary\"\r\n [dataSource]=\"usage\"\r\n xName=\"date\"\r\n yName=\"count\"\r\n lineWidth=\"2\"\r\n valueType=\"DateTime\"\r\n [markerSettings]=\"markerSettings\"\r\n [tooltipSettings]=\"tooltipSettings\"\r\n [enableRtl]=\"enableRtl\">\r\n </ejs-sparkline>\r\n <div class=\"row\">\r\n <button mat-icon-button (click)=\"diagram()\" [bizdocTooltip]=\"'Workflow'|translate\" [disabled]=\"model.draft\"><mat-icon>schema</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"design()\" [bizdocTooltip]=\"'Designer'|translate\" [disabled]=\"model.draft\" *ngIf=\"model.type==='BizDoc.Configuration.Forms.Box'\"><mat-icon>design_services</mat-icon></button>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.SparklineComponent, selector: "ejs-sparkline", inputs: ["axisSettings", "border", "containerArea", "dataLabelSettings", "dataSource", "enablePersistence", "enableRtl", "endPointColor", "fill", "format", "height", "highPointColor", "lineWidth", "locale", "lowPointColor", "markerSettings", "negativePointColor", "opacity", "padding", "palette", "query", "rangeBandSettings", "rangePadding", "startPointColor", "theme", "tiePointColor", "tooltipSettings", "type", "useGroupingSeparator", "valueType", "width", "xName", "yName"], outputs: ["axisRendering", "dataLabelRendering", "load", "loaded", "markerRendering", "pointRegionMouseClick", "pointRegionMouseMove", "pointRendering", "resize", "seriesRendering", "sparklineMouseClick", "sparklineMouseMove", "tooltipInitialize"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: IconPickerComponent, selector: "bizdoc-icon-picker", inputs: ["value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31144
31578
  FormDesignComponent = __decorate([
31145
31579
  BizDoc({ selector: 'form-designer' })
31146
31580
  ], FormDesignComponent);
31147
31581
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormDesignComponent, decorators: [{
31148
31582
  type: Component,
31149
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <!--\r\n [theme]=\"theme\"\r\n [axisSettings]=\"axisSettings\"\r\n -->\r\n\r\n <ejs-sparkline *ngIf=\"usage\" width='250px' height='200px'\r\n type=\"Line\"\r\n [id]=\"model.name\"\r\n [fill]=\"primary\"\r\n [dataSource]=\"usage\"\r\n xName=\"date\"\r\n yName=\"count\"\r\n lineWidth=\"2\"\r\n valueType=\"DateTime\"\r\n [markerSettings]=\"markerSettings\"\r\n [tooltipSettings]=\"tooltipSettings\"\r\n [enableRtl]=\"enableRtl\">\r\n </ejs-sparkline>\r\n <button mat-icon-button (click)=\"diagram()\" [bizdocTooltip]=\"'Workflow'|translate\"><mat-icon>schema</mat-icon></button>\r\n</ng-template>\r\n" }]
31583
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <div>\r\n <!--<mat-label>{{'Icon'|translate}}</mat-label>-->\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </div>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <!--\r\n [theme]=\"theme\"\r\n [axisSettings]=\"axisSettings\"\r\n -->\r\n\r\n <ejs-sparkline *ngIf=\"usage\" width='250px' height='200px'\r\n type=\"Line\"\r\n [id]=\"model.name\"\r\n [fill]=\"primary\"\r\n [dataSource]=\"usage\"\r\n xName=\"date\"\r\n yName=\"count\"\r\n lineWidth=\"2\"\r\n valueType=\"DateTime\"\r\n [markerSettings]=\"markerSettings\"\r\n [tooltipSettings]=\"tooltipSettings\"\r\n [enableRtl]=\"enableRtl\">\r\n </ejs-sparkline>\r\n <div class=\"row\">\r\n <button mat-icon-button (click)=\"diagram()\" [bizdocTooltip]=\"'Workflow'|translate\" [disabled]=\"model.draft\"><mat-icon>schema</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"design()\" [bizdocTooltip]=\"'Designer'|translate\" [disabled]=\"model.draft\" *ngIf=\"model.type==='BizDoc.Configuration.Forms.Box'\"><mat-icon>design_services</mat-icon></button>\r\n </div>\r\n</ng-template>\r\n" }]
31150
31584
  }], ctorParameters: function () {
31151
- return [{ type: i2$1.FormBuilder }, { type: RouterImpl }, { type: SystemService }, { type: SessionService }, { type: DesignerRef, decorators: [{
31585
+ return [{ type: i2$1.FormBuilder }, { type: PanesRouter }, { type: SystemService }, { type: SessionService }, { type: DesignerRef, decorators: [{
31152
31586
  type: Inject,
31153
31587
  args: [DesignerRef]
31154
31588
  }] }];
31155
31589
  } });
31156
31590
 
31157
- let CubeDesignComponent = class CubeDesignComponent extends DesignerElementComponent {
31591
+ let CubeDesignComponent = class CubeDesignComponent extends DesignerTypeElementComponent {
31158
31592
  constructor(fb, _service, _ps, ref) {
31159
31593
  super(fb, ref);
31160
31594
  this._service = _service;
@@ -31162,19 +31596,25 @@ let CubeDesignComponent = class CubeDesignComponent extends DesignerElementCompo
31162
31596
  this.views = this._fb.array([]);
31163
31597
  this.axes = this._fb.array([]);
31164
31598
  this.indices = this._fb.array([]);
31599
+ this.patterns = this._fb.array([]);
31165
31600
  this.secondaryAxes = [];
31166
- this.form = this._fb.group({
31167
- views: this.views,
31168
- indices: this.indices,
31169
- axes: this.axes,
31170
- scope: null
31171
- });
31601
+ this.syncing = false;
31172
31602
  this.types = ref.model.types;
31173
31603
  }
31174
31604
  sync() {
31175
- this._service.synchrinize(this.model.name);
31605
+ this.syncing = true;
31606
+ this._service.synchrinize(this.model.name).subscribe(() => this.syncing = false, () => {
31607
+ this.syncing = false;
31608
+ this._ps.error();
31609
+ });
31176
31610
  }
31177
31611
  ngOnInit() {
31612
+ this.form.addControl('patterns', this._fb.control(this.model.patterns, Validators.required), { emitEvent: false });
31613
+ this.form.addControl('views', this._fb.control(this.model.views, Validators.required), { emitEvent: false });
31614
+ this.form.addControl('indices', this._fb.control(this.model.indices, Validators.required), { emitEvent: false });
31615
+ this.form.addControl('axes', this._fb.control(this.model.axes, Validators.required), { emitEvent: false });
31616
+ this.form.addControl('scope', this._fb.control(this.model.scope, Validators.required), { emitEvent: false });
31617
+ this.form.addControl('anomaly', this._fb.control(this.model.anomaly, Validators.required), { emitEvent: false });
31178
31618
  this.model.axes.forEach(a => {
31179
31619
  this.axes.push(this._formaxis(a), { emitEvent: true });
31180
31620
  });
@@ -31224,6 +31664,7 @@ let CubeDesignComponent = class CubeDesignComponent extends DesignerElementCompo
31224
31664
  return this._fb.group({
31225
31665
  name: this._fb.control(model.name),
31226
31666
  title: model.title,
31667
+ icon: model.icon,
31227
31668
  xAxis: this._fb.control(model.xAxis, Validators.required),
31228
31669
  series: model.series,
31229
31670
  indices: model.indices,
@@ -31267,13 +31708,13 @@ let CubeDesignComponent = class CubeDesignComponent extends DesignerElementCompo
31267
31708
  }
31268
31709
  };
31269
31710
  CubeDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: CubeDesignComponent, deps: [{ token: i2$1.FormBuilder }, { token: SystemService }, { token: PromptService }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Component });
31270
- CubeDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: CubeDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-label>{{'SecurityLevel'|translate}}</mat-label>\r\n <mat-radio-group formControlName=\"scope\">\r\n <mat-radio-button>{{'Global'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Positions\">{{'Positions'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Patterns\">{{'Patterns'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- Axes -->\r\n <h2 class=\"mat-title\">{{'Axes'|translate}}</h2>\r\n <div formArrayName=\"axes\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropAxis($event)\">\r\n <div class=\"row\" *ngFor=\"let a of axes.controls; index as index\" [formGroup]=\"a\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select formControlName=\"dataType\" required>\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeAxis(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"addAxis()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <!-- Indices -->\r\n <h2 class=\"mat-title\">{{'Indices'|translate}}</h2>\r\n <div formArrayName=\"indices\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropAxis($event)\">\r\n <div class=\"row\" *ngFor=\"let a of indices.controls; index as index\" [formGroup]=\"a\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeIndex(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"addIndex()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <!-- Views -->\r\n <h2 class=\"mat-title\">{{'Views'|translate}}</h2>\r\n <div formArrayName=\"views\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropView($event)\">\r\n <div class=\"row\" *ngFor=\"let v of views.controls; index as index\" [formGroup]=\"v\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Type'|translate}}</mat-label>\r\n <mat-select formControlName=\"type\">\r\n <mat-option value=\"Chart\">{{'Chart'|translate}}</mat-option>\r\n <mat-option value=\"Pivot\">{{'Pivot'|translate}}</mat-option>\r\n <mat-option value=\"Grid\">{{'Grid'|translate}}</mat-option>\r\n <mat-option value=\"Spreadsheet\">{{'Spreadsheet'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field *ngIf=\"isChart(index)\">\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected(index, $event)\" multiple>\r\n <mat-option *ngFor=\"let x of model.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple [disabled]=\"isAccum(index)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes[index]\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeView(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <button mat-icon-button (click)=\"addView()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n </div>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!-- Info -->\r\n<ng-template #info>\r\n <button mat-stroked-button (click)=\"sync()\">{{'Synchronize'|translate}}</button>\r\n <!--<mat-spinner *ngIf=\"false\" diameter=\"20\"></mat-spinner>-->\r\n <div class=\"row\">\r\n <div>\r\n <h2 class=\"mat-title\">{{'Axes'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let a of model.axes\">\r\n <!--<td class=\"mat-cell\">{{a.name}}</td>-->\r\n <td class=\"mat-cell\">{{a.title}}</td>\r\n <td class=\"mat-cell\">{{datatype(a.dataType)}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div>\r\n <h2 class=\"mat-title\">{{'Indices'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let a of model.indices\">\r\n <!--<td class=\"mat-cell\">{{a.name}}</td>-->\r\n <td class=\"mat-cell\">{{a.title}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div>\r\n <h2 class=\"mat-title\">{{'Views'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let v of model.views\">\r\n <td class=\"mat-cell\">{{v.title}}</td>\r\n <td class=\"mat-cell\">({{(v.type||'Chart')|translate}})</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".flex{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i11$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6$5.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i6$5.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31711
+ CubeDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: CubeDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-label>{{'SecurityLevel'|translate}}</mat-label>\r\n <mat-radio-group formControlName=\"scope\">\r\n <mat-radio-button>{{'Global'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Positions\">{{'Positions'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Patterns\">{{'Patterns'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- Axes -->\r\n <h2 class=\"mat-title\">{{'Axes'|translate}}</h2>\r\n <div formArrayName=\"axes\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropAxis($event)\">\r\n <div class=\"row\" *ngFor=\"let a of axes.controls; index as index\" [formGroup]=\"a\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select formControlName=\"dataType\" required>\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeAxis(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"addAxis()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <!-- Indices -->\r\n <h2 class=\"mat-title\">{{'Indices'|translate}}</h2>\r\n <div formArrayName=\"indices\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropAxis($event)\">\r\n <div class=\"row\" *ngFor=\"let a of indices.controls; index as index\" [formGroup]=\"a\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeIndex(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"addIndex()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <!-- Views -->\r\n <h2 class=\"mat-title\">{{'Views'|translate}}</h2>\r\n <div formArrayName=\"views\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropView($event)\">\r\n <div class=\"row\" *ngFor=\"let v of views.controls; index as index\" [formGroup]=\"v\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Type'|translate}}</mat-label>\r\n <mat-select formControlName=\"type\">\r\n <mat-option value=\"Chart\">{{'Chart'|translate}}</mat-option>\r\n <mat-option value=\"Pivot\">{{'Pivot'|translate}}</mat-option>\r\n <mat-option value=\"Grid\">{{'Grid'|translate}}</mat-option>\r\n <mat-option value=\"Spreadsheet\">{{'Spreadsheet'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field *ngIf=\"isChart(index)\">\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected(index, $event)\" multiple>\r\n <mat-option *ngFor=\"let x of model.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple [disabled]=\"isAccum(index)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes[index]\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeView(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <button mat-icon-button (click)=\"addView()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n </div>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!-- Info -->\r\n<ng-template #info>\r\n <button mat-stroked-button (click)=\"sync()\">\r\n <span> {{'Synchronize'|translate}}</span>\r\n <mat-spinner *ngIf=\"syncing\" diameter=\"20\"></mat-spinner>\r\n </button>\r\n <div class=\"row\">\r\n <div *ngIf=\"model.axes.length\">\r\n <h2 class=\"mat-title\">{{'Axes'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let a of model.axes\">\r\n <!--<td class=\"mat-cell\">{{a.name}}</td>-->\r\n <td class=\"mat-cell\">{{a.title}}</td>\r\n <td class=\"mat-cell\">{{datatype(a.dataType)}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div *ngIf=\"model.indices.length\">\r\n <h2 class=\"mat-title\">{{'Indices'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let a of model.indices\">\r\n <!--<td class=\"mat-cell\">{{a.name}}</td>-->\r\n <td class=\"mat-cell\">{{a.title}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div *ngIf=\"model.views.length\">\r\n <h2 class=\"mat-title\">{{'Views'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let v of model.views\">\r\n <td class=\"mat-cell\">{{v.title}}</td>\r\n <td class=\"mat-cell\">({{(v.type||'Chart')|translate}})</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i11$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i11$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4$6.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$6.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: IconPickerComponent, selector: "bizdoc-icon-picker", inputs: ["value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31271
31712
  CubeDesignComponent = __decorate([
31272
31713
  BizDoc({ selector: 'cube-designer' })
31273
31714
  ], CubeDesignComponent);
31274
31715
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: CubeDesignComponent, decorators: [{
31275
31716
  type: Component,
31276
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-label>{{'SecurityLevel'|translate}}</mat-label>\r\n <mat-radio-group formControlName=\"scope\">\r\n <mat-radio-button>{{'Global'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Positions\">{{'Positions'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Patterns\">{{'Patterns'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- Axes -->\r\n <h2 class=\"mat-title\">{{'Axes'|translate}}</h2>\r\n <div formArrayName=\"axes\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropAxis($event)\">\r\n <div class=\"row\" *ngFor=\"let a of axes.controls; index as index\" [formGroup]=\"a\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select formControlName=\"dataType\" required>\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeAxis(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"addAxis()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <!-- Indices -->\r\n <h2 class=\"mat-title\">{{'Indices'|translate}}</h2>\r\n <div formArrayName=\"indices\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropAxis($event)\">\r\n <div class=\"row\" *ngFor=\"let a of indices.controls; index as index\" [formGroup]=\"a\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeIndex(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"addIndex()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <!-- Views -->\r\n <h2 class=\"mat-title\">{{'Views'|translate}}</h2>\r\n <div formArrayName=\"views\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropView($event)\">\r\n <div class=\"row\" *ngFor=\"let v of views.controls; index as index\" [formGroup]=\"v\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Type'|translate}}</mat-label>\r\n <mat-select formControlName=\"type\">\r\n <mat-option value=\"Chart\">{{'Chart'|translate}}</mat-option>\r\n <mat-option value=\"Pivot\">{{'Pivot'|translate}}</mat-option>\r\n <mat-option value=\"Grid\">{{'Grid'|translate}}</mat-option>\r\n <mat-option value=\"Spreadsheet\">{{'Spreadsheet'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field *ngIf=\"isChart(index)\">\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected(index, $event)\" multiple>\r\n <mat-option *ngFor=\"let x of model.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple [disabled]=\"isAccum(index)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes[index]\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeView(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <button mat-icon-button (click)=\"addView()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n </div>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!-- Info -->\r\n<ng-template #info>\r\n <button mat-stroked-button (click)=\"sync()\">{{'Synchronize'|translate}}</button>\r\n <!--<mat-spinner *ngIf=\"false\" diameter=\"20\"></mat-spinner>-->\r\n <div class=\"row\">\r\n <div>\r\n <h2 class=\"mat-title\">{{'Axes'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let a of model.axes\">\r\n <!--<td class=\"mat-cell\">{{a.name}}</td>-->\r\n <td class=\"mat-cell\">{{a.title}}</td>\r\n <td class=\"mat-cell\">{{datatype(a.dataType)}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div>\r\n <h2 class=\"mat-title\">{{'Indices'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let a of model.indices\">\r\n <!--<td class=\"mat-cell\">{{a.name}}</td>-->\r\n <td class=\"mat-cell\">{{a.title}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div>\r\n <h2 class=\"mat-title\">{{'Views'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let v of model.views\">\r\n <td class=\"mat-cell\">{{v.title}}</td>\r\n <td class=\"mat-cell\">({{(v.type||'Chart')|translate}})</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".flex{flex:1}\n"] }]
31717
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-label>{{'SecurityLevel'|translate}}</mat-label>\r\n <mat-radio-group formControlName=\"scope\">\r\n <mat-radio-button>{{'Global'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Positions\">{{'Positions'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Patterns\">{{'Patterns'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- Axes -->\r\n <h2 class=\"mat-title\">{{'Axes'|translate}}</h2>\r\n <div formArrayName=\"axes\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropAxis($event)\">\r\n <div class=\"row\" *ngFor=\"let a of axes.controls; index as index\" [formGroup]=\"a\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select formControlName=\"dataType\" required>\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeAxis(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"addAxis()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <!-- Indices -->\r\n <h2 class=\"mat-title\">{{'Indices'|translate}}</h2>\r\n <div formArrayName=\"indices\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropAxis($event)\">\r\n <div class=\"row\" *ngFor=\"let a of indices.controls; index as index\" [formGroup]=\"a\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeIndex(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"addIndex()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <!-- Views -->\r\n <h2 class=\"mat-title\">{{'Views'|translate}}</h2>\r\n <div formArrayName=\"views\" class=\"column\" cdkDropList (cdkDropListDropped)=\"dropView($event)\">\r\n <div class=\"row\" *ngFor=\"let v of views.controls; index as index\" [formGroup]=\"v\" cdkDrag cdkDragRootElement=\".drag\">\r\n <mat-icon class=\"drag\">drag_indicator</mat-icon>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Type'|translate}}</mat-label>\r\n <mat-select formControlName=\"type\">\r\n <mat-option value=\"Chart\">{{'Chart'|translate}}</mat-option>\r\n <mat-option value=\"Pivot\">{{'Pivot'|translate}}</mat-option>\r\n <mat-option value=\"Grid\">{{'Grid'|translate}}</mat-option>\r\n <mat-option value=\"Spreadsheet\">{{'Spreadsheet'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field *ngIf=\"isChart(index)\">\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected(index, $event)\" multiple>\r\n <mat-option *ngFor=\"let x of model.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple [disabled]=\"isAccum(index)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes[index]\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-icon-button (click)=\"removeView(index)\" [bizdocTooltip]=\"'Remove'|translate\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <button mat-icon-button (click)=\"addView()\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n </div>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!-- Info -->\r\n<ng-template #info>\r\n <button mat-stroked-button (click)=\"sync()\">\r\n <span> {{'Synchronize'|translate}}</span>\r\n <mat-spinner *ngIf=\"syncing\" diameter=\"20\"></mat-spinner>\r\n </button>\r\n <div class=\"row\">\r\n <div *ngIf=\"model.axes.length\">\r\n <h2 class=\"mat-title\">{{'Axes'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let a of model.axes\">\r\n <!--<td class=\"mat-cell\">{{a.name}}</td>-->\r\n <td class=\"mat-cell\">{{a.title}}</td>\r\n <td class=\"mat-cell\">{{datatype(a.dataType)}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div *ngIf=\"model.indices.length\">\r\n <h2 class=\"mat-title\">{{'Indices'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let a of model.indices\">\r\n <!--<td class=\"mat-cell\">{{a.name}}</td>-->\r\n <td class=\"mat-cell\">{{a.title}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div *ngIf=\"model.views.length\">\r\n <h2 class=\"mat-title\">{{'Views'|translate}}</h2>\r\n <table class=\"mat-table\">\r\n <tr class=\"mat-row\" *ngFor=\"let v of model.views\">\r\n <td class=\"mat-cell\">{{v.title}}</td>\r\n <td class=\"mat-cell\">({{(v.type||'Chart')|translate}})</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</ng-template>\r\n" }]
31277
31718
  }], ctorParameters: function () {
31278
31719
  return [{ type: i2$1.FormBuilder }, { type: SystemService }, { type: PromptService }, { type: DesignerRef, decorators: [{
31279
31720
  type: Inject,
@@ -31281,71 +31722,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31281
31722
  }] }];
31282
31723
  } });
31283
31724
 
31284
- let WidgetDesignComponent = class WidgetDesignComponent extends DesignerElementComponent {
31285
- constructor() {
31286
- super(...arguments);
31287
- this.form = this._fb.group({
31288
- name: null,
31289
- title: null,
31290
- });
31291
- }
31725
+ let WidgetDesignComponent = class WidgetDesignComponent extends DesignerTypeElementComponent {
31292
31726
  };
31293
31727
  WidgetDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: WidgetDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31294
- WidgetDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: WidgetDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }] });
31728
+ WidgetDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: WidgetDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }] });
31295
31729
  WidgetDesignComponent = __decorate([
31296
31730
  BizDoc({ selector: 'widget-designer' })
31297
31731
  ], WidgetDesignComponent);
31298
31732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: WidgetDesignComponent, decorators: [{
31299
31733
  type: Component,
31300
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31734
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31301
31735
  }] });
31302
31736
 
31303
- let ActionDesignComponent = class ActionDesignComponent extends DesignerElementComponent {
31304
- constructor() {
31305
- super(...arguments);
31306
- this.form = this._fb.group({
31307
- name: null,
31308
- title: null,
31309
- });
31310
- }
31737
+ let ActionDesignComponent = class ActionDesignComponent extends DesignerTypeElementComponent {
31311
31738
  };
31312
31739
  ActionDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ActionDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31313
- ActionDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ActionDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field >\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field >\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31740
+ ActionDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ActionDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31314
31741
  ActionDesignComponent = __decorate([
31315
31742
  BizDoc({ selector: 'action-designer' })
31316
31743
  ], ActionDesignComponent);
31317
31744
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ActionDesignComponent, decorators: [{
31318
31745
  type: Component,
31319
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field >\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field >\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31746
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31320
31747
  }] });
31321
31748
 
31322
- let ReportDesignComponent = class ReportDesignComponent extends DesignerElementComponent {
31323
- constructor() {
31324
- super(...arguments);
31325
- this.form = this._fb.group({
31326
- name: null,
31327
- title: null,
31328
- });
31329
- }
31749
+ let ReportDesignComponent = class ReportDesignComponent extends DesignerTypeElementComponent {
31330
31750
  ngOnInit() {
31751
+ this.form.addControl('icon', this._fb.control(this.model.icon), { emitEvent: false });
31752
+ super.ngOnInit();
31331
31753
  }
31332
31754
  };
31333
31755
  ReportDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ReportDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31334
- ReportDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ReportDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }] });
31756
+ ReportDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ReportDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: IconPickerComponent, selector: "bizdoc-icon-picker", inputs: ["value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }] });
31335
31757
  ReportDesignComponent = __decorate([
31336
31758
  BizDoc({ selector: 'report-designer' })
31337
31759
  ], ReportDesignComponent);
31338
31760
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ReportDesignComponent, decorators: [{
31339
31761
  type: Component,
31340
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31762
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31341
31763
  }] });
31342
31764
 
31343
31765
  let ViewDesignComponent = class ViewDesignComponent extends DesignerElementComponent {
31344
31766
  constructor() {
31345
31767
  super(...arguments);
31346
- this.form = this._fb.group({});
31347
- }
31348
- ngOnInit() {
31768
+ this.form = this._fb.group({
31769
+ name: null,
31770
+ title: this._fb.control(null, Validators.required),
31771
+ });
31349
31772
  }
31350
31773
  };
31351
31774
  ViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -31358,24 +31781,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31358
31781
  args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31359
31782
  }] });
31360
31783
 
31361
- let TypeDesignComponent = class TypeDesignComponent extends DesignerElementComponent {
31362
- constructor() {
31363
- super(...arguments);
31364
- this.form = this._fb.group({
31365
- name: null,
31366
- title: null,
31367
- assignable: false,
31368
- });
31784
+ let TypeDesignComponent = class TypeDesignComponent extends DesignerTypeElementComponent {
31785
+ ngOnInit() {
31786
+ this.form.addControl('assignable', this._fb.control(this.model.assignable, Validators.required), { emitEvent: false });
31787
+ super.ngOnInit();
31369
31788
  }
31370
31789
  };
31371
31790
  TypeDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: TypeDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31372
- TypeDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: TypeDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"assignable\">{{'Assignable'|translate}}</mat-slide-toggle>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n <!--<button mat-stroked-button (click)=\"test()\">{{'Test'|translate}}</button>-->\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31791
+ TypeDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: TypeDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-slide-toggle formControlName=\"assignable\">{{'Assignable'|translate}}</mat-slide-toggle>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i4$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31373
31792
  TypeDesignComponent = __decorate([
31374
31793
  BizDoc({ selector: 'type-designer' })
31375
31794
  ], TypeDesignComponent);
31376
31795
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: TypeDesignComponent, decorators: [{
31377
31796
  type: Component,
31378
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-slide-toggle formControlName=\"assignable\">{{'Assignable'|translate}}</mat-slide-toggle>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n <!--<button mat-stroked-button (click)=\"test()\">{{'Test'|translate}}</button>-->\r\n </div>\r\n</ng-template>\r\n" }]
31797
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-slide-toggle formControlName=\"assignable\">{{'Assignable'|translate}}</mat-slide-toggle>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31379
31798
  }] });
31380
31799
 
31381
31800
  let AnalysisWidgetDesignComponent = class AnalysisWidgetDesignComponent extends DesignerCubeElementComponent {
@@ -31403,13 +31822,13 @@ let AnalysisWidgetDesignComponent = class AnalysisWidgetDesignComponent extends
31403
31822
  }
31404
31823
  };
31405
31824
  AnalysisWidgetDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AnalysisWidgetDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31406
- AnalysisWidgetDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: AnalysisWidgetDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form *ngIf=\"cubes.length; else none\" autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" (selectionChange)=\"seriesSelected($event)\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"cube?.indices?.length\">\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\" [disabled]=\"isAccum\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </form>\r\n <div *ngIf=\"args.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"args.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"\r\n [cube]=\"cube.name\"\r\n [filters]=\"args.filters\"\r\n [xAxis]=\"args.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [indicesChartType]=\"args.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n<ng-template #none>{{''}}</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeAccumulationChartComponent, selector: "bizdoc-cube-accum", inputs: ["palettes", "height", "width", "cube", "xAxis", "filters", "chartType", "scope", "loading"], outputs: ["loadingChange", "explore"] }, { kind: "component", type: CubeChartComponent, selector: "bizdoc-cube-chart", inputs: ["width", "height", "cube", "xAxis", "series", "indices", "filters", "yAxis", "chartType", "indicesChartType", "scope", "loading", "palettes"], outputs: ["explore", "loadingChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31825
+ AnalysisWidgetDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: AnalysisWidgetDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" (selectionChange)=\"seriesSelected($event)\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"cube?.indices?.length\">\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\" [disabled]=\"isAccum\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n <div *ngIf=\"args.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"args.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"\r\n [cube]=\"cube.name\"\r\n [filters]=\"args.filters\"\r\n [xAxis]=\"args.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [indicesChartType]=\"args.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "component", type: CubeAccumulationChartComponent, selector: "bizdoc-cube-accum", inputs: ["palettes", "height", "width", "cube", "xAxis", "filters", "chartType", "scope", "loading"], outputs: ["loadingChange", "explore"] }, { kind: "component", type: CubeChartComponent, selector: "bizdoc-cube-chart", inputs: ["width", "height", "cube", "xAxis", "series", "indices", "filters", "yAxis", "chartType", "indicesChartType", "scope", "loading", "palettes"], outputs: ["explore", "loadingChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31407
31826
  AnalysisWidgetDesignComponent = __decorate([
31408
31827
  BizDoc({ selector: 'analysis-widget-designer' })
31409
31828
  ], AnalysisWidgetDesignComponent);
31410
31829
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AnalysisWidgetDesignComponent, decorators: [{
31411
31830
  type: Component,
31412
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form *ngIf=\"cubes.length; else none\" autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" (selectionChange)=\"seriesSelected($event)\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"cube?.indices?.length\">\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\" [disabled]=\"isAccum\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </form>\r\n <div *ngIf=\"args.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"args.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"\r\n [cube]=\"cube.name\"\r\n [filters]=\"args.filters\"\r\n [xAxis]=\"args.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [indicesChartType]=\"args.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n<ng-template #none>{{''}}</ng-template>\r\n" }]
31831
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required (selectionChange)=\"xAxisSelected($event)\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" (selectionChange)=\"seriesSelected($event)\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"cube?.indices?.length\">\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple [disabled]=\"isAccum\">\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\" [disabled]=\"isAccum\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n <div *ngIf=\"args.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"args.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"\r\n [cube]=\"cube.name\"\r\n [filters]=\"args.filters\"\r\n [xAxis]=\"args.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"args.xAxis\"\r\n [series]=\"args.series\"\r\n [indices]=\"args.indices\"\r\n [filters]=\"args.filters\"\r\n [chartType]=\"args.chartType\"\r\n [indicesChartType]=\"args.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"args.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n" }]
31413
31832
  }] });
31414
31833
 
31415
31834
  let ExploreViewDesignComponent = class ExploreViewDesignComponent extends DesignerCubeElementComponent {
@@ -31570,13 +31989,13 @@ let UsageReportDesignComponent = class UsageReportDesignComponent extends Design
31570
31989
  }
31571
31990
  };
31572
31991
  UsageReportDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: UsageReportDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31573
- UsageReportDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: UsageReportDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-radio-group [formControl]=\"type\" (change)=\"typechange($event)\">\r\n <mat-radio-button value=\"Chart\">{{'Chart'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Pivot\">{{'Pivot'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container [ngSwitch]=\"type.value\">\r\n <ng-container *ngSwitchCase=\"'Pivot'\">\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" multiple multiple>\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngSwitchCase=\"'Chart'\">\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n </form>\r\n <div>\r\n </div>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6$5.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i6$5.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31992
+ UsageReportDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: UsageReportDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-radio-group [formControl]=\"type\" (change)=\"typechange($event)\">\r\n <mat-radio-button value=\"Chart\">{{'Chart'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Pivot\">{{'Pivot'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container [ngSwitch]=\"type.value\">\r\n <ng-container *ngSwitchCase=\"'Pivot'\">\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" multiple multiple>\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngSwitchCase=\"'Chart'\">\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4$6.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$6.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31574
31993
  UsageReportDesignComponent = __decorate([
31575
31994
  BizDoc({ selector: 'usage-report-designer' })
31576
31995
  ], UsageReportDesignComponent);
31577
31996
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: UsageReportDesignComponent, decorators: [{
31578
31997
  type: Component,
31579
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-radio-group [formControl]=\"type\" (change)=\"typechange($event)\">\r\n <mat-radio-button value=\"Chart\">{{'Chart'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Pivot\">{{'Pivot'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container [ngSwitch]=\"type.value\">\r\n <ng-container *ngSwitchCase=\"'Pivot'\">\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" multiple multiple>\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngSwitchCase=\"'Chart'\">\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n </form>\r\n <div>\r\n </div>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n" }]
31998
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-radio-group [formControl]=\"type\" (change)=\"typechange($event)\">\r\n <mat-radio-button value=\"Chart\">{{'Chart'|translate}}</mat-radio-button>\r\n <mat-radio-button value=\"Pivot\">{{'Pivot'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field *ngIf=\"cubes.length>1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube?.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container [ngSwitch]=\"type.value\">\r\n <ng-container *ngSwitchCase=\"'Pivot'\">\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" multiple multiple>\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube?.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngSwitchCase=\"'Chart'\">\r\n <mat-form-field>\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-container>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info></ng-template>\r\n" }]
31580
31999
  }] });
31581
32000
 
31582
32001
  let AnomalyRuleDesignComponent = class AnomalyRuleDesignComponent extends DesignerElementComponent {
@@ -31603,6 +32022,10 @@ let BoxFormDesignComponent = class BoxFormDesignComponent extends DesignerElemen
31603
32022
  this.form = this._fb.group({});
31604
32023
  }
31605
32024
  ngOnInit() {
32025
+ if (!this.args.sections)
32026
+ this.args.sections = [];
32027
+ if (!this.model.icon)
32028
+ this.model.icon = 'description';
31606
32029
  }
31607
32030
  };
31608
32031
  BoxFormDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BoxFormDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -31653,66 +32076,61 @@ let PivotViewDesignComponent = class PivotViewDesignComponent extends DesignerCu
31653
32076
  }
31654
32077
  };
31655
32078
  PivotViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PivotViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31656
- PivotViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: PivotViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required multiple (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
32079
+ PivotViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: PivotViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required multiple (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31657
32080
  PivotViewDesignComponent = __decorate([
31658
32081
  BizDoc({ selector: 'pivot-view-designer' })
31659
32082
  ], PivotViewDesignComponent);
31660
32083
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PivotViewDesignComponent, decorators: [{
31661
32084
  type: Component,
31662
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required multiple (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n" }]
32085
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple (selectionChange)=\"xAxisSelected($event)\">\r\n <mat-option *ngFor=\"let x of cube.axes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" required multiple (selectionChange)=\"seriesSelected($event)\">\r\n <mat-option *ngFor=\"let x of secondaryAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let x of cube.indices\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple [disabled]=\"!thirdAxes || !thirdAxes.length\">\r\n <mat-option *ngFor=\"let x of thirdAxes\" [value]=\"x.name\">{{x.title || x.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n <ng-container *ngIf=\"cube\">\r\n <h2 class=\"mat-title\">{{'Filters'|translate}}</h2>\r\n <bizdoc-cube-filter [cube]=\"cube.name\" [(axes)]=\"form.controls.filters.value\"></bizdoc-cube-filter>\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #info></ng-template>\r\n" }]
31663
32086
  }] });
31664
32087
 
31665
- let UtilityDesignComponent = class UtilityDesignComponent extends DesignerElementComponent {
31666
- constructor() {
31667
- super(...arguments);
31668
- this.form = this._fb.group({});
31669
- }
32088
+ let UtilityDesignComponent = class UtilityDesignComponent extends DesignerTypeElementComponent {
31670
32089
  ngOnInit() {
32090
+ this.form.addControl('icon', this._fb.control(null), { emitEvent: false });
32091
+ super.ngOnInit();
31671
32092
  }
31672
32093
  };
31673
32094
  UtilityDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: UtilityDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31674
- UtilityDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: UtilityDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }] });
32095
+ UtilityDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: UtilityDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: IconPickerComponent, selector: "bizdoc-icon-picker", inputs: ["value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }] });
31675
32096
  UtilityDesignComponent = __decorate([
31676
32097
  BizDoc({ selector: 'utility-designer' })
31677
32098
  ], UtilityDesignComponent);
31678
32099
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: UtilityDesignComponent, decorators: [{
31679
32100
  type: Component,
31680
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
32101
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31681
32102
  }] });
31682
32103
 
31683
- let FolderDesignComponent = class FolderDesignComponent extends DesignerElementComponent {
31684
- constructor() {
31685
- super(...arguments);
31686
- this.form = this._fb.group({
31687
- name: null,
31688
- title: null,
31689
- });
32104
+ let FolderDesignComponent = class FolderDesignComponent extends DesignerTypeElementComponent {
32105
+ ngOnInit() {
32106
+ this.form.addControl('icon', this._fb.control(this.model.icon), { emitEvent: false });
32107
+ super.ngOnInit();
31690
32108
  }
31691
32109
  };
31692
32110
  FolderDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FolderDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31693
- FolderDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: FolderDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field >\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field >\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
32111
+ FolderDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: FolderDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <div>\r\n <!--<mat-label>{{'Icon'|translate}}</mat-label>-->\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </div>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: IconPickerComponent, selector: "bizdoc-icon-picker", inputs: ["value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31694
32112
  FolderDesignComponent = __decorate([
31695
32113
  BizDoc({ selector: 'folder-designer' })
31696
32114
  ], FolderDesignComponent);
31697
32115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FolderDesignComponent, decorators: [{
31698
32116
  type: Component,
31699
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field >\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field >\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
32117
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <div>\r\n <!--<mat-label>{{'Icon'|translate}}</mat-label>-->\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </div>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31700
32118
  }] });
31701
32119
 
31702
- let GuideDesignComponent = class GuideDesignComponent extends DesignerElementComponent {
32120
+ let GuideDesignComponent = class GuideDesignComponent extends DesignerTypeElementComponent {
31703
32121
  constructor() {
31704
32122
  super(...arguments);
31705
32123
  this.steps = this._fb.array([]);
31706
- this.form = this._fb.group({
31707
- name: null,
31708
- title: null,
31709
- steps: this.steps
31710
- });
31711
32124
  }
31712
32125
  ngOnInit() {
32126
+ super.ngOnInit();
32127
+ this.form.addControl('steps', this.steps);
31713
32128
  if (!this.model.privileges)
31714
32129
  this.model.privileges = {};
31715
- this.model.steps.forEach(s => this.steps.push(this._stepform(s), { emitEvent: false }));
32130
+ if (!this.model.steps)
32131
+ this.model.steps = [];
32132
+ else
32133
+ this.model.steps.forEach(s => this.steps.push(this._stepform(s), { emitEvent: false }));
31716
32134
  }
31717
32135
  drop(event) {
31718
32136
  moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
@@ -31737,58 +32155,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31737
32155
  args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n <h2 class=\"mat-title\">{{'Steps'|translate}}</h2>\r\n </mat-form-field>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <dl>\r\n <dt></dt>\r\n <dd></dd>\r\n <dt></dt>\r\n <dd></dd>\r\n <dt></dt>\r\n <dd></dd>\r\n </dl>\r\n</ng-template>\r\n" }]
31738
32156
  }] });
31739
32157
 
31740
- let RuleDesignComponent = class RuleDesignComponent extends DesignerElementComponent {
31741
- constructor() {
31742
- super(...arguments);
31743
- this.form = this._fb.group({});
31744
- }
32158
+ let RuleDesignComponent = class RuleDesignComponent extends DesignerTypeElementComponent {
31745
32159
  };
31746
32160
  RuleDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: RuleDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31747
- RuleDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: RuleDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
32161
+ RuleDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: RuleDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
31748
32162
  RuleDesignComponent = __decorate([
31749
32163
  BizDoc({ selector: 'rule-designer' })
31750
32164
  ], RuleDesignComponent);
31751
32165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: RuleDesignComponent, decorators: [{
31752
32166
  type: Component,
31753
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
32167
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n <bizdoc-layout *ngIf=\"model.arguments\" [fields]=\"model.arguments\" [model]=\"args\" (modelChange)=\"assignargs($event)\"></bizdoc-layout>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31754
32168
  }] });
31755
32169
 
31756
- let RoleDesignComponent = class RoleDesignComponent extends DesignerElementComponent {
31757
- constructor() {
31758
- super(...arguments);
31759
- this.form = this._fb.group({
31760
- name: null,
31761
- title: null,
31762
- });
32170
+ let RoleDesignComponent = class RoleDesignComponent extends DesignerTypeElementComponent {
32171
+ ngOnInit() {
32172
+ this.types = this._ref.model.types.filter(t => t.assignable);
32173
+ this.form.addControl('dataType', this._fb.control(this.model.dataType, Validators.required), { emitEvent: false });
32174
+ super.ngOnInit();
31763
32175
  }
31764
32176
  };
31765
32177
  RoleDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: RoleDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31766
- RoleDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: RoleDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field >\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field >\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
32178
+ RoleDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: RoleDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select formControlName=\"dataType\" required>\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n <dl>\r\n <dt></dt>\r\n <dd></dd>\r\n </dl>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31767
32179
  RoleDesignComponent = __decorate([
31768
32180
  BizDoc({ selector: 'role-designer' })
31769
32181
  ], RoleDesignComponent);
31770
32182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: RoleDesignComponent, decorators: [{
31771
32183
  type: Component,
31772
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field >\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field >\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
32184
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select formControlName=\"dataType\" required>\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n <dl>\r\n <dt></dt>\r\n <dd></dd>\r\n </dl>\r\n </div>\r\n</ng-template>\r\n" }]
31773
32185
  }] });
31774
32186
 
31775
- let StateDesignComponent = class StateDesignComponent extends DesignerElementComponent {
31776
- constructor() {
31777
- super(...arguments);
31778
- this.form = this._fb.group({
31779
- name: null,
31780
- title: null,
31781
- });
32187
+ let StateDesignComponent = class StateDesignComponent extends DesignerTypeElementComponent {
32188
+ ngOnInit() {
32189
+ this.form.addControl('color', this._fb.control(this.model.color), { emitEvent: false });
32190
+ this.form.addControl('backgroundColor', this._fb.control(this.model.color), { emitEvent: false });
32191
+ super.ngOnInit();
31782
32192
  }
31783
32193
  };
31784
32194
  StateDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: StateDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31785
- StateDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: StateDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
32195
+ StateDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: StateDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Color'|translate}}</mat-label>\r\n <input matInput formControlName=\"color\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'BackgroundColor'|translate}}</mat-label>\r\n <input matInput formControlName=\"backgroundColor\" />\r\n </mat-form-field>\r\n <!--<bizdoc-color-picker formControlName=\"backgroundColor\" ></bizdoc-color-picker>-->\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
31786
32196
  StateDesignComponent = __decorate([
31787
32197
  BizDoc({ selector: 'state-designer' })
31788
32198
  ], StateDesignComponent);
31789
32199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: StateDesignComponent, decorators: [{
31790
32200
  type: Component,
31791
- args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
32201
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Color'|translate}}</mat-label>\r\n <input matInput formControlName=\"color\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'BackgroundColor'|translate}}</mat-label>\r\n <input matInput formControlName=\"backgroundColor\" />\r\n </mat-form-field>\r\n <!--<bizdoc-color-picker formControlName=\"backgroundColor\" ></bizdoc-color-picker>-->\r\n </form>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
31792
32202
  }] });
31793
32203
 
31794
32204
  let ReturnToRoleActionDesignComponent = class ReturnToRoleActionDesignComponent extends DesignerElementComponent {
@@ -31817,10 +32227,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31817
32227
  }] }];
31818
32228
  } });
31819
32229
 
32230
+ let configurationDatasourceDesignComponent = class configurationDatasourceDesignComponent extends DesignerElementComponent {
32231
+ constructor() {
32232
+ super(...arguments);
32233
+ this.items = this._fb.array([]);
32234
+ this.form = this._fb.group({
32235
+ items: this._fb.group({})
32236
+ });
32237
+ }
32238
+ ngOnInit() {
32239
+ if (!this.args.items)
32240
+ this.args.items = {};
32241
+ Object.keys(this.args.items).forEach(k => this.items.push(this._form(k, this.args.items[k])));
32242
+ this.items.valueChanges.pipe(debounceTime$1(150)).
32243
+ subscribe(v => this._tomap(v));
32244
+ }
32245
+ _tomap(varray) {
32246
+ const items = {};
32247
+ varray.forEach(v => items[v.key] = v.value);
32248
+ this.form.get('items').setValue(items);
32249
+ }
32250
+ add() {
32251
+ this._form(null, null);
32252
+ }
32253
+ _form(key, value) {
32254
+ return this._fb.group({
32255
+ key: this._fb.control(key, Validators.required),
32256
+ value: this._fb.control(value, Validators.required)
32257
+ });
32258
+ }
32259
+ drop(event) {
32260
+ const array = this.items.value;
32261
+ moveItemInArray(array, event.previousIndex, event.currentIndex);
32262
+ this._tomap(array);
32263
+ }
32264
+ };
32265
+ configurationDatasourceDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: configurationDatasourceDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
32266
+ configurationDatasourceDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: configurationDatasourceDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <div>\r\n <!--<mat-label>{{'Icon'|translate}}</mat-label>-->\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </div>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: IconPickerComponent, selector: "bizdoc-icon-picker", inputs: ["value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "component", type: PrivilegesDesignComponent, selector: "bizdoc-privileges", inputs: ["model"], outputs: ["change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
32267
+ configurationDatasourceDesignComponent = __decorate([
32268
+ BizDoc({ selector: 'configuration-datasource-designer' })
32269
+ ], configurationDatasourceDesignComponent);
32270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: configurationDatasourceDesignComponent, decorators: [{
32271
+ type: Component,
32272
+ args: [{ template: "<ng-container *ngIf=\"editMode; else info\">\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n <div>\r\n <!--<mat-label>{{'Icon'|translate}}</mat-label>-->\r\n <bizdoc-icon-picker formControlName=\"icon\" required></bizdoc-icon-picker>\r\n </div>\r\n </form>\r\n <bizdoc-privileges (change)=\"change.emit()\" [model]=\"model.privileges\"></bizdoc-privileges>\r\n</ng-container>\r\n<!---->\r\n<ng-template #info>\r\n <div>\r\n </div>\r\n</ng-template>\r\n" }]
32273
+ }] });
32274
+
31820
32275
  const SYSTEM_COMPONENTS = [RoleNodeComponent, ManageCubeIndexUtility, PermissionsUtility, PositionsComponent, ProfilerComponent,
31821
32276
  PatternsComponent, SystemDiffComponent, DocumentTraceComponent, ConfigurationDesignerComponent, FormDesignerComponent];
31822
32277
  const DESINER_COMPONENTS = [StateDesignComponent, RoleDesignComponent, FormDesignComponent, RuleDesignComponent, ReportDesignComponent, GuideDesignComponent, UtilityDesignComponent, FolderDesignComponent, WidgetDesignComponent, ActionDesignComponent, DocumentsWidgetDesignComponent, CubeDesignComponent, ViewDesignComponent, TypeDesignComponent, ReportDesignComponent,
31823
- ReturnToRoleActionDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsReportDesignComponent, PerformanceWidgetDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent, PivotViewDesignComponent];
32278
+ configurationDatasourceDesignComponent, ReturnToRoleActionDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsReportDesignComponent, PerformanceWidgetDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent, PivotViewDesignComponent];
31824
32279
  class SystemModule {
31825
32280
  static forChild() {
31826
32281
  registerComponents(SYSTEM_COMPONENTS);
@@ -31834,8 +32289,9 @@ class SystemModule {
31834
32289
  SystemModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31835
32290
  SystemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: SystemModule, declarations: [
31836
32291
  /** design */
32292
+ IconPickerComponent,
31837
32293
  StateDesignComponent, RoleDesignComponent, GuideDesignComponent, RuleDesignComponent, ReportDesignComponent, FolderDesignComponent, UtilityDesignComponent, FormDesignComponent, WidgetDesignComponent, CubeDesignComponent, ActionDesignComponent, ReportDesignComponent, ViewDesignComponent, TypeDesignComponent,
31838
- ReturnToRoleActionDesignComponent, PivotViewDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsWidgetDesignComponent, PerformanceWidgetDesignComponent, DocumentsReportDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent,
32294
+ configurationDatasourceDesignComponent, ReturnToRoleActionDesignComponent, PivotViewDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsWidgetDesignComponent, PerformanceWidgetDesignComponent, DocumentsReportDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent,
31839
32295
  /** utilities */
31840
32296
  ConfigurationDesignerComponent, FormDesignerComponent, DesignerItemComponent,
31841
32297
  PermissionsUtility, ManageCubeIndexUtility, ProfileSettingsDialog,
@@ -31876,8 +32332,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31876
32332
  args: [{
31877
32333
  declarations: [
31878
32334
  /** design */
32335
+ IconPickerComponent,
31879
32336
  StateDesignComponent, RoleDesignComponent, GuideDesignComponent, RuleDesignComponent, ReportDesignComponent, FolderDesignComponent, UtilityDesignComponent, FormDesignComponent, WidgetDesignComponent, CubeDesignComponent, ActionDesignComponent, ReportDesignComponent, ViewDesignComponent, TypeDesignComponent,
31880
- ReturnToRoleActionDesignComponent, PivotViewDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsWidgetDesignComponent, PerformanceWidgetDesignComponent, DocumentsReportDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent,
32337
+ configurationDatasourceDesignComponent, ReturnToRoleActionDesignComponent, PivotViewDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsWidgetDesignComponent, PerformanceWidgetDesignComponent, DocumentsReportDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent,
31881
32338
  /** utilities */
31882
32339
  ConfigurationDesignerComponent, FormDesignerComponent, DesignerItemComponent,
31883
32340
  PermissionsUtility, ManageCubeIndexUtility, ProfileSettingsDialog,
@@ -32098,5 +32555,5 @@ function withRoute(routes) {
32098
32555
  * Generated bundle index. Do not edit.
32099
32556
  */
32100
32557
 
32101
- export { AccountService, AceInput, ActionDialog, ActionPicker, ActionPipe, ActionRef, ActionsWidget, AddressInput, AgoPipe, ArraySortPipe, AssignActionComponent, AttachmentInfo, AttachmentPreview, AuthenticationImpl, AvatarComponent, BIZDOC_CONFIG, BackNavigation, BizDoc, BizDocApp, BizDocModule, BrokenPage, BrowseFilterComponent, BrowseItemsComponent, CalendarPipe, ChatInfo, CheckboxComponent, CollapseNavigation, ColorPicker, CombinationPicker, CombinationPickerBody, CombinationPool, CommentsComponent, CompareContextDirective, CompareGroupDirective, CompareGroupsWidget, CompareNameDirective, ComposeFormComponent, ContactsComponent, ConversationComponent, CubeAccumAnalysisWidget, CubeAccumulationChartComponent, CubeAnalysisWidget, CubeChartAnalysisWidget, CubeChartComponent, CubeDocumentsGridComponent, CubeDocumentsTableComponent, CubeDocumentsWidget, CubeFilterComponent, CubeGridComponent, CubeInfo, CubeMatrixComponent, CubeParallelComponent, CubePerformanceWidget, CubePivotComponent, CubeService, CubeSpreadsheetComponent, CubeSumComponent, CubeViewComponent, CubeWidgetFilterComponent, DEFAULT_POLICY, DRAFT, DashboardComponent, DatasourceService, DateFormatPipe, DateRangePipe, DifferencePipe, DocumentInfo, DocumentInfoComponent, DocumentResolveService, DocumentViewRef, DocumentViewsComponent, DurationFormatPipe, DurationPipe, EnterExitLeft, EnterExitRight, EnterExitTop, ExploreDocumentComponent, ExploreItemImplComponent, ExploreItemsComponent, FadeSlideInOut, FieldType, FileInput, FilterPipe, FilterTagsComponent, FlowViewComponent, FormPipe, FormRef, GuideRef, GuideService, HelpTipComponent, INBOX, IdentityName, ItemResolveService, JoinPipe, LottieAnimation, MailboxService, MapInfo, MatIconAnimate, MaterialModule, NavigationClose, NavigationEnd, NavigationExpand, NavigationFocus, NavigationMode, NavigationResize, NavigationStart, NgxComponentOutlet, NotificationsTableComponent, OpenPolicy, POPUP_DATA, PaneRef, PanesRouter, ParamNavigation, PeersPerformanceWidget, PendingResultsWidget, PersonalActivityWidget, PersonalScoreWidget, Popup, PopupRef, PrivilegeDisabledDirective, PrivilegeHiddenDirective, PulseAnimation, QueryParamNavigation, QuickCommentComponent, RecentsWidget, RecipientResolveService, ReportArgumentsComponent, ReportRef, ReportViewerComponent, ReturnActionComponent, RolePipe, RouterImpl, SanitizeHtmlPipe, SaveChangesDialog, ScheduleViewComponent, SearchInput, SessionService, ShakeAnimation, SharedModule, SlotRouterDirective, StateDirective, StatePipe, SubstitutionComponent, SwapAnimation, TagsComponent, TasksComponent, TimeAgoPipe, TimePicker, TimespanInput, TooltipDirective, TraceViewComponent, TranslatePipe, TranslateService, TypeAutocomplete, TypeSelect, TypeValuePipe, UsageChartComponent, UsagePivotComponent, UsageReportArgs, UserNamePipe, UtilityRef, VersionCompareComponent, WidgetItemComponent, WidgetRef, cleanup, isArray, isBoolean, isDate, isFunction, isImage, isMobile, isObject, isPrimitive, isPromise, isString, modelize, registerComponents };
32558
+ export { AccountService, AceInput, ActionDialog, ActionPicker, ActionPipe, ActionRef, ActionsWidget, AddressInput, AgoPipe, ArraySortPipe, AssignActionComponent, AttachmentInfo, AttachmentPreview, AuthenticationImpl, AvatarComponent, BIZDOC_CONFIG, BackNavigation, BizDoc, BizDocApp, BizDocModule, BrokenPage, BrowseFilterComponent, BrowseItemsComponent, CalendarPipe, ChatInfo, CheckboxComponent, CollapseNavigation, ColorPicker, CombinationPicker, CombinationPickerBody, CombinationPool, CommentsComponent, CompareContextDirective, CompareGroupDirective, CompareGroupsWidget, CompareNameDirective, ComposeFormComponent, ContactsComponent, ConversationComponent, CubeAccumAnalysisWidget, CubeAccumulationChartComponent, CubeAnalysisWidget, CubeChartAnalysisWidget, CubeChartComponent, CubeDocumentsGridComponent, CubeDocumentsTableComponent, CubeDocumentsWidget, CubeFilterComponent, CubeGridComponent, CubeInfo, CubeMatrixComponent, CubeParallelComponent, CubePerformanceWidget, CubePivotComponent, CubeService, CubeSpreadsheetComponent, CubeSumComponent, CubeViewComponent, CubeWidgetFilterComponent, DEFAULT_POLICY, DRAFT, DashboardComponent, DatasourceService, DateFormatPipe, DateRangePipe, DifferencePipe, DocumentInfo, DocumentInfoComponent, DocumentResolveService, DocumentViewRef, DocumentViewsComponent, DurationFormatPipe, DurationPipe, EnterExitLeft, EnterExitRight, EnterExitTop, ExploreDocumentComponent, ExploreItemImplComponent, ExploreItemsComponent, FadeSlideInOut, FieldType, FileInput, FilterPipe, FilterTagsComponent, FlowViewComponent, FormPipe, FormRef, GuideRef, GuideService, HelpTipComponent, INBOX, IdentityName, ItemResolveService, JoinPipe, LottieAnimation, MailboxService, MapInfo, MatIconAnimate, MaterialModule, NavigationClose, NavigationEnd, NavigationExpand, NavigationFocus, NavigationMode, NavigationResize, NavigationStart, NgxComponentOutlet, NotificationsTableComponent, OpenPolicy, POPUP_DATA, PaneRef, PanesRouter, ParamNavigation, PeersPerformanceWidget, PendingResultsWidget, PersonalActivityWidget, PersonalScoreWidget, Popup, PopupRef, PrivilegeDisabledDirective, PrivilegeHiddenDirective, PulseAnimation, QueryParamNavigation, QuickCommentComponent, RecentsWidget, RecipientResolveService, ReportArgumentsComponent, ReportRef, ReportViewerComponent, ReturnActionComponent, RolePipe, RouterImpl, SanitizeHtmlPipe, SaveChangesDialog, ScheduleViewComponent, SearchInput, SessionService, ShakeAnimation, SharedModule, SlotRouterDirective, StateDirective, StatePipe, SubstitutionComponent, SwapAnimation, TagsComponent, TasksComponent, TimeAgoPipe, TimePicker, TimespanInput, TooltipDirective, TraceViewComponent, TranslatePipe, TranslateService, TypeAutocomplete, TypeSelect, TypeValuePipe, UsageChartComponent, UsagePivotComponent, UsageReportArgs, UserNamePipe, UtilityRef, VersionCompareComponent, WidgetItemComponent, WidgetRef, cleanup$1 as cleanup, isArray, isBoolean, isDate, isFunction, isImage, isMobile, isObject, isPrimitive, isPromise, isString, modelize, registerComponents };
32102
32559
  //# sourceMappingURL=bizdoc-core.mjs.map