@eo-sdk/client 11.0.0-rc.5 → 11.0.0-rc.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 (64) hide show
  1. package/app/eo-client/dashboard/dashboard.component.d.ts +2 -23
  2. package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
  3. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
  4. package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts +18 -0
  5. package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts.map +1 -0
  6. package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts +10 -0
  7. package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts.map +1 -0
  8. package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts +24 -0
  9. package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts.map +1 -0
  10. package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts +34 -0
  11. package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts.map +1 -0
  12. package/app/eo-client/eo-client.module.d.ts +29 -24
  13. package/app/eo-client/eo-client.module.d.ts.map +1 -1
  14. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
  15. package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +5 -1
  16. package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts.map +1 -1
  17. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  18. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  19. package/app/eo-framework/media/media.component.d.ts +26 -3
  20. package/app/eo-framework/media/media.component.d.ts.map +1 -1
  21. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  22. package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
  23. package/app/eo-framework/result-list/result-list.component.d.ts +3 -2
  24. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  25. package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
  26. package/assets/_default/i18n/de.json +9 -1
  27. package/assets/_default/i18n/en.json +8 -0
  28. package/assets/_default/svg/ic_noImage.svg +1 -0
  29. package/assets/_default/svg/ic_photo_library.svg +1 -0
  30. package/assets/_default/svg/ic_task.svg +1 -0
  31. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  32. package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +16 -67
  33. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +5 -5
  34. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +4 -3
  35. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +4 -4
  36. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +4 -4
  37. package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +3 -3
  38. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +3 -3
  39. package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +54 -0
  40. package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.mjs +23 -0
  41. package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.mjs +74 -0
  42. package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.mjs +103 -0
  43. package/esm2022/app/eo-client/eo-client.module.mjs +22 -6
  44. package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +18 -1
  45. package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +23 -3
  46. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +10 -3
  47. package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
  48. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +4 -4
  49. package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +2 -2
  50. package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +2 -2
  51. package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +2 -2
  52. package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +2 -2
  53. package/esm2022/app/eo-framework/grid/grid.component.mjs +2 -2
  54. package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +3 -1
  55. package/esm2022/app/eo-framework/media/media.component.mjs +88 -21
  56. package/esm2022/app/eo-framework/object-details/object-details.component.mjs +3 -2
  57. package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
  58. package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +5 -1
  59. package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +6 -1
  60. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +13 -2
  61. package/esm2022/app/eo-framework-core/api/grid.service.mjs +9 -4
  62. package/fesm2022/eo-sdk-client.mjs +434 -122
  63. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  64. package/package.json +2 -2
@@ -4,7 +4,7 @@ import * as i1$2 from '@angular/common';
4
4
  import { DecimalPipe, PercentPipe, CurrencyPipe, DatePipe, getLocaleDateTimeFormat, FormatWidth, getLocaleTimeFormat, getLocaleDateFormat, CommonModule } from '@angular/common';
5
5
  import * as i2 from '@angular/common/http';
6
6
  import { HttpResponse, HttpErrorResponse, HttpClientModule, HTTP_INTERCEPTORS, HttpHeaders } from '@angular/common/http';
7
- import { ReplaySubject, BehaviorSubject, from, forkJoin, of, Subject, fromEvent, firstValueFrom, AsyncSubject, Observable, debounceTime as debounceTime$1, tap as tap$1, EMPTY, map as map$2, skip, switchMap as switchMap$1, catchError as catchError$1 } from 'rxjs';
7
+ import { ReplaySubject, BehaviorSubject, from, forkJoin, of, Subject, tap as tap$1, fromEvent, firstValueFrom, AsyncSubject, Observable, debounceTime as debounceTime$1, EMPTY, map as map$2, skip, switchMap as switchMap$1, catchError as catchError$1 } from 'rxjs';
8
8
  import { groupBy, mergeMap, reduce, tap, catchError, map, debounceTime, throttleTime, filter as filter$1, switchMap, take as take$1, combineLatest, finalize, pluck, withLatestFrom, first as first$1 } from 'rxjs/operators';
9
9
  import * as i1 from '@eo-sdk/core';
10
10
  import { SearchQuery, SearchState, EnaioEvent, Utils, CORE_CONFIG, UploadTarget, DmsObject, EnvironmentEnaio, SearchFilter, RangeValue, AuthService, Logger, NotificationsService, TranslateService, EoError, SearchService, InboxItem, Process, PreparedItem, WorkItem, StoredQuery, ClipboardAction, QueryScope, EoSharedModule, FieldDefinition, SubscriptionMode, TranslateModule, UploadFileItem, StoredQueriesService, SortOption, SearchResult } from '@eo-sdk/core';
@@ -58,10 +58,10 @@ import * as i19 from '@yuuvis/components/split-tabs';
58
58
  import { SplitTabsComponent, YvcSplitTabsModule } from '@yuuvis/components/split-tabs';
59
59
  import * as i8$1 from '@yuuvis/components/master-details';
60
60
  import { YvcMasterDetailsModule } from '@yuuvis/components/master-details';
61
- import * as i2$5 from '@yuuvis/widget-grid';
62
- import { PictureWidgetSetupComponent, PictureWidgetComponent, TodoWidgetSetupComponent, TodoWidgetComponent, YuvWidgetGridModule } from '@yuuvis/widget-grid';
63
61
  import * as i7$2 from '@carbon/charts-angular';
64
62
  import { ChartsModule } from '@carbon/charts-angular';
63
+ import * as i2$5 from '@yuuvis/widget-grid';
64
+ import { WidgetGridUtils, YuvWidgetGridModule } from '@yuuvis/widget-grid';
65
65
 
66
66
  /**
67
67
  * AppSearchService is the apps main entry point for searching (used by the appBarSearch component).
@@ -1646,6 +1646,7 @@ class GridService {
1646
1646
  colDef.sortable = true;
1647
1647
  colDef.resizable = true;
1648
1648
  colDef.filter = 'agTextColumnFilter';
1649
+ colDef.filterParams = { buttons: ['reset'] };
1649
1650
  colDef.cellRenderer = params => GridService.escapeHtml(params.value);
1650
1651
  colDef.valueGetter = params => {
1651
1652
  return params.node.group || !params.data ? '' : params.data[colDef.field];
@@ -1785,6 +1786,7 @@ class GridService {
1785
1786
  colDef.cellRenderer = this.customContext(CellRenderer.dateTimeCellRenderer, { pattern: resultField.withtime ? 'eoShort' : 'eoShortDate' });
1786
1787
  colDef.getQuickFilterText = this.customContext(CellRenderer.dateTimeCellRenderer, { pattern: resultField.withtime ? 'eoShort' : 'eoShortDate' });
1787
1788
  colDef.filterParams = {
1789
+ ...colDef.filterParams,
1788
1790
  comparator: this.dateComparator(this.context.datePipe, resultField.withtime),
1789
1791
  withTime: resultField.withtime,
1790
1792
  inRangeInclusive: true
@@ -1794,7 +1796,7 @@ class GridService {
1794
1796
  case 'CODESYSTEM': {
1795
1797
  colDef.filter = 'CodesystemFilterComponent';
1796
1798
  colDef.colId = resultField.field;
1797
- colDef.filterParams = { multi: resultField.multiselect };
1799
+ colDef.filterParams = { ...colDef.filterParams, multi: resultField.multiselect };
1798
1800
  colDef.cellRenderer = CellRenderer.stringCellrenderer;
1799
1801
  if (resultField.multiselect) {
1800
1802
  colDef.cellRenderer = CellRenderer.multiSelectCellRenderer;
@@ -1813,13 +1815,13 @@ class GridService {
1813
1815
  const { scale, grouping, pattern } = resultField;
1814
1816
  colDef.cellRenderer = this.customContext(CellRenderer.numberCellRenderer, { scale, grouping, pattern });
1815
1817
  colDef.getQuickFilterText = this.customContext(CellRenderer.numberCellRenderer, { scale, grouping, pattern });
1816
- colDef.filterParams = { inRangeInclusive: true };
1818
+ colDef.filterParams = { ...colDef.filterParams, inRangeInclusive: true };
1817
1819
  break;
1818
1820
  }
1819
1821
  case 'ORGANIZATION': {
1820
1822
  colDef.filter = 'OrganizationFilterComponent';
1821
1823
  colDef.colId = resultField.qname;
1822
- colDef.filterParams = { multi: resultField.multiselect };
1824
+ colDef.filterParams = { ...colDef.filterParams, multi: resultField.multiselect };
1823
1825
  colDef.cellRenderer = CellRenderer.stringCellrenderer;
1824
1826
  if (resultField.multiselect) {
1825
1827
  colDef.cellRenderer = CellRenderer.multiSelectCellRenderer;
@@ -1835,6 +1837,7 @@ class GridService {
1835
1837
  colDef.cellClass = 'col-boolean';
1836
1838
  colDef.cellRenderer = CellRenderer.booleanCellRenderer;
1837
1839
  colDef.filterParams = {
1840
+ ...colDef.filterParams,
1838
1841
  cellRenderer: this.customContext(CellRenderer.booleanCellRenderer),
1839
1842
  cellHeight: 30,
1840
1843
  values: [false, true, undefined],
@@ -1877,6 +1880,7 @@ class GridService {
1877
1880
  colDef.cellClass = 'res-ico';
1878
1881
  colDef.getQuickFilterText = () => '';
1879
1882
  colDef.filterParams = {
1883
+ ...colDef.filterParams,
1880
1884
  cellRenderer: this.customContext(CellRenderer.typeCellRenderer),
1881
1885
  values: this.context.typeOpts
1882
1886
  };
@@ -1886,6 +1890,7 @@ class GridService {
1886
1890
  colDef.filter = 'ListFilterComponent';
1887
1891
  colDef.width = 101;
1888
1892
  colDef.filterParams = {
1893
+ ...colDef.filterParams,
1889
1894
  values: this.context.mimetypegroupOpts
1890
1895
  };
1891
1896
  break;
@@ -3814,6 +3819,10 @@ class ScopeElement {
3814
3819
  get label() {
3815
3820
  return this.element.label;
3816
3821
  }
3822
+ set description(description) {
3823
+ this.element.description = description;
3824
+ this.onScriptingModelChange(this.element.name, { newValue: description, name: 'description' });
3825
+ }
3817
3826
  get description() {
3818
3827
  return this.element.description;
3819
3828
  }
@@ -4459,6 +4468,11 @@ class ObjectFormHelperService {
4459
4468
  fc._eoFormElement.contextId = change.newValue;
4460
4469
  break;
4461
4470
  }
4471
+ // new description was applied by the script
4472
+ case 'description': {
4473
+ fc._eoFormElement.description = change.newValue;
4474
+ break;
4475
+ }
4462
4476
  }
4463
4477
  }
4464
4478
  };
@@ -5107,7 +5121,7 @@ class CodesystemComponent {
5107
5121
  this.addTreeNode(tree, this.codesystem.entries[i]);
5108
5122
  }
5109
5123
  this.tree = tree;
5110
- this.autocompleteRes = this.autocompleteValues;
5124
+ this.autocompleteRes = this.autocompleteValues.slice(0, 10);
5111
5125
  }
5112
5126
  addTreeNode(parentNode, codesystemEntry) {
5113
5127
  if (this._filterFunc && !this._filterFunc(codesystemEntry)) {
@@ -5164,7 +5178,7 @@ class CodesystemComponent {
5164
5178
  }
5165
5179
  }
5166
5180
  return acNode.name.toLowerCase().indexOf(term.toLowerCase()) !== -1;
5167
- });
5181
+ }).slice(0, 10);
5168
5182
  }
5169
5183
  // transform codesystem entry to tree node
5170
5184
  csEntryToTreeNode(codesystemEntry) {
@@ -5929,7 +5943,7 @@ class OrganizationComponent {
5929
5943
  .subscribe((res) => {
5930
5944
  // autocomplete values should be unique and not part of the exceptions
5931
5945
  this.autocompleteRes = res.filter(v => (!this.value || this.value.indexOf(v.name) === -1) && this.exceptions.indexOf(v.name) === -1 && (!this.removeCurrentUser || this.currentUserId !== v.id))
5932
- .sort(Utils.sortValues('title'));
5946
+ .sort(Utils.sortValues('title')).slice(0, 10);
5933
5947
  }, Utils.throw(null, this.translate.instant('eo.form.property.organization.request.error.title'), this.translate.instant('eo.form.property.organization.request.error.msg')));
5934
5948
  }
5935
5949
  else {
@@ -6168,7 +6182,7 @@ class StringComponent {
6168
6182
  r.push(i.value);
6169
6183
  }
6170
6184
  });
6171
- this.autocompleteRes = r;
6185
+ this.autocompleteRes = r.slice(0, 10);
6172
6186
  });
6173
6187
  }
6174
6188
  validateClassification(string) {
@@ -6408,7 +6422,7 @@ class ReferenceComponent {
6408
6422
  const results = res.hits.hits
6409
6423
  .filter(h => !value.includes(h._source[this.reference.element]))
6410
6424
  .map(h => ({ value: h._source[this.reference.element], title: h._source.title }));
6411
- this.autocompleteRes = Utils.uniqBy(results, 'value');
6425
+ this.autocompleteRes = Utils.uniqBy(results, 'value').slice(0, 10);
6412
6426
  }
6413
6427
  else {
6414
6428
  this.autocompleteRes = [];
@@ -6615,8 +6629,8 @@ class DynamicListComponent {
6615
6629
  return this._list;
6616
6630
  }
6617
6631
  set selectedNodes(n) {
6618
- if (n) {
6619
- this.autocompleteFn(n.name);
6632
+ if (n && !Array.isArray(n)) {
6633
+ this.autocompleteFn(n.value);
6620
6634
  }
6621
6635
  this._selectedNodes = structuredClone(n);
6622
6636
  }
@@ -6777,7 +6791,7 @@ class DynamicListComponent {
6777
6791
  }
6778
6792
  return acNode.data[this.valueField].toLowerCase().indexOf(term.toLowerCase()) !== -1 ||
6779
6793
  (acNode.data[this.descriptionField] && acNode.data[this.descriptionField].toLowerCase().indexOf(term.toLowerCase()) !== -1);
6780
- });
6794
+ }).slice(0, 10);
6781
6795
  }
6782
6796
  listEntryToTreeNode(listEntry) {
6783
6797
  let selectable = false;
@@ -7447,7 +7461,7 @@ class IdReferenceComponent {
7447
7461
  this.searchService
7448
7462
  .executeQuery(q)
7449
7463
  .pipe(debounceTime(500), map(item => item ? this.searchService.createResultFromResponse(item) : [])).subscribe((result) => {
7450
- this.autocompleteRes = result.hits;
7464
+ this.autocompleteRes = result.hits.slice(0, 10);
7451
7465
  });
7452
7466
  }
7453
7467
  onAutoCompleteBlur() {
@@ -7589,11 +7603,11 @@ class FormElementComponent {
7589
7603
  });
7590
7604
  }
7591
7605
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FormElementComponent, deps: [{ token: i1.TranslateService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
7592
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "filterFunction", "listObject"] }, { kind: "component", type: IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] }); }
7606
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "filterFunction", "listObject"] }, { kind: "component", type: IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] }); }
7593
7607
  }
7594
7608
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FormElementComponent, decorators: [{
7595
7609
  type: Component,
7596
- args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
7610
+ args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
7597
7611
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { elementTemplates: [{
7598
7612
  type: ViewChildren,
7599
7613
  args: [FormElementTemplate, { emitDistinctChangesOnly: true }]
@@ -7725,10 +7739,9 @@ let MediaComponent = class MediaComponent {
7725
7739
  return this._previewUri;
7726
7740
  }
7727
7741
  set previewFile(file) {
7742
+ this._previewFile = file;
7728
7743
  if (file) {
7729
- this.viewer = this.getViewer(file);
7730
- this.mediaType = file.mediaTypeName && this.system.getObjectType(file.mediaTypeName);
7731
- this.previewUri = this.viewer.previewUri;
7744
+ this.setupViewer();
7732
7745
  }
7733
7746
  else {
7734
7747
  this.previewUri = '';
@@ -7755,28 +7768,24 @@ let MediaComponent = class MediaComponent {
7755
7768
  path: file.path,
7756
7769
  mediaTypeName: item.typeName
7757
7770
  };
7758
- if (!!file.mimegroup?.match(/^mail|octet-stream/) && this.viewer.viewer.match('/view/api/pdf/')) {
7759
- this.slideUri = this.dms.getSlide(item.content.id, item.content.type, this.useVersion ? item.version : null, 256);
7760
- this.attachmentsLoading = this.dms.getAttachments(item).subscribe(a => this.setAttachments = a);
7761
- }
7762
- if (this.viewer.viewer.match('/view/api/mail/')) {
7763
- this.dms.getAttachments(item).subscribe(a => window.api.content.attachments = a);
7764
- }
7771
+ this.setupViewer();
7765
7772
  }
7766
7773
  else {
7767
7774
  this.previewUri = '';
7768
7775
  }
7769
7776
  }
7770
- constructor(translate, dms, renderer, system, config, pluginsService) {
7777
+ constructor(translate, dms, renderer, system, config, pluginsService, backend) {
7771
7778
  this.translate = translate;
7772
7779
  this.dms = dms;
7773
7780
  this.renderer = renderer;
7774
7781
  this.system = system;
7775
7782
  this.config = config;
7776
7783
  this.pluginsService = pluginsService;
7784
+ this.backend = backend;
7777
7785
  this.SIZE_LIMIT = 1024 * 1024 * 10; // 10MB
7778
7786
  this.attachments = [];
7779
7787
  this.customConfig = [];
7788
+ this.requiredServices = [];
7780
7789
  this.popoutTriggerPosition = PopoutTriggerPosition.BOTTOM_RIGHT;
7781
7790
  this.defaultViewers = [
7782
7791
  {
@@ -7795,15 +7804,47 @@ let MediaComponent = class MediaComponent {
7795
7804
  "mimeType": ["message/rfc822", "application/vnd.ms-outlook"],
7796
7805
  "viewer": "viewer/view/api/mail/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}"
7797
7806
  },
7807
+ {
7808
+ "requiredService": "office365",
7809
+ "supportsAttachments": false,
7810
+ "mimeType": [
7811
+ "application/msword",
7812
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
7813
+ "application/vnd.ms-word.document.macroEnabled.12",
7814
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
7815
+ "application/vnd.ms-word.template.macroEnabled.12",
7816
+ "application/vnd.ms-excel",
7817
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
7818
+ "application/vnd.ms-excel.sheet.macroEnabled.12",
7819
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
7820
+ "application/vnd.ms-excel.template.macroEnabled.12",
7821
+ "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
7822
+ "application/vnd.ms-excel.addin.macroEnabled.12",
7823
+ "application/vnd.ms-powerpoint",
7824
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation",
7825
+ "application/vnd.openxmlformats-officedocument.presentationml.template",
7826
+ "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
7827
+ "application/vnd.ms-powerpoint.addin.macroEnabled.12",
7828
+ "application/vnd.ms-powerpoint.presentation.macroEnabled.12",
7829
+ "application/vnd.ms-powerpoint.template.macroEnabled.12",
7830
+ "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"
7831
+ ],
7832
+ "viewer": "() => { let url = ''; let isLinkedDocument = dmsObject.id !== dmsObject.content.id; url = location.origin + '/dashlet365/?id=' + dmsObject.content.id + '&version=' + (!isLinkedDocument ? dmsObject.version : -1) + '&type=' + dmsObject.content.type + (parameters.mimeType ? '&mimeType=' + parameters.mimeType : ''); return url; }"
7833
+ },
7834
+ {
7835
+ "type": "extend",
7836
+ "viewer": "() => { window._o365 = window._o365 || window.addEventListener('message', (e) => { if (!e || !e.data || !e.data.match || !e.data.match('MessageId')) return; var data = JSON.parse(e.data); if (!data) return; if (data.MessageId === 'Host_PostmessageObjectUpdating' || data.MessageId === 'Host_PostmessageObjectConverted') { setTimeout(() => { var btn = api.util.$('eo-object-details .refresh-button'); btn && btn.click(); }, 3500) } else if(data.MessageId === 'UI_EditClick' && data.Values.url) { var w = window.open(decodeURIComponent(data.Values.url)); window['api'].content.windows = (window['api'].content.windows || []).concat([w]); } }); return parameters.viewer; }"
7837
+ },
7798
7838
  // ONLY applies to localhost env; fixed email cors for localhost testing
7799
7839
  {
7800
7840
  "type": "extend",
7801
7841
  "viewer": "() => { if (parameters.viewer.match('/view/api/mail/') && parameters.path.match('localhost')) { var host = 'localhost:4200'; var cors = 'kolibriproliant.optimal-systems.de'; parameters.path = parameters.path.replace(host, cors); return parameters.viewer + '&cors=' + cors;} return parameters.viewer; }"
7802
7842
  },
7803
7843
  // We need another pathPdf for email attachment files. This will only come in place if the mimetype is pdf or one of the not supported ones. (viewer attachments & api attachments can be parsed in different order, so we have to match them by filename)
7804
- { "viewer": "() => {var attachment = parameters.pathPdf.match(new RegExp('attachment=(\\\\d+)')); var a = attachment && api.content.viewer().document.querySelector('iframe').contentDocument.querySelector('a[data-src$=\"' + attachment[0] + '\"]'); var params = a && (api.content.attachments || []).find(att => api.util.decodeHtmlCharCodes(att.name) === a.getAttribute('data-filename')); if(params && params.previewUri) { debugger; parameters.pathPdf = location.origin + params.previewUri; } return parameters.defaultViewer;}" },
7844
+ { "viewer": "() => {var attachment = parameters.pathPdf.match(new RegExp('attachment=(\\\\d+)')); var a = attachment && api.content.viewer().document.querySelector('iframe').contentDocument.querySelector('a[data-src$=\"' + attachment[0] + '\"]'); var params = a && (api.content.attachments || []).find(att => api.util.decodeHtmlCharCodes(att.name) === a.getAttribute('data-filename')); if(params && params.previewUri) { parameters.pathPdf = location.origin + params.previewUri; } return parameters.defaultViewer;}" },
7805
7845
  { "error": true, "type": "error", "viewer": "viewer/view/api/error/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}" }
7806
7846
  ];
7847
+ this.initialized = false;
7807
7848
  this.undockDisabled = false;
7808
7849
  this.enableCloseBtn = false;
7809
7850
  // by default, the viewer ignores the version of the dms object. This will always show the latest version.
@@ -7821,6 +7862,39 @@ let MediaComponent = class MediaComponent {
7821
7862
  ]);
7822
7863
  uri && win && (win.location.href = this.resolveUri(uri, parameters));
7823
7864
  });
7865
+ this.customConfig.forEach((c) => {
7866
+ if (c.requiredService && !this.requiredServices.find(requiredService => requiredService.name === c.requiredService)) {
7867
+ this.requiredServices.push({ name: c.requiredService });
7868
+ }
7869
+ });
7870
+ const tasks = this.requiredServices.map((rS) => this.backend.get('/manage/health', '/' + rS.name).pipe(tap$1((res) => rS.running = res?.status === 'UP')));
7871
+ forkJoin(tasks).subscribe(() => {
7872
+ this.initialized = true;
7873
+ this.setupViewer();
7874
+ }, () => {
7875
+ this.initialized = true;
7876
+ this.setupViewer();
7877
+ });
7878
+ }
7879
+ setupViewer() {
7880
+ if (!this.initialized || !this._previewFile) {
7881
+ return;
7882
+ }
7883
+ this.viewer = this.getViewer(this._previewFile);
7884
+ this.mediaType = this._previewFile.mediaTypeName && this.system.getObjectType(this._previewFile.mediaTypeName);
7885
+ this.previewUri = this.viewer.previewUri;
7886
+ if (this._dmsObject) {
7887
+ if (!!this._previewFile.mimegroup?.match(/^mail|octet-stream/) && this.viewer.viewer.match('/view/api/pdf/')) {
7888
+ this.slideUri = this.dms.getSlide(this._dmsObject.content.id, this._dmsObject.content.type, this.useVersion ? this._dmsObject.version : null, 256);
7889
+ this.attachmentsLoading = this.dms.getAttachments(this._dmsObject).subscribe(a => this.setAttachments = a);
7890
+ }
7891
+ if (this.viewer.viewer.match('/view/api/mail/')) {
7892
+ this.dms.getAttachments(this._dmsObject).subscribe(a => {
7893
+ window.api.content.attachments = a;
7894
+ this.setAttachments = a;
7895
+ });
7896
+ }
7897
+ }
7824
7898
  }
7825
7899
  _setPopoutWindowConfig(reset) {
7826
7900
  const winInset = 20;
@@ -7848,16 +7922,23 @@ let MediaComponent = class MediaComponent {
7848
7922
  refresh() {
7849
7923
  this.loadDocument(this.previewUri, true);
7850
7924
  }
7925
+ getMatchingConfig(fileExtension, mimeType, matchingConfig) {
7926
+ return this.customConfig.find((c) => {
7927
+ const matchMT = !c.mimeType || (typeof c.mimeType === 'string' ? [c.mimeType] : c.mimeType).includes(mimeType?.toLowerCase());
7928
+ const matchFE = !c.fileExtension || (typeof c.fileExtension === 'string' ? [c.fileExtension] : c.fileExtension).includes((fileExtension).toLowerCase());
7929
+ const supportsAttachments = !this.attachments.length || typeof c.supportsAttachments === 'undefined' || c.supportsAttachments;
7930
+ return matchMT && matchFE && (!c.type || c.type === 'default') && supportsAttachments && c !== matchingConfig;
7931
+ });
7932
+ }
7851
7933
  getViewer(file) {
7852
7934
  const isVideo = !!file.mimegroup?.match(/^audio|^video/);
7853
7935
  const defaultViewer = isVideo ? MediaComponent_1.VIDEO_VIEWER : MediaComponent_1.PDF_VIEWER;
7854
7936
  const fileExtension = file.fileExtension || (file.path?.includes('.') ? file.path.split('.').pop() : '');
7855
7937
  const mimeType = file.mimetype;
7856
- const config = this.customConfig.find((c) => {
7857
- const matchMT = !c.mimeType || (typeof c.mimeType === 'string' ? [c.mimeType] : c.mimeType).includes(mimeType?.toLowerCase());
7858
- const matchFE = !c.fileExtension || (typeof c.fileExtension === 'string' ? [c.fileExtension] : c.fileExtension).includes((fileExtension).toLowerCase());
7859
- return matchMT && matchFE && (!c.type || c.type === 'default');
7860
- });
7938
+ let config = this.getMatchingConfig(fileExtension, mimeType);
7939
+ if (!(config.requiredService && this.requiredServices.find(requiredService => requiredService.name === config.requiredService)?.running)) {
7940
+ config = this.getMatchingConfig(fileExtension, mimeType, config);
7941
+ }
7861
7942
  const parameters = {
7862
7943
  file,
7863
7944
  path: location.origin + file.uri,
@@ -7970,7 +8051,7 @@ let MediaComponent = class MediaComponent {
7970
8051
  }
7971
8052
  ngOnDestroy() {
7972
8053
  }
7973
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MediaComponent, deps: [{ token: i1.TranslateService }, { token: i1.DmsService }, { token: i0.Renderer2 }, { token: i1.SystemService }, { token: i1.Config }, { token: PluginsService }], target: i0.ɵɵFactoryTarget.Component }); }
8054
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MediaComponent, deps: [{ token: i1.TranslateService }, { token: i1.DmsService }, { token: i0.Renderer2 }, { token: i1.SystemService }, { token: i1.Config }, { token: PluginsService }, { token: i1.BackendService }], target: i0.ɵɵFactoryTarget.Component }); }
7974
8055
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: MediaComponent, selector: "eo-media", inputs: { undockDisabled: "undockDisabled", enableCloseBtn: "enableCloseBtn", useVersion: "useVersion", setAttachments: ["attachments", "setAttachments"], setSearchTerm: ["searchTerm", "setSearchTerm"], previewUri: "previewUri", previewFile: "previewFile", dmsObject: "dmsObject" }, host: { properties: { "class.open": "this.open" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], ngImport: i0, template: "<div [hidden]=\"!open\">\n <!-- attachments overlay -->\n <div class=\"attachments\" *ngIf=\"attachments?.length\"\n [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\n (eoOutsideClick)=\"attachmentsShown = false\">\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\n <div class=\"attachment main\" (click)=\"selectAttachment(null)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\n {{a.name}}\n </div>\n </div>\n\n <eo-icon class=\"button\" [badge]=\"attachments?.length\" (click)=\"attachmentsShown = !attachmentsShown\"\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\n </div>\n\n <yvc-popout\n [popoutWindowConfig]=\"popoutWindowConfig\"\n [triggerPosition]=\"popoutTriggerPosition\" [disabled]=\"undockDisabled\">\n\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\">\n <iframe [hidden]=\"isUndocked || loading\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\n <div class=\"loader-overlay__mask\" *ngIf=\"loading\">\n <eo-loading-spinner class=\"iframe__loader\"></eo-loading-spinner>\n </div>\n <div class=\"slide\" *ngIf=\"isUndocked\">\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\n </div>\n </div>\n </yvc-popout>\n</div>\n\n<div [hidden]=\"open\" class=\"empty-container\">\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\n</div>\n", styles: [":host>div{height:100%}:host ::ng-deep .popoutWrapper{height:100%}:host ::ng-deep .popoutWrapper button.trigger{z-index:100}:host ::ng-deep .popoutWrapper button.trigger .yvc-icon{width:100%;height:100%}:host .empty-container{display:flex;justify-content:center;align-items:center;height:100%}:host .empty-container .nofile{width:128px;height:128px;opacity:.09}:host .preview-container{position:absolute;inset:0;overflow:hidden}:host .preview-container .slide{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;align-items:center;justify-content:center}:host .preview-container .slide .large-content{position:absolute;top:0;cursor:pointer;display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;justify-content:center;width:100%;padding:var(--app-pane-padding);color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.5)}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{width:128px;height:128px;opacity:.2}:host .attachments{position:absolute;z-index:5;color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.6);right:calc(var(--app-pane-padding) / 2);bottom:calc(var(--app-pane-padding) * 3);display:flex;flex-flow:row;align-items:flex-end;border-radius:2px;max-width:calc(100% - 16px)}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding) / 2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;max-height:150px;padding:calc(var(--app-pane-padding) / 2);flex-flow:wrap}:host .attachments .attachments-list .attachment{border-radius:4px;background-color:rgba(var(--color-white-rgb),.1);padding:calc(var(--app-pane-padding) / 4);margin:calc(var(--app-pane-padding) / 8);cursor:pointer;border:1px solid rgba(var(--color-white-rgb),0);transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);order:100;flex:1 1 100%}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{background-color:rgba(var(--color-primary-rgb),.9);align-items:center;bottom:calc(var(--app-pane-padding) / 2)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .iframe__loader{margin:auto}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: OutsideClickDirective, selector: "[eoOutsideClick]", outputs: ["eoOutsideClick"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i7$1.PopoutComponent, selector: "yvc-popout", inputs: ["triggerPosition", "triggerIconSVG", "triggerTooltip", "popoutWindowConfig", "disabled"], outputs: ["popOut", "popIn"] }] }); }
7975
8056
  };
7976
8057
  MediaComponent = MediaComponent_1 = __decorate([
@@ -7979,7 +8060,7 @@ MediaComponent = MediaComponent_1 = __decorate([
7979
8060
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MediaComponent, decorators: [{
7980
8061
  type: Component,
7981
8062
  args: [{ selector: 'eo-media', providers: [ContentPreviewService], template: "<div [hidden]=\"!open\">\n <!-- attachments overlay -->\n <div class=\"attachments\" *ngIf=\"attachments?.length\"\n [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\n (eoOutsideClick)=\"attachmentsShown = false\">\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\n <div class=\"attachment main\" (click)=\"selectAttachment(null)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\n {{a.name}}\n </div>\n </div>\n\n <eo-icon class=\"button\" [badge]=\"attachments?.length\" (click)=\"attachmentsShown = !attachmentsShown\"\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\n </div>\n\n <yvc-popout\n [popoutWindowConfig]=\"popoutWindowConfig\"\n [triggerPosition]=\"popoutTriggerPosition\" [disabled]=\"undockDisabled\">\n\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\">\n <iframe [hidden]=\"isUndocked || loading\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\n <div class=\"loader-overlay__mask\" *ngIf=\"loading\">\n <eo-loading-spinner class=\"iframe__loader\"></eo-loading-spinner>\n </div>\n <div class=\"slide\" *ngIf=\"isUndocked\">\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\n </div>\n </div>\n </yvc-popout>\n</div>\n\n<div [hidden]=\"open\" class=\"empty-container\">\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\n</div>\n", styles: [":host>div{height:100%}:host ::ng-deep .popoutWrapper{height:100%}:host ::ng-deep .popoutWrapper button.trigger{z-index:100}:host ::ng-deep .popoutWrapper button.trigger .yvc-icon{width:100%;height:100%}:host .empty-container{display:flex;justify-content:center;align-items:center;height:100%}:host .empty-container .nofile{width:128px;height:128px;opacity:.09}:host .preview-container{position:absolute;inset:0;overflow:hidden}:host .preview-container .slide{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;align-items:center;justify-content:center}:host .preview-container .slide .large-content{position:absolute;top:0;cursor:pointer;display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;justify-content:center;width:100%;padding:var(--app-pane-padding);color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.5)}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{width:128px;height:128px;opacity:.2}:host .attachments{position:absolute;z-index:5;color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.6);right:calc(var(--app-pane-padding) / 2);bottom:calc(var(--app-pane-padding) * 3);display:flex;flex-flow:row;align-items:flex-end;border-radius:2px;max-width:calc(100% - 16px)}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding) / 2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;max-height:150px;padding:calc(var(--app-pane-padding) / 2);flex-flow:wrap}:host .attachments .attachments-list .attachment{border-radius:4px;background-color:rgba(var(--color-white-rgb),.1);padding:calc(var(--app-pane-padding) / 4);margin:calc(var(--app-pane-padding) / 8);cursor:pointer;border:1px solid rgba(var(--color-white-rgb),0);transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);order:100;flex:1 1 100%}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{background-color:rgba(var(--color-primary-rgb),.9);align-items:center;bottom:calc(var(--app-pane-padding) / 2)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .iframe__loader{margin:auto}\n"] }]
7982
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.DmsService }, { type: i0.Renderer2 }, { type: i1.SystemService }, { type: i1.Config }, { type: PluginsService }], propDecorators: { undockDisabled: [{
8063
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.DmsService }, { type: i0.Renderer2 }, { type: i1.SystemService }, { type: i1.Config }, { type: PluginsService }, { type: i1.BackendService }], propDecorators: { undockDisabled: [{
7983
8064
  type: Input
7984
8065
  }], enableCloseBtn: [{
7985
8066
  type: Input
@@ -12226,7 +12307,7 @@ let GridComponent = class GridComponent {
12226
12307
  if (!this.api) {
12227
12308
  return;
12228
12309
  }
12229
- const rowNode = typeof row === 'number' ? this.api.getModel().getRow(row) : this.api.getRowNode(row);
12310
+ const rowNode = typeof row === 'number' ? this.api.getModel()?.getRow(row) : this.api.getRowNode(row);
12230
12311
  let index = rowNode ? rowNode.rowIndex : 0;
12231
12312
  if (rowNode && rowNode.data) {
12232
12313
  if (selection) {
@@ -15291,6 +15372,14 @@ class SequenceListComponent {
15291
15372
  event.stopPropagation();
15292
15373
  }
15293
15374
  }
15375
+ get duplicateEmailValidation() {
15376
+ const { errors, controls } = this.entryForm;
15377
+ let duplicateEmailValidationError = false;
15378
+ if (errors) {
15379
+ duplicateEmailValidationError = (controls.email.touched || controls.email.dirty) && errors.duplicateEmail;
15380
+ }
15381
+ return duplicateEmailValidationError;
15382
+ }
15294
15383
  get maxSigners() {
15295
15384
  return this.entries.length === this.MAX_SIGNERS;
15296
15385
  }
@@ -15335,12 +15424,24 @@ class SequenceListComponent {
15335
15424
  name: ['', [Validators.required, Validators.maxLength(100)]],
15336
15425
  email: ['', [Validators.required, Validators.maxLength(100), Validators.email]],
15337
15426
  phone: ['', [Validators.maxLength(100)]]
15427
+ }, {
15428
+ validator: Validators.compose([
15429
+ this.duplicateEmailValidator()
15430
+ ])
15338
15431
  });
15339
15432
  if (entry) {
15340
15433
  this.entryForm.patchValue({ name: entry.name, email: entry.email, phone: entry.phone });
15341
15434
  }
15342
15435
  this.itemEdit.emit(true);
15343
15436
  }
15437
+ duplicateEmailValidator() {
15438
+ return (group) => {
15439
+ if (group.controls['email'].invalid || group.controls['email'].value === null || !this.entries.find(entry => entry.email === group.controls['email'].value)) {
15440
+ return null;
15441
+ }
15442
+ return { 'duplicateEmail': true };
15443
+ };
15444
+ }
15344
15445
  removeEntry(index) {
15345
15446
  const entry = this.entries[index];
15346
15447
  if (!entry) {
@@ -15403,7 +15504,7 @@ class SequenceListComponent {
15403
15504
  useExisting: forwardRef(() => SequenceListComponent),
15404
15505
  multi: true
15405
15506
  }
15406
- ], ngImport: i0, template: "<div class=\"toolbar\" *ngIf=\"!entryForm; else tplEntryForm\">\n <h4>{{ 'eo.action.signature.signers' | translate }}</h4>\n <button id=\"add-item\" class=\"add primary\" (click)=\"showEntryForm()\" [disabled]=\"maxSigners\">\n <eo-icon [iconTitle]=\"('eo.action.signature.add.button.tooltip' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_add.svg'\">\n </eo-icon>\n </button>\n</div>\n\n<div class=\"entries\" cdkDropList (cdkDropListDropped)=\"dragDrop($event)\" [cdkDropListData]=\"entries\">\n <div [ngClass]=\"{ disabled: !!entryForm, single: entries.length === 1 }\" cdkDrag *ngFor=\"let entry of entries; let i = index\">\n <eo-sequence-list-item [index]=\"i\" (changeEntry)=\"changeEntry($event)\" [disableAdd]=\"maxSigners\">\n <ng-template #content>\n <div class=\"signer-list-entry\">\n <div class=\"signer-name\" title=\"{{entry.name}}\">{{ entry.name }}</div>\n <div class=\"signer-email\" title=\"{{entry.email}}\">{{ entry.email }}</div>\n <div class=\"signer-phone\" *ngIf=\"entry.phone\" title=\"{{entry.phone}}\">{{ entry.phone }}</div>\n </div>\n </ng-template>\n </eo-sequence-list-item>\n </div>\n</div>\n\n<ng-template #tplEntryForm>\n <form class=\"entryForm\" [formGroup]=\"entryForm\" (ngSubmit)=\"addSigner()\">\n <div class=\"form-body\">\n <eo-form-input\n class=\"name\"\n [invalid]=\"entryForm.get('name').dirty && entryForm.get('name').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsignername' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsignername'\" [autocomplete]=\"true\" [autofocus]=\"true\" formControlName=\"name\"></eo-string>\n </eo-form-input>\n <small class=\"errors\" *ngIf=\"entryForm.get('name').hasError('maxlength')\" [translateParams]=\"{maxlength: 100}\"\n translate>eo.form.property.maxlength</small>\n <eo-form-input\n class=\"task\"\n [invalid]=\"entryForm.get('email').dirty && entryForm.get('email').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsigneremail' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsigneremail'\" [autocomplete]=\"true\" formControlName=\"email\"></eo-string>\n </eo-form-input>\n <small class=\"errors\" *ngIf=\"entryForm.get('email').hasError('email')\" translate>eo.form.property.string.error.classification.email</small>\n <small class=\"errors\" *ngIf=\"!entryForm.get('email').hasError('email') && entryForm.get('email').hasError('maxlength')\"\n [translateParams]=\"{maxlength: 100}\" translate>eo.form.property.maxlength</small>\n <eo-form-input\n class=\"task\"\n *ngIf=\"phoneRequired\"\n [invalid]=\"entryForm.get('phone').dirty && entryForm.get('phone').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsignerphone' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsignerphone'\" formControlName=\"phone\"> </eo-string>\n <small class=\"errors\" *ngIf=\"entryForm.get('phone').hasError('maxlength')\" [translateParams]=\"{maxlength: 100}\"\n translate>eo.form.property.maxlength</small>\n </eo-form-input>\n </div>\n <footer class=\"footer-action\">\n <button class=\"secondary\" type=\"button\" (click)=\"cancel()\" translate>eo.action.signature.cancel</button>\n <ng-container [ngSwitch]=\"mode\">\n <button *ngSwitchCase=\"'edit'\" class=\"primary\" [disabled]=\"entryForm.invalid || entryForm.pristine\" type=\"submit\" translate>eo.action.signature.editSigner</button>\n <button *ngSwitchDefault class=\"primary\" [disabled]=\"entryForm.invalid\" type=\"submit\" translate>eo.action.signature.addSigner</button>\n </ng-container>\n </footer>\n </form>\n</ng-template>\n", styles: [":host{display:block;border:1px solid var(--panel-divider-color);padding:1px;background-color:var(--panel-background)}:host:focus{border-color:var(--color-accent)}:host.ng-invalid{border-color:var(--color-error)}:host.dense form.entryForm{display:flex;flex-flow:column}:host form.entryForm{display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:1fr;padding:calc(var(--app-pane-padding) / 2);gap:calc(var(--app-pane-padding) / 2);grid-template-areas:\"title\" \"task\" \"nextAssignee\" \"expiryDatetime\" \"buttons\";border:1px solid var(--panel-divider-color)}:host form.entryForm eo-form-input.task{grid-area:task}:host form.entryForm eo-form-input.nextAssignee{grid-area:nextAssignee}:host form.entryForm eo-form-input.expiryDatetime{grid-area:expiryDatetime}:host form.entryForm .buttons{grid-area:buttons;display:flex;justify-content:end;margin:0 -2px}:host form.entryForm .buttons button{margin:0 2px}:host form.entryForm .errors{color:var(--color-error)}:host .toolbar{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--app-pane-padding) / 4);border:1px solid var(--panel-divider-color)}:host .toolbar:focus{border-color:var(--color-accent)}:host .toolbar h4{padding:0;margin:0 calc(var(--app-pane-padding) * .75);flex:1;color:var(--color-primary-2)}:host .toolbar button{padding:calc(var(--app-pane-padding) / 4);border-radius:2px}:host .entries .entry{position:relative;transition:background-color .1s ease-in-out;border:1px solid var(--panel-divider-color);display:grid;padding:calc(var(--app-pane-padding) * .75);column-gap:calc(var(--app-pane-padding) / 2);row-gap:calc(var(--app-pane-padding) / 4);grid-template-rows:auto auto;grid-template-columns:auto auto 1fr auto;grid-template-areas:\"handle index content action\" \"handle index content action\";margin-top:1px}:host .entries .entry.disabled{background-color:var(--panel-background-lightgrey);opacity:.85}:host .entries .entry.disabled.current{background-color:var(--panel-background);border-color:var(--color-accent)}:host .entries .entry.disabled .innerAdd:not(.active){opacity:0;pointer-events:none}:host .entries .entry.disabled button,:host .entries .entry.disabled .handle{pointer-events:none;cursor:default;opacity:.5}:host .entries .entry.single .handle,:host .entries .entry.single .index{display:none}:host .entries .entry .innerAdd{position:absolute;top:-12px;left:calc(50% - 12px);border-radius:2px;color:var(--text-color-caption);cursor:pointer;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);width:20px;height:20px}:host .entries .entry .innerAdd.active{background-color:var(--color-accent);border-color:var(--color-accent);color:#fff}:host .entries .entry .index{grid-area:index;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-accent);padding:0 calc(var(--app-pane-padding) / 4)}:host .entries .entry .handle{grid-area:handle;color:var(--text-color-caption);align-self:center;cursor:n-resize}:host .entries .entry .content{grid-area:content}:host .entries .entry .content ::ng-deep .list-entry .task{word-break:break-all}:host .entries .entry .action{grid-area:action;display:flex;align-items:center}:host .entries .entry .action button{padding:2px}:host .entries .entry .action button eo-icon{width:18px;height:18px}.footer-action{display:flex;justify-content:flex-end;padding:var(--app-pane-padding) 0;background-color:transparent;border-top:none}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "directive", type: i4$2.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: i4$2.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: SequenceListItemComponent, selector: "eo-sequence-list-item", inputs: ["index", "disableAdd", "addTargetIndex"], outputs: ["changeEntry", "edit", "delete", "insert"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
15507
+ ], ngImport: i0, template: "<div class=\"toolbar\" *ngIf=\"!entryForm; else tplEntryForm\">\n <h4>{{ 'eo.action.signature.signers' | translate }}</h4>\n <button id=\"add-item\" class=\"add primary\" (click)=\"showEntryForm()\" [disabled]=\"maxSigners\">\n <eo-icon [iconTitle]=\"('eo.action.signature.add.button.tooltip' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_add.svg'\">\n </eo-icon>\n </button>\n</div>\n\n<div class=\"entries\" cdkDropList (cdkDropListDropped)=\"dragDrop($event)\" [cdkDropListData]=\"entries\">\n <div [ngClass]=\"{ disabled: !!entryForm, single: entries.length === 1 }\" cdkDrag *ngFor=\"let entry of entries; let i = index\">\n <eo-sequence-list-item [index]=\"i\" (changeEntry)=\"changeEntry($event)\" [disableAdd]=\"maxSigners\">\n <ng-template #content>\n <div class=\"signer-list-entry\">\n <div class=\"signer-name\" title=\"{{entry.name}}\">{{ entry.name }}</div>\n <div class=\"signer-email\" title=\"{{entry.email}}\">{{ entry.email }}</div>\n <div class=\"signer-phone\" *ngIf=\"entry.phone\" title=\"{{entry.phone}}\">{{ entry.phone }}</div>\n </div>\n </ng-template>\n </eo-sequence-list-item>\n </div>\n</div>\n\n<ng-template #tplEntryForm>\n <form class=\"entryForm\" [formGroup]=\"entryForm\" (ngSubmit)=\"addSigner()\">\n <div class=\"form-body\">\n <eo-form-input\n class=\"name\"\n [invalid]=\"entryForm.get('name').dirty && entryForm.get('name').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsignername' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsignername'\" [autocomplete]=\"true\" [autofocus]=\"true\" formControlName=\"name\"></eo-string>\n </eo-form-input>\n <small class=\"errors\" *ngIf=\"entryForm.get('name').hasError('maxlength')\" [translateParams]=\"{maxlength: 100}\"\n translate>eo.form.property.maxlength</small>\n <eo-form-input\n class=\"task\"\n [invalid]=\"entryForm.get('email').dirty && entryForm.get('email').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsigneremail' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsigneremail'\" [autocomplete]=\"true\" formControlName=\"email\"></eo-string>\n </eo-form-input>\n <small class=\"errors\" *ngIf=\"entryForm.get('email').hasError('email')\" translate>eo.form.property.string.error.classification.email</small>\n <small class=\"errors\" *ngIf=\"!entryForm.get('email').hasError('email') && entryForm.get('email').hasError('maxlength')\"\n [translateParams]=\"{maxlength: 100}\" translate>eo.form.property.maxlength</small>\n <small class=\"errors\" *ngIf=\"duplicateEmailValidation\" translate>eo.form.property.string.error.classification.email.duplicate</small>\n <eo-form-input\n class=\"task\"\n *ngIf=\"phoneRequired\"\n [invalid]=\"entryForm.get('phone').dirty && entryForm.get('phone').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsignerphone' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsignerphone'\" formControlName=\"phone\"> </eo-string>\n <small class=\"errors\" *ngIf=\"entryForm.get('phone').hasError('maxlength')\" [translateParams]=\"{maxlength: 100}\"\n translate>eo.form.property.maxlength</small>\n </eo-form-input>\n </div>\n <footer class=\"footer-action\">\n <button class=\"secondary\" type=\"button\" (click)=\"cancel()\" translate>eo.action.signature.cancel</button>\n <ng-container [ngSwitch]=\"mode\">\n <button *ngSwitchCase=\"'edit'\" class=\"primary\" [disabled]=\"entryForm.invalid || entryForm.pristine\" type=\"submit\" translate>eo.action.signature.editSigner</button>\n <button *ngSwitchDefault class=\"primary\" [disabled]=\"entryForm.invalid\" type=\"submit\" translate>eo.action.signature.addSigner</button>\n </ng-container>\n </footer>\n </form>\n</ng-template>\n", styles: [":host{display:block;border:1px solid var(--panel-divider-color);padding:1px;background-color:var(--panel-background)}:host:focus{border-color:var(--color-accent)}:host.ng-invalid{border-color:var(--color-error)}:host.dense form.entryForm{display:flex;flex-flow:column}:host form.entryForm{display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:1fr;padding:calc(var(--app-pane-padding) / 2);gap:calc(var(--app-pane-padding) / 2);grid-template-areas:\"title\" \"task\" \"nextAssignee\" \"expiryDatetime\" \"buttons\";border:1px solid var(--panel-divider-color)}:host form.entryForm eo-form-input.task{grid-area:task}:host form.entryForm eo-form-input.nextAssignee{grid-area:nextAssignee}:host form.entryForm eo-form-input.expiryDatetime{grid-area:expiryDatetime}:host form.entryForm .buttons{grid-area:buttons;display:flex;justify-content:end;margin:0 -2px}:host form.entryForm .buttons button{margin:0 2px}:host form.entryForm .errors{color:var(--color-error)}:host .toolbar{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--app-pane-padding) / 4);border:1px solid var(--panel-divider-color)}:host .toolbar:focus{border-color:var(--color-accent)}:host .toolbar h4{padding:0;margin:0 calc(var(--app-pane-padding) * .75);flex:1;color:var(--color-primary-2)}:host .toolbar button{padding:calc(var(--app-pane-padding) / 4);border-radius:2px}:host .entries .entry{position:relative;transition:background-color .1s ease-in-out;border:1px solid var(--panel-divider-color);display:grid;padding:calc(var(--app-pane-padding) * .75);column-gap:calc(var(--app-pane-padding) / 2);row-gap:calc(var(--app-pane-padding) / 4);grid-template-rows:auto auto;grid-template-columns:auto auto 1fr auto;grid-template-areas:\"handle index content action\" \"handle index content action\";margin-top:1px}:host .entries .entry.disabled{background-color:var(--panel-background-lightgrey);opacity:.85}:host .entries .entry.disabled.current{background-color:var(--panel-background);border-color:var(--color-accent)}:host .entries .entry.disabled .innerAdd:not(.active){opacity:0;pointer-events:none}:host .entries .entry.disabled button,:host .entries .entry.disabled .handle{pointer-events:none;cursor:default;opacity:.5}:host .entries .entry.single .handle,:host .entries .entry.single .index{display:none}:host .entries .entry .innerAdd{position:absolute;top:-12px;left:calc(50% - 12px);border-radius:2px;color:var(--text-color-caption);cursor:pointer;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);width:20px;height:20px}:host .entries .entry .innerAdd.active{background-color:var(--color-accent);border-color:var(--color-accent);color:#fff}:host .entries .entry .index{grid-area:index;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-accent);padding:0 calc(var(--app-pane-padding) / 4)}:host .entries .entry .handle{grid-area:handle;color:var(--text-color-caption);align-self:center;cursor:n-resize}:host .entries .entry .content{grid-area:content}:host .entries .entry .content ::ng-deep .list-entry .task{word-break:break-all}:host .entries .entry .action{grid-area:action;display:flex;align-items:center}:host .entries .entry .action button{padding:2px}:host .entries .entry .action button eo-icon{width:18px;height:18px}.footer-action{display:flex;justify-content:flex-end;padding:var(--app-pane-padding) 0;background-color:transparent;border-top:none}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "directive", type: i4$2.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: i4$2.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: SequenceListItemComponent, selector: "eo-sequence-list-item", inputs: ["index", "disableAdd", "addTargetIndex"], outputs: ["changeEntry", "edit", "delete", "insert"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
15407
15508
  }
15408
15509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SequenceListComponent, decorators: [{
15409
15510
  type: Component,
@@ -15420,7 +15521,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
15420
15521
  }
15421
15522
  ], host: {
15422
15523
  tabindex: '0'
15423
- }, template: "<div class=\"toolbar\" *ngIf=\"!entryForm; else tplEntryForm\">\n <h4>{{ 'eo.action.signature.signers' | translate }}</h4>\n <button id=\"add-item\" class=\"add primary\" (click)=\"showEntryForm()\" [disabled]=\"maxSigners\">\n <eo-icon [iconTitle]=\"('eo.action.signature.add.button.tooltip' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_add.svg'\">\n </eo-icon>\n </button>\n</div>\n\n<div class=\"entries\" cdkDropList (cdkDropListDropped)=\"dragDrop($event)\" [cdkDropListData]=\"entries\">\n <div [ngClass]=\"{ disabled: !!entryForm, single: entries.length === 1 }\" cdkDrag *ngFor=\"let entry of entries; let i = index\">\n <eo-sequence-list-item [index]=\"i\" (changeEntry)=\"changeEntry($event)\" [disableAdd]=\"maxSigners\">\n <ng-template #content>\n <div class=\"signer-list-entry\">\n <div class=\"signer-name\" title=\"{{entry.name}}\">{{ entry.name }}</div>\n <div class=\"signer-email\" title=\"{{entry.email}}\">{{ entry.email }}</div>\n <div class=\"signer-phone\" *ngIf=\"entry.phone\" title=\"{{entry.phone}}\">{{ entry.phone }}</div>\n </div>\n </ng-template>\n </eo-sequence-list-item>\n </div>\n</div>\n\n<ng-template #tplEntryForm>\n <form class=\"entryForm\" [formGroup]=\"entryForm\" (ngSubmit)=\"addSigner()\">\n <div class=\"form-body\">\n <eo-form-input\n class=\"name\"\n [invalid]=\"entryForm.get('name').dirty && entryForm.get('name').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsignername' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsignername'\" [autocomplete]=\"true\" [autofocus]=\"true\" formControlName=\"name\"></eo-string>\n </eo-form-input>\n <small class=\"errors\" *ngIf=\"entryForm.get('name').hasError('maxlength')\" [translateParams]=\"{maxlength: 100}\"\n translate>eo.form.property.maxlength</small>\n <eo-form-input\n class=\"task\"\n [invalid]=\"entryForm.get('email').dirty && entryForm.get('email').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsigneremail' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsigneremail'\" [autocomplete]=\"true\" formControlName=\"email\"></eo-string>\n </eo-form-input>\n <small class=\"errors\" *ngIf=\"entryForm.get('email').hasError('email')\" translate>eo.form.property.string.error.classification.email</small>\n <small class=\"errors\" *ngIf=\"!entryForm.get('email').hasError('email') && entryForm.get('email').hasError('maxlength')\"\n [translateParams]=\"{maxlength: 100}\" translate>eo.form.property.maxlength</small>\n <eo-form-input\n class=\"task\"\n *ngIf=\"phoneRequired\"\n [invalid]=\"entryForm.get('phone').dirty && entryForm.get('phone').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsignerphone' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsignerphone'\" formControlName=\"phone\"> </eo-string>\n <small class=\"errors\" *ngIf=\"entryForm.get('phone').hasError('maxlength')\" [translateParams]=\"{maxlength: 100}\"\n translate>eo.form.property.maxlength</small>\n </eo-form-input>\n </div>\n <footer class=\"footer-action\">\n <button class=\"secondary\" type=\"button\" (click)=\"cancel()\" translate>eo.action.signature.cancel</button>\n <ng-container [ngSwitch]=\"mode\">\n <button *ngSwitchCase=\"'edit'\" class=\"primary\" [disabled]=\"entryForm.invalid || entryForm.pristine\" type=\"submit\" translate>eo.action.signature.editSigner</button>\n <button *ngSwitchDefault class=\"primary\" [disabled]=\"entryForm.invalid\" type=\"submit\" translate>eo.action.signature.addSigner</button>\n </ng-container>\n </footer>\n </form>\n</ng-template>\n", styles: [":host{display:block;border:1px solid var(--panel-divider-color);padding:1px;background-color:var(--panel-background)}:host:focus{border-color:var(--color-accent)}:host.ng-invalid{border-color:var(--color-error)}:host.dense form.entryForm{display:flex;flex-flow:column}:host form.entryForm{display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:1fr;padding:calc(var(--app-pane-padding) / 2);gap:calc(var(--app-pane-padding) / 2);grid-template-areas:\"title\" \"task\" \"nextAssignee\" \"expiryDatetime\" \"buttons\";border:1px solid var(--panel-divider-color)}:host form.entryForm eo-form-input.task{grid-area:task}:host form.entryForm eo-form-input.nextAssignee{grid-area:nextAssignee}:host form.entryForm eo-form-input.expiryDatetime{grid-area:expiryDatetime}:host form.entryForm .buttons{grid-area:buttons;display:flex;justify-content:end;margin:0 -2px}:host form.entryForm .buttons button{margin:0 2px}:host form.entryForm .errors{color:var(--color-error)}:host .toolbar{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--app-pane-padding) / 4);border:1px solid var(--panel-divider-color)}:host .toolbar:focus{border-color:var(--color-accent)}:host .toolbar h4{padding:0;margin:0 calc(var(--app-pane-padding) * .75);flex:1;color:var(--color-primary-2)}:host .toolbar button{padding:calc(var(--app-pane-padding) / 4);border-radius:2px}:host .entries .entry{position:relative;transition:background-color .1s ease-in-out;border:1px solid var(--panel-divider-color);display:grid;padding:calc(var(--app-pane-padding) * .75);column-gap:calc(var(--app-pane-padding) / 2);row-gap:calc(var(--app-pane-padding) / 4);grid-template-rows:auto auto;grid-template-columns:auto auto 1fr auto;grid-template-areas:\"handle index content action\" \"handle index content action\";margin-top:1px}:host .entries .entry.disabled{background-color:var(--panel-background-lightgrey);opacity:.85}:host .entries .entry.disabled.current{background-color:var(--panel-background);border-color:var(--color-accent)}:host .entries .entry.disabled .innerAdd:not(.active){opacity:0;pointer-events:none}:host .entries .entry.disabled button,:host .entries .entry.disabled .handle{pointer-events:none;cursor:default;opacity:.5}:host .entries .entry.single .handle,:host .entries .entry.single .index{display:none}:host .entries .entry .innerAdd{position:absolute;top:-12px;left:calc(50% - 12px);border-radius:2px;color:var(--text-color-caption);cursor:pointer;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);width:20px;height:20px}:host .entries .entry .innerAdd.active{background-color:var(--color-accent);border-color:var(--color-accent);color:#fff}:host .entries .entry .index{grid-area:index;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-accent);padding:0 calc(var(--app-pane-padding) / 4)}:host .entries .entry .handle{grid-area:handle;color:var(--text-color-caption);align-self:center;cursor:n-resize}:host .entries .entry .content{grid-area:content}:host .entries .entry .content ::ng-deep .list-entry .task{word-break:break-all}:host .entries .entry .action{grid-area:action;display:flex;align-items:center}:host .entries .entry .action button{padding:2px}:host .entries .entry .action button eo-icon{width:18px;height:18px}.footer-action{display:flex;justify-content:flex-end;padding:var(--app-pane-padding) 0;background-color:transparent;border-top:none}\n"] }]
15524
+ }, template: "<div class=\"toolbar\" *ngIf=\"!entryForm; else tplEntryForm\">\n <h4>{{ 'eo.action.signature.signers' | translate }}</h4>\n <button id=\"add-item\" class=\"add primary\" (click)=\"showEntryForm()\" [disabled]=\"maxSigners\">\n <eo-icon [iconTitle]=\"('eo.action.signature.add.button.tooltip' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_add.svg'\">\n </eo-icon>\n </button>\n</div>\n\n<div class=\"entries\" cdkDropList (cdkDropListDropped)=\"dragDrop($event)\" [cdkDropListData]=\"entries\">\n <div [ngClass]=\"{ disabled: !!entryForm, single: entries.length === 1 }\" cdkDrag *ngFor=\"let entry of entries; let i = index\">\n <eo-sequence-list-item [index]=\"i\" (changeEntry)=\"changeEntry($event)\" [disableAdd]=\"maxSigners\">\n <ng-template #content>\n <div class=\"signer-list-entry\">\n <div class=\"signer-name\" title=\"{{entry.name}}\">{{ entry.name }}</div>\n <div class=\"signer-email\" title=\"{{entry.email}}\">{{ entry.email }}</div>\n <div class=\"signer-phone\" *ngIf=\"entry.phone\" title=\"{{entry.phone}}\">{{ entry.phone }}</div>\n </div>\n </ng-template>\n </eo-sequence-list-item>\n </div>\n</div>\n\n<ng-template #tplEntryForm>\n <form class=\"entryForm\" [formGroup]=\"entryForm\" (ngSubmit)=\"addSigner()\">\n <div class=\"form-body\">\n <eo-form-input\n class=\"name\"\n [invalid]=\"entryForm.get('name').dirty && entryForm.get('name').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsignername' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsignername'\" [autocomplete]=\"true\" [autofocus]=\"true\" formControlName=\"name\"></eo-string>\n </eo-form-input>\n <small class=\"errors\" *ngIf=\"entryForm.get('name').hasError('maxlength')\" [translateParams]=\"{maxlength: 100}\"\n translate>eo.form.property.maxlength</small>\n <eo-form-input\n class=\"task\"\n [invalid]=\"entryForm.get('email').dirty && entryForm.get('email').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsigneremail' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsigneremail'\" [autocomplete]=\"true\" formControlName=\"email\"></eo-string>\n </eo-form-input>\n <small class=\"errors\" *ngIf=\"entryForm.get('email').hasError('email')\" translate>eo.form.property.string.error.classification.email</small>\n <small class=\"errors\" *ngIf=\"!entryForm.get('email').hasError('email') && entryForm.get('email').hasError('maxlength')\"\n [translateParams]=\"{maxlength: 100}\" translate>eo.form.property.maxlength</small>\n <small class=\"errors\" *ngIf=\"duplicateEmailValidation\" translate>eo.form.property.string.error.classification.email.duplicate</small>\n <eo-form-input\n class=\"task\"\n *ngIf=\"phoneRequired\"\n [invalid]=\"entryForm.get('phone').dirty && entryForm.get('phone').invalid\"\n [skipToggle]=\"true\"\n [label]=\"'eo.action.signature.yuvsigners.yuvsignerphone' | translate\"\n [required]=\"true\"\n >\n <eo-string maxLength=\"100\" [qname]=\"'yuvsigning.yuvsigners.yuvsignerphone'\" formControlName=\"phone\"> </eo-string>\n <small class=\"errors\" *ngIf=\"entryForm.get('phone').hasError('maxlength')\" [translateParams]=\"{maxlength: 100}\"\n translate>eo.form.property.maxlength</small>\n </eo-form-input>\n </div>\n <footer class=\"footer-action\">\n <button class=\"secondary\" type=\"button\" (click)=\"cancel()\" translate>eo.action.signature.cancel</button>\n <ng-container [ngSwitch]=\"mode\">\n <button *ngSwitchCase=\"'edit'\" class=\"primary\" [disabled]=\"entryForm.invalid || entryForm.pristine\" type=\"submit\" translate>eo.action.signature.editSigner</button>\n <button *ngSwitchDefault class=\"primary\" [disabled]=\"entryForm.invalid\" type=\"submit\" translate>eo.action.signature.addSigner</button>\n </ng-container>\n </footer>\n </form>\n</ng-template>\n", styles: [":host{display:block;border:1px solid var(--panel-divider-color);padding:1px;background-color:var(--panel-background)}:host:focus{border-color:var(--color-accent)}:host.ng-invalid{border-color:var(--color-error)}:host.dense form.entryForm{display:flex;flex-flow:column}:host form.entryForm{display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:1fr;padding:calc(var(--app-pane-padding) / 2);gap:calc(var(--app-pane-padding) / 2);grid-template-areas:\"title\" \"task\" \"nextAssignee\" \"expiryDatetime\" \"buttons\";border:1px solid var(--panel-divider-color)}:host form.entryForm eo-form-input.task{grid-area:task}:host form.entryForm eo-form-input.nextAssignee{grid-area:nextAssignee}:host form.entryForm eo-form-input.expiryDatetime{grid-area:expiryDatetime}:host form.entryForm .buttons{grid-area:buttons;display:flex;justify-content:end;margin:0 -2px}:host form.entryForm .buttons button{margin:0 2px}:host form.entryForm .errors{color:var(--color-error)}:host .toolbar{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--app-pane-padding) / 4);border:1px solid var(--panel-divider-color)}:host .toolbar:focus{border-color:var(--color-accent)}:host .toolbar h4{padding:0;margin:0 calc(var(--app-pane-padding) * .75);flex:1;color:var(--color-primary-2)}:host .toolbar button{padding:calc(var(--app-pane-padding) / 4);border-radius:2px}:host .entries .entry{position:relative;transition:background-color .1s ease-in-out;border:1px solid var(--panel-divider-color);display:grid;padding:calc(var(--app-pane-padding) * .75);column-gap:calc(var(--app-pane-padding) / 2);row-gap:calc(var(--app-pane-padding) / 4);grid-template-rows:auto auto;grid-template-columns:auto auto 1fr auto;grid-template-areas:\"handle index content action\" \"handle index content action\";margin-top:1px}:host .entries .entry.disabled{background-color:var(--panel-background-lightgrey);opacity:.85}:host .entries .entry.disabled.current{background-color:var(--panel-background);border-color:var(--color-accent)}:host .entries .entry.disabled .innerAdd:not(.active){opacity:0;pointer-events:none}:host .entries .entry.disabled button,:host .entries .entry.disabled .handle{pointer-events:none;cursor:default;opacity:.5}:host .entries .entry.single .handle,:host .entries .entry.single .index{display:none}:host .entries .entry .innerAdd{position:absolute;top:-12px;left:calc(50% - 12px);border-radius:2px;color:var(--text-color-caption);cursor:pointer;background-color:var(--panel-background);border:1px solid var(--panel-divider-color);width:20px;height:20px}:host .entries .entry .innerAdd.active{background-color:var(--color-accent);border-color:var(--color-accent);color:#fff}:host .entries .entry .index{grid-area:index;display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-accent);padding:0 calc(var(--app-pane-padding) / 4)}:host .entries .entry .handle{grid-area:handle;color:var(--text-color-caption);align-self:center;cursor:n-resize}:host .entries .entry .content{grid-area:content}:host .entries .entry .content ::ng-deep .list-entry .task{word-break:break-all}:host .entries .entry .action{grid-area:action;display:flex;align-items:center}:host .entries .entry .action button{padding:2px}:host .entries .entry .action button eo-icon{width:18px;height:18px}.footer-action{display:flex;justify-content:flex-end;padding:var(--app-pane-padding) 0;background-color:transparent;border-top:none}\n"] }]
15424
15525
  }], ctorParameters: () => [{ type: undefined, decorators: [{
15425
15526
  type: Attribute,
15426
15527
  args: ['form-open']
@@ -16602,6 +16703,9 @@ let AppSearchComponent = class AppSearchComponent {
16602
16703
  }
16603
16704
  resetExpertModeInput() {
16604
16705
  this.query.term = '';
16706
+ this.termForm.patchValue({
16707
+ term: ''
16708
+ });
16605
16709
  this.appSearchService.aggregate();
16606
16710
  }
16607
16711
  toggleExpertMode() {
@@ -16960,8 +17064,9 @@ let AppSearchComponent = class AppSearchComponent {
16960
17064
  // subscribe to query state as well to fetch result count and aggregations as they change
16961
17065
  this.queryStateSubscription = this.appSearchService.queryState$.subscribe((queryState) => this.processQueryState(queryState));
16962
17066
  this.appSearchService.aggregate();
16963
- this.termForm.valueChanges.pipe(debounceTime(1000), untilDestroyed(this)).subscribe(res => {
17067
+ this.termForm.valueChanges.pipe(tap$1(res => {
16964
17068
  this.query.term = res.term;
17069
+ }), debounceTime(1000), untilDestroyed(this)).subscribe(res => {
16965
17070
  this.autocompleteSuggest(this.query.term);
16966
17071
  });
16967
17072
  }
@@ -16972,6 +17077,9 @@ let AppSearchComponent = class AppSearchComponent {
16972
17077
  this._overlayRef = this.overlay.open(this.tplSearch, null, {
16973
17078
  centered: false
16974
17079
  });
17080
+ this.termForm.patchValue({
17081
+ term: this.query.term
17082
+ });
16975
17083
  this._overlayRef.afterClosed$.subscribe({
16976
17084
  next: () => {
16977
17085
  const queryParams = { queryParamsHandling: 'preserve' };
@@ -18536,6 +18644,7 @@ let InboxDetailsComponent = class InboxDetailsComponent {
18536
18644
  this.setupWorkItem();
18537
18645
  this.setFormOptions(form, data, actions);
18538
18646
  this.updateInboxSate();
18647
+ this.eventService.trigger(EnaioEvent.INBOX_ITEM_LOCKED);
18539
18648
  }, error => {
18540
18649
  if (error.status === 409) {
18541
18650
  Utils.throw(null, this.translate.instant('eo.bpm.event.script.execution.error'), this.workItem.title).call(this, {});
@@ -18556,6 +18665,7 @@ let InboxDetailsComponent = class InboxDetailsComponent {
18556
18665
  this.workItem = res;
18557
18666
  this.setupWorkItem();
18558
18667
  this.updateInboxSate();
18668
+ this.eventService.trigger(EnaioEvent.INBOX_ITEM_UNLOCKED);
18559
18669
  }, Utils.throw(null, this.translate.instant('eo.process.activity.unlock.denied'), this.workItem.title));
18560
18670
  }
18561
18671
  }
@@ -19652,9 +19762,10 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19652
19762
  const _pTabs = [..._primary, ...plugins.filter(p => !_primary.includes(p))];
19653
19763
  const pTabs = primary ? [...primary, ...diff] : _pTabs;
19654
19764
  const sTabs = secondary || _secondary;
19765
+ const p = pTabs.filter(t => tabs.includes(t));
19655
19766
  const s = sTabs.filter(t => tabs.includes(t));
19656
19767
  // reset primary tabs order if no secondary tabs are available
19657
- const p = sTabs.length ? pTabs.filter(t => tabs.includes(t)) : _pTabs;
19768
+ !s.length && p.sort((a, b) => tabs.indexOf(a) - tabs.indexOf(b));
19658
19769
  this.splitTabConfig = {
19659
19770
  primary: { tabs: p, active: p.includes(cachedOrder?.primary?.active) ? cachedOrder?.primary?.active : p[0] || '' },
19660
19771
  secondary: { tabs: s, active: s.includes(cachedOrder?.secondary?.active) ? cachedOrder?.secondary?.active : s[0] || '' },
@@ -21607,6 +21718,15 @@ let ResultListComponent = class ResultListComponent {
21607
21718
  }
21608
21719
  });
21609
21720
  }
21721
+ ngAfterViewInit() {
21722
+ setTimeout(() => {
21723
+ if (this.grid) {
21724
+ this._query.sortOptions = (this.grid.api.getColumnState() || [])
21725
+ .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
21726
+ this.query = this._query;
21727
+ }
21728
+ }, 200);
21729
+ }
21610
21730
  updateRow(id, data) {
21611
21731
  const matchRow = this.resultGridOptions.rowData.find((r) => r.id === id);
21612
21732
  const systemFields = ['created', 'creatortitle', 'modified', 'modifiertitle', 'title', 'description', 'type', 'version', 'filesize', 'filename', 'mimetypegroup', 'mimetype'];
@@ -21656,7 +21776,9 @@ let ResultListComponent = class ResultListComponent {
21656
21776
  }
21657
21777
  refreshGrid() {
21658
21778
  if (this.query) {
21659
- this.query = this.defaultQuery;
21779
+ this._query.sortOptions = (this.grid.api.getColumnState() || [])
21780
+ .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
21781
+ this.query = this._query;
21660
21782
  }
21661
21783
  this.onRefresh.emit(this.query);
21662
21784
  }
@@ -22828,10 +22950,10 @@ class AboutStateComponent {
22828
22950
  this.backend = backend;
22829
22951
  this.userService = userService;
22830
22952
  this.config = config;
22831
- this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.0.3", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.0.3", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.0.3", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.0.3", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.1.1", "license": "MIT" }, { "name": "@angular/animations", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/cdk", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/common", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/compiler", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/core", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/forms", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/router", "version": "17.1.2", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.14.0", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.0.0-rc.3", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "17.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "2.0.1", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "2.0.2", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "lodash-es", "version": "4.17.21", "license": "MIT" }, { "name": "moment", "version": "2.30.1", "license": "MIT" }, { "name": "ngx-toastr", "version": "18.0.0", "license": "MIT" }, { "name": "rxjs", "version": "7.8.1", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.6.2", "license": "0BSD" }, { "name": "zone.js", "version": "0.14.4", "license": "MIT" }];
22953
+ this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.0.3", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.0.3", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.0.3", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.0.3", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.1.1", "license": "MIT" }, { "name": "@angular/animations", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/cdk", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/common", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/compiler", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/core", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/forms", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "17.1.2", "license": "MIT" }, { "name": "@angular/router", "version": "17.1.2", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.14.0", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.0.0-rc.5", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "17.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "2.0.1", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "2.0.2", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "lodash-es", "version": "4.17.21", "license": "MIT" }, { "name": "moment", "version": "2.30.1", "license": "MIT" }, { "name": "ngx-toastr", "version": "18.0.0", "license": "MIT" }, { "name": "rxjs", "version": "7.8.1", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.6.2", "license": "0BSD" }, { "name": "zone.js", "version": "0.14.4", "license": "MIT" }];
22832
22954
  this.ctrl = {
22833
22955
  componentName: 'yuuvis® RAD client',
22834
- componentVersion: '11.0.0-rc.5',
22956
+ componentVersion: '11.0.0-rc.6',
22835
22957
  productName: '',
22836
22958
  productVersion: ''
22837
22959
  };
@@ -23240,14 +23362,14 @@ let LastEditedAndCreatedComponent = class LastEditedAndCreatedComponent {
23240
23362
  });
23241
23363
  }
23242
23364
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LastEditedAndCreatedComponent, deps: [{ token: i1.UserService }, { token: i1.SearchService }, { token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
23243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: LastEditedAndCreatedComponent, selector: "eo-last-edited-and-created", inputs: { widgetConfig: "widgetConfig" }, viewQueries: [{ propertyName: "availableTabs", predicate: YvcTabDirective, descendants: true }], ngImport: i0, template: "@if (tabs) {\n <yvc-tabs [tabs]=\"tabs\" layoutSettingsID=\"eo.lastEdited.widget.tabs\"></yvc-tabs>\n}\n\n<ng-template [yvcTab]=\"{id: 'LastEdited', label: 'eo.dashboard.modified.title' | translate}\">\n @if (modifiedByMe?.lately.length) {\n <div class=\"container\">\n <main class=\"body\">\n @for (item of modifiedByMe.lately; track $index) {\n <div class=\"item\" [routerLink]=\"['/object/', item.id]\">\n <eo-icon [objectType]=\"item.type\"></eo-icon>\n <div>\n <div class=\"modified\">{{ item.modified | localeDate }}</div>\n <div class=\"title\">{{ item.title }}</div>\n <div class=\"description\">{{ item.description }}</div>\n </div>\n </div>\n }\n </main>\n </div>\n }\n</ng-template>\n\n<ng-template [yvcTab]=\"{id: 'LastCreated', label: 'eo.dashboard.created.title' | translate}\">\n @if (createdByMe?.lately.length) {\n <div class=\"container\">\n <main class=\"body\">\n @for (item of createdByMe.lately; track $index) {\n <div class=\"item\" [routerLink]=\"['/object/', item.id]\">\n <eo-icon [objectType]=\"item.type\"></eo-icon>\n <div>\n <div class=\"modified\">{{ item.created | localeDate }}</div>\n <div class=\"title\">{{ item.title }}</div>\n <div class=\"description\">{{ item.description }}</div>\n </div>\n </div>\n }\n </main>\n </div>\n }\n</ng-template>\n", styles: [":host{display:contents}@media screen and (max-width: 800px){:host{height:40%;padding:0 var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}}:host yvc-tabs{--text-color-body: #fff;color:var(--text-color-body);background-color:var(--text-color-body);height:100%}:host yvc-tabs ::ng-deep>header{height:50px;background-color:var(--color-primary-2)}:host .container{display:flex;flex-flow:column}:host .container .header{flex:0 0 auto;border-radius:2px;color:var(--color-white);background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}:host .container .header h2{margin:0;padding:0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal)}:host .container .header .total{font-size:var(--font-caption);opacity:.7}:host .container .body{flex:1 1 auto;overflow-y:auto}:host .container .body .item{border-radius:2px;display:flex;flex-flow:row nowrap;color:var(--text-color-caption);padding:calc(var(--app-pane-padding) / 2);margin:calc(var(--app-pane-padding) / 4) 0;align-items:center;background-color:rgba(var(--color-white-rgb),.9);text-decoration:none;cursor:pointer}:host .container .body .item:focus,:host .container .body .item:hover{background-color:var(--list-item-hover-background)}:host .container .body .item eo-icon{flex:0 0 auto;padding:0 calc(var(--app-pane-padding) / 2)}:host .container .body .item>div{flex:1 1 auto;width:90%;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 calc(var(--app-pane-padding) / 2)}:host .container .body .item .modified,:host .container .body .item .description,:host .container .body .item .title{width:100%;max-width:250px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host .container .body .item .modified,:host .container .body .item .description{font-size:var(--font-hint)}:host .container .body .item .title{font-weight:var(--font-weight-bold)}\n"], dependencies: [{ kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i12.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i12.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
23365
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: LastEditedAndCreatedComponent, selector: "eo-last-edited-and-created", inputs: { widgetConfig: "widgetConfig" }, viewQueries: [{ propertyName: "availableTabs", predicate: YvcTabDirective, descendants: true }], ngImport: i0, template: "@if (tabs) {\n<yvc-tabs [tabs]=\"tabs\" layoutSettingsID=\"eo.lastEdited.widget.tabs\">\n\n <ng-template [yvcTab]=\"{id: 'LastEdited', label: 'eo.dashboard.modified.title' | translate}\">\n @if (modifiedByMe?.lately.length) {\n <div class=\"container\">\n <main class=\"body\">\n @for (item of modifiedByMe.lately; track $index) {\n <div class=\"item\" [routerLink]=\"['/object/', item.id]\">\n <eo-icon [objectType]=\"item.type\"></eo-icon>\n <div>\n <div class=\"modified\">{{ item.modified | localeDate }}</div>\n <div class=\"title\">{{ item.title }}</div>\n <div class=\"description\">{{ item.description }}</div>\n </div>\n </div>\n }\n </main>\n </div>\n }\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'LastCreated', label: 'eo.dashboard.created.title' | translate}\">\n @if (createdByMe?.lately.length) {\n <div class=\"container\">\n <main class=\"body\">\n @for (item of createdByMe.lately; track $index) {\n <div class=\"item\" [routerLink]=\"['/object/', item.id]\">\n <eo-icon [objectType]=\"item.type\"></eo-icon>\n <div>\n <div class=\"modified\">{{ item.created | localeDate }}</div>\n <div class=\"title\">{{ item.title }}</div>\n <div class=\"description\">{{ item.description }}</div>\n </div>\n </div>\n }\n </main>\n </div>\n }\n </ng-template>\n</yvc-tabs>\n}", styles: [":host{display:contents}@media screen and (max-width: 800px){:host{height:40%;padding:0 var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}}:host yvc-tabs{--text-color-body: #fff;color:var(--text-color-body);background-color:var(--text-color-body);height:100%}:host yvc-tabs ::ng-deep>header{height:50px;background-color:var(--color-primary-2)}:host .container{display:flex;flex-flow:column}:host .container .header{flex:0 0 auto;border-radius:2px;color:var(--color-white);background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}:host .container .header h2{margin:0;padding:0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal)}:host .container .header .total{font-size:var(--font-caption);opacity:.7}:host .container .body{flex:1 1 auto;overflow-y:auto}:host .container .body .item{border-radius:2px;display:flex;flex-flow:row nowrap;color:var(--text-color-caption);padding:calc(var(--app-pane-padding) / 2);margin:calc(var(--app-pane-padding) / 4) 0;align-items:center;background-color:rgba(var(--color-white-rgb),.9);text-decoration:none;cursor:pointer}:host .container .body .item:focus,:host .container .body .item:hover{background-color:var(--list-item-hover-background)}:host .container .body .item eo-icon{flex:0 0 auto;padding:0 calc(var(--app-pane-padding) / 2)}:host .container .body .item>div{flex:1 1 auto;width:90%;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 calc(var(--app-pane-padding) / 2)}:host .container .body .item .modified,:host .container .body .item .description,:host .container .body .item .title{width:100%;max-width:250px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host .container .body .item .modified,:host .container .body .item .description{font-size:var(--font-hint)}:host .container .body .item .title{font-weight:var(--font-weight-bold)}\n"], dependencies: [{ kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i12.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i12.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
23244
23366
  };
23245
23367
  LastEditedAndCreatedComponent = __decorate([
23246
23368
  UntilDestroy()
23247
23369
  ], LastEditedAndCreatedComponent);
23248
23370
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LastEditedAndCreatedComponent, decorators: [{
23249
23371
  type: Component,
23250
- args: [{ selector: 'eo-last-edited-and-created', template: "@if (tabs) {\n <yvc-tabs [tabs]=\"tabs\" layoutSettingsID=\"eo.lastEdited.widget.tabs\"></yvc-tabs>\n}\n\n<ng-template [yvcTab]=\"{id: 'LastEdited', label: 'eo.dashboard.modified.title' | translate}\">\n @if (modifiedByMe?.lately.length) {\n <div class=\"container\">\n <main class=\"body\">\n @for (item of modifiedByMe.lately; track $index) {\n <div class=\"item\" [routerLink]=\"['/object/', item.id]\">\n <eo-icon [objectType]=\"item.type\"></eo-icon>\n <div>\n <div class=\"modified\">{{ item.modified | localeDate }}</div>\n <div class=\"title\">{{ item.title }}</div>\n <div class=\"description\">{{ item.description }}</div>\n </div>\n </div>\n }\n </main>\n </div>\n }\n</ng-template>\n\n<ng-template [yvcTab]=\"{id: 'LastCreated', label: 'eo.dashboard.created.title' | translate}\">\n @if (createdByMe?.lately.length) {\n <div class=\"container\">\n <main class=\"body\">\n @for (item of createdByMe.lately; track $index) {\n <div class=\"item\" [routerLink]=\"['/object/', item.id]\">\n <eo-icon [objectType]=\"item.type\"></eo-icon>\n <div>\n <div class=\"modified\">{{ item.created | localeDate }}</div>\n <div class=\"title\">{{ item.title }}</div>\n <div class=\"description\">{{ item.description }}</div>\n </div>\n </div>\n }\n </main>\n </div>\n }\n</ng-template>\n", styles: [":host{display:contents}@media screen and (max-width: 800px){:host{height:40%;padding:0 var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}}:host yvc-tabs{--text-color-body: #fff;color:var(--text-color-body);background-color:var(--text-color-body);height:100%}:host yvc-tabs ::ng-deep>header{height:50px;background-color:var(--color-primary-2)}:host .container{display:flex;flex-flow:column}:host .container .header{flex:0 0 auto;border-radius:2px;color:var(--color-white);background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}:host .container .header h2{margin:0;padding:0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal)}:host .container .header .total{font-size:var(--font-caption);opacity:.7}:host .container .body{flex:1 1 auto;overflow-y:auto}:host .container .body .item{border-radius:2px;display:flex;flex-flow:row nowrap;color:var(--text-color-caption);padding:calc(var(--app-pane-padding) / 2);margin:calc(var(--app-pane-padding) / 4) 0;align-items:center;background-color:rgba(var(--color-white-rgb),.9);text-decoration:none;cursor:pointer}:host .container .body .item:focus,:host .container .body .item:hover{background-color:var(--list-item-hover-background)}:host .container .body .item eo-icon{flex:0 0 auto;padding:0 calc(var(--app-pane-padding) / 2)}:host .container .body .item>div{flex:1 1 auto;width:90%;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 calc(var(--app-pane-padding) / 2)}:host .container .body .item .modified,:host .container .body .item .description,:host .container .body .item .title{width:100%;max-width:250px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host .container .body .item .modified,:host .container .body .item .description{font-size:var(--font-hint)}:host .container .body .item .title{font-weight:var(--font-weight-bold)}\n"] }]
23372
+ args: [{ selector: 'eo-last-edited-and-created', template: "@if (tabs) {\n<yvc-tabs [tabs]=\"tabs\" layoutSettingsID=\"eo.lastEdited.widget.tabs\">\n\n <ng-template [yvcTab]=\"{id: 'LastEdited', label: 'eo.dashboard.modified.title' | translate}\">\n @if (modifiedByMe?.lately.length) {\n <div class=\"container\">\n <main class=\"body\">\n @for (item of modifiedByMe.lately; track $index) {\n <div class=\"item\" [routerLink]=\"['/object/', item.id]\">\n <eo-icon [objectType]=\"item.type\"></eo-icon>\n <div>\n <div class=\"modified\">{{ item.modified | localeDate }}</div>\n <div class=\"title\">{{ item.title }}</div>\n <div class=\"description\">{{ item.description }}</div>\n </div>\n </div>\n }\n </main>\n </div>\n }\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'LastCreated', label: 'eo.dashboard.created.title' | translate}\">\n @if (createdByMe?.lately.length) {\n <div class=\"container\">\n <main class=\"body\">\n @for (item of createdByMe.lately; track $index) {\n <div class=\"item\" [routerLink]=\"['/object/', item.id]\">\n <eo-icon [objectType]=\"item.type\"></eo-icon>\n <div>\n <div class=\"modified\">{{ item.created | localeDate }}</div>\n <div class=\"title\">{{ item.title }}</div>\n <div class=\"description\">{{ item.description }}</div>\n </div>\n </div>\n }\n </main>\n </div>\n }\n </ng-template>\n</yvc-tabs>\n}", styles: [":host{display:contents}@media screen and (max-width: 800px){:host{height:40%;padding:0 var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}}:host yvc-tabs{--text-color-body: #fff;color:var(--text-color-body);background-color:var(--text-color-body);height:100%}:host yvc-tabs ::ng-deep>header{height:50px;background-color:var(--color-primary-2)}:host .container{display:flex;flex-flow:column}:host .container .header{flex:0 0 auto;border-radius:2px;color:var(--color-white);background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}:host .container .header h2{margin:0;padding:0;font-size:var(--font-subhead);font-weight:var(--font-weight-normal)}:host .container .header .total{font-size:var(--font-caption);opacity:.7}:host .container .body{flex:1 1 auto;overflow-y:auto}:host .container .body .item{border-radius:2px;display:flex;flex-flow:row nowrap;color:var(--text-color-caption);padding:calc(var(--app-pane-padding) / 2);margin:calc(var(--app-pane-padding) / 4) 0;align-items:center;background-color:rgba(var(--color-white-rgb),.9);text-decoration:none;cursor:pointer}:host .container .body .item:focus,:host .container .body .item:hover{background-color:var(--list-item-hover-background)}:host .container .body .item eo-icon{flex:0 0 auto;padding:0 calc(var(--app-pane-padding) / 2)}:host .container .body .item>div{flex:1 1 auto;width:90%;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 calc(var(--app-pane-padding) / 2)}:host .container .body .item .modified,:host .container .body .item .description,:host .container .body .item .title{width:100%;max-width:250px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host .container .body .item .modified,:host .container .body .item .description{font-size:var(--font-hint)}:host .container .body .item .title{font-weight:var(--font-weight-bold)}\n"] }]
23251
23373
  }], ctorParameters: () => [{ type: i1.UserService }, { type: i1.SearchService }, { type: i1.SystemService }], propDecorators: { availableTabs: [{
23252
23374
  type: ViewChildren,
23253
23375
  args: [YvcTabDirective]
@@ -23369,14 +23491,14 @@ let InfoInboxWidgetComponent = class InfoInboxWidgetComponent {
23369
23491
  }
23370
23492
  }
23371
23493
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: InfoInboxWidgetComponent, deps: [{ token: i1.CapabilitiesService }, { token: i1.InboxService }], target: i0.ɵɵFactoryTarget.Component }); }
23372
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: InfoInboxWidgetComponent, selector: "eo-info-inbox-widget", inputs: { widgetConfig: "widgetConfig" }, ngImport: i0, template: "<a class=\"info\" [ngClass]=\"{visible: capabilities.inbox && inboxState && inboxState.totalmessages > 0}\" [routerLink]=\"['/inbox']\">\n <div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"count\">{{inboxState.totalmessages}}</div>\n </div>\n <div class=\"msg\">{{widgetConfig?.title}}</div>\n</a>\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:40px;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: RouterLinkDirective, selector: "a[routerLink]" }] }); }
23494
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: InfoInboxWidgetComponent, selector: "eo-info-inbox-widget", inputs: { widgetConfig: "widgetConfig" }, ngImport: i0, template: "<a class=\"info\" [ngClass]=\"{visible: capabilities.inbox && inboxState && inboxState.totalmessages > 0}\" [routerLink]=\"['/inbox']\">\n <div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"count\">{{inboxState?.totalmessages}}</div>\n </div>\n <div class=\"msg\">{{widgetConfig?.title}}</div>\n</a>\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:40px;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: RouterLinkDirective, selector: "a[routerLink]" }] }); }
23373
23495
  };
23374
23496
  InfoInboxWidgetComponent = __decorate([
23375
23497
  UntilDestroy()
23376
23498
  ], InfoInboxWidgetComponent);
23377
23499
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: InfoInboxWidgetComponent, decorators: [{
23378
23500
  type: Component,
23379
- args: [{ selector: 'eo-info-inbox-widget', template: "<a class=\"info\" [ngClass]=\"{visible: capabilities.inbox && inboxState && inboxState.totalmessages > 0}\" [routerLink]=\"['/inbox']\">\n <div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"count\">{{inboxState.totalmessages}}</div>\n </div>\n <div class=\"msg\">{{widgetConfig?.title}}</div>\n</a>\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:40px;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}\n"] }]
23501
+ args: [{ selector: 'eo-info-inbox-widget', template: "<a class=\"info\" [ngClass]=\"{visible: capabilities.inbox && inboxState && inboxState.totalmessages > 0}\" [routerLink]=\"['/inbox']\">\n <div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"count\">{{inboxState?.totalmessages}}</div>\n </div>\n <div class=\"msg\">{{widgetConfig?.title}}</div>\n</a>\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:40px;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}\n"] }]
23380
23502
  }], ctorParameters: () => [{ type: i1.CapabilitiesService }, { type: i1.InboxService }], propDecorators: { widgetConfig: [{
23381
23503
  type: Input
23382
23504
  }] } });
@@ -23606,7 +23728,7 @@ let HitlistSetupComponent = class HitlistSetupComponent {
23606
23728
  sortRevert: [],
23607
23729
  });
23608
23730
  this.storedQueriesPicker = {
23609
- title: this.translate.instant('eo.search.title.storedqueries'),
23731
+ title: this.translate.instant('eo.workspace.widget.label.storedquery'),
23610
23732
  codesystem: null,
23611
23733
  };
23612
23734
  this.propertyPicker = {
@@ -23743,14 +23865,14 @@ let HitlistSetupComponent = class HitlistSetupComponent {
23743
23865
  }
23744
23866
  }
23745
23867
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HitlistSetupComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i1.StoredQueriesService }, { token: i1.TranslateService }, { token: i1.UserService }, { token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
23746
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: HitlistSetupComponent, selector: "eo-hitlist-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, viewQueries: [{ propertyName: "firstLabelPropertyCodesystem", first: true, predicate: ["firstLabelPropertyCodesystem"], descendants: true }, { propertyName: "secondLabelPropertyCodesystem", first: true, predicate: ["secondLabelPropertyCodesystem"], descendants: true }, { propertyName: "thirdLabelPropertyCodesystem", first: true, predicate: ["thirdLabelPropertyCodesystem"], descendants: true }], ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.search.title.storedqueries' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if (widgetConfig?.storedQuery) {\n <div class=\"listOptions\">\n <eo-form-input [skipToggle]=\"true\" [required]=\"true\"\n [invalid]=\"setupForm.get('size').invalid\"\n [label]=\"'eo.workspace.widget.form.label.size' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"size\"></eo-number>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('size').invalid) {\n <div class=\"err-msg\" translate>\n @if (setupForm.get('size').hasError('required')) {\n eo.form.property.required\n } @else if (setupForm.get('size').hasError('max') || setupForm.get('size').hasError('min')) {\n eo.form.property.string.error.classification.partialValue\n }\n </div>\n }\n\n @if (propertyPicker?.codesystem?.entries) {\n <div class=\"propertyPicker\">\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.firstLabel'|translate\">\n <eo-codesystem #firstLabelPropertyCodesystem formControlName=\"firstLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [required]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.secondLabel'|translate\"\n [invalid]=\"setupForm.get('secondLabel').invalid\">\n <eo-codesystem #secondLabelPropertyCodesystem formControlName=\"secondLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('secondLabel').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.thirdLabel'|translate\">\n <eo-codesystem #thirdLabelPropertyCodesystem formControlName=\"thirdLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n </div>\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.sortField'|translate\">\n <eo-codesystem formControlName=\"sortField\" [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n\n <eo-form-input class=\"label checkbox\" [label]=\"'eo.workspace.widget.form.label.sortRevert'|translate\"\n [skipToggle]=\"true\">\n <eo-checkbox formControlName=\"sortRevert\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n </div>\n }\n </form>\n</div>\n\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-hitlist-widget [widgetConfig]=\"widgetConfig\" [editMode]=\"true\"></eo-hitlist-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .propertyPicker{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding)}:host .preview eo-hitlist-widget{border:1px solid var(--panel-divider-color)}\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: HitlistWidgetComponent, selector: "eo-hitlist-widget", inputs: ["editMode", "widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
23868
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: HitlistSetupComponent, selector: "eo-hitlist-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, viewQueries: [{ propertyName: "firstLabelPropertyCodesystem", first: true, predicate: ["firstLabelPropertyCodesystem"], descendants: true }, { propertyName: "secondLabelPropertyCodesystem", first: true, predicate: ["secondLabelPropertyCodesystem"], descendants: true }, { propertyName: "thirdLabelPropertyCodesystem", first: true, predicate: ["thirdLabelPropertyCodesystem"], descendants: true }], ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if (widgetConfig?.storedQuery) {\n <div class=\"listOptions\">\n <eo-form-input [skipToggle]=\"true\" [required]=\"true\"\n [invalid]=\"setupForm.get('size').invalid\"\n [label]=\"'eo.workspace.widget.form.label.size' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"size\"></eo-number>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('size').invalid) {\n <div class=\"err-msg\" translate>\n @if (setupForm.get('size').hasError('required')) {\n eo.form.property.required\n } @else if (setupForm.get('size').hasError('max') || setupForm.get('size').hasError('min')) {\n eo.form.property.string.error.classification.partialValue\n }\n </div>\n }\n\n @if (propertyPicker?.codesystem?.entries) {\n <div class=\"propertyPicker\">\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.firstLabel'|translate\">\n <eo-codesystem #firstLabelPropertyCodesystem formControlName=\"firstLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [required]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.secondLabel'|translate\"\n [invalid]=\"setupForm.get('secondLabel').invalid\">\n <eo-codesystem #secondLabelPropertyCodesystem formControlName=\"secondLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('secondLabel').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.thirdLabel'|translate\">\n <eo-codesystem #thirdLabelPropertyCodesystem formControlName=\"thirdLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n </div>\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.sortField'|translate\">\n <eo-codesystem formControlName=\"sortField\" [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n\n <eo-form-input class=\"label checkbox\" [label]=\"'eo.workspace.widget.form.label.sortRevert'|translate\"\n [skipToggle]=\"true\">\n <eo-checkbox formControlName=\"sortRevert\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n </div>\n }\n </form>\n</div>\n\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-hitlist-widget [widgetConfig]=\"widgetConfig\" [editMode]=\"true\"></eo-hitlist-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .propertyPicker{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding)}:host .preview eo-hitlist-widget{border:1px solid var(--panel-divider-color)}\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: HitlistWidgetComponent, selector: "eo-hitlist-widget", inputs: ["editMode", "widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
23747
23869
  };
23748
23870
  HitlistSetupComponent = __decorate([
23749
23871
  UntilDestroy()
23750
23872
  ], HitlistSetupComponent);
23751
23873
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HitlistSetupComponent, decorators: [{
23752
23874
  type: Component,
23753
- args: [{ selector: 'eo-hitlist-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.search.title.storedqueries' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if (widgetConfig?.storedQuery) {\n <div class=\"listOptions\">\n <eo-form-input [skipToggle]=\"true\" [required]=\"true\"\n [invalid]=\"setupForm.get('size').invalid\"\n [label]=\"'eo.workspace.widget.form.label.size' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"size\"></eo-number>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('size').invalid) {\n <div class=\"err-msg\" translate>\n @if (setupForm.get('size').hasError('required')) {\n eo.form.property.required\n } @else if (setupForm.get('size').hasError('max') || setupForm.get('size').hasError('min')) {\n eo.form.property.string.error.classification.partialValue\n }\n </div>\n }\n\n @if (propertyPicker?.codesystem?.entries) {\n <div class=\"propertyPicker\">\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.firstLabel'|translate\">\n <eo-codesystem #firstLabelPropertyCodesystem formControlName=\"firstLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [required]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.secondLabel'|translate\"\n [invalid]=\"setupForm.get('secondLabel').invalid\">\n <eo-codesystem #secondLabelPropertyCodesystem formControlName=\"secondLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('secondLabel').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.thirdLabel'|translate\">\n <eo-codesystem #thirdLabelPropertyCodesystem formControlName=\"thirdLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n </div>\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.sortField'|translate\">\n <eo-codesystem formControlName=\"sortField\" [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n\n <eo-form-input class=\"label checkbox\" [label]=\"'eo.workspace.widget.form.label.sortRevert'|translate\"\n [skipToggle]=\"true\">\n <eo-checkbox formControlName=\"sortRevert\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n </div>\n }\n </form>\n</div>\n\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-hitlist-widget [widgetConfig]=\"widgetConfig\" [editMode]=\"true\"></eo-hitlist-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .propertyPicker{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding)}:host .preview eo-hitlist-widget{border:1px solid var(--panel-divider-color)}\n"] }]
23875
+ args: [{ selector: 'eo-hitlist-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if (widgetConfig?.storedQuery) {\n <div class=\"listOptions\">\n <eo-form-input [skipToggle]=\"true\" [required]=\"true\"\n [invalid]=\"setupForm.get('size').invalid\"\n [label]=\"'eo.workspace.widget.form.label.size' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"size\"></eo-number>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('size').invalid) {\n <div class=\"err-msg\" translate>\n @if (setupForm.get('size').hasError('required')) {\n eo.form.property.required\n } @else if (setupForm.get('size').hasError('max') || setupForm.get('size').hasError('min')) {\n eo.form.property.string.error.classification.partialValue\n }\n </div>\n }\n\n @if (propertyPicker?.codesystem?.entries) {\n <div class=\"propertyPicker\">\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.firstLabel'|translate\">\n <eo-codesystem #firstLabelPropertyCodesystem formControlName=\"firstLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [required]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.secondLabel'|translate\"\n [invalid]=\"setupForm.get('secondLabel').invalid\">\n <eo-codesystem #secondLabelPropertyCodesystem formControlName=\"secondLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('secondLabel').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.thirdLabel'|translate\">\n <eo-codesystem #thirdLabelPropertyCodesystem formControlName=\"thirdLabel\"\n [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n </div>\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.sortField'|translate\">\n <eo-codesystem formControlName=\"sortField\" [pickerTitle]=\"propertyPicker.title\"\n [codesystem]=\"propertyPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n\n <eo-form-input class=\"label checkbox\" [label]=\"'eo.workspace.widget.form.label.sortRevert'|translate\"\n [skipToggle]=\"true\">\n <eo-checkbox formControlName=\"sortRevert\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n </div>\n }\n </form>\n</div>\n\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-hitlist-widget [widgetConfig]=\"widgetConfig\" [editMode]=\"true\"></eo-hitlist-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .propertyPicker{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding)}:host .preview eo-hitlist-widget{border:1px solid var(--panel-divider-color)}\n"] }]
23754
23876
  }], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i1.StoredQueriesService }, { type: i1.TranslateService }, { type: i1.UserService }, { type: i1.SystemService }], propDecorators: { widgetConfigChange: [{
23755
23877
  type: Output
23756
23878
  }], widgetConfigStateChange: [{
@@ -23933,6 +24055,7 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
23933
24055
  size: this._widgetConfig?.formValue?.size || 10,
23934
24056
  order: sort ? 'asc' : 'desc',
23935
24057
  sort: attributMetricKey + '.value',
24058
+ min_doc_count: minDocCount,
23936
24059
  sub: {
23937
24060
  [attributMetricKey]: {
23938
24061
  metrics: this._widgetConfig?.formValue?.metric
@@ -23950,7 +24073,7 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
23950
24073
  this.chartData = res.aggregations[Object.keys(res.aggregations)[0]].buckets.map((e) => {
23951
24074
  return {
23952
24075
  group: e.key.replace('_', '-'),
23953
- value: e[metric + '#' + attributMetric].value,
24076
+ value: e[metric + '#' + attributMetricKey].value,
23954
24077
  };
23955
24078
  });
23956
24079
  }
@@ -24049,7 +24172,7 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
24049
24172
  if (this._widgetConfig?.formValue?.aggregation === 'sysdocument.filesize') {
24050
24173
  this.chartData = res.aggregations.filesize.buckets.map((e) => {
24051
24174
  return {
24052
- group: this.translate.instant('eo.search.agg.filesize.' + e.key),
24175
+ group: e.key.replace('_', '-'),
24053
24176
  value: e.doc_count,
24054
24177
  };
24055
24178
  });
@@ -24143,7 +24266,7 @@ let ChartsSetupComponent = class ChartsSetupComponent {
24143
24266
  yAxe: ['', [Validators.maxLength(50)]]
24144
24267
  });
24145
24268
  this.storedQueriesPicker = {
24146
- title: this.translate.instant('eo.search.title.storedqueries'),
24269
+ title: this.translate.instant('eo.workspace.widget.label.storedquery'),
24147
24270
  codesystem: null,
24148
24271
  };
24149
24272
  this.aggregationPicker = {
@@ -24185,7 +24308,7 @@ let ChartsSetupComponent = class ChartsSetupComponent {
24185
24308
  this.widgetConfig = {
24186
24309
  storedQuery: this.storedQuery?.id,
24187
24310
  formValue: this.setupForm.value,
24188
- aggregationType: ''
24311
+ aggregationType: 'DATETIME'
24189
24312
  };
24190
24313
  if (this.setupForm.get('storedQuery').value !== this.selectedSavedSearchName) {
24191
24314
  if (this.storedQuery) {
@@ -24488,14 +24611,14 @@ let ChartsSetupComponent = class ChartsSetupComponent {
24488
24611
  }
24489
24612
  }
24490
24613
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ChartsSetupComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i1.StoredQueriesService }, { token: i1.TranslateService }, { token: i1.UserService }, { token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
24491
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ChartsSetupComponent, selector: "eo-charts-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, viewQueries: [{ propertyName: "aggregationCodesystem", first: true, predicate: ["aggregationCodesystem"], descendants: true }], ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.chartTypeField' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('chartType').invalid\">\n <eo-codesystem formControlName=\"chartType\" [pickerTitle]=\"chartTypePicker.title\"\n [codesystem]=\"chartTypePicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('chartType').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.search.title.storedqueries' | translate\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if (aggregationPicker?.codesystem?.entries && this.setupForm.get('storedQuery').valid) {\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.aggregationField' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('aggregation').invalid\">\n <eo-codesystem #aggregationCodesystem formControlName=\"aggregation\" [pickerTitle]=\"aggregationPicker.title\"\n [codesystem]=\"aggregationPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('aggregation').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n <eo-form-input [required]=\"true\"\n [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.partialValue' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('size').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"size\"></eo-number>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('size').invalid) {\n <div class=\"err-msg\" translate>\n @if (setupForm.get('size').hasError('required')) {\n eo.form.property.required\n } @else if (setupForm.get('size').hasError('max') || setupForm.get('size').hasError('min')) {\n eo.form.property.string.error.classification.partialValue\n }\n </div>\n }\n }\n\n @if (isDateTimeType) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.histogram' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('histogramType').invalid\">\n <eo-codesystem formControlName=\"histogramType\" [pickerTitle]=\"histogramTypePicker.title\"\n [codesystem]=\"histogramTypePicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n @if (widgetConfig?.formValue?.aggregation && !isDateTimeType) {\n @if (widgetConfig.formValue.chartType === 'bar') {\n <eo-form-input class=\"label checkbox\" [label]=\"'eo.workspace.widget.form.label.sortRevert'|translate\"\n [skipToggle]=\"true\">\n <eo-checkbox formControlName=\"sortRevert\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n }\n @if (widgetConfig.formValue.chartType === 'bar' || widgetConfig.formValue.chartType === 'pie' || widgetConfig.formValue.chartType === 'ring' && !widgetConfig?.formValue?.attributMetric) {\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.minDocCount' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"minDocCount\">\n </eo-number>\n </eo-form-input>\n }\n }\n\n @if (isNumberType) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.charts.interval' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('interval').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"interval\"></eo-number>\n </eo-form-input>\n\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.charts.startingpoint' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('startingpoint').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"startingpoint\"></eo-number>\n </eo-form-input>\n }\n @if (widgetConfig?.formValue?.chartType !== 'lineStraight' && widgetConfig?.formValue?.chartType !== 'lineCurve' &&\n attributMetricPicker?.codesystem?.entries && this.setupForm.get('storedQuery').valid && !isNumberType && !isDateTimeType) {\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.label.attributMetric' | translate\">\n <eo-codesystem formControlName=\"attributMetric\" [pickerTitle]=\"attributMetricPicker.title\"\n [codesystem]=\"attributMetricPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n\n @if (widgetConfig?.formValue?.attributMetric) {\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.label.chartMetric' | translate\">\n <eo-codesystem formControlName=\"metric\" [pickerTitle]=\"chartMetricPicker.title\"\n [codesystem]=\"chartMetricPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n }\n\n @if (widgetConfig?.formValue?.chartType) {\n <div class=\"propertyPicker\">\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.title' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('title').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"title\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('title').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n @if (widgetConfig?.formValue?.chartType !== 'pie' && widgetConfig?.formValue?.chartType !== 'donut') {\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.xAxe' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('xAxe').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"xAxe\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('xAxe').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.yAxe' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('yAxe').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"yAxe\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('yAxe').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n }\n </div>\n }\n </form>\n</div>\n\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-charts-widget [widgetConfig]=\"widgetConfig\" [editMode]=\"true\"></eo-charts-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .propertyPicker{display:block;padding-top:40px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding)}:host .preview eo-charts-widget{border:1px transparent var(--panel-divider-color)}\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: ChartsWidgetComponent, selector: "eo-charts-widget", inputs: ["editMode", "widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
24614
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ChartsSetupComponent, selector: "eo-charts-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, viewQueries: [{ propertyName: "aggregationCodesystem", first: true, predicate: ["aggregationCodesystem"], descendants: true }], ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.chartTypeField' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('chartType').invalid\">\n <eo-codesystem formControlName=\"chartType\" [pickerTitle]=\"chartTypePicker.title\"\n [codesystem]=\"chartTypePicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('chartType').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if (aggregationPicker?.codesystem?.entries && this.setupForm.get('storedQuery').valid) {\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.aggregationField' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('aggregation').invalid\">\n <eo-codesystem #aggregationCodesystem formControlName=\"aggregation\" [pickerTitle]=\"aggregationPicker.title\"\n [codesystem]=\"aggregationPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('aggregation').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n <eo-form-input [required]=\"true\"\n [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.partialValue' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('size').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"size\"></eo-number>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('size').invalid) {\n <div class=\"err-msg\" translate>\n @if (setupForm.get('size').hasError('required')) {\n eo.form.property.required\n } @else if (setupForm.get('size').hasError('max') || setupForm.get('size').hasError('min')) {\n eo.form.property.string.error.classification.partialValue\n }\n </div>\n }\n }\n\n @if (isDateTimeType) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.histogram' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('histogramType').invalid\">\n <eo-codesystem formControlName=\"histogramType\" [pickerTitle]=\"histogramTypePicker.title\"\n [codesystem]=\"histogramTypePicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n @if (widgetConfig?.formValue?.aggregation && !isDateTimeType) {\n @if (widgetConfig.formValue.chartType === 'bar') {\n <eo-form-input class=\"label checkbox\" [label]=\"'eo.workspace.widget.form.label.sortRevert'|translate\"\n [skipToggle]=\"true\">\n <eo-checkbox formControlName=\"sortRevert\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n }\n @if (widgetConfig.formValue.chartType === 'bar' || widgetConfig.formValue.chartType === 'pie' || widgetConfig.formValue.chartType === 'ring' && !widgetConfig?.formValue?.attributMetric) {\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.minDocCount' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"minDocCount\">\n </eo-number>\n </eo-form-input>\n }\n }\n\n @if (isNumberType) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.charts.interval' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('interval').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"interval\"></eo-number>\n </eo-form-input>\n\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.charts.startingpoint' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('startingpoint').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"startingpoint\"></eo-number>\n </eo-form-input>\n }\n @if (widgetConfig?.formValue?.chartType !== 'lineStraight' && widgetConfig?.formValue?.chartType !== 'lineCurve' &&\n attributMetricPicker?.codesystem?.entries && this.setupForm.get('storedQuery').valid && !isNumberType && !isDateTimeType) {\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.label.attributMetric' | translate\">\n <eo-codesystem formControlName=\"attributMetric\" [pickerTitle]=\"attributMetricPicker.title\"\n [codesystem]=\"attributMetricPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n\n @if (widgetConfig?.formValue?.attributMetric) {\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.label.chartMetric' | translate\">\n <eo-codesystem formControlName=\"metric\" [pickerTitle]=\"chartMetricPicker.title\"\n [codesystem]=\"chartMetricPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n }\n\n @if (widgetConfig?.formValue?.chartType) {\n <div class=\"propertyPicker\">\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.title' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('title').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"title\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('title').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n @if (widgetConfig?.formValue?.chartType !== 'pie' && widgetConfig?.formValue?.chartType !== 'donut') {\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.xAxe' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('xAxe').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"xAxe\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('xAxe').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.yAxe' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('yAxe').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"yAxe\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('yAxe').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n }\n </div>\n }\n </form>\n</div>\n\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-charts-widget [widgetConfig]=\"widgetConfig\" [editMode]=\"true\"></eo-charts-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .propertyPicker{display:block;padding-top:40px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding)}:host .preview eo-charts-widget{border:1px transparent var(--panel-divider-color)}\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: ChartsWidgetComponent, selector: "eo-charts-widget", inputs: ["editMode", "widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
24492
24615
  };
24493
24616
  ChartsSetupComponent = __decorate([
24494
24617
  UntilDestroy()
24495
24618
  ], ChartsSetupComponent);
24496
24619
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ChartsSetupComponent, decorators: [{
24497
24620
  type: Component,
24498
- args: [{ selector: 'eo-charts-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.chartTypeField' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('chartType').invalid\">\n <eo-codesystem formControlName=\"chartType\" [pickerTitle]=\"chartTypePicker.title\"\n [codesystem]=\"chartTypePicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('chartType').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.search.title.storedqueries' | translate\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if (aggregationPicker?.codesystem?.entries && this.setupForm.get('storedQuery').valid) {\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.aggregationField' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('aggregation').invalid\">\n <eo-codesystem #aggregationCodesystem formControlName=\"aggregation\" [pickerTitle]=\"aggregationPicker.title\"\n [codesystem]=\"aggregationPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('aggregation').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n <eo-form-input [required]=\"true\"\n [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.partialValue' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('size').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"size\"></eo-number>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('size').invalid) {\n <div class=\"err-msg\" translate>\n @if (setupForm.get('size').hasError('required')) {\n eo.form.property.required\n } @else if (setupForm.get('size').hasError('max') || setupForm.get('size').hasError('min')) {\n eo.form.property.string.error.classification.partialValue\n }\n </div>\n }\n }\n\n @if (isDateTimeType) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.histogram' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('histogramType').invalid\">\n <eo-codesystem formControlName=\"histogramType\" [pickerTitle]=\"histogramTypePicker.title\"\n [codesystem]=\"histogramTypePicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n @if (widgetConfig?.formValue?.aggregation && !isDateTimeType) {\n @if (widgetConfig.formValue.chartType === 'bar') {\n <eo-form-input class=\"label checkbox\" [label]=\"'eo.workspace.widget.form.label.sortRevert'|translate\"\n [skipToggle]=\"true\">\n <eo-checkbox formControlName=\"sortRevert\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n }\n @if (widgetConfig.formValue.chartType === 'bar' || widgetConfig.formValue.chartType === 'pie' || widgetConfig.formValue.chartType === 'ring' && !widgetConfig?.formValue?.attributMetric) {\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.minDocCount' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"minDocCount\">\n </eo-number>\n </eo-form-input>\n }\n }\n\n @if (isNumberType) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.charts.interval' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('interval').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"interval\"></eo-number>\n </eo-form-input>\n\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.charts.startingpoint' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('startingpoint').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"startingpoint\"></eo-number>\n </eo-form-input>\n }\n @if (widgetConfig?.formValue?.chartType !== 'lineStraight' && widgetConfig?.formValue?.chartType !== 'lineCurve' &&\n attributMetricPicker?.codesystem?.entries && this.setupForm.get('storedQuery').valid && !isNumberType && !isDateTimeType) {\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.label.attributMetric' | translate\">\n <eo-codesystem formControlName=\"attributMetric\" [pickerTitle]=\"attributMetricPicker.title\"\n [codesystem]=\"attributMetricPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n\n @if (widgetConfig?.formValue?.attributMetric) {\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.label.chartMetric' | translate\">\n <eo-codesystem formControlName=\"metric\" [pickerTitle]=\"chartMetricPicker.title\"\n [codesystem]=\"chartMetricPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n }\n\n @if (widgetConfig?.formValue?.chartType) {\n <div class=\"propertyPicker\">\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.title' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('title').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"title\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('title').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n @if (widgetConfig?.formValue?.chartType !== 'pie' && widgetConfig?.formValue?.chartType !== 'donut') {\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.xAxe' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('xAxe').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"xAxe\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('xAxe').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.yAxe' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('yAxe').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"yAxe\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('yAxe').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n }\n </div>\n }\n </form>\n</div>\n\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-charts-widget [widgetConfig]=\"widgetConfig\" [editMode]=\"true\"></eo-charts-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .propertyPicker{display:block;padding-top:40px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding)}:host .preview eo-charts-widget{border:1px transparent var(--panel-divider-color)}\n"] }]
24621
+ args: [{ selector: 'eo-charts-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.chartTypeField' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('chartType').invalid\">\n <eo-codesystem formControlName=\"chartType\" [pickerTitle]=\"chartTypePicker.title\"\n [codesystem]=\"chartTypePicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('chartType').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if (aggregationPicker?.codesystem?.entries && this.setupForm.get('storedQuery').valid) {\n <eo-form-input [required]=\"true\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.aggregationField' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('aggregation').invalid\">\n <eo-codesystem #aggregationCodesystem formControlName=\"aggregation\" [pickerTitle]=\"aggregationPicker.title\"\n [codesystem]=\"aggregationPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('aggregation').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n <eo-form-input [required]=\"true\"\n [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.partialValue' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('size').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"size\"></eo-number>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('size').invalid) {\n <div class=\"err-msg\" translate>\n @if (setupForm.get('size').hasError('required')) {\n eo.form.property.required\n } @else if (setupForm.get('size').hasError('max') || setupForm.get('size').hasError('min')) {\n eo.form.property.string.error.classification.partialValue\n }\n </div>\n }\n }\n\n @if (isDateTimeType) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.histogram' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('histogramType').invalid\">\n <eo-codesystem formControlName=\"histogramType\" [pickerTitle]=\"histogramTypePicker.title\"\n [codesystem]=\"histogramTypePicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n @if (widgetConfig?.formValue?.aggregation && !isDateTimeType) {\n @if (widgetConfig.formValue.chartType === 'bar') {\n <eo-form-input class=\"label checkbox\" [label]=\"'eo.workspace.widget.form.label.sortRevert'|translate\"\n [skipToggle]=\"true\">\n <eo-checkbox formControlName=\"sortRevert\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n }\n @if (widgetConfig.formValue.chartType === 'bar' || widgetConfig.formValue.chartType === 'pie' || widgetConfig.formValue.chartType === 'ring' && !widgetConfig?.formValue?.attributMetric) {\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.form.label.minDocCount' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"minDocCount\">\n </eo-number>\n </eo-form-input>\n }\n }\n\n @if (isNumberType) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.charts.interval' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('interval').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"interval\"></eo-number>\n </eo-form-input>\n\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.charts.startingpoint' | translate\"\n [invalid]=\"setupForm.dirty && setupForm.get('startingpoint').invalid\">\n <eo-number [scale]=\"0\" formControlName=\"startingpoint\"></eo-number>\n </eo-form-input>\n }\n @if (widgetConfig?.formValue?.chartType !== 'lineStraight' && widgetConfig?.formValue?.chartType !== 'lineCurve' &&\n attributMetricPicker?.codesystem?.entries && this.setupForm.get('storedQuery').valid && !isNumberType && !isDateTimeType) {\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.label.attributMetric' | translate\">\n <eo-codesystem formControlName=\"attributMetric\" [pickerTitle]=\"attributMetricPicker.title\"\n [codesystem]=\"attributMetricPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n\n @if (widgetConfig?.formValue?.attributMetric) {\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.form.label.chartMetric' | translate\">\n <eo-codesystem formControlName=\"metric\" [pickerTitle]=\"chartMetricPicker.title\"\n [codesystem]=\"chartMetricPicker.codesystem\"></eo-codesystem>\n </eo-form-input>\n }\n }\n\n @if (widgetConfig?.formValue?.chartType) {\n <div class=\"propertyPicker\">\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.title' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('title').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"title\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('title').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n @if (widgetConfig?.formValue?.chartType !== 'pie' && widgetConfig?.formValue?.chartType !== 'donut') {\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.xAxe' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('xAxe').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"xAxe\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('xAxe').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n <eo-form-input tabindex=\"0\"\n [label]=\"'eo.workspace.widget.charts.yAxe' | translate\"\n [skipToggle]=\"true\"\n [invalid]=\"setupForm.dirty && setupForm.get('yAxe').invalid\">\n <eo-string autocomplete=\"true\" formControlName=\"yAxe\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('yAxe').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>eo.form.property.maxlength</div>\n }\n }\n </div>\n }\n </form>\n</div>\n\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-charts-widget [widgetConfig]=\"widgetConfig\" [editMode]=\"true\"></eo-charts-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .propertyPicker{display:block;padding-top:40px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding)}:host .preview eo-charts-widget{border:1px transparent var(--panel-divider-color)}\n"] }]
24499
24622
  }], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i1.StoredQueriesService }, { type: i1.TranslateService }, { type: i1.UserService }, { type: i1.SystemService }], propDecorators: { widgetConfigChange: [{
24500
24623
  type: Output
24501
24624
  }], widgetConfigStateChange: [{
@@ -24649,7 +24772,7 @@ let CountObjectsSetupComponent = class CountObjectsSetupComponent {
24649
24772
  });
24650
24773
  this.countTileThresholdDesc = this.translate.instant('eo.widget.hitcount.form.desc.threshold');
24651
24774
  this.storedQueriesPicker = {
24652
- title: this.translate.instant('eo.search.title.storedqueries'),
24775
+ title: this.translate.instant('eo.workspace.widget.label.storedquery'),
24653
24776
  codesystem: null,
24654
24777
  value: null,
24655
24778
  parameter: null,
@@ -24721,14 +24844,14 @@ let CountObjectsSetupComponent = class CountObjectsSetupComponent {
24721
24844
  }
24722
24845
  }
24723
24846
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CountObjectsSetupComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i4.TranslateService }, { token: i1.StoredQueriesService }], target: i0.ɵɵFactoryTarget.Component }); }
24724
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: CountObjectsSetupComponent, selector: "eo-count-objects-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.search.title.storedqueries' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.showZero' | translate\">\n <eo-checkbox formControlName=\"showZero\">\n </eo-checkbox>\n </eo-form-input>\n \n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.countTileThresholdInvert' | translate\">\n <eo-checkbox formControlName=\"countTileThresholdInvert\">\n </eo-checkbox>\n </eo-form-input>\n <div class=\"desc\">{{ countTileThresholdDesc }}</div>\n\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.success' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileSuccessThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-warning\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.warning' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileWarningThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-error\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.error' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileErrorThreshold\">\n </eo-number>\n </eo-form-input>\n </form>\n</div>\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-count-objects-widget [widgetConfig]=\"widgetConfig\"></eo-count-objects-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .checkboxCountTitle{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .setup .desc{color:var(--text-color-caption)}:host .preview{background-color:var(--main-background);padding:var(--app-pane-padding);display:flex;justify-content:center;align-items:center;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: CountObjectsWidgetComponent, selector: "eo-count-objects-widget", inputs: ["widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
24847
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: CountObjectsSetupComponent, selector: "eo-count-objects-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.showZero' | translate\">\n <eo-checkbox formControlName=\"showZero\">\n </eo-checkbox>\n </eo-form-input>\n \n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.countTileThresholdInvert' | translate\">\n <eo-checkbox formControlName=\"countTileThresholdInvert\">\n </eo-checkbox>\n </eo-form-input>\n <div class=\"desc\">{{ countTileThresholdDesc }}</div>\n\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.success' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileSuccessThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-warning\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.warning' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileWarningThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-error\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.error' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileErrorThreshold\">\n </eo-number>\n </eo-form-input>\n </form>\n</div>\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-count-objects-widget [widgetConfig]=\"widgetConfig\"></eo-count-objects-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .checkboxCountTitle{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .setup .desc{color:var(--text-color-caption)}:host .preview{background-color:var(--main-background);padding:var(--app-pane-padding);display:flex;justify-content:center;align-items:center;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: CountObjectsWidgetComponent, selector: "eo-count-objects-widget", inputs: ["widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
24725
24848
  };
24726
24849
  CountObjectsSetupComponent = __decorate([
24727
24850
  UntilDestroy()
24728
24851
  ], CountObjectsSetupComponent);
24729
24852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CountObjectsSetupComponent, decorators: [{
24730
24853
  type: Component,
24731
- args: [{ selector: 'eo-count-objects-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.search.title.storedqueries' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.showZero' | translate\">\n <eo-checkbox formControlName=\"showZero\">\n </eo-checkbox>\n </eo-form-input>\n \n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.countTileThresholdInvert' | translate\">\n <eo-checkbox formControlName=\"countTileThresholdInvert\">\n </eo-checkbox>\n </eo-form-input>\n <div class=\"desc\">{{ countTileThresholdDesc }}</div>\n\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.success' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileSuccessThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-warning\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.warning' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileWarningThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-error\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.error' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileErrorThreshold\">\n </eo-number>\n </eo-form-input>\n </form>\n</div>\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-count-objects-widget [widgetConfig]=\"widgetConfig\"></eo-count-objects-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .checkboxCountTitle{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .setup .desc{color:var(--text-color-caption)}:host .preview{background-color:var(--main-background);padding:var(--app-pane-padding);display:flex;justify-content:center;align-items:center;pointer-events:none}\n"] }]
24854
+ args: [{ selector: 'eo-count-objects-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.showZero' | translate\">\n <eo-checkbox formControlName=\"showZero\">\n </eo-checkbox>\n </eo-form-input>\n \n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.countTileThresholdInvert' | translate\">\n <eo-checkbox formControlName=\"countTileThresholdInvert\">\n </eo-checkbox>\n </eo-form-input>\n <div class=\"desc\">{{ countTileThresholdDesc }}</div>\n\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.success' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileSuccessThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-warning\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.warning' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileWarningThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-error\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.error' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileErrorThreshold\">\n </eo-number>\n </eo-form-input>\n </form>\n</div>\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-count-objects-widget [widgetConfig]=\"widgetConfig\"></eo-count-objects-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .checkboxCountTitle{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .setup .desc{color:var(--text-color-caption)}:host .preview{background-color:var(--main-background);padding:var(--app-pane-padding);display:flex;justify-content:center;align-items:center;pointer-events:none}\n"] }]
24732
24855
  }], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i4.TranslateService }, { type: i1.StoredQueriesService }], propDecorators: { widgetConfigChange: [{
24733
24856
  type: Output
24734
24857
  }], widgetConfigStateChange: [{
@@ -24799,23 +24922,230 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
24799
24922
  type: Input
24800
24923
  }] } });
24801
24924
 
24802
- let DashboardComponent = class DashboardComponent {
24803
- onKey(event) {
24804
- if (event.which === 27) {
24805
- this.selectStoredQuery(null);
24925
+ let TodoWidgetComponent = class TodoWidgetComponent {
24926
+ set widgetConfig(c) {
24927
+ this._widgetConfig = c;
24928
+ this.todos = c ? c.todos : [];
24929
+ if (this._widgetConfig?.id) {
24930
+ this.loadTaskList(this._widgetConfig?.id);
24806
24931
  }
24807
24932
  }
24808
- constructor(userService, widgetGridRegistry, titleService, router, http, config, storageService, translate, capabilityService, storedQueriesService, pendingChanges) {
24933
+ get widgetConfig() {
24934
+ return this._widgetConfig;
24935
+ }
24936
+ constructor(userService, widgetGridRegistry, fb) {
24937
+ this.userService = userService;
24938
+ this.widgetGridRegistry = widgetGridRegistry;
24939
+ this.fb = fb;
24940
+ this.subscriptions = [];
24941
+ this.labels = {};
24942
+ this.showForm = true;
24943
+ this.addForm = this.fb.group({
24944
+ task: ['', [Validators.required, Validators.maxLength(50)]],
24945
+ });
24946
+ this.todoWidgets = [];
24947
+ this.subscriptions.push(this.widgetGridRegistry.labels$.subscribe({
24948
+ next: (labels) => (this.labels = labels),
24949
+ }));
24950
+ }
24951
+ addTask() {
24952
+ if (!this.todos) {
24953
+ this.todos = [];
24954
+ }
24955
+ if (this.addForm.valid) {
24956
+ this.todos.push({
24957
+ title: this.addForm.value.task,
24958
+ });
24959
+ this.addForm.reset();
24960
+ this.emitChange(this._widgetConfig.id);
24961
+ }
24962
+ }
24963
+ loadTaskList(id) {
24964
+ this.todoWidgets = this.userService.getCurrentUser().userSettings.tasks;
24965
+ if (this.todoWidgets) {
24966
+ const todoItem = this.todoWidgets?.find(item => item.id === id);
24967
+ return this.todos = todoItem ? todoItem.todos : [];
24968
+ }
24969
+ }
24970
+ removeTask(idx) {
24971
+ this.todos.splice(idx, 1);
24972
+ this.emitChange();
24973
+ }
24974
+ toggleDone(t) {
24975
+ t.done = !t.done;
24976
+ this.emitChange();
24977
+ }
24978
+ drop(event) {
24979
+ moveItemInArray(this.todos, event.previousIndex, event.currentIndex);
24980
+ this.emitChange();
24981
+ }
24982
+ emitChange(id) {
24983
+ if (!this.todoWidgets) {
24984
+ this.todoWidgets = [];
24985
+ }
24986
+ const currentIndex = this.todoWidgets.findIndex(item => item.id === id);
24987
+ if (currentIndex !== -1) {
24988
+ this.todoWidgets[currentIndex].todos = this.todos;
24989
+ }
24990
+ else {
24991
+ this._widgetConfig.todos = this.todos;
24992
+ this.todoWidgets.push(this._widgetConfig);
24993
+ }
24994
+ return this.userService.saveTodoWidget(this.todoWidgets).subscribe();
24995
+ }
24996
+ ngOnDestroy() {
24997
+ this.subscriptions.forEach((s) => s.unsubscribe());
24998
+ }
24999
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TodoWidgetComponent, deps: [{ token: i1.UserService }, { token: i2$5.WidgetGridRegistry }, { token: i1$3.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
25000
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TodoWidgetComponent, selector: "eo-todo-widget", inputs: { widgetConfig: "widgetConfig" }, ngImport: i0, template: "<div class=\"container\">\n\n <header>\n <div class=\"header-title\">\n @if (widgetConfig?.headline) {\n <div class=\"title\">{{ widgetConfig?.headline }}</div>\n }\n </div>\n </header>\n\n <main class=\"todos\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @if (todos.length > 0) {\n @for (t of todos; track $index) {\n <div class=\"todo\" cdkDrag [ngClass]=\"{done: t.done}\">\n <div class=\"dragHandle\" cdkDragHandle>\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\">\n <path\n d=\"M9 20q-.825 0-1.412-.587Q7 18.825 7 18q0-.825.588-1.413Q8.175 16 9 16t1.413.587Q11 17.175 11 18q0 .825-.587 1.413Q9.825 20 9 20Zm6 0q-.825 0-1.412-.587Q13 18.825 13 18q0-.825.588-1.413Q14.175 16 15 16t1.413.587Q17 17.175 17 18q0 .825-.587 1.413Q15.825 20 15 20Zm-6-6q-.825 0-1.412-.588Q7 12.825 7 12t.588-1.413Q8.175 10 9 10t1.413.587Q11 11.175 11 12q0 .825-.587 1.412Q9.825 14 9 14Zm6 0q-.825 0-1.412-.588Q13 12.825 13 12t.588-1.413Q14.175 10 15 10t1.413.587Q17 11.175 17 12q0 .825-.587 1.412Q15.825 14 15 14ZM9 8q-.825 0-1.412-.588Q7 6.825 7 6t.588-1.412Q8.175 4 9 4t1.413.588Q11 5.175 11 6t-.587 1.412Q9.825 8 9 8Zm6 0q-.825 0-1.412-.588Q13 6.825 13 6t.588-1.412Q14.175 4 15 4t1.413.588Q17 5.175 17 6t-.587 1.412Q15.825 8 15 8Z\"/>\n </svg>\n </div>\n <button class=\"checkbox\" (click)=\"toggleDone(t)\"></button>\n <div class=\"task\" (click)=\"toggleDone(t)\">{{ t.title }}</div>\n <button class=\"remove\" *ngIf=\"t.done\" (click)=\"removeTask($index)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"/>\n </svg>\n </button>\n </div>\n }\n } @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_task.svg', text: 'eo.workspace.widget.todo.noTasks'}\"></eo-error-message>\n </div>\n }\n </main>\n\n <footer>\n <form [formGroup]=\"addForm\">\n <eo-form-input tabindex=\"0\" [invalid]=\"addForm.dirty && addForm.get('task').invalid\"\n [label]=\"'eo.workspace.widget.todo.taskTitle' | translate\" [skipToggle]=\"true\">\n <eo-string [autofocus]=\"true\" [size]=\"'large'\" [maxlength]=\"50\" autocomplete=\"true\" (keyup.enter)=\"addTask()\"\n formControlName=\"task\"></eo-string>\n </eo-form-input>\n\n <button class=\"primary add\" [disabled]=\"!addForm.dirty\" (click)=\"addTask()\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7z\"/>\n </svg>\n </button>\n\n @if (addForm.dirty && addForm.get('task').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>\n eo.form.property.maxlength\n </div>\n }\n </form>\n </footer>\n</div>\n", styles: [":host .container{height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-columns:1fr;grid-template-areas:\"header\" \"main\" \"footer\";background:var(--panel-background);color:var(--text-color-body)}:host .container header{grid-area:header;grid-row:1;color:var(--text-color-body);display:grid;height:40px}:host .container header .header-title{background-color:var(--color-primary-2);display:flex;justify-content:space-between;align-items:center}:host .container header .title{text-align:center;flex-grow:1;justify-content:center}:host .container .todos{grid-area:main;grid-row:2;max-width:100%;min-height:60px;display:block;overflow-y:auto}:host .container .todos .todo{padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding);border-bottom:solid 1px var(--panel-divider-color);color:var(--text-color-body);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box}:host .container .todos .todo:last-child{border:none}:host .container .todos .todo.done .checkbox:after{content:\"\";width:50%;height:50%;background-color:var(--text-color-body);border-radius:50%}:host .container .todos .todo.done .task{text-decoration:line-through}:host .container .todos .todo .dragHandle{cursor:move}:host .container .todos .todo .remove{padding:0}:host .container .todos .todo .checkbox{border:2px solid var(--text-color-hint);width:24px;height:24px;margin:0 var(--app-pane-padding);padding:0;display:flex;align-items:center;justify-content:center}:host .container .todos .todo .task{flex:1;word-break:break-all;line-height:1.5em}:host .container .todos .empty{display:contents}:host .container footer{grid-area:footer;grid-row:3;display:flex}:host .container footer form{display:flex;flex:1;padding:calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 2);border-bottom:1px solid var(--panel-divider-color);background-color:var(--panel-divider-color);justify-content:space-between}:host .container footer form eo-form-input{flex:1;padding:calc(var(--app-pane-padding) / 4)}:host .container footer form .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .container footer form>button{display:flex;align-items:center;margin:calc(var(--app-pane-padding) / 4);border-radius:calc(var(--app-pane-padding) / 4)}:host .container footer form label{width:100%;color:var(--text-color-body);flex:1;align-items:center;display:flex}:host .container footer form label input{color:var(--text-color-body);border:0;flex:1;padding:.5em;background-color:var(--panel-background);margin:calc(var(--app-pane-padding) / 2);border-radius:2px;box-shadow:0 1px 3px #0003}:host .cdk-drag-placeholder{opacity:.5}:host .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}:host .todos.cdk-drop-list-dragging .todo:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "directive", type: i4$2.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: i4$2.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$2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
25001
+ };
25002
+ TodoWidgetComponent = __decorate([
25003
+ UntilDestroy()
25004
+ ], TodoWidgetComponent);
25005
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TodoWidgetComponent, decorators: [{
25006
+ type: Component,
25007
+ args: [{ selector: 'eo-todo-widget', template: "<div class=\"container\">\n\n <header>\n <div class=\"header-title\">\n @if (widgetConfig?.headline) {\n <div class=\"title\">{{ widgetConfig?.headline }}</div>\n }\n </div>\n </header>\n\n <main class=\"todos\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @if (todos.length > 0) {\n @for (t of todos; track $index) {\n <div class=\"todo\" cdkDrag [ngClass]=\"{done: t.done}\">\n <div class=\"dragHandle\" cdkDragHandle>\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\">\n <path\n d=\"M9 20q-.825 0-1.412-.587Q7 18.825 7 18q0-.825.588-1.413Q8.175 16 9 16t1.413.587Q11 17.175 11 18q0 .825-.587 1.413Q9.825 20 9 20Zm6 0q-.825 0-1.412-.587Q13 18.825 13 18q0-.825.588-1.413Q14.175 16 15 16t1.413.587Q17 17.175 17 18q0 .825-.587 1.413Q15.825 20 15 20Zm-6-6q-.825 0-1.412-.588Q7 12.825 7 12t.588-1.413Q8.175 10 9 10t1.413.587Q11 11.175 11 12q0 .825-.587 1.412Q9.825 14 9 14Zm6 0q-.825 0-1.412-.588Q13 12.825 13 12t.588-1.413Q14.175 10 15 10t1.413.587Q17 11.175 17 12q0 .825-.587 1.412Q15.825 14 15 14ZM9 8q-.825 0-1.412-.588Q7 6.825 7 6t.588-1.412Q8.175 4 9 4t1.413.588Q11 5.175 11 6t-.587 1.412Q9.825 8 9 8Zm6 0q-.825 0-1.412-.588Q13 6.825 13 6t.588-1.412Q14.175 4 15 4t1.413.588Q17 5.175 17 6t-.587 1.412Q15.825 8 15 8Z\"/>\n </svg>\n </div>\n <button class=\"checkbox\" (click)=\"toggleDone(t)\"></button>\n <div class=\"task\" (click)=\"toggleDone(t)\">{{ t.title }}</div>\n <button class=\"remove\" *ngIf=\"t.done\" (click)=\"removeTask($index)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"/>\n </svg>\n </button>\n </div>\n }\n } @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_task.svg', text: 'eo.workspace.widget.todo.noTasks'}\"></eo-error-message>\n </div>\n }\n </main>\n\n <footer>\n <form [formGroup]=\"addForm\">\n <eo-form-input tabindex=\"0\" [invalid]=\"addForm.dirty && addForm.get('task').invalid\"\n [label]=\"'eo.workspace.widget.todo.taskTitle' | translate\" [skipToggle]=\"true\">\n <eo-string [autofocus]=\"true\" [size]=\"'large'\" [maxlength]=\"50\" autocomplete=\"true\" (keyup.enter)=\"addTask()\"\n formControlName=\"task\"></eo-string>\n </eo-form-input>\n\n <button class=\"primary add\" [disabled]=\"!addForm.dirty\" (click)=\"addTask()\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7z\"/>\n </svg>\n </button>\n\n @if (addForm.dirty && addForm.get('task').invalid) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>\n eo.form.property.maxlength\n </div>\n }\n </form>\n </footer>\n</div>\n", styles: [":host .container{height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-columns:1fr;grid-template-areas:\"header\" \"main\" \"footer\";background:var(--panel-background);color:var(--text-color-body)}:host .container header{grid-area:header;grid-row:1;color:var(--text-color-body);display:grid;height:40px}:host .container header .header-title{background-color:var(--color-primary-2);display:flex;justify-content:space-between;align-items:center}:host .container header .title{text-align:center;flex-grow:1;justify-content:center}:host .container .todos{grid-area:main;grid-row:2;max-width:100%;min-height:60px;display:block;overflow-y:auto}:host .container .todos .todo{padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding);border-bottom:solid 1px var(--panel-divider-color);color:var(--text-color-body);display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box}:host .container .todos .todo:last-child{border:none}:host .container .todos .todo.done .checkbox:after{content:\"\";width:50%;height:50%;background-color:var(--text-color-body);border-radius:50%}:host .container .todos .todo.done .task{text-decoration:line-through}:host .container .todos .todo .dragHandle{cursor:move}:host .container .todos .todo .remove{padding:0}:host .container .todos .todo .checkbox{border:2px solid var(--text-color-hint);width:24px;height:24px;margin:0 var(--app-pane-padding);padding:0;display:flex;align-items:center;justify-content:center}:host .container .todos .todo .task{flex:1;word-break:break-all;line-height:1.5em}:host .container .todos .empty{display:contents}:host .container footer{grid-area:footer;grid-row:3;display:flex}:host .container footer form{display:flex;flex:1;padding:calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 2);border-bottom:1px solid var(--panel-divider-color);background-color:var(--panel-divider-color);justify-content:space-between}:host .container footer form eo-form-input{flex:1;padding:calc(var(--app-pane-padding) / 4)}:host .container footer form .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .container footer form>button{display:flex;align-items:center;margin:calc(var(--app-pane-padding) / 4);border-radius:calc(var(--app-pane-padding) / 4)}:host .container footer form label{width:100%;color:var(--text-color-body);flex:1;align-items:center;display:flex}:host .container footer form label input{color:var(--text-color-body);border:0;flex:1;padding:.5em;background-color:var(--panel-background);margin:calc(var(--app-pane-padding) / 2);border-radius:2px;box-shadow:0 1px 3px #0003}:host .cdk-drag-placeholder{opacity:.5}:host .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}:host .todos.cdk-drop-list-dragging .todo:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
25008
+ }], ctorParameters: () => [{ type: i1.UserService }, { type: i2$5.WidgetGridRegistry }, { type: i1$3.UntypedFormBuilder }], propDecorators: { widgetConfig: [{
25009
+ type: Input
25010
+ }] } });
25011
+
25012
+ let TodoSetupComponent = class TodoSetupComponent {
25013
+ set widgetConfig(wc) {
25014
+ this._widgetConfig = wc;
25015
+ this.setupForm.patchValue({
25016
+ headline: wc ? wc.headline : '',
25017
+ });
25018
+ }
25019
+ get widgetConfig() {
25020
+ return this._widgetConfig;
25021
+ }
25022
+ constructor(fb, widgetGridRegistry) {
25023
+ this.fb = fb;
25024
+ this.widgetGridRegistry = widgetGridRegistry;
25025
+ this.subscriptions = [];
25026
+ this.labels = {};
25027
+ this.widgetConfigChange = new EventEmitter();
25028
+ this.widgetConfigStateChange = new EventEmitter();
25029
+ this.setupForm = this.fb.group({
25030
+ headline: ['', [Validators.maxLength(50)]]
25031
+ });
25032
+ this.setupForm.valueChanges.pipe(debounceTime$1(1000), untilDestroyed(this)).subscribe((_) => {
25033
+ this.setWidgetConfig();
25034
+ this.setupForm.statusChanges.pipe(untilDestroyed(this)).subscribe((v) => {
25035
+ this.widgetConfigStateChange.emit(v);
25036
+ });
25037
+ });
25038
+ this.subscriptions.push(this.widgetGridRegistry.labels$.subscribe({
25039
+ next: (labels) => (this.labels = labels),
25040
+ }));
25041
+ }
25042
+ setWidgetConfig() {
25043
+ if (this.setupForm.valid) {
25044
+ this._widgetConfig = {
25045
+ id: this._widgetConfig?.id || WidgetGridUtils.uuid(),
25046
+ todos: this._widgetConfig?.todos || [],
25047
+ ...this.setupForm.value,
25048
+ };
25049
+ this.widgetConfigChange.emit(this._widgetConfig);
25050
+ }
25051
+ }
25052
+ ngOnInit() {
25053
+ this.setWidgetConfig();
25054
+ }
25055
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TodoSetupComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i2$5.WidgetGridRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
25056
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TodoSetupComponent, selector: "eo-todo-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input tabindex=\"0\" [label]=\"'eo.workspace.widget.setup.title' | translate\" [skipToggle]=\"true\">\n <eo-string autocomplete=\"true\" formControlName=\"headline\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('headline').errors) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>\n eo.form.property.maxlength\n </div>\n }\n </form>\n</div>\n<div class=\"preview\">\n <eo-todo-widget [widgetConfig]=\"widgetConfig\"></eo-todo-widget>\n</div>\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding);pointer-events:none}:host .preview eo-todo-widget{border:1px transparent var(--panel-divider-color)}:host .empty{background-color:var(--main-background);padding:var(--app-pane-padding)}\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: TodoWidgetComponent, selector: "eo-todo-widget", inputs: ["widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
25057
+ };
25058
+ TodoSetupComponent = __decorate([
25059
+ UntilDestroy()
25060
+ ], TodoSetupComponent);
25061
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TodoSetupComponent, decorators: [{
25062
+ type: Component,
25063
+ args: [{ selector: 'eo-todo-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input tabindex=\"0\" [label]=\"'eo.workspace.widget.setup.title' | translate\" [skipToggle]=\"true\">\n <eo-string autocomplete=\"true\" formControlName=\"headline\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('headline').errors) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>\n eo.form.property.maxlength\n </div>\n }\n </form>\n</div>\n<div class=\"preview\">\n <eo-todo-widget [widgetConfig]=\"widgetConfig\"></eo-todo-widget>\n</div>\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-bottom:var(--app-pane-padding)}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{grid-area:preview;overflow-y:auto;background-color:var(--main-background);padding:var(--app-pane-padding);pointer-events:none}:host .preview eo-todo-widget{border:1px transparent var(--panel-divider-color)}:host .empty{background-color:var(--main-background);padding:var(--app-pane-padding)}\n"] }]
25064
+ }], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i2$5.WidgetGridRegistry }], propDecorators: { widgetConfigChange: [{
25065
+ type: Output
25066
+ }], widgetConfigStateChange: [{
25067
+ type: Output
25068
+ }], widgetConfig: [{
25069
+ type: Input
25070
+ }] } });
25071
+
25072
+ class PictureWidgetComponent {
25073
+ constructor() {
25074
+ this.style = {};
25075
+ }
25076
+ set widgetConfig(c) {
25077
+ this.imageUri = c?.image || undefined;
25078
+ this.style['background-image'] = this.imageUri
25079
+ ? `url(${this.imageUri})`
25080
+ : 'none';
25081
+ }
25082
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PictureWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25083
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: PictureWidgetComponent, selector: "eo-picture-widget", inputs: { widgetConfig: "widgetConfig" }, ngImport: i0, template: "<div [ngStyle]=\"style\"></div>\n", styles: [":host{height:100%;width:100%;display:block}:host>div{max-width:100%;max-height:100%;width:100%;height:100%;background-size:contain;background-position:center;background-repeat:no-repeat}:host img{object-fit:cover}:host.wholeImage{display:inline-block;height:auto;width:auto}\n"], dependencies: [{ kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
25084
+ }
25085
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PictureWidgetComponent, decorators: [{
25086
+ type: Component,
25087
+ args: [{ selector: 'eo-picture-widget', template: "<div [ngStyle]=\"style\"></div>\n", styles: [":host{height:100%;width:100%;display:block}:host>div{max-width:100%;max-height:100%;width:100%;height:100%;background-size:contain;background-position:center;background-repeat:no-repeat}:host img{object-fit:cover}:host.wholeImage{display:inline-block;height:auto;width:auto}\n"] }]
25088
+ }], propDecorators: { widgetConfig: [{
25089
+ type: Input
25090
+ }] } });
25091
+
25092
+ class PictureWidgetSetupComponent {
25093
+ constructor() {
25094
+ this.widgetConfig = {
25095
+ image: undefined,
25096
+ };
25097
+ this.MAX_FILE_SIZE = 1048576;
25098
+ this.widgetConfigChange = new EventEmitter();
25099
+ }
25100
+ pick() {
25101
+ this.fileInputEl.nativeElement.click();
25102
+ }
25103
+ fileInputChangeListener(event) {
25104
+ const file = event.target.files[0];
25105
+ if (file) {
25106
+ this.fileName = file.name;
25107
+ if (!(file.type.includes('image/') && file.type.includes('jpeg') || file.type.includes('png'))) {
25108
+ this.errorType = 'image';
25109
+ this.showErrorDialog = true;
25110
+ }
25111
+ else if (file.size > this.MAX_FILE_SIZE) {
25112
+ this.errorType = 'size';
25113
+ this.showErrorDialog = true;
25114
+ }
25115
+ else {
25116
+ const reader = new FileReader();
25117
+ reader.onload = () => {
25118
+ this.widgetConfig = { image: reader.result };
25119
+ this.widgetConfigChange.emit(this.widgetConfig);
25120
+ };
25121
+ reader.readAsDataURL(file);
25122
+ }
25123
+ }
25124
+ }
25125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PictureWidgetSetupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25126
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: PictureWidgetSetupComponent, selector: "eo-picture-widget-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange" }, viewQueries: [{ propertyName: "fileInputEl", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"setup\">\n <button class=\"primary\" (click)=\"pick(); $event.target.value = null\">\n <input type=\"file\" accept=\"image/*\" #fileInput (change)=\"fileInputChangeListener($event)\">\n <eo-icon class=\"button sync-tab-btn\" [iconSrc]=\"'assets/_default/svg/ic_photo_library.svg'\"\n [iconTitle]=\"'eo.workspace.widget.picture.tooltip' | translate\"></eo-icon>\n </button>\n</div>\n<div class=\"preview\">\n <eo-picture-widget [widgetConfig]=\"widgetConfig\"></eo-picture-widget>\n</div>\n\n<eo-dialog [title]=\"'eo.workspace.widget.picture.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>\n <p>{{ fileName }}</p>\n @if (errorType === 'size') {\n <p translate>eo.workspace.widget.picture.dialog.sizeError</p>\n }\n @if (errorType === 'image') {\n <p translate>eo.state.settings.details.upload.dialog.fileError </p>\n }\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel\n </button>\n <button type=\"button\" (click)=\"pick(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back\n </button>\n </div>\n</eo-dialog>\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{display:flex;grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color);justify-content:center;align-items:center;height:100%;width:100%}:host .setup input[type=file]{display:none}:host .setup .primary{display:flex;height:5cm;align-content:center;align-items:center;width:5cm;justify-content:center}:host .setup .primary eo-icon{--eoSvgIcon-size: 100px}:host .preview{grid-area:preview;background-color:var(--panel-background);padding:var(--app-pane-padding);pointer-events:none;display:flex;align-items:center;justify-content:center}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: PictureWidgetComponent, selector: "eo-picture-widget", inputs: ["widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
25127
+ }
25128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PictureWidgetSetupComponent, decorators: [{
25129
+ type: Component,
25130
+ args: [{ selector: 'eo-picture-widget-setup', template: "<div class=\"setup\">\n <button class=\"primary\" (click)=\"pick(); $event.target.value = null\">\n <input type=\"file\" accept=\"image/*\" #fileInput (change)=\"fileInputChangeListener($event)\">\n <eo-icon class=\"button sync-tab-btn\" [iconSrc]=\"'assets/_default/svg/ic_photo_library.svg'\"\n [iconTitle]=\"'eo.workspace.widget.picture.tooltip' | translate\"></eo-icon>\n </button>\n</div>\n<div class=\"preview\">\n <eo-picture-widget [widgetConfig]=\"widgetConfig\"></eo-picture-widget>\n</div>\n\n<eo-dialog [title]=\"'eo.workspace.widget.picture.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>\n <p>{{ fileName }}</p>\n @if (errorType === 'size') {\n <p translate>eo.workspace.widget.picture.dialog.sizeError</p>\n }\n @if (errorType === 'image') {\n <p translate>eo.state.settings.details.upload.dialog.fileError </p>\n }\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.state.settings.details.delete.dialog.cancel\n </button>\n <button type=\"button\" (click)=\"pick(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back\n </button>\n </div>\n</eo-dialog>\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{display:flex;grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color);justify-content:center;align-items:center;height:100%;width:100%}:host .setup input[type=file]{display:none}:host .setup .primary{display:flex;height:5cm;align-content:center;align-items:center;width:5cm;justify-content:center}:host .setup .primary eo-icon{--eoSvgIcon-size: 100px}:host .preview{grid-area:preview;background-color:var(--panel-background);padding:var(--app-pane-padding);pointer-events:none;display:flex;align-items:center;justify-content:center}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
25131
+ }], ctorParameters: () => [], propDecorators: { fileInputEl: [{
25132
+ type: ViewChild,
25133
+ args: ['fileInput']
25134
+ }], widgetConfig: [{
25135
+ type: Input
25136
+ }], widgetConfigChange: [{
25137
+ type: Output
25138
+ }] } });
25139
+
25140
+ let DashboardComponent = class DashboardComponent {
25141
+ constructor(userService, widgetGridRegistry, titleService, http, config, storageService, translate, pendingChanges) {
24809
25142
  this.userService = userService;
24810
25143
  this.widgetGridRegistry = widgetGridRegistry;
24811
25144
  this.titleService = titleService;
24812
- this.router = router;
24813
25145
  this.http = http;
24814
25146
  this.config = config;
24815
25147
  this.storageService = storageService;
24816
25148
  this.translate = translate;
24817
- this.capabilityService = capabilityService;
24818
- this.storedQueriesService = storedQueriesService;
24819
25149
  this.pendingChanges = pendingChanges;
24820
25150
  this.workspaceOptions = {
24821
25151
  gridConfig: {
@@ -24824,8 +25154,6 @@ let DashboardComponent = class DashboardComponent {
24824
25154
  newItemHeight: 5
24825
25155
  }
24826
25156
  };
24827
- this.storedQueries = [];
24828
- this.tree = {};
24829
25157
  this.STORAGE_KEY = 'eo.client.dashboard.currentWorkspace';
24830
25158
  this.pendingTaskID = '';
24831
25159
  this.titleService.setDefaultTitle();
@@ -24879,7 +25207,7 @@ let DashboardComponent = class DashboardComponent {
24879
25207
  {
24880
25208
  name: 'yuv.widget.todo',
24881
25209
  label: this.translate.instant('eo.workspace.widgetGrid.widgetTodoHeadlineLabel'),
24882
- setupComponent: TodoWidgetSetupComponent,
25210
+ setupComponent: TodoSetupComponent,
24883
25211
  widgetComponent: TodoWidgetComponent,
24884
25212
  },
24885
25213
  {
@@ -24931,46 +25259,9 @@ let DashboardComponent = class DashboardComponent {
24931
25259
  }
24932
25260
  ].sort(Utils.sortValues('label')));
24933
25261
  }
24934
- selectStoredQuery(q) {
24935
- this.selectedQuery = q;
24936
- }
24937
- // user changed input of quickSearch component
24938
- onQuickSearchInputChange(term) {
24939
- this.quickSearchResult = null;
24940
- }
24941
- // quickSearch component is returning results
24942
- onQuickSearchResult(result) {
24943
- this.quickSearchResult = result;
24944
- Object.keys(this.quickSearchResult.groups).map(key => (this.tree[key] = this.getTreeNodes(key)));
24945
- }
24946
- onStoredQueryLoaded() {
24947
- this.selectStoredQuery(null);
24948
- this.router.navigate([{ outlets: { modal: 'search' } }]);
24949
- }
24950
- onStoredQueryExecute(evt) {
24951
- this.selectStoredQuery(null);
24952
- const uriParam = encodeURIComponent(JSON.stringify(evt.queryJson));
24953
- const uriParamQuery = { queryParams: { 'query': uriParam } };
24954
- this.router.navigate(['/result'], uriParamQuery);
24955
- }
24956
- getTreeNodes(key) {
24957
- return this.quickSearchResult.groups[key].map(group => ({
24958
- id: group.data.id,
24959
- name: group.label,
24960
- selectable: true,
24961
- data: group.data,
24962
- badges: [{ value: group.count }]
24963
- }));
24964
- }
24965
25262
  ngOnInit() {
24966
25263
  this.loadWorkspacesConfig();
24967
25264
  this.registerWidgets();
24968
- this.capabilities = this.capabilityService.getCapabilities();
24969
- if (this.capabilities.storedqueries) {
24970
- this.storedQueriesService.getStoredQueries$()
24971
- .pipe(untilDestroyed(this))
24972
- .subscribe(queriesSubscription => this.storedQueries = queriesSubscription.queries.filter(q => q.favorite).sort(Utils.sortValues('name')));
24973
- }
24974
25265
  }
24975
25266
  ngAfterViewInit() {
24976
25267
  setTimeout(() => {
@@ -25052,8 +25343,8 @@ let DashboardComponent = class DashboardComponent {
25052
25343
  this.pendingChanges.finishTask(this.pendingTaskID);
25053
25344
  }
25054
25345
  }
25055
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.UserService }, { token: i2$5.WidgetGridRegistry }, { token: PageTitleService }, { token: i2$1.Router }, { token: i2.HttpClient }, { token: i1.Config }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: i1.CapabilitiesService }, { token: i1.StoredQueriesService }, { token: PendingChangesService }], target: i0.ɵɵFactoryTarget.Component }); }
25056
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: DashboardComponent, selector: "eo-dashboard", host: { listeners: { "window:keyup": "onKey($event)" } }, viewQueries: [{ propertyName: "quickSearchEl", first: true, predicate: ["quickSearch"], descendants: true }], ngImport: i0, template: "<ng-container>\n <div class=\"fade\"></div>\n <div class=\"dashboard\" [style.background-image]=\"backgroundImage\">\n <div class=\"footerButton\" eoRtlAware=\"full\">\n <eo-icon id=\"dashboardButton\" [iconSrc]=\"toolbarIconSrc\" [iconTitle]=\"toolbarIconTooltip | translate\"></eo-icon>\n </div>\n <yuv-widget-grid-workspaces *ngIf=\"workspaceConfig\"\n [workspaceLabelMaxLength]=\"50\"\n [workspaceConfig]=\"workspaceConfig\"\n (configChange)=\"onWorkspacesConfigChange($event)\" (editModeChange)=\"onWorkspaceEditMode($event)\" [options]=\"workspaceOptions\">\n </yuv-widget-grid-workspaces>\n </div>\n</ng-container>\n", styles: [".fade{position:absolute;opacity:.3;left:0;right:0;top:0;z-index:1;height:500px;background:linear-gradient(to bottom,rgba(var(--color-black-rgb),1) 0,transparent 100%)}.dashboard{position:absolute;inset:0;background-size:cover;background-position:center center}.footerButton{position:absolute;z-index:1000;bottom:10px;cursor:pointer;right:5px}.footerButton.rtl{left:5px;right:unset}.footerButton:hover{color:var(--list-item-hover-background)}.footerButton:hover eo-icon{background-color:var(--list-item-hover-background)}.footerButton #dashboardButton{color:var(--text-color-caption)}::ng-deep .cds--cc--title p.title,::ng-deep .yuv-widget-headline{font-size:var(--font-body);font-weight:700;color:var(--text-color-caption);font-style:italic;margin:0;padding:0}::ng-deep svg{width:24px;height:24px}::ng-deep .legend-item svg{width:11px;height:11px}::ng-deep yuv-widget-grid{top:60px;height:92%!important;--color-admin-primary: var(--color-primary)}::ng-deep yuv-widget-grid.editMode gridster-item{outline:2px dotted var(--color-admin-primary);border-radius:2px}::ng-deep yuv-widget-grid-workspaces{background-size:cover;background-position:center center}::ng-deep yuv-widget-grid-workspaces>.confirm{align-items:center!important;justify-content:center!important}::ng-deep yuv-widget-grid-workspaces>.toolbar{padding-inline-end:36px!important;background-color:#d3d3d380!important}::ng-deep yuv-widget-grid-workspaces>.toolbar>.workspace-edit input{position:relative;left:6px;width:230px}::ng-deep yuv-widget-grid-workspaces yuv-picture-widget{box-sizing:border-box}::ng-deep gridster{background:none!important}::ng-deep gridster gridster-item:has(yuv-todo-widget),::ng-deep gridster gridster-item:has(yuv-picture-widget){border:1px solid var(--panel-divider-color)}::ng-deep gridster gridster-item:has(yuv-picture-widget){box-shadow:0 0 10px #0003}::ng-deep gridster .yuv-widget{border:1px solid var(--panel-divider-color)}::ng-deep gridster .gridster-row,::ng-deep gridster .gridster-column{border-color:#0003}.dark ::ng-deep gridster .gridster-row,.dark ::ng-deep gridster .gridster-column{border-color:var(--panel-divider-color)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i2$5.WidgetGridWorkspacesComponent, selector: "yuv-widget-grid-workspaces", inputs: ["options", "workspaceConfig", "preventAdd", "workspaceLabelMaxLength"], outputs: ["configChange", "gridItemEvent", "editModeChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], animations: [
25346
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.UserService }, { token: i2$5.WidgetGridRegistry }, { token: PageTitleService }, { token: i2.HttpClient }, { token: i1.Config }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: PendingChangesService }], target: i0.ɵɵFactoryTarget.Component }); }
25347
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: DashboardComponent, selector: "eo-dashboard", ngImport: i0, template: "<ng-container>\n <div class=\"fade\"></div>\n <div class=\"dashboard\" [style.background-image]=\"backgroundImage\">\n <div class=\"footerButton\" eoRtlAware=\"full\">\n <eo-icon id=\"dashboardButton\" [iconSrc]=\"toolbarIconSrc\" [iconTitle]=\"toolbarIconTooltip | translate\"></eo-icon>\n </div>\n <yuv-widget-grid-workspaces *ngIf=\"workspaceConfig\"\n [workspaceLabelMaxLength]=\"50\"\n [workspaceConfig]=\"workspaceConfig\"\n (configChange)=\"onWorkspacesConfigChange($event)\" (editModeChange)=\"onWorkspaceEditMode($event)\" [options]=\"workspaceOptions\">\n </yuv-widget-grid-workspaces>\n </div>\n</ng-container>\n", styles: [".fade{position:absolute;opacity:.3;left:0;right:0;top:0;z-index:1;height:500px;background:linear-gradient(to bottom,rgba(var(--color-black-rgb),1) 0,transparent 100%)}.dashboard{position:absolute;inset:0;background-size:cover;background-position:center center}.footerButton{position:absolute;z-index:1000;bottom:10px;cursor:pointer;right:5px}.footerButton.rtl{left:5px;right:unset}.footerButton:hover{color:var(--list-item-hover-background)}.footerButton:hover eo-icon{background-color:var(--list-item-hover-background)}.footerButton #dashboardButton{color:var(--text-color-caption)}::ng-deep .cds--cc--title p.title,::ng-deep .yuv-widget-headline{font-size:var(--font-body);font-weight:700;color:var(--text-color-caption);font-style:italic;margin:0;padding:0}::ng-deep svg{width:24px;height:24px}::ng-deep .legend-item svg{width:11px;height:11px}::ng-deep yuv-widget-grid{top:60px;height:92%!important;--color-admin-primary: var(--color-primary)}::ng-deep yuv-widget-grid.editMode gridster-item{outline:2px dotted var(--color-admin-primary);border-radius:2px}::ng-deep yuv-widget-grid-workspaces{background-size:cover;background-position:center center}::ng-deep yuv-widget-grid-workspaces>.confirm{align-items:center!important;justify-content:center!important}::ng-deep yuv-widget-grid-workspaces>.toolbar{padding-inline-end:36px!important;background-color:#d3d3d380!important}::ng-deep yuv-widget-grid-workspaces>.toolbar>.workspace-edit input{position:relative;left:6px;width:230px}::ng-deep yuv-widget-grid-workspaces yuv-picture-widget{box-sizing:border-box}::ng-deep gridster{background:none!important}::ng-deep gridster gridster-item:has(yuv-todo-widget),::ng-deep gridster gridster-item:has(yuv-picture-widget){border:1px solid var(--panel-divider-color)}::ng-deep gridster gridster-item:has(yuv-picture-widget){box-shadow:0 0 10px #0003}::ng-deep gridster .yuv-widget{border:1px solid var(--panel-divider-color)}::ng-deep gridster .gridster-row,::ng-deep gridster .gridster-column{border-color:#0003}.dark ::ng-deep gridster .gridster-row,.dark ::ng-deep gridster .gridster-column{border-color:var(--panel-divider-color)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i2$5.WidgetGridWorkspacesComponent, selector: "yuv-widget-grid-workspaces", inputs: ["options", "workspaceConfig", "preventAdd", "workspaceLabelMaxLength"], outputs: ["configChange", "gridItemEvent", "editModeChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], animations: [
25057
25348
  listAnimation
25058
25349
  ] }); }
25059
25350
  };
@@ -25065,13 +25356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
25065
25356
  args: [{ selector: 'eo-dashboard', animations: [
25066
25357
  listAnimation
25067
25358
  ], template: "<ng-container>\n <div class=\"fade\"></div>\n <div class=\"dashboard\" [style.background-image]=\"backgroundImage\">\n <div class=\"footerButton\" eoRtlAware=\"full\">\n <eo-icon id=\"dashboardButton\" [iconSrc]=\"toolbarIconSrc\" [iconTitle]=\"toolbarIconTooltip | translate\"></eo-icon>\n </div>\n <yuv-widget-grid-workspaces *ngIf=\"workspaceConfig\"\n [workspaceLabelMaxLength]=\"50\"\n [workspaceConfig]=\"workspaceConfig\"\n (configChange)=\"onWorkspacesConfigChange($event)\" (editModeChange)=\"onWorkspaceEditMode($event)\" [options]=\"workspaceOptions\">\n </yuv-widget-grid-workspaces>\n </div>\n</ng-container>\n", styles: [".fade{position:absolute;opacity:.3;left:0;right:0;top:0;z-index:1;height:500px;background:linear-gradient(to bottom,rgba(var(--color-black-rgb),1) 0,transparent 100%)}.dashboard{position:absolute;inset:0;background-size:cover;background-position:center center}.footerButton{position:absolute;z-index:1000;bottom:10px;cursor:pointer;right:5px}.footerButton.rtl{left:5px;right:unset}.footerButton:hover{color:var(--list-item-hover-background)}.footerButton:hover eo-icon{background-color:var(--list-item-hover-background)}.footerButton #dashboardButton{color:var(--text-color-caption)}::ng-deep .cds--cc--title p.title,::ng-deep .yuv-widget-headline{font-size:var(--font-body);font-weight:700;color:var(--text-color-caption);font-style:italic;margin:0;padding:0}::ng-deep svg{width:24px;height:24px}::ng-deep .legend-item svg{width:11px;height:11px}::ng-deep yuv-widget-grid{top:60px;height:92%!important;--color-admin-primary: var(--color-primary)}::ng-deep yuv-widget-grid.editMode gridster-item{outline:2px dotted var(--color-admin-primary);border-radius:2px}::ng-deep yuv-widget-grid-workspaces{background-size:cover;background-position:center center}::ng-deep yuv-widget-grid-workspaces>.confirm{align-items:center!important;justify-content:center!important}::ng-deep yuv-widget-grid-workspaces>.toolbar{padding-inline-end:36px!important;background-color:#d3d3d380!important}::ng-deep yuv-widget-grid-workspaces>.toolbar>.workspace-edit input{position:relative;left:6px;width:230px}::ng-deep yuv-widget-grid-workspaces yuv-picture-widget{box-sizing:border-box}::ng-deep gridster{background:none!important}::ng-deep gridster gridster-item:has(yuv-todo-widget),::ng-deep gridster gridster-item:has(yuv-picture-widget){border:1px solid var(--panel-divider-color)}::ng-deep gridster gridster-item:has(yuv-picture-widget){box-shadow:0 0 10px #0003}::ng-deep gridster .yuv-widget{border:1px solid var(--panel-divider-color)}::ng-deep gridster .gridster-row,::ng-deep gridster .gridster-column{border-color:#0003}.dark ::ng-deep gridster .gridster-row,.dark ::ng-deep gridster .gridster-column{border-color:var(--panel-divider-color)}\n"] }]
25068
- }], ctorParameters: () => [{ type: i1.UserService }, { type: i2$5.WidgetGridRegistry }, { type: PageTitleService }, { type: i2$1.Router }, { type: i2.HttpClient }, { type: i1.Config }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: i1.CapabilitiesService }, { type: i1.StoredQueriesService }, { type: PendingChangesService }], propDecorators: { quickSearchEl: [{
25069
- type: ViewChild,
25070
- args: ['quickSearch']
25071
- }], onKey: [{
25072
- type: HostListener,
25073
- args: ['window:keyup', ['$event']]
25074
- }] } });
25359
+ }], ctorParameters: () => [{ type: i1.UserService }, { type: i2$5.WidgetGridRegistry }, { type: PageTitleService }, { type: i2.HttpClient }, { type: i1.Config }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: PendingChangesService }] });
25075
25360
 
25076
25361
  let SettingsComponent = class SettingsComponent {
25077
25362
  constructor(renderer, userService, config, notify, systemService, eventService, capabilitiesService, titleService, agentService, fb, cacheService, storageService, translate, elemRef, notification) {
@@ -26720,6 +27005,22 @@ let InboxStateComponent = class InboxStateComponent {
26720
27005
  setTimeout(() => this.eoGrid.selectRow(lastInboxItemID), 500);
26721
27006
  }
26722
27007
  });
27008
+ this.eventService
27009
+ .on(EnaioEvent.INBOX_ITEM_LOCKED)
27010
+ .pipe(untilDestroyed(this))
27011
+ .subscribe(() => {
27012
+ const lastInboxItemID = this.storageService.getItem(this.storageKeyLastItemID);
27013
+ this.gridData.find(i => i.id === lastInboxItemID).accepted = true;
27014
+ this.eoGrid.api.redrawRows();
27015
+ });
27016
+ this.eventService
27017
+ .on(EnaioEvent.INBOX_ITEM_UNLOCKED)
27018
+ .pipe(untilDestroyed(this))
27019
+ .subscribe(() => {
27020
+ const lastInboxItemID = this.storageService.getItem(this.storageKeyLastItemID);
27021
+ this.gridData.find(i => i.id === lastInboxItemID).accepted = false;
27022
+ this.eoGrid.api.redrawRows();
27023
+ });
26723
27024
  }
26724
27025
  ngOnDestroy() {
26725
27026
  this.selection.clear();
@@ -27475,13 +27776,17 @@ class EoClientModule {
27475
27776
  SearchWidgetComponent,
27476
27777
  SafeUrlPipe,
27477
27778
  LastEditedAndCreatedComponent,
27779
+ LastEditedAndCreatedSetupComponent,
27478
27780
  HitlistSetupComponent,
27479
27781
  HitlistWidgetComponent,
27480
27782
  ChartsWidgetComponent,
27481
27783
  ChartsSetupComponent,
27482
27784
  CountObjectsWidgetComponent,
27483
27785
  CountObjectsSetupComponent,
27484
- LastEditedAndCreatedSetupComponent], imports: [CommonModule,
27786
+ TodoWidgetComponent,
27787
+ TodoSetupComponent,
27788
+ PictureWidgetComponent,
27789
+ PictureWidgetSetupComponent], imports: [CommonModule,
27485
27790
  FormsModule,
27486
27791
  ReactiveFormsModule,
27487
27792
  ObjectStateModule,
@@ -27496,7 +27801,8 @@ class EoClientModule {
27496
27801
  YvcDropdownModule,
27497
27802
  YuvWidgetGridModule,
27498
27803
  HttpClientModule,
27499
- ChartsModule], exports: [RouterModule, EoFrameworkModule] }); }
27804
+ ChartsModule,
27805
+ DragDropModule], exports: [RouterModule, EoFrameworkModule] }); }
27500
27806
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EoClientModule, imports: [CommonModule,
27501
27807
  FormsModule,
27502
27808
  ReactiveFormsModule,
@@ -27512,7 +27818,8 @@ class EoClientModule {
27512
27818
  YvcDropdownModule,
27513
27819
  YuvWidgetGridModule,
27514
27820
  HttpClientModule,
27515
- ChartsModule, RouterModule, EoFrameworkModule] }); }
27821
+ ChartsModule,
27822
+ DragDropModule, RouterModule, EoFrameworkModule] }); }
27516
27823
  }
27517
27824
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EoClientModule, decorators: [{
27518
27825
  type: NgModule,
@@ -27533,7 +27840,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
27533
27840
  YvcDropdownModule,
27534
27841
  YuvWidgetGridModule,
27535
27842
  HttpClientModule,
27536
- ChartsModule
27843
+ ChartsModule,
27844
+ DragDropModule,
27537
27845
  ],
27538
27846
  declarations: [
27539
27847
  DashboardComponent,
@@ -27556,13 +27864,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
27556
27864
  SearchWidgetComponent,
27557
27865
  SafeUrlPipe,
27558
27866
  LastEditedAndCreatedComponent,
27867
+ LastEditedAndCreatedSetupComponent,
27559
27868
  HitlistSetupComponent,
27560
27869
  HitlistWidgetComponent,
27561
27870
  ChartsWidgetComponent,
27562
27871
  ChartsSetupComponent,
27563
27872
  CountObjectsWidgetComponent,
27564
27873
  CountObjectsSetupComponent,
27565
- LastEditedAndCreatedSetupComponent
27874
+ TodoWidgetComponent,
27875
+ TodoSetupComponent,
27876
+ PictureWidgetComponent,
27877
+ PictureWidgetSetupComponent
27566
27878
  ],
27567
27879
  exports: [RouterModule, EoFrameworkModule]
27568
27880
  }]