@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
@@ -25,7 +25,7 @@ import * as i1$4 from '@angular/common';
25
25
  import { registerLocaleData, CommonModule, getLocaleNumberFormat, NumberFormatStyle, getCurrencySymbol, formatNumber, formatPercent, formatCurrency } from '@angular/common';
26
26
  import * as i5 from '@angular/flex-layout/flex';
27
27
  import * as i9 from '@angular/material/button';
28
- import { MatButtonModule, MatButton } from '@angular/material/button';
28
+ import { MatButtonModule } from '@angular/material/button';
29
29
  import { L10n, setCulture, loadCldr, setCurrencyCode, Internationalization, enableRtl, registerLicense } from '@syncfusion/ej2-base';
30
30
  import 'dayjs/locale/he';
31
31
  import 'dayjs/locale/de';
@@ -109,7 +109,7 @@ import * as i4$5 from '@angular/material/list';
109
109
  import { MatListModule } from '@angular/material/list';
110
110
  import * as i8$3 from '@angular/material/toolbar';
111
111
  import { MatToolbarModule } from '@angular/material/toolbar';
112
- import * as i6$5 from '@angular/material/radio';
112
+ import * as i4$6 from '@angular/material/radio';
113
113
  import { MatRadioModule } from '@angular/material/radio';
114
114
  import * as i2$4 from '@angular/flex-layout';
115
115
  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
  }
@@ -1180,6 +1185,7 @@ const STRINGS = {
1180
1185
  'ar': {},
1181
1186
  'ru': {},
1182
1187
  'en': {
1188
+ Summary: 'Summary',
1183
1189
  SecurityLevel: 'Security level',
1184
1190
  Global: 'Global',
1185
1191
  Indices: 'Indices',
@@ -3432,7 +3438,7 @@ class MailboxService {
3432
3438
  }
3433
3439
  findAll(filter, options) {
3434
3440
  const params = { ...filter, ...options };
3435
- cleanup(params);
3441
+ cleanup$1(params);
3436
3442
  return this._http.get('/api/mail', { params });
3437
3443
  }
3438
3444
  create(form) {
@@ -3487,7 +3493,7 @@ class MailboxService {
3487
3493
  // return throwError({ status: res.status, error: res.body });
3488
3494
  // }))
3489
3495
  // }), this._notify<T>());
3490
- return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}`, model, { params })), this._notify());
3496
+ return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}`, cleanup$1(model), { params })), this._notify());
3491
3497
  }
3492
3498
  delete(id) {
3493
3499
  return this._http.delete(`/api/mail/${id}`).pipe(tap(() => this._delete$.next(id)));
@@ -7272,10 +7278,10 @@ class CubeFilterComponent {
7272
7278
  }
7273
7279
  }
7274
7280
  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 });
7275
- 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" }] });
7281
+ 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" }] });
7276
7282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: CubeFilterComponent, decorators: [{
7277
7283
  type: Component,
7278
- 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"] }]
7284
+ 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"] }]
7279
7285
  }], ctorParameters: function () { return [{ type: CubeService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2$1.FormBuilder }, { type: SessionService }]; }, propDecorators: { cube: [{
7280
7286
  type: Input
7281
7287
  }], exclude: [{
@@ -7321,7 +7327,7 @@ class BrowseFilterComponent {
7321
7327
  pipe(debounceTime(250), filter(v => isString(v)), takeUntil(this._destroy), switchMap(v => this._mailbox.senders(v)));
7322
7328
  this.form.valueChanges.pipe(takeUntil(this._destroy), debounceTime(FILTER_DEBOUNCE)).subscribe(v => {
7323
7329
  const value = { ...v };
7324
- cleanup(value);
7330
+ cleanup$1(value);
7325
7331
  this.valuesChange.emit(value);
7326
7332
  });
7327
7333
  this._initialize();
@@ -7372,7 +7378,7 @@ class BrowseFilterComponent {
7372
7378
  }
7373
7379
  axesChange(axes) {
7374
7380
  const value = { ...this.form.value, ...axes };
7375
- cleanup(value);
7381
+ cleanup$1(value);
7376
7382
  this.valuesChange.emit(value);
7377
7383
  }
7378
7384
  toggleTag(tag) {
@@ -8612,12 +8618,17 @@ function assign(model1, model2) {
8612
8618
  }
8613
8619
 
8614
8620
  class FormRef {
8615
- constructor( /*private _router: RouterImpl*/) {
8621
+ constructor(/*private _router: RouterImpl*/ _configuration) {
8622
+ this._configuration = _configuration;
8616
8623
  this._saving = new Subject();
8617
8624
  this._stateChange = new Subject();
8618
8625
  this._modelChange = new Subject();
8619
8626
  this._navigating = new Subject();
8620
8627
  }
8628
+ /** configuration options */
8629
+ get options() {
8630
+ return this._configuration.options || {};
8631
+ }
8621
8632
  /** intercept save */
8622
8633
  get saving() {
8623
8634
  return this._saving.asObservable();
@@ -8916,7 +8927,7 @@ class ComposeFormComponent {
8916
8927
  if (!this.form.template)
8917
8928
  throw (`Form '${this.form.name}' model missing '[Template()]' attribute.`);
8918
8929
  const factory = this._cf.resolve(this.form.template);
8919
- this._formRef = new FormRef();
8930
+ this._formRef = new FormRef(this.form);
8920
8931
  this._formRef._navigating.
8921
8932
  subscribe(p => this.page = p);
8922
8933
  this._formRef._stateChange.pipe(startWith()).
@@ -13112,7 +13123,7 @@ class ReportArgumentsComponent {
13112
13123
  form.patchValue(this.args, { emitEvent: false });
13113
13124
  form.valueChanges.pipe(debounceTime(ARGUMENTS_DEBOUNCE), takeUntil(this._destroy)).subscribe(c => {
13114
13125
  if (form.valid) {
13115
- cleanup(c);
13126
+ cleanup$1(c);
13116
13127
  this.args = c;
13117
13128
  this.argsChange.emit(c);
13118
13129
  }
@@ -13328,7 +13339,7 @@ class WorkflowNodeComponent {
13328
13339
  connector.addInfo = this.connector.getRawValue();
13329
13340
  else
13330
13341
  Object.assign(connector.addInfo, this.connector.getRawValue());
13331
- cleanup(connector.addInfo);
13342
+ cleanup$1(connector.addInfo);
13332
13343
  if (connector.annotations.length) {
13333
13344
  connector.annotations[0].content = content;
13334
13345
  this.diagram.dataBind();
@@ -13370,7 +13381,7 @@ class WorkflowNodeComponent {
13370
13381
  }]);
13371
13382
  }
13372
13383
  Object.assign(addInfo, m);
13373
- cleanup(addInfo);
13384
+ cleanup$1(addInfo);
13374
13385
  this.change.emit();
13375
13386
  }
13376
13387
  if (tool.template) {
@@ -13511,8 +13522,8 @@ function paletteIconClick() {
13511
13522
  /** workflow component*/
13512
13523
  class WorkflowComponent {
13513
13524
  /** workflow ctor */
13514
- constructor(ps, _service, _pane, _router, _session, _translate) {
13515
- this.ps = ps;
13525
+ constructor(_ps, _service, _pane, _router, _session, _translate) {
13526
+ this._ps = _ps;
13516
13527
  this._service = _service;
13517
13528
  this._pane = _pane;
13518
13529
  this._router = _router;
@@ -14002,9 +14013,9 @@ class WorkflowComponent {
14002
14013
  this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version');
14003
14014
  this.saving = true;
14004
14015
  return this._service.save(this._form).toPromise().then(v => {
14005
- this.ps.toast('ChangesSaved');
14016
+ this._ps.toast('ChangesSaved');
14006
14017
  if (this._form.workflow.version < v) {
14007
- this.ps.toast('DiagramVersion', v);
14018
+ this._ps.toast('DiagramVersion', v);
14008
14019
  const node = this.diagram.getNodeObject('version');
14009
14020
  node.shape.content = this._translate.get('DiagramVersion', v);
14010
14021
  this.diagram.dataBind();
@@ -14013,7 +14024,7 @@ class WorkflowComponent {
14013
14024
  this.dirty = false;
14014
14025
  this.saving = false;
14015
14026
  }, () => {
14016
- this.ps.error();
14027
+ this._ps.error();
14017
14028
  this.saving = false;
14018
14029
  });
14019
14030
  }
@@ -15316,7 +15327,7 @@ class VersionCompareComponent {
15316
15327
  const componentFactory = this._cf.resolve(this._form.template);
15317
15328
  const injector = Injector.create([
15318
15329
  { provide: VersionCompareComponent, useValue: this },
15319
- { provide: FormRef, useValue: new FormRef() },
15330
+ { provide: FormRef, useValue: new FormRef(this._form) },
15320
15331
  { provide: DOCUMENT_MODEL, useValue: this.model }
15321
15332
  ], this._injector);
15322
15333
  this._container.clear();
@@ -17708,7 +17719,7 @@ class DocumentInfoComponent {
17708
17719
  ngOnChanges(_) {
17709
17720
  const form = this._session.profile.forms.find(f => f.name === this.model.formId);
17710
17721
  this._formRef && this._formRef._destroy();
17711
- this._formRef = new FormRef();
17722
+ this._formRef = new FormRef(form);
17712
17723
  const factory = this._cf.resolve(form.template);
17713
17724
  const injector = Injector.create([{
17714
17725
  provide: DOCUMENT_MODEL, useValue: this.model
@@ -19926,10 +19937,10 @@ class ComposeMenuComponent {
19926
19937
  }
19927
19938
  }
19928
19939
  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 });
19929
- 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: [] });
19940
+ 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: [] });
19930
19941
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ComposeMenuComponent, decorators: [{
19931
19942
  type: Component,
19932
- 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"] }]
19943
+ 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"] }]
19933
19944
  }], ctorParameters: function () { return [{ type: SessionService }, { type: MailboxService }, { type: PromptService }, { type: PanesRouter }]; }, propDecorators: { change: [{
19934
19945
  type: Output
19935
19946
  }] } });
@@ -20218,10 +20229,10 @@ class FormSelectorSheet {
20218
20229
  }
20219
20230
  }
20220
20231
  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 });
20221
- 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" }] });
20232
+ 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" }] });
20222
20233
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormSelectorSheet, decorators: [{
20223
20234
  type: Component,
20224
- 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" }]
20235
+ 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" }]
20225
20236
  }], ctorParameters: function () { return [{ type: i2$3.MatDialog }, { type: i2$5.MatBottomSheetRef }, { type: PromptService }, { type: MailboxService }, { type: i1$3.Router }, { type: SessionService }]; } });
20226
20237
 
20227
20238
  class ChatComponent {
@@ -24696,7 +24707,6 @@ class ColorPicker {
24696
24707
  this.Object = Object;
24697
24708
  this._required = false;
24698
24709
  this._disabled = false;
24699
- this._opened = false;
24700
24710
  this.stateChanges = new Subject();
24701
24711
  this.valueChanges = new Subject();
24702
24712
  this.id = `color-picker-${ColorPicker.nextId++}`;
@@ -24742,7 +24752,7 @@ class ColorPicker {
24742
24752
  }
24743
24753
  get disabled() { return this._disabled; }
24744
24754
  set disabled(value) {
24745
- this._trigger.disabled = this._disabled = value;
24755
+ this._disabled = value;
24746
24756
  this.stateChanges.next();
24747
24757
  }
24748
24758
  setDescribedByIds(ids) {
@@ -24750,21 +24760,20 @@ class ColorPicker {
24750
24760
  }
24751
24761
  onContainerClick(_event) {
24752
24762
  this._onTouched && this._onTouched();
24753
- !this._opened && this.open();
24763
+ this.open();
24754
24764
  }
24755
24765
  ngOnDestroy() {
24756
24766
  this._destroy.next();
24767
+ this._destroy.complete();
24757
24768
  }
24758
24769
  open() {
24759
24770
  if (!this._overlayRef)
24760
24771
  this._overlayRef = this._createOverlay();
24761
24772
  const portal = new TemplatePortal(this._colorPalette, this._vc);
24762
24773
  this._overlayRef.attach(portal);
24763
- this._opened = true;
24764
24774
  }
24765
24775
  close() {
24766
24776
  this._overlayRef.detach();
24767
- this._opened = false;
24768
24777
  }
24769
24778
  _pick(color) {
24770
24779
  this.value = color;
@@ -24793,40 +24802,22 @@ class ColorPicker {
24793
24802
  }
24794
24803
  ColorPicker.nextId = 0;
24795
24804
  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 });
24796
- 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()'>
24797
- <span>{{label}}</span>
24798
- <mat-icon>arrow_drop_down</mat-icon>
24799
- </button>
24800
- <ng-template>
24801
- <div class="color-palette">
24802
- <div *ngFor='let p of Object.keys(_palettes)' class="color-container">
24803
- <span *ngFor='let c of Object.keys(_palettes[p])' (click)='_pick(_palettes[p][c])' [style.background-color]='_palettes[p][c]' class="color-item"></span>
24804
- </div>
24805
- </div>
24806
- </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"] }] });
24805
+ 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"] }] });
24807
24806
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ColorPicker, decorators: [{
24808
24807
  type: Component,
24809
- args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], template: `<button mat-button (click)='open()'>
24810
- <span>{{label}}</span>
24811
- <mat-icon>arrow_drop_down</mat-icon>
24812
- </button>
24813
- <ng-template>
24814
- <div class="color-palette">
24815
- <div *ngFor='let p of Object.keys(_palettes)' class="color-container">
24816
- <span *ngFor='let c of Object.keys(_palettes[p])' (click)='_pick(_palettes[p][c])' [style.background-color]='_palettes[p][c]' class="color-item"></span>
24817
- </div>
24818
- </div>
24819
- </ng-template>`, host: {
24808
+ args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], host: {
24820
24809
  '[class.floating]': 'shouldLabelFloat',
24821
24810
  '[id]': 'id',
24822
24811
  '[attr.aria-describedby]': 'describedBy'
24823
- }, styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"] }]
24812
+ }, 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"] }]
24824
24813
  }], ctorParameters: function () { return [{ type: i2$1.NgControl, decorators: [{
24825
24814
  type: Optional
24826
24815
  }, {
24827
24816
  type: Self
24828
24817
  }] }, { type: i1$2.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i3$3.Directionality }]; }, propDecorators: { label: [{
24829
24818
  type: Input
24819
+ }], value: [{
24820
+ type: Input
24830
24821
  }], valueChanges: [{
24831
24822
  type: Output
24832
24823
  }], id: [{
@@ -24841,9 +24832,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
24841
24832
  }], describedBy: [{
24842
24833
  type: HostBinding,
24843
24834
  args: ['attr.aria-describedby']
24844
- }], _trigger: [{
24845
- type: ViewChild,
24846
- args: [MatButton, { static: true }]
24847
24835
  }], _colorPalette: [{
24848
24836
  type: ViewChild,
24849
24837
  args: [TemplateRef, { static: true }]
@@ -27577,12 +27565,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
27577
27565
  args: ['nameInput', { static: true, read: ElementRef }]
27578
27566
  }] } });
27579
27567
 
27568
+ let BoxFormComponent = class BoxFormComponent {
27569
+ constructor(_fb, ref) {
27570
+ this._fb = _fb;
27571
+ this.metadata = ref.options;
27572
+ const content = this._fb.group({});
27573
+ this.form = _fb.group({ content });
27574
+ this.metadata.sections.forEach(s => {
27575
+ const group = _fb.group({});
27576
+ s.rows.forEach(r => r.fields.forEach(f => group.addControl(f.name, _fb.control(null, f.required ? Validators.required : null))));
27577
+ content.addControl(s.name, group);
27578
+ });
27579
+ }
27580
+ onBind(data, version) {
27581
+ this.data = data;
27582
+ }
27583
+ };
27584
+ 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 });
27585
+ 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"] }] });
27586
+ BoxFormComponent = __decorate([
27587
+ BizDoc({ selector: 'bizdoc-box-form' })
27588
+ ], BoxFormComponent);
27589
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BoxFormComponent, decorators: [{
27590
+ type: Component,
27591
+ 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"] }]
27592
+ }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: FormRef }]; } });
27593
+
27580
27594
  /** configuration componenets */
27581
27595
  const CORE_COMPONENTS = [CubePerformanceWidget, CubeParallelViewComponent, CubeExploreViewComponent, CubeChartViewComponent, CubeDocumentSumComponent, CubeDocumentMatrixComponent, CubeDocumentViewComponent, CubePivotViewComponent, TimelineViewComponent,
27582
27596
  SubstitutionComponent, MoveToActionComponent, AssignActionComponent, ReturnActionComponent, ExploreDocumentComponent,
27583
27597
  ActionsWidget, CubeAnalysisWidget, CubeDocumentsWidget, RecentsWidget, PersonalActivityWidget,
27584
27598
  CompareGroupsWidget, PeersPerformanceWidget, PendingResultsWidget, PersonalScoreWidget, CubeWidgetFilterComponent,
27585
- CubeDocumentsComponent, TasksComponent, UsageReportArgs, CubeUsageComponent
27599
+ CubeDocumentsComponent, TasksComponent, UsageReportArgs, CubeUsageComponent, BoxFormComponent
27586
27600
  ];
27587
27601
  /** common BizDoc components */
27588
27602
  class SharedModule {
@@ -27613,7 +27627,7 @@ class SharedModule {
27613
27627
  }
27614
27628
  }
27615
27629
  SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27616
- SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: SharedModule, declarations: [HelpTipComponent,
27630
+ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: SharedModule, declarations: [HelpTipComponent, BoxFormComponent,
27617
27631
  CubeUsageComponent,
27618
27632
  CubeDocumentsComponent,
27619
27633
  DateFormatPipe, CalendarPipe, DifferencePipe, DurationPipe, TimeAgoPipe,
@@ -27781,7 +27795,7 @@ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
27781
27795
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SharedModule, decorators: [{
27782
27796
  type: NgModule,
27783
27797
  args: [{
27784
- declarations: [HelpTipComponent,
27798
+ declarations: [HelpTipComponent, BoxFormComponent,
27785
27799
  CubeUsageComponent,
27786
27800
  CubeDocumentsComponent,
27787
27801
  DateFormatPipe, CalendarPipe, DifferencePipe, DurationPipe, TimeAgoPipe,
@@ -30442,6 +30456,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
30442
30456
  args: ['window:keydown.f1', ['$event']]
30443
30457
  }] } });
30444
30458
 
30459
+ //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',
30460
+ // '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',
30461
+ // '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',
30462
+ // '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',
30463
+ // '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'];
30445
30464
  class DesignerRef {
30446
30465
  constructor(_model) {
30447
30466
  this._model = _model;
@@ -30454,6 +30473,8 @@ class DesignerElementComponent {
30454
30473
  this._ref = _ref;
30455
30474
  this.change = new EventEmitter();
30456
30475
  }
30476
+ ngOnInit() {
30477
+ }
30457
30478
  get args() { return this.model.options; }
30458
30479
  }
30459
30480
  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 });
@@ -30466,6 +30487,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
30466
30487
  }] }]; }, propDecorators: { change: [{
30467
30488
  type: Output
30468
30489
  }] } });
30490
+ class DesignerTypeElementComponent extends DesignerElementComponent {
30491
+ constructor() {
30492
+ super(...arguments);
30493
+ this.form = this._fb.group({
30494
+ name: this._fb.control(null, Validators.required),
30495
+ title: this._fb.control(null, Validators.required),
30496
+ });
30497
+ }
30498
+ assignargs(evt) {
30499
+ Object.assign(this.args, evt);
30500
+ this.change.emit();
30501
+ }
30502
+ ngOnInit() {
30503
+ const { name, title } = this.form.controls;
30504
+ this.model.draft && title.valueChanges.pipe().subscribe((t) => {
30505
+ t && name.setValue(programName(t));
30506
+ });
30507
+ }
30508
+ }
30509
+ DesignerTypeElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerTypeElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
30510
+ DesignerTypeElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: DesignerTypeElementComponent, usesInheritance: true, ngImport: i0 });
30511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerTypeElementComponent, decorators: [{
30512
+ type: Directive
30513
+ }] });
30514
+ function programName(name) {
30515
+ return name.
30516
+ replace(/[A-Z]+/g, (c, i) => (i > 0 ? '-' : '') + c.toLowerCase()).
30517
+ replace(' ', '_');
30518
+ }
30519
+ /** */
30469
30520
  class DesignerCubeElementComponent extends DesignerElementComponent {
30470
30521
  constructor(fb, ref) {
30471
30522
  super(fb, ref);
@@ -30500,10 +30551,13 @@ class DesignerCubeElementComponent extends DesignerElementComponent {
30500
30551
  this._forthAxes(evt.value);
30501
30552
  }
30502
30553
  ngOnInit() {
30554
+ super.ngOnInit();
30503
30555
  const cubeId = this.args['cube'];
30504
30556
  this.cube = !cubeId ? this.cubes[0] : this.cubes.find(c => c.name === cubeId);
30505
- this._secondaryAxes(this.args['xAxis']);
30506
- this._thirdAxes(this.args['series']);
30557
+ if (this.args['xAxis']) {
30558
+ this._secondaryAxes(this.args['xAxis']);
30559
+ this.args['series'] && this._thirdAxes(this.args['series']);
30560
+ }
30507
30561
  }
30508
30562
  }
30509
30563
  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 });
@@ -30567,10 +30621,10 @@ class DesignerItemComponent {
30567
30621
  }
30568
30622
  }
30569
30623
  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 });
30570
- 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"] });
30624
+ 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"] });
30571
30625
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, decorators: [{
30572
30626
  type: Component,
30573
- args: [{ selector: 'bizdoc-designer-element', template: '<span></span><ng-container #container></ng-container>', styles: [":host{flex:1}::ng-deep form{padding:8px}\n"] }]
30627
+ 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"] }]
30574
30628
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: PaneRef, decorators: [{
30575
30629
  type: Optional
30576
30630
  }] }, { type: BizDocComponentFactoryResolver }]; }, propDecorators: { editMode: [{
@@ -30590,8 +30644,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
30590
30644
 
30591
30645
  /** */
30592
30646
  let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
30593
- constructor(_panes, _ref) {
30647
+ constructor(_panes, _ps, _ref) {
30594
30648
  this._panes = _panes;
30649
+ this._ps = _ps;
30595
30650
  this._ref = _ref;
30596
30651
  this.loading = true;
30597
30652
  this.saving = false;
@@ -30601,19 +30656,19 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
30601
30656
  this._ref.populate().subscribe(r => {
30602
30657
  this.model = r;
30603
30658
  this.sections = [
30604
- { elements: r.forms, type: 'Forms', template: 'form-designer' },
30605
- { elements: r.actions, type: 'Actions', template: 'action-designer' },
30606
- { elements: r.reports, type: 'Reports', template: 'report-designer' },
30607
- { elements: r.widgets, type: 'Widgets', template: 'widget-designer' },
30659
+ { elements: r.forms, type: 'Forms', template: 'form-designer', templates: r.tForms },
30660
+ { elements: r.actions, type: 'Actions', template: 'action-designer', templates: r.tActions },
30661
+ { elements: r.reports, type: 'Reports', template: 'report-designer', templates: r.tReports },
30662
+ { elements: r.widgets, type: 'Widgets', template: 'widget-designer', templates: r.tWidgets },
30608
30663
  { elements: r.views, type: 'Views', template: 'view-designer' },
30609
- { elements: r.guides, type: 'Guides', template: 'guide-designer' },
30610
- { elements: r.cubes, type: 'Cubes', template: 'cube-designer' },
30611
- { elements: r.folders, type: 'Folders', template: 'folder-designer' },
30612
- { elements: r.roles, type: 'Roles', template: 'role-designer' },
30613
- { elements: r.states, type: 'States', template: 'state-designer' },
30614
- { elements: r.utilities, type: 'Utilities', template: 'utility-designer' },
30615
- { elements: r.types, type: 'Types', template: 'type-designer' },
30616
- { elements: r.rules, type: 'Rules', template: 'rule-designer' },
30664
+ { elements: r.guides, type: 'Guides', template: 'guide-designer', templates: [{}] },
30665
+ { elements: r.cubes, type: 'Cubes', template: 'cube-designer', templates: r.tCubes },
30666
+ { elements: r.folders, type: 'Folders', template: 'folder-designer', templates: [{}] },
30667
+ { elements: r.roles, type: 'Roles', template: 'role-designer', templates: [{}] },
30668
+ { elements: r.states, type: 'States', template: 'state-designer', templates: [{}] },
30669
+ { elements: r.utilities, type: 'Utilities', template: 'utility-designer', templates: r.tUtilities },
30670
+ { elements: r.types, type: 'Types', template: 'type-designer', templates: r.tTypes },
30671
+ { elements: r.rules, type: 'Rules', template: 'rule-designer', templates: r.tRules },
30617
30672
  ];
30618
30673
  this.loading = false;
30619
30674
  });
@@ -30621,24 +30676,57 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
30621
30676
  drop(event) {
30622
30677
  moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
30623
30678
  }
30679
+ /**
30680
+ * Ctrl-s save
30681
+ * @param event
30682
+ */
30683
+ handleKeyboardEvent(event) {
30684
+ if (this.dirty && event.ctrlKey && (event.which === 83 || event.which === 115)) {
30685
+ this.save();
30686
+ event.preventDefault();
30687
+ }
30688
+ }
30624
30689
  discard(section, element) {
30625
30690
  ;
30626
30691
  }
30692
+ create(section) {
30693
+ if (section.templates.length === 1) {
30694
+ const [template] = section.templates, element = {
30695
+ type: template.type,
30696
+ name: template.title ? this._uniqueName(programName(template.title), section) : null,
30697
+ title: template.title ? this._uniqueTitle(template.title, section) : null,
30698
+ draft: true,
30699
+ template: template.template
30700
+ };
30701
+ section.elements.push(element);
30702
+ this.edit(element, section.template);
30703
+ }
30704
+ else { }
30705
+ }
30627
30706
  copy(section, element) {
30628
- let i = element.name.lastIndexOf('_'), n = 1;
30629
- let name = element.name.substr(0, i < 0 ? element.name.length : i + 1) + '_' + n;
30630
- while (section.elements.find(e => e.name === name)) {
30707
+ section.elements.splice(section.elements.indexOf(element) + 1, 0, Object.assign(JSON.parse(JSON.stringify(element)), {
30708
+ copyOf: element.name,
30709
+ name: this._uniqueName(element.name, section),
30710
+ title: this._uniqueTitle(element.title, section),
30711
+ draft: true
30712
+ }));
30713
+ this.dirty = true;
30714
+ }
30715
+ _uniqueName(name, section) {
30716
+ let i = name.lastIndexOf('_'), n = 0, val;
30717
+ do {
30631
30718
  n++;
30632
- name = element.name.substr(0, element.name.length - i) + '_' + n;
30633
- }
30634
- i = element.title.lastIndexOf(' '), n = 1;
30635
- let title = element.title.substr(0, i < 0 || parseInt(element.title.substr(i)) === NaN ? element.title.length : i - 1) + ' ' + n;
30636
- while (section.elements.find(e => e.title === title)) {
30719
+ val = (i < 0 || isNaN(parseInt(name.substr(i))) ? name : name.substr(0, i + 1)) + '_' + n;
30720
+ } while (section.elements.find(e => e.name === val));
30721
+ return val;
30722
+ }
30723
+ _uniqueTitle(title, section) {
30724
+ let i = title.lastIndexOf(' '), n = 0, val;
30725
+ do {
30637
30726
  n++;
30638
- title = element.title.substr(0, i < 0 || parseInt(element.title.substr(i)) === NaN ? element.title.length : i - 1) + ' ' + n;
30639
- }
30640
- section.elements.splice(section.elements.indexOf(element) + 1, 0, Object.assign(JSON.parse(JSON.stringify(element)), { copyOf: element.name, name, title }));
30641
- this.dirty = true;
30727
+ val = (i < 0 || isNaN(parseInt(title.substr(i))) ? title : title.substr(0, i - 1)) + ' ' + n;
30728
+ } while (section.elements.find(e => e.title === val));
30729
+ return val;
30642
30730
  }
30643
30731
  edit(element, template) {
30644
30732
  this._panes.navigate(DesignerItemComponent, {
@@ -30659,43 +30747,169 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
30659
30747
  }
30660
30748
  save() {
30661
30749
  this.saving = true;
30662
- this.sections.forEach(s => s.elements.forEach(e => e.options = cleanup(e.options)));
30663
- this._ref.execute(this.model).subscribe(() => this.saving = false);
30750
+ this.sections.forEach(s => s.elements.forEach(e => {
30751
+ if (e.privileges && !Object.keys(e.privileges).length)
30752
+ delete e.privileges;
30753
+ e.options = cleanup(e.options);
30754
+ }));
30755
+ return this._ref.execute(this.model).toPromise().then(() => {
30756
+ this._ps.toast('ChangesSaved');
30757
+ this.saving = false;
30758
+ }, () => {
30759
+ this._ps.error();
30760
+ this.saving = false;
30761
+ });
30664
30762
  }
30665
30763
  };
30666
- 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 });
30667
- 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] });
30764
+ 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 });
30765
+ 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] });
30668
30766
  ConfigurationDesignerComponent = __decorate([
30669
30767
  BizDoc({ selector: 'bizdoc-configuration-designer' })
30670
30768
  ], ConfigurationDesignerComponent);
30671
30769
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ConfigurationDesignerComponent, decorators: [{
30672
30770
  type: Component,
30673
- 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"] }]
30674
- }], ctorParameters: function () { return [{ type: PanesRouter }, { type: UtilityRef }]; } });
30771
+ 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"] }]
30772
+ }], ctorParameters: function () { return [{ type: PanesRouter }, { type: PromptService }, { type: UtilityRef }]; }, propDecorators: { handleKeyboardEvent: [{
30773
+ type: HostListener,
30774
+ args: ['document:keydown', ['$event']]
30775
+ }] } });
30776
+ function cleanup(params) {
30777
+ if (!params)
30778
+ return null;
30779
+ Object.keys(params).forEach(k => {
30780
+ const val = params[k];
30781
+ if (val === null || val === undefined || (isArray(val) && !val.length))
30782
+ delete params[k];
30783
+ else if (isObject(val))
30784
+ params[k] = cleanup(val);
30785
+ });
30786
+ if (!Object.keys(params).length)
30787
+ return null;
30788
+ return params;
30789
+ }
30675
30790
 
30676
30791
  /** */
30677
30792
  let FormDesignerComponent = class FormDesignerComponent {
30678
- constructor(_fb, _session, _ref) {
30793
+ constructor(_fb, _pane, _cd, _ps, _session, _ref) {
30679
30794
  this._fb = _fb;
30795
+ this._pane = _pane;
30796
+ this._cd = _cd;
30797
+ this._ps = _ps;
30680
30798
  this._session = _session;
30681
30799
  this._ref = _ref;
30682
30800
  this.loading = true;
30683
30801
  this.tools = true;
30684
30802
  this.saving = false;
30803
+ this.history = [];
30804
+ this.historyIndex = 0;
30685
30805
  this.form = this._fb.group({
30686
- name: this._fb.control(null),
30687
- label: this._fb.control(null),
30688
- dataType: this._fb.control(null)
30806
+ subject: null,
30807
+ value: null,
30808
+ cube: null,
30809
+ summary: null,
30689
30810
  });
30811
+ this.dirty = false;
30812
+ this.settings = false;
30813
+ this.datatypes = this._session.profile.types;
30814
+ this.cubes = this._session.profile.cubes;
30690
30815
  }
30691
30816
  ngOnInit() {
30692
- this.datatypes = this._session.profile.types;
30693
- this._ref.populate().subscribe(r => {
30694
- this.model = r;
30817
+ this._pane.queryParamsChange.subscribe(p => {
30818
+ const { formId } = p;
30819
+ formId && this._open(formId);
30820
+ });
30821
+ this.form.valueChanges.pipe().
30822
+ subscribe(v => {
30823
+ this._notifyChange();
30824
+ Object.assign(this.model, v);
30825
+ });
30826
+ }
30827
+ _open(formId) {
30828
+ this._ref.populate(formId).subscribe(r => {
30829
+ this._formId = formId;
30830
+ this.model = r || { sections: [] };
30695
30831
  this.loading = false;
30696
30832
  });
30697
30833
  }
30834
+ addSection(evt) {
30835
+ let n = 0, name, title;
30836
+ do {
30837
+ n++;
30838
+ name = 'section' + '-' + n;
30839
+ title = 'Section' + ' ' + n;
30840
+ } while (this.model.sections.find(s => s.name === name || s.title === title));
30841
+ this._notifyChange();
30842
+ this.model.sections.push({
30843
+ name,
30844
+ title,
30845
+ rows: [{ fields: [] }]
30846
+ });
30847
+ this._cd.detectChanges();
30848
+ evt.target.querySelector('input')?.focus();
30849
+ }
30850
+ addRow(section, evt) {
30851
+ this._notifyChange();
30852
+ section.rows.push({
30853
+ fields: []
30854
+ });
30855
+ evt.target.querySelector('input')?.focus();
30856
+ this._cd.detectChanges();
30857
+ }
30858
+ addField(section, row, kind, evt) {
30859
+ let n = 0, name, label;
30860
+ do {
30861
+ n++;
30862
+ name = 'field' + '_' + n;
30863
+ label = 'Field' + ' ' + n;
30864
+ } while (section.rows.find(r => r.fields.find(f => f.name === name || f.label === label) != null));
30865
+ this._notifyChange();
30866
+ row.fields.push({
30867
+ kind,
30868
+ name,
30869
+ label,
30870
+ });
30871
+ this._cd.detectChanges();
30872
+ evt.target.querySelector('input')?.focus();
30873
+ }
30874
+ removeField(row, field) {
30875
+ this._notifyChange();
30876
+ row.fields.remove(field);
30877
+ }
30878
+ removeSection(section) {
30879
+ this._notifyChange();
30880
+ this.model.sections.remove(section);
30881
+ }
30882
+ removeRow(section, row) {
30883
+ this._notifyChange();
30884
+ section.rows.remove(row);
30885
+ }
30886
+ _notifyChange() {
30887
+ this.history.push(this.model);
30888
+ this.historyIndex = this.history.length - 1;
30889
+ this.dirty = true;
30890
+ }
30891
+ undo() {
30892
+ this.model = this.history[this.historyIndex];
30893
+ this.historyIndex--;
30894
+ }
30895
+ redo() {
30896
+ this.model = this.history[this.historyIndex];
30897
+ this.historyIndex++;
30898
+ }
30899
+ /**
30900
+ * Ctrl-s save; Ctrl-z undo
30901
+ * @param event
30902
+ */
30903
+ handleKeyboardEvent(event) {
30904
+ if (this.dirty && event.ctrlKey) {
30905
+ if (event.which === 83 || event.which === 115) {
30906
+ this.save();
30907
+ event.preventDefault();
30908
+ }
30909
+ }
30910
+ }
30698
30911
  drop(event) {
30912
+ this._notifyChange();
30699
30913
  if (event.previousContainer === event.container) {
30700
30914
  moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
30701
30915
  }
@@ -30705,18 +30919,28 @@ let FormDesignerComponent = class FormDesignerComponent {
30705
30919
  }
30706
30920
  save() {
30707
30921
  this.saving = true;
30708
- this._ref.execute(this.model).subscribe(() => this.saving = false);
30922
+ this._ref.execute({ metadata: this.model, formId: this._formId }).subscribe(() => {
30923
+ this._ps.toast('ChangesSaved');
30924
+ this.dirty = false;
30925
+ this.saving = false;
30926
+ }, () => {
30927
+ this._ps.error();
30928
+ this.saving = false;
30929
+ });
30709
30930
  }
30710
30931
  };
30711
- 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 });
30712
- 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"] }] });
30932
+ 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 });
30933
+ 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" }] });
30713
30934
  FormDesignerComponent = __decorate([
30714
30935
  BizDoc({ selector: 'bizdoc-form-designer' })
30715
30936
  ], FormDesignerComponent);
30716
30937
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormDesignerComponent, decorators: [{
30717
30938
  type: Component,
30718
- 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" }]
30719
- }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: SessionService }, { type: UtilityRef }]; } });
30939
+ 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"] }]
30940
+ }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: PaneRef }, { type: i0.ChangeDetectorRef }, { type: PromptService }, { type: SessionService }, { type: UtilityRef }]; }, propDecorators: { handleKeyboardEvent: [{
30941
+ type: HostListener,
30942
+ args: ['document:keydown', ['$event']]
30943
+ }] } });
30720
30944
 
30721
30945
  let ParallelViewDesignComponent = class ParallelViewDesignComponent extends DesignerCubeElementComponent {
30722
30946
  constructor() {
@@ -30734,13 +30958,13 @@ let ParallelViewDesignComponent = class ParallelViewDesignComponent extends Desi
30734
30958
  }
30735
30959
  };
30736
30960
  ParallelViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ParallelViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
30737
- 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" }] });
30961
+ 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" }] });
30738
30962
  ParallelViewDesignComponent = __decorate([
30739
30963
  BizDoc({ selector: 'parallel-view-designer' })
30740
30964
  ], ParallelViewDesignComponent);
30741
30965
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ParallelViewDesignComponent, decorators: [{
30742
30966
  type: Component,
30743
- 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" }]
30967
+ 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" }]
30744
30968
  }] });
30745
30969
 
30746
30970
  let SumViewDesignComponent = class SumViewDesignComponent extends DesignerCubeElementComponent {
@@ -30751,43 +30975,68 @@ let SumViewDesignComponent = class SumViewDesignComponent extends DesignerCubeEl
30751
30975
  xAxis: this._fb.control(null, Validators.required),
30752
30976
  series: null,
30753
30977
  indices: null,
30978
+ filters: this._fb.group({}),
30754
30979
  periodPolicy: null,
30755
30980
  aggregate: null,
30756
30981
  });
30757
30982
  }
30758
30983
  };
30759
30984
  SumViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SumViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
30760
- 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" }] });
30985
+ 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" }] });
30761
30986
  SumViewDesignComponent = __decorate([
30762
30987
  BizDoc({ selector: 'period-view-designer' })
30763
30988
  ], SumViewDesignComponent);
30764
30989
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SumViewDesignComponent, decorators: [{
30765
30990
  type: Component,
30766
- 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" }]
30991
+ 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" }]
30767
30992
  }] });
30768
30993
 
30769
30994
  let MatrixViewDesignComponent = class MatrixViewDesignComponent extends DesignerCubeElementComponent {
30770
30995
  constructor() {
30771
30996
  super(...arguments);
30997
+ this.sum = this._fb.array([]);
30772
30998
  this.form = this._fb.group({
30773
30999
  cube: null,
30774
31000
  xAxis: this._fb.control(null, Validators.required),
30775
31001
  series: this._fb.control(null, Validators.required),
30776
- sum: this._fb.array([]),
30777
31002
  indices: null,
30778
31003
  aggregate: null,
30779
- filters: null
31004
+ sum: this.sum,
31005
+ filters: null,
30780
31006
  });
30781
31007
  }
31008
+ ngOnInit() {
31009
+ if (this.args.sum) {
31010
+ if (isArray(this.args.sum))
31011
+ this.args.sum.forEach(s => this.add(s));
31012
+ else
31013
+ this.add(this.args.sum);
31014
+ }
31015
+ super.ngOnInit();
31016
+ }
31017
+ add(sum) {
31018
+ this.sum.push(this._fb.group({
31019
+ axis: sum?.axis || 'series',
31020
+ title: this._fb.control(sum?.title, Validators.required),
31021
+ value: sum?.value,
31022
+ format: sum?.format,
31023
+ precision: sum?.precision,
31024
+ explorable: sum?.explorable,
31025
+ calculate: sum?.calculate
31026
+ }));
31027
+ }
31028
+ drop(event) {
31029
+ moveItemInArray(this.model.axes, event.previousIndex, event.currentIndex);
31030
+ }
30782
31031
  };
30783
31032
  MatrixViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: MatrixViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
30784
- 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" }] });
31033
+ 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" }] });
30785
31034
  MatrixViewDesignComponent = __decorate([
30786
31035
  BizDoc({ selector: 'matrix-view-designer' })
30787
31036
  ], MatrixViewDesignComponent);
30788
31037
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: MatrixViewDesignComponent, decorators: [{
30789
31038
  type: Component,
30790
- 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" }]
31039
+ 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" }]
30791
31040
  }] });
30792
31041
 
30793
31042
  let ChartViewDesignComponent = class ChartViewDesignComponent extends DesignerCubeElementComponent {
@@ -30815,20 +31064,168 @@ let ChartViewDesignComponent = class ChartViewDesignComponent extends DesignerCu
30815
31064
  }
30816
31065
  };
30817
31066
  ChartViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ChartViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
30818
- 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" }] });
31067
+ 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" }] });
30819
31068
  ChartViewDesignComponent = __decorate([
30820
31069
  BizDoc({ selector: 'analysis-view-designer' })
30821
31070
  ], ChartViewDesignComponent);
30822
31071
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ChartViewDesignComponent, decorators: [{
30823
31072
  type: Component,
30824
- 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" }]
31073
+ 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" }]
30825
31074
  }] });
30826
31075
 
31076
+ class IconPickerComponent {
31077
+ constructor(ngControl, _overlay, _http, _vc, _element, _dir) {
31078
+ this.ngControl = ngControl;
31079
+ this._overlay = _overlay;
31080
+ this._http = _http;
31081
+ this._vc = _vc;
31082
+ this._element = _element;
31083
+ this._dir = _dir;
31084
+ this.id = `color-picker-${IconPickerComponent.nextId++}`;
31085
+ this.errorState = false;
31086
+ this.describedBy = '';
31087
+ this.focused = false;
31088
+ this.valueChanges = new EventEmitter();
31089
+ this.categories = [];
31090
+ this.filter = new FormControl(null);
31091
+ this._required = false;
31092
+ this._disabled = false;
31093
+ this.stateChanges = new Subject();
31094
+ if (this.ngControl != null) {
31095
+ this.ngControl.valueAccessor = this;
31096
+ }
31097
+ }
31098
+ get value() { return this._value; }
31099
+ set value(val) {
31100
+ this._value = val;
31101
+ this._onChange && this._onChange(val);
31102
+ this.valueChanges.next(val);
31103
+ this.stateChanges.next();
31104
+ }
31105
+ get empty() {
31106
+ return this._value === null;
31107
+ }
31108
+ get shouldLabelFloat() {
31109
+ return this.focused || !this.empty;
31110
+ }
31111
+ get required() {
31112
+ return this._required;
31113
+ }
31114
+ set required(req) {
31115
+ this._required = req;
31116
+ this.stateChanges.next();
31117
+ }
31118
+ get disabled() { return this._disabled; }
31119
+ set disabled(value) {
31120
+ this._disabled = value;
31121
+ this.stateChanges.next();
31122
+ }
31123
+ registerOnChange(fn) {
31124
+ this._onChange = fn;
31125
+ }
31126
+ registerOnTouched(fn) {
31127
+ this._onTouched = fn;
31128
+ }
31129
+ writeValue(obj) {
31130
+ this._value = obj;
31131
+ }
31132
+ setDescribedByIds(ids) {
31133
+ this.describedBy = ids.join(' ');
31134
+ }
31135
+ onContainerClick(_event) {
31136
+ this._onTouched && this._onTouched();
31137
+ this.open();
31138
+ }
31139
+ ngOnInit() {
31140
+ if (!IconPickerComponent.icons)
31141
+ this._http.get('/assets/system/icons.json').subscribe(e => {
31142
+ IconPickerComponent.icons = e;
31143
+ this._list(e);
31144
+ });
31145
+ else
31146
+ this._list(IconPickerComponent.icons);
31147
+ this.filter.valueChanges.
31148
+ pipe(debounceTime$1(150)).
31149
+ subscribe(v => this._list(IconPickerComponent.icons.filter(i => i.tags.findIndex(t => t.indexOf(v) > -1) > -1)));
31150
+ }
31151
+ _list(e) {
31152
+ e.forEach(i => i.categories.forEach(c => {
31153
+ if (this.categories[c])
31154
+ this.categories[c].items.push(i);
31155
+ else
31156
+ this.categories.push(this.categories[c] = { items: [i] });
31157
+ }));
31158
+ }
31159
+ open() {
31160
+ this._overlayRef = this._overlay.create({
31161
+ positionStrategy: this._overlay.position().flexibleConnectedTo(this._element).withPositions([{
31162
+ originX: 'start',
31163
+ originY: 'bottom',
31164
+ overlayX: 'start',
31165
+ overlayY: 'top'
31166
+ }, {
31167
+ originX: 'start',
31168
+ originY: 'top',
31169
+ overlayX: 'start',
31170
+ overlayY: 'bottom'
31171
+ }]),
31172
+ hasBackdrop: true,
31173
+ direction: this._dir.value,
31174
+ backdropClass: 'cdk-overlay-transparent-backdrop',
31175
+ panelClass: 'home-panel'
31176
+ });
31177
+ const portal = new TemplatePortal(this.panel, this._vc);
31178
+ this._overlayRef.attach(portal);
31179
+ merge(this._overlayRef.backdropClick(), this._overlayRef.keydownEvents().pipe(filter$1(k => k.keyCode === ESCAPE))).subscribe(() => this._overlayRef.detach());
31180
+ }
31181
+ _trackBy(index, el) {
31182
+ return el.name;
31183
+ }
31184
+ _clear() { }
31185
+ close() {
31186
+ this._overlayRef.detach();
31187
+ }
31188
+ _pick(icon) {
31189
+ this.value = icon.name;
31190
+ this.close();
31191
+ }
31192
+ }
31193
+ IconPickerComponent.nextId = 0;
31194
+ 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 });
31195
+ 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"] }] });
31196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: IconPickerComponent, decorators: [{
31197
+ type: Component,
31198
+ 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"] }]
31199
+ }], ctorParameters: function () { return [{ type: i2$1.NgControl, decorators: [{
31200
+ type: Optional
31201
+ }, {
31202
+ type: Self
31203
+ }] }, { type: i1$2.Overlay }, { type: i1.HttpClient }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i3$3.Directionality }]; }, propDecorators: { id: [{
31204
+ type: HostBinding
31205
+ }], value: [{
31206
+ type: Input
31207
+ }], shouldLabelFloat: [{
31208
+ type: HostBinding,
31209
+ args: ['class.floating']
31210
+ }], required: [{
31211
+ type: Input
31212
+ }], disabled: [{
31213
+ type: Input
31214
+ }], describedBy: [{
31215
+ type: HostBinding,
31216
+ args: ['attr.aria-describedby']
31217
+ }], valueChanges: [{
31218
+ type: Output
31219
+ }], panel: [{
31220
+ type: ViewChild,
31221
+ args: [TemplateRef]
31222
+ }] } });
31223
+
30827
31224
  class PrivilegesDesignComponent {
30828
- constructor(_fb, _session, _service) {
31225
+ constructor(_fb, _service, _ref) {
30829
31226
  this._fb = _fb;
30830
- this._session = _session;
30831
31227
  this._service = _service;
31228
+ this._ref = _ref;
30832
31229
  this.change = new EventEmitter();
30833
31230
  this.form = this._fb.group({
30834
31231
  rule: null,
@@ -30836,8 +31233,12 @@ class PrivilegesDesignComponent {
30836
31233
  });
30837
31234
  }
30838
31235
  ngOnInit() {
30839
- this._service.roles().subscribe(r => this.roles = r //.concat(this._session.profile.roles)
30840
- );
31236
+ this._service.roles().subscribe(r => this.roles = r.
31237
+ concat(this._ref.model.roles.map(r => ({
31238
+ name: r.name,
31239
+ title: r.title,
31240
+ dataType: r.dataType
31241
+ }))));
30841
31242
  this.form.patchValue(this.model);
30842
31243
  this.form.valueChanges.subscribe(v => Object.assign(this.model, v));
30843
31244
  }
@@ -30845,26 +31246,27 @@ class PrivilegesDesignComponent {
30845
31246
  this.form.get('roles').setValue(evt.options.map(o => o.value));
30846
31247
  }
30847
31248
  }
30848
- 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 });
31249
+ 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 });
30849
31250
  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" }] });
30850
31251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PrivilegesDesignComponent, decorators: [{
30851
31252
  type: Component,
30852
31253
  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" }]
30853
- }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: SessionService }, { type: SystemService }]; }, propDecorators: { model: [{
31254
+ }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: SystemService }, { type: DesignerRef, decorators: [{
31255
+ type: Inject,
31256
+ args: [DesignerRef]
31257
+ }] }]; }, propDecorators: { model: [{
30854
31258
  type: Input
30855
31259
  }], change: [{
30856
31260
  type: Output
30857
31261
  }] } });
30858
31262
 
30859
- let FormDesignComponent = class FormDesignComponent extends DesignerElementComponent {
31263
+ let FormDesignComponent = class FormDesignComponent extends DesignerTypeElementComponent {
30860
31264
  constructor(fb, _router, _service, _session, ref) {
30861
31265
  super(fb, ref);
30862
31266
  this._router = _router;
30863
31267
  this._service = _service;
30864
31268
  this._session = _session;
30865
- this.form = this._fb.group({
30866
- rules: this._fb.array([])
30867
- });
31269
+ this.rules = this._fb.array([]);
30868
31270
  this.theme = this._session.theme.dark ? 'MaterialDark' : 'Material';
30869
31271
  this.axisSettings = {
30870
31272
  lineSettings: {},
@@ -30891,10 +31293,32 @@ let FormDesignComponent = class FormDesignComponent extends DesignerElementCompo
30891
31293
  });
30892
31294
  }
30893
31295
  ngOnInit() {
31296
+ this.form.addControl('rules', this._fb.control(null), { emitEvent: false });
31297
+ this.form.addControl('icon', this._fb.control(this.model.icon), { emitEvent: false });
31298
+ this.form.addControl('_rules', this.rules, { emitEvent: false });
30894
31299
  if (!this.model.privileges)
30895
31300
  this.model.privileges = {};
30896
31301
  this._service.range(this.model.name).subscribe(r => this.usage = r);
30897
- this.rules = this.model.rules ? Object.keys(this.model.rules).map(r => { }) : [];
31302
+ this.model.rules && this.rules.setValue(Object.keys(this.model.rules).
31303
+ map(r => {
31304
+ const rule = this.model.rules[r];
31305
+ return {
31306
+ name: r,
31307
+ value: rule.roles || [],
31308
+ rule: rule.rule,
31309
+ title: rule.title
31310
+ };
31311
+ }));
31312
+ this.rules.valueChanges.pipe().subscribe(v => {
31313
+ const rules = {};
31314
+ v.forEach((r) => rules[r.name] = {
31315
+ title: r.title,
31316
+ roles: r.roles,
31317
+ rule: r.rule,
31318
+ });
31319
+ this.form.get('rules').setValue(rules);
31320
+ });
31321
+ super.ngOnInit();
30898
31322
  }
30899
31323
  _formrule(name, permission) {
30900
31324
  return this._fb.group({
@@ -30905,25 +31329,28 @@ let FormDesignComponent = class FormDesignComponent extends DesignerElementCompo
30905
31329
  diagram() {
30906
31330
  this._router.navigate(['admin/forms', this.model.name]);
30907
31331
  }
31332
+ design() {
31333
+ this._router.navigate(['admin/utilities/form-designer'], { queryParams: { formId: this.model.name } });
31334
+ }
30908
31335
  ngOnDestroy() {
30909
31336
  this._destroy.next();
30910
31337
  this._destroy.complete();
30911
31338
  }
30912
31339
  };
30913
- 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 });
30914
- 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" }] });
31340
+ 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 });
31341
+ 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" }] });
30915
31342
  FormDesignComponent = __decorate([
30916
31343
  BizDoc({ selector: 'form-designer' })
30917
31344
  ], FormDesignComponent);
30918
31345
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FormDesignComponent, decorators: [{
30919
31346
  type: Component,
30920
- 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" }]
30921
- }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: RouterImpl }, { type: SystemService }, { type: SessionService }, { type: DesignerRef, decorators: [{
31347
+ 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" }]
31348
+ }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: PanesRouter }, { type: SystemService }, { type: SessionService }, { type: DesignerRef, decorators: [{
30922
31349
  type: Inject,
30923
31350
  args: [DesignerRef]
30924
31351
  }] }]; } });
30925
31352
 
30926
- let CubeDesignComponent = class CubeDesignComponent extends DesignerElementComponent {
31353
+ let CubeDesignComponent = class CubeDesignComponent extends DesignerTypeElementComponent {
30927
31354
  constructor(fb, _service, _ps, ref) {
30928
31355
  super(fb, ref);
30929
31356
  this._service = _service;
@@ -30931,19 +31358,25 @@ let CubeDesignComponent = class CubeDesignComponent extends DesignerElementCompo
30931
31358
  this.views = this._fb.array([]);
30932
31359
  this.axes = this._fb.array([]);
30933
31360
  this.indices = this._fb.array([]);
31361
+ this.patterns = this._fb.array([]);
30934
31362
  this.secondaryAxes = [];
30935
- this.form = this._fb.group({
30936
- views: this.views,
30937
- indices: this.indices,
30938
- axes: this.axes,
30939
- scope: null
30940
- });
31363
+ this.syncing = false;
30941
31364
  this.types = ref.model.types;
30942
31365
  }
30943
31366
  sync() {
30944
- this._service.synchrinize(this.model.name);
31367
+ this.syncing = true;
31368
+ this._service.synchrinize(this.model.name).subscribe(() => this.syncing = false, () => {
31369
+ this.syncing = false;
31370
+ this._ps.error();
31371
+ });
30945
31372
  }
30946
31373
  ngOnInit() {
31374
+ this.form.addControl('patterns', this._fb.control(this.model.patterns, Validators.required), { emitEvent: false });
31375
+ this.form.addControl('views', this._fb.control(this.model.views, Validators.required), { emitEvent: false });
31376
+ this.form.addControl('indices', this._fb.control(this.model.indices, Validators.required), { emitEvent: false });
31377
+ this.form.addControl('axes', this._fb.control(this.model.axes, Validators.required), { emitEvent: false });
31378
+ this.form.addControl('scope', this._fb.control(this.model.scope, Validators.required), { emitEvent: false });
31379
+ this.form.addControl('anomaly', this._fb.control(this.model.anomaly, Validators.required), { emitEvent: false });
30947
31380
  this.model.axes.forEach(a => {
30948
31381
  this.axes.push(this._formaxis(a), { emitEvent: true });
30949
31382
  });
@@ -30993,6 +31426,7 @@ let CubeDesignComponent = class CubeDesignComponent extends DesignerElementCompo
30993
31426
  return this._fb.group({
30994
31427
  name: this._fb.control(model.name),
30995
31428
  title: model.title,
31429
+ icon: model.icon,
30996
31430
  xAxis: this._fb.control(model.xAxis, Validators.required),
30997
31431
  series: model.series,
30998
31432
  indices: model.indices,
@@ -31034,83 +31468,65 @@ let CubeDesignComponent = class CubeDesignComponent extends DesignerElementCompo
31034
31468
  }
31035
31469
  };
31036
31470
  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 });
31037
- 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" }] });
31471
+ 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" }] });
31038
31472
  CubeDesignComponent = __decorate([
31039
31473
  BizDoc({ selector: 'cube-designer' })
31040
31474
  ], CubeDesignComponent);
31041
31475
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: CubeDesignComponent, decorators: [{
31042
31476
  type: Component,
31043
- 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"] }]
31477
+ 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" }]
31044
31478
  }], ctorParameters: function () { return [{ type: i2$1.FormBuilder }, { type: SystemService }, { type: PromptService }, { type: DesignerRef, decorators: [{
31045
31479
  type: Inject,
31046
31480
  args: [DesignerRef]
31047
31481
  }] }]; } });
31048
31482
 
31049
- let WidgetDesignComponent = class WidgetDesignComponent extends DesignerElementComponent {
31050
- constructor() {
31051
- super(...arguments);
31052
- this.form = this._fb.group({
31053
- name: null,
31054
- title: null,
31055
- });
31056
- }
31483
+ let WidgetDesignComponent = class WidgetDesignComponent extends DesignerTypeElementComponent {
31057
31484
  };
31058
31485
  WidgetDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: WidgetDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31059
- 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"] }] });
31486
+ 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"] }] });
31060
31487
  WidgetDesignComponent = __decorate([
31061
31488
  BizDoc({ selector: 'widget-designer' })
31062
31489
  ], WidgetDesignComponent);
31063
31490
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: WidgetDesignComponent, decorators: [{
31064
31491
  type: Component,
31065
- 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" }]
31492
+ 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" }]
31066
31493
  }] });
31067
31494
 
31068
- let ActionDesignComponent = class ActionDesignComponent extends DesignerElementComponent {
31069
- constructor() {
31070
- super(...arguments);
31071
- this.form = this._fb.group({
31072
- name: null,
31073
- title: null,
31074
- });
31075
- }
31495
+ let ActionDesignComponent = class ActionDesignComponent extends DesignerTypeElementComponent {
31076
31496
  };
31077
31497
  ActionDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ActionDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31078
- 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" }] });
31498
+ 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" }] });
31079
31499
  ActionDesignComponent = __decorate([
31080
31500
  BizDoc({ selector: 'action-designer' })
31081
31501
  ], ActionDesignComponent);
31082
31502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ActionDesignComponent, decorators: [{
31083
31503
  type: Component,
31084
- 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" }]
31504
+ 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" }]
31085
31505
  }] });
31086
31506
 
31087
- let ReportDesignComponent = class ReportDesignComponent extends DesignerElementComponent {
31088
- constructor() {
31089
- super(...arguments);
31090
- this.form = this._fb.group({
31091
- name: null,
31092
- title: null,
31093
- });
31094
- }
31507
+ let ReportDesignComponent = class ReportDesignComponent extends DesignerTypeElementComponent {
31095
31508
  ngOnInit() {
31509
+ this.form.addControl('icon', this._fb.control(this.model.icon), { emitEvent: false });
31510
+ super.ngOnInit();
31096
31511
  }
31097
31512
  };
31098
31513
  ReportDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ReportDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31099
- 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"] }] });
31514
+ 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"] }] });
31100
31515
  ReportDesignComponent = __decorate([
31101
31516
  BizDoc({ selector: 'report-designer' })
31102
31517
  ], ReportDesignComponent);
31103
31518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ReportDesignComponent, decorators: [{
31104
31519
  type: Component,
31105
- 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" }]
31520
+ 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" }]
31106
31521
  }] });
31107
31522
 
31108
31523
  let ViewDesignComponent = class ViewDesignComponent extends DesignerElementComponent {
31109
31524
  constructor() {
31110
31525
  super(...arguments);
31111
- this.form = this._fb.group({});
31112
- }
31113
- ngOnInit() {
31526
+ this.form = this._fb.group({
31527
+ name: null,
31528
+ title: this._fb.control(null, Validators.required),
31529
+ });
31114
31530
  }
31115
31531
  };
31116
31532
  ViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -31123,24 +31539,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31123
31539
  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" }]
31124
31540
  }] });
31125
31541
 
31126
- let TypeDesignComponent = class TypeDesignComponent extends DesignerElementComponent {
31127
- constructor() {
31128
- super(...arguments);
31129
- this.form = this._fb.group({
31130
- name: null,
31131
- title: null,
31132
- assignable: false,
31133
- });
31542
+ let TypeDesignComponent = class TypeDesignComponent extends DesignerTypeElementComponent {
31543
+ ngOnInit() {
31544
+ this.form.addControl('assignable', this._fb.control(this.model.assignable, Validators.required), { emitEvent: false });
31545
+ super.ngOnInit();
31134
31546
  }
31135
31547
  };
31136
31548
  TypeDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: TypeDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31137
- 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" }] });
31549
+ 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" }] });
31138
31550
  TypeDesignComponent = __decorate([
31139
31551
  BizDoc({ selector: 'type-designer' })
31140
31552
  ], TypeDesignComponent);
31141
31553
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: TypeDesignComponent, decorators: [{
31142
31554
  type: Component,
31143
- 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" }]
31555
+ 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" }]
31144
31556
  }] });
31145
31557
 
31146
31558
  let AnalysisWidgetDesignComponent = class AnalysisWidgetDesignComponent extends DesignerCubeElementComponent {
@@ -31168,13 +31580,13 @@ let AnalysisWidgetDesignComponent = class AnalysisWidgetDesignComponent extends
31168
31580
  }
31169
31581
  };
31170
31582
  AnalysisWidgetDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AnalysisWidgetDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31171
- 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" }] });
31583
+ 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" }] });
31172
31584
  AnalysisWidgetDesignComponent = __decorate([
31173
31585
  BizDoc({ selector: 'analysis-widget-designer' })
31174
31586
  ], AnalysisWidgetDesignComponent);
31175
31587
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AnalysisWidgetDesignComponent, decorators: [{
31176
31588
  type: Component,
31177
- 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" }]
31589
+ 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" }]
31178
31590
  }] });
31179
31591
 
31180
31592
  let ExploreViewDesignComponent = class ExploreViewDesignComponent extends DesignerCubeElementComponent {
@@ -31332,13 +31744,13 @@ let UsageReportDesignComponent = class UsageReportDesignComponent extends Design
31332
31744
  }
31333
31745
  };
31334
31746
  UsageReportDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: UsageReportDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31335
- 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" }] });
31747
+ 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" }] });
31336
31748
  UsageReportDesignComponent = __decorate([
31337
31749
  BizDoc({ selector: 'usage-report-designer' })
31338
31750
  ], UsageReportDesignComponent);
31339
31751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: UsageReportDesignComponent, decorators: [{
31340
31752
  type: Component,
31341
- 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" }]
31753
+ 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" }]
31342
31754
  }] });
31343
31755
 
31344
31756
  let AnomalyRuleDesignComponent = class AnomalyRuleDesignComponent extends DesignerElementComponent {
@@ -31365,6 +31777,10 @@ let BoxFormDesignComponent = class BoxFormDesignComponent extends DesignerElemen
31365
31777
  this.form = this._fb.group({});
31366
31778
  }
31367
31779
  ngOnInit() {
31780
+ if (!this.args.sections)
31781
+ this.args.sections = [];
31782
+ if (!this.model.icon)
31783
+ this.model.icon = 'description';
31368
31784
  }
31369
31785
  };
31370
31786
  BoxFormDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BoxFormDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -31415,66 +31831,61 @@ let PivotViewDesignComponent = class PivotViewDesignComponent extends DesignerCu
31415
31831
  }
31416
31832
  };
31417
31833
  PivotViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PivotViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31418
- 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" }] });
31834
+ 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" }] });
31419
31835
  PivotViewDesignComponent = __decorate([
31420
31836
  BizDoc({ selector: 'pivot-view-designer' })
31421
31837
  ], PivotViewDesignComponent);
31422
31838
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PivotViewDesignComponent, decorators: [{
31423
31839
  type: Component,
31424
- 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" }]
31840
+ 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" }]
31425
31841
  }] });
31426
31842
 
31427
- let UtilityDesignComponent = class UtilityDesignComponent extends DesignerElementComponent {
31428
- constructor() {
31429
- super(...arguments);
31430
- this.form = this._fb.group({});
31431
- }
31843
+ let UtilityDesignComponent = class UtilityDesignComponent extends DesignerTypeElementComponent {
31432
31844
  ngOnInit() {
31845
+ this.form.addControl('icon', this._fb.control(null), { emitEvent: false });
31846
+ super.ngOnInit();
31433
31847
  }
31434
31848
  };
31435
31849
  UtilityDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: UtilityDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31436
- 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"] }] });
31850
+ 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"] }] });
31437
31851
  UtilityDesignComponent = __decorate([
31438
31852
  BizDoc({ selector: 'utility-designer' })
31439
31853
  ], UtilityDesignComponent);
31440
31854
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: UtilityDesignComponent, decorators: [{
31441
31855
  type: Component,
31442
- 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" }]
31856
+ 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" }]
31443
31857
  }] });
31444
31858
 
31445
- let FolderDesignComponent = class FolderDesignComponent extends DesignerElementComponent {
31446
- constructor() {
31447
- super(...arguments);
31448
- this.form = this._fb.group({
31449
- name: null,
31450
- title: null,
31451
- });
31859
+ let FolderDesignComponent = class FolderDesignComponent extends DesignerTypeElementComponent {
31860
+ ngOnInit() {
31861
+ this.form.addControl('icon', this._fb.control(this.model.icon), { emitEvent: false });
31862
+ super.ngOnInit();
31452
31863
  }
31453
31864
  };
31454
31865
  FolderDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FolderDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31455
- 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" }] });
31866
+ 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" }] });
31456
31867
  FolderDesignComponent = __decorate([
31457
31868
  BizDoc({ selector: 'folder-designer' })
31458
31869
  ], FolderDesignComponent);
31459
31870
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: FolderDesignComponent, decorators: [{
31460
31871
  type: Component,
31461
- 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" }]
31872
+ 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" }]
31462
31873
  }] });
31463
31874
 
31464
- let GuideDesignComponent = class GuideDesignComponent extends DesignerElementComponent {
31875
+ let GuideDesignComponent = class GuideDesignComponent extends DesignerTypeElementComponent {
31465
31876
  constructor() {
31466
31877
  super(...arguments);
31467
31878
  this.steps = this._fb.array([]);
31468
- this.form = this._fb.group({
31469
- name: null,
31470
- title: null,
31471
- steps: this.steps
31472
- });
31473
31879
  }
31474
31880
  ngOnInit() {
31881
+ super.ngOnInit();
31882
+ this.form.addControl('steps', this.steps);
31475
31883
  if (!this.model.privileges)
31476
31884
  this.model.privileges = {};
31477
- this.model.steps.forEach(s => this.steps.push(this._stepform(s), { emitEvent: false }));
31885
+ if (!this.model.steps)
31886
+ this.model.steps = [];
31887
+ else
31888
+ this.model.steps.forEach(s => this.steps.push(this._stepform(s), { emitEvent: false }));
31478
31889
  }
31479
31890
  drop(event) {
31480
31891
  moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
@@ -31499,58 +31910,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31499
31910
  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" }]
31500
31911
  }] });
31501
31912
 
31502
- let RuleDesignComponent = class RuleDesignComponent extends DesignerElementComponent {
31503
- constructor() {
31504
- super(...arguments);
31505
- this.form = this._fb.group({});
31506
- }
31913
+ let RuleDesignComponent = class RuleDesignComponent extends DesignerTypeElementComponent {
31507
31914
  };
31508
31915
  RuleDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: RuleDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31509
- 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"] }] });
31916
+ 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"] }] });
31510
31917
  RuleDesignComponent = __decorate([
31511
31918
  BizDoc({ selector: 'rule-designer' })
31512
31919
  ], RuleDesignComponent);
31513
31920
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: RuleDesignComponent, decorators: [{
31514
31921
  type: Component,
31515
- 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" }]
31922
+ 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" }]
31516
31923
  }] });
31517
31924
 
31518
- let RoleDesignComponent = class RoleDesignComponent extends DesignerElementComponent {
31519
- constructor() {
31520
- super(...arguments);
31521
- this.form = this._fb.group({
31522
- name: null,
31523
- title: null,
31524
- });
31925
+ let RoleDesignComponent = class RoleDesignComponent extends DesignerTypeElementComponent {
31926
+ ngOnInit() {
31927
+ this.types = this._ref.model.types.filter(t => t.assignable);
31928
+ this.form.addControl('dataType', this._fb.control(this.model.dataType, Validators.required), { emitEvent: false });
31929
+ super.ngOnInit();
31525
31930
  }
31526
31931
  };
31527
31932
  RoleDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: RoleDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31528
- 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" }] });
31933
+ 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" }] });
31529
31934
  RoleDesignComponent = __decorate([
31530
31935
  BizDoc({ selector: 'role-designer' })
31531
31936
  ], RoleDesignComponent);
31532
31937
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: RoleDesignComponent, decorators: [{
31533
31938
  type: Component,
31534
- 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" }]
31939
+ 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" }]
31535
31940
  }] });
31536
31941
 
31537
- let StateDesignComponent = class StateDesignComponent extends DesignerElementComponent {
31538
- constructor() {
31539
- super(...arguments);
31540
- this.form = this._fb.group({
31541
- name: null,
31542
- title: null,
31543
- });
31942
+ let StateDesignComponent = class StateDesignComponent extends DesignerTypeElementComponent {
31943
+ ngOnInit() {
31944
+ this.form.addControl('color', this._fb.control(this.model.color), { emitEvent: false });
31945
+ this.form.addControl('backgroundColor', this._fb.control(this.model.color), { emitEvent: false });
31946
+ super.ngOnInit();
31544
31947
  }
31545
31948
  };
31546
31949
  StateDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: StateDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
31547
- 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" }] });
31950
+ 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" }] });
31548
31951
  StateDesignComponent = __decorate([
31549
31952
  BizDoc({ selector: 'state-designer' })
31550
31953
  ], StateDesignComponent);
31551
31954
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: StateDesignComponent, decorators: [{
31552
31955
  type: Component,
31553
- 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" }]
31956
+ 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" }]
31554
31957
  }] });
31555
31958
 
31556
31959
  let ReturnToRoleActionDesignComponent = class ReturnToRoleActionDesignComponent extends DesignerElementComponent {
@@ -31577,10 +31980,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31577
31980
  args: [DesignerRef]
31578
31981
  }] }]; } });
31579
31982
 
31983
+ let configurationDatasourceDesignComponent = class configurationDatasourceDesignComponent extends DesignerElementComponent {
31984
+ constructor() {
31985
+ super(...arguments);
31986
+ this.items = this._fb.array([]);
31987
+ this.form = this._fb.group({
31988
+ items: this._fb.group({})
31989
+ });
31990
+ }
31991
+ ngOnInit() {
31992
+ if (!this.args.items)
31993
+ this.args.items = {};
31994
+ Object.keys(this.args.items).forEach(k => this.items.push(this._form(k, this.args.items[k])));
31995
+ this.items.valueChanges.pipe(debounceTime$1(150)).
31996
+ subscribe(v => this._tomap(v));
31997
+ }
31998
+ _tomap(varray) {
31999
+ const items = {};
32000
+ varray.forEach(v => items[v.key] = v.value);
32001
+ this.form.get('items').setValue(items);
32002
+ }
32003
+ add() {
32004
+ this._form(null, null);
32005
+ }
32006
+ _form(key, value) {
32007
+ return this._fb.group({
32008
+ key: this._fb.control(key, Validators.required),
32009
+ value: this._fb.control(value, Validators.required)
32010
+ });
32011
+ }
32012
+ drop(event) {
32013
+ const array = this.items.value;
32014
+ moveItemInArray(array, event.previousIndex, event.currentIndex);
32015
+ this._tomap(array);
32016
+ }
32017
+ };
32018
+ configurationDatasourceDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: configurationDatasourceDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
32019
+ 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" }] });
32020
+ configurationDatasourceDesignComponent = __decorate([
32021
+ BizDoc({ selector: 'configuration-datasource-designer' })
32022
+ ], configurationDatasourceDesignComponent);
32023
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: configurationDatasourceDesignComponent, decorators: [{
32024
+ type: Component,
32025
+ 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" }]
32026
+ }] });
32027
+
31580
32028
  const SYSTEM_COMPONENTS = [RoleNodeComponent, ManageCubeIndexUtility, PermissionsUtility, PositionsComponent, ProfilerComponent,
31581
32029
  PatternsComponent, SystemDiffComponent, DocumentTraceComponent, ConfigurationDesignerComponent, FormDesignerComponent];
31582
32030
  const DESINER_COMPONENTS = [StateDesignComponent, RoleDesignComponent, FormDesignComponent, RuleDesignComponent, ReportDesignComponent, GuideDesignComponent, UtilityDesignComponent, FolderDesignComponent, WidgetDesignComponent, ActionDesignComponent, DocumentsWidgetDesignComponent, CubeDesignComponent, ViewDesignComponent, TypeDesignComponent, ReportDesignComponent,
31583
- ReturnToRoleActionDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsReportDesignComponent, PerformanceWidgetDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent, PivotViewDesignComponent];
32031
+ configurationDatasourceDesignComponent, ReturnToRoleActionDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsReportDesignComponent, PerformanceWidgetDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent, PivotViewDesignComponent];
31584
32032
  class SystemModule {
31585
32033
  static forChild() {
31586
32034
  registerComponents(SYSTEM_COMPONENTS);
@@ -31594,8 +32042,9 @@ class SystemModule {
31594
32042
  SystemModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: SystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31595
32043
  SystemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: SystemModule, declarations: [
31596
32044
  /** design */
32045
+ IconPickerComponent,
31597
32046
  StateDesignComponent, RoleDesignComponent, GuideDesignComponent, RuleDesignComponent, ReportDesignComponent, FolderDesignComponent, UtilityDesignComponent, FormDesignComponent, WidgetDesignComponent, CubeDesignComponent, ActionDesignComponent, ReportDesignComponent, ViewDesignComponent, TypeDesignComponent,
31598
- ReturnToRoleActionDesignComponent, PivotViewDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsWidgetDesignComponent, PerformanceWidgetDesignComponent, DocumentsReportDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent,
32047
+ configurationDatasourceDesignComponent, ReturnToRoleActionDesignComponent, PivotViewDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsWidgetDesignComponent, PerformanceWidgetDesignComponent, DocumentsReportDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent,
31599
32048
  /** utilities */
31600
32049
  ConfigurationDesignerComponent, FormDesignerComponent, DesignerItemComponent,
31601
32050
  PermissionsUtility, ManageCubeIndexUtility, ProfileSettingsDialog,
@@ -31635,8 +32084,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
31635
32084
  args: [{
31636
32085
  declarations: [
31637
32086
  /** design */
32087
+ IconPickerComponent,
31638
32088
  StateDesignComponent, RoleDesignComponent, GuideDesignComponent, RuleDesignComponent, ReportDesignComponent, FolderDesignComponent, UtilityDesignComponent, FormDesignComponent, WidgetDesignComponent, CubeDesignComponent, ActionDesignComponent, ReportDesignComponent, ViewDesignComponent, TypeDesignComponent,
31639
- ReturnToRoleActionDesignComponent, PivotViewDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsWidgetDesignComponent, PerformanceWidgetDesignComponent, DocumentsReportDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent,
32089
+ configurationDatasourceDesignComponent, ReturnToRoleActionDesignComponent, PivotViewDesignComponent, CubeViewDesignComponent, BoxFormDesignComponent, AnomalyRuleDesignComponent, UsageReportDesignComponent, DocumentsWidgetDesignComponent, PerformanceWidgetDesignComponent, DocumentsReportDesignComponent, TasksReportDesignComponent, ExploreViewDesignComponent, AnalysisWidgetDesignComponent, ParallelViewDesignComponent, SumViewDesignComponent, MatrixViewDesignComponent, ChartViewDesignComponent,
31640
32090
  /** utilities */
31641
32091
  ConfigurationDesignerComponent, FormDesignerComponent, DesignerItemComponent,
31642
32092
  PermissionsUtility, ManageCubeIndexUtility, ProfileSettingsDialog,
@@ -31857,5 +32307,5 @@ function withRoute(routes) {
31857
32307
  * Generated bundle index. Do not edit.
31858
32308
  */
31859
32309
 
31860
- 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 };
32310
+ 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 };
31861
32311
  //# sourceMappingURL=bizdoc-core.mjs.map