ontimize-web-ngx 15.0.0-beta.4 → 15.0.0-beta.5

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 (27) hide show
  1. package/esm2020/lib/components/form/o-form.component.mjs +11 -2
  2. package/esm2020/lib/components/grid/o-grid.component.mjs +11 -1
  3. package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +3 -3
  4. package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
  5. package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +2 -18
  6. package/esm2020/lib/components/input/o-form-service-component.class.mjs +7 -9
  7. package/esm2020/lib/components/o-service-component.class.mjs +3 -6
  8. package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +26 -4
  9. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +20 -4
  10. package/esm2020/lib/components/table/o-table.component.mjs +4 -1
  11. package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -1
  12. package/esm2020/lib/i18n/i18n.mjs +12 -6
  13. package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
  14. package/fesm2015/ontimize-web-ngx.mjs +95 -47
  15. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  16. package/fesm2020/ontimize-web-ngx.mjs +95 -47
  17. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  18. package/lib/components/form/o-form.component.d.ts +4 -1
  19. package/lib/components/grid/o-grid.component.d.ts +1 -0
  20. package/lib/components/input/file-input/o-file-input.component.d.ts +1 -1
  21. package/lib/components/table/extensions/header/table-menu/o-table-menu.component.d.ts +5 -0
  22. package/lib/components/table/o-table.component.d.ts +1 -1
  23. package/lib/i18n/i18n.d.ts +6 -0
  24. package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +1 -0
  25. package/package.json +1 -1
  26. package/theme.scss +71 -71
  27. package/theming/styles/ontimize-v8/o-form-field-style.scss +6 -3
@@ -1312,7 +1312,9 @@ const MAP = {
1312
1312
  'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER': 'Clear filter',
1313
1313
  'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': 'This action will clear every filter on this section. Are you sure you want to continue?',
1314
1314
  'OIMAGE.TEXT.DROP&DRAG': 'Drag and drop image file here',
1315
- 'OIMAGE.BUTTON.BROWSEFILE': 'Select image'
1315
+ 'OIMAGE.BUTTON.BROWSEFILE': 'Select image',
1316
+ 'REPORT.COLUMN.TRUEVALUE': 'Yes',
1317
+ 'REPORT.COLUMN.FALSEVALUE': 'No'
1316
1318
  },
1317
1319
  es: {
1318
1320
  'LANGUAGE': 'Idioma',
@@ -1568,7 +1570,7 @@ const MAP = {
1568
1570
  'TABLE.BUTTONS.GROUPBY': 'Agrupar por',
1569
1571
  'TABLE.BUTTONS.CHART_ON_DEMAND': 'Gráficas a la carta',
1570
1572
  'TABLE.DIALOG.TITLE_GROUPBY': 'Agrupar / desagrupar por columnas',
1571
- 'TABLE_GROUP_BY_COLUMNS_DIALOG.DESCRIPTION': 'Arrastre y suelte de la izquierda (Columnas disponibles) a la derecha (Columnas agrupadas). Reordena las columnas agrupadas si fuera necesario',
1573
+ 'TABLE_GROUP_BY_COLUMNS_DIALOG.DESCRIPTION': 'Arrastre y suelte de la izquierda (Columnas disponibles) a la derecha (Columnas agrupadas). Reordene las columnas agrupadas si fuera necesario',
1572
1574
  'TABLE_GROUP_BY_COLUMNS_DIALOG.ALL_COLUMNS': 'Columnas disponibles',
1573
1575
  'TABLE_GROUP_BY_COLUMNS_DIALOG.GROUPED_COLUMNS': 'Columnas agrupadas',
1574
1576
  'DUAL_LIST_SELECTOR.DROP_EMPTY_MESSAGE': 'Arrastre aquí para establecer las columnas agrupadas',
@@ -1576,7 +1578,7 @@ const MAP = {
1576
1578
  'TABLE.VISIBLE_COLUMNS_DIALOG.VALUE_FILTER_WARN': '<li>Filtrado de columna</li>',
1577
1579
  'TABLE.VISIBLE_COLUMNS_DIALOG.SORT_WARN': '<li>Ordenación por columna</li>',
1578
1580
  'TABLE.VISIBLE_COLUMNS_DIALOG.GROUPING_WARN': '<li>Agrupamento por coluna</li>',
1579
- 'TABLE.VISIBLE_COLUMNS.DESCRIPTION': 'Haz click sobre el icono para ocultar/mostrar la columna. Utilice arrastrar y soltar para modificar el orden de las columnas.',
1581
+ 'TABLE.VISIBLE_COLUMNS.DESCRIPTION': 'Haga click sobre el icono para ocultar/mostrar la columna. Utilice arrastrar y soltar para modificar el orden de las columnas.',
1580
1582
  'APP_LAYOUT.SETTINGS': 'Configuración',
1581
1583
  'AGGREGATE_NAME.count': 'Count',
1582
1584
  'AGGREGATE_NAME.min': 'Min',
@@ -1595,7 +1597,9 @@ const MAP = {
1595
1597
  'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER': 'Limpiar filtro',
1596
1598
  'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': 'Esta acción limpiará todos los filtros de esta sección. ¿Desea continuar?',
1597
1599
  'OIMAGE.TEXT.DROP&DRAG': 'Arrastra y suelta la imagen aquí',
1598
- 'OIMAGE.BUTTON.BROWSEFILE': 'Seleccionar imagen'
1600
+ 'OIMAGE.BUTTON.BROWSEFILE': 'Seleccionar imagen',
1601
+ 'REPORT.COLUMN.TRUEVALUE': 'Si',
1602
+ 'REPORT.COLUMN.FALSEVALUE': 'No'
1599
1603
  },
1600
1604
  pt: {
1601
1605
  'LANGUAGE': 'Idioma',
@@ -1866,7 +1870,9 @@ const MAP = {
1866
1870
  'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER': 'Filtro limpo',
1867
1871
  'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER': 'Esta ação limpará todos os filtros nesta seção. Você tem certeza que quer continuar?',
1868
1872
  'OIMAGE.TEXT.DROP&DRAG': 'Arraste e solte a imagem aqui',
1869
- 'OIMAGE.BUTTON.BROWSEFILE': 'Selecione uma imagem'
1873
+ 'OIMAGE.BUTTON.BROWSEFILE': 'Selecione uma imagem',
1874
+ 'REPORT.COLUMN.TRUEVALUE': 'Sim',
1875
+ 'REPORT.COLUMN.FALSEVALUE': 'Não'
1870
1876
  }
1871
1877
  };
1872
1878
 
@@ -5306,6 +5312,9 @@ class OMatErrorDirective {
5306
5312
  this.viewContainer = viewContainer;
5307
5313
  this.injector = injector;
5308
5314
  this.errorOptions = ErrorsUtils.getErrorOptions(this.injector);
5315
+ if (this.errorOptions.type === Codes.O_MAT_ERROR_LITE) {
5316
+ this.element.nativeElement.hidden = true;
5317
+ }
5309
5318
  }
5310
5319
  set oMatError(val) {
5311
5320
  if (val) {
@@ -7843,6 +7852,9 @@ const DEFAULT_OUTPUTS_O_FORM = [
7843
7852
  'beforeCloseDetail',
7844
7853
  'beforeGoEditMode',
7845
7854
  'onFormModeChange',
7855
+ 'onBeforeInsert',
7856
+ 'onBeforeUpdate',
7857
+ 'onBeforeDelete',
7846
7858
  'onInsert',
7847
7859
  'onUpdate',
7848
7860
  'onDelete',
@@ -7922,6 +7934,9 @@ class OFormComponent {
7922
7934
  this.onUpdateMode = new EventEmitter();
7923
7935
  this.onInitialMode = new EventEmitter();
7924
7936
  this.onFormModeChange = new EventEmitter();
7937
+ this.onBeforeInsert = new EventEmitter();
7938
+ this.onBeforeUpdate = new EventEmitter();
7939
+ this.onBeforeDelete = new EventEmitter();
7925
7940
  this.onInsert = new EventEmitter();
7926
7941
  this.onUpdate = new EventEmitter();
7927
7942
  this.onDelete = new EventEmitter();
@@ -8426,6 +8441,7 @@ class OFormComponent {
8426
8441
  const self = this;
8427
8442
  const values = this.getAttributesValuesToInsert();
8428
8443
  const sqlTypes = this.getAttributesSQLTypes();
8444
+ this.onBeforeInsert.emit(values);
8429
8445
  this.insertData(values, sqlTypes).subscribe(resp => {
8430
8446
  self.postCorrectInsert(resp);
8431
8447
  self.formCache.setCacheSnapshot();
@@ -8473,6 +8489,7 @@ class OFormComponent {
8473
8489
  this.dialogService.alert('INFO', this._messageService.getNothingToUpdateMessage());
8474
8490
  return;
8475
8491
  }
8492
+ this.onBeforeUpdate.emit(values);
8476
8493
  this.updateData(filter, values, sqlTypes).subscribe(resp => {
8477
8494
  self.postCorrectUpdate(resp);
8478
8495
  self.formCache.setCacheSnapshot();
@@ -8493,6 +8510,7 @@ class OFormComponent {
8493
8510
  }
8494
8511
  delete() {
8495
8512
  const filter = this.getKeysValues();
8513
+ this.onBeforeDelete.emit(filter);
8496
8514
  return this.deleteData(filter);
8497
8515
  }
8498
8516
  queryData(filter) {
@@ -9070,7 +9088,7 @@ class OFormComponent {
9070
9088
  OFormComponent.DEFAULT_LAYOUT_DIRECTION = 'column';
9071
9089
  OFormComponent.guardClassName = 'CanDeactivateFormGuard';
9072
9090
  OFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
9073
- OFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormComponent, selector: "o-form", inputs: { showHeader: ["show-header", "showHeader"], headerMode: ["header-mode", "headerMode"], headerPosition: ["header-position", "headerPosition"], labelheader: ["label-header", "labelheader"], labelHeaderAlign: ["label-header-align", "labelHeaderAlign"], headeractions: ["header-actions", "headeractions"], showHeaderActionsText: ["show-header-actions-text", "showHeaderActionsText"], entity: "entity", keys: "keys", columns: "columns", service: "service", stayInRecordAfterEdit: ["stay-in-record-after-edit", "stayInRecordAfterEdit"], afterInsertMode: ["after-insert-mode", "afterInsertMode"], serviceType: ["service-type", "serviceType"], queryOnInit: ["query-on-init", "queryOnInit"], parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], insertMethod: ["insert-method", "insertMethod"], updateMethod: ["update-method", "updateMethod"], deleteMethod: ["delete-method", "deleteMethod"], layoutDirection: ["layout-direction", "layoutDirection"], layoutAlign: ["layout-align", "layoutAlign"], editableDetail: ["editable-detail", "editableDetail"], keysSqlTypes: ["keys-sql-types", "keysSqlTypes"], undoButton: ["undo-button", "undoButton"], showHeaderNavigation: ["show-header-navigation", "showHeaderNavigation"], oattr: ["attr", "oattr"], includeBreadcrumb: ["include-breadcrumb", "includeBreadcrumb"], detectChangesOnBlur: ["detect-changes-on-blur", "detectChangesOnBlur"], confirmExit: ["confirm-exit", "confirmExit"], ignoreOnExit: ["ignore-on-exit", "ignoreOnExit"], queryFallbackFunction: ["query-fallback-function", "queryFallbackFunction"], ignoreDefaultNavigation: ["ignore-default-navigation", "ignoreDefaultNavigation"], messageServiceType: ["message-service-type", "messageServiceType"] }, outputs: { onDataLoaded: "onDataLoaded", beforeCloseDetail: "beforeCloseDetail", beforeGoEditMode: "beforeGoEditMode", onFormModeChange: "onFormModeChange", onInsert: "onInsert", onUpdate: "onUpdate", onDelete: "onDelete", beforeInsertMode: "beforeInsertMode", beforeUpdateMode: "beforeUpdateMode", beforeInitialMode: "beforeInitialMode", onInsertMode: "onInsertMode", onUpdateMode: "onUpdateMode", onInitialMode: "onInitialMode", onCancel: "onCancel" }, host: { properties: { "class.o-form": "true" } }, providers: [
9091
+ OFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormComponent, selector: "o-form", inputs: { showHeader: ["show-header", "showHeader"], headerMode: ["header-mode", "headerMode"], headerPosition: ["header-position", "headerPosition"], labelheader: ["label-header", "labelheader"], labelHeaderAlign: ["label-header-align", "labelHeaderAlign"], headeractions: ["header-actions", "headeractions"], showHeaderActionsText: ["show-header-actions-text", "showHeaderActionsText"], entity: "entity", keys: "keys", columns: "columns", service: "service", stayInRecordAfterEdit: ["stay-in-record-after-edit", "stayInRecordAfterEdit"], afterInsertMode: ["after-insert-mode", "afterInsertMode"], serviceType: ["service-type", "serviceType"], queryOnInit: ["query-on-init", "queryOnInit"], parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], insertMethod: ["insert-method", "insertMethod"], updateMethod: ["update-method", "updateMethod"], deleteMethod: ["delete-method", "deleteMethod"], layoutDirection: ["layout-direction", "layoutDirection"], layoutAlign: ["layout-align", "layoutAlign"], editableDetail: ["editable-detail", "editableDetail"], keysSqlTypes: ["keys-sql-types", "keysSqlTypes"], undoButton: ["undo-button", "undoButton"], showHeaderNavigation: ["show-header-navigation", "showHeaderNavigation"], oattr: ["attr", "oattr"], includeBreadcrumb: ["include-breadcrumb", "includeBreadcrumb"], detectChangesOnBlur: ["detect-changes-on-blur", "detectChangesOnBlur"], confirmExit: ["confirm-exit", "confirmExit"], ignoreOnExit: ["ignore-on-exit", "ignoreOnExit"], queryFallbackFunction: ["query-fallback-function", "queryFallbackFunction"], ignoreDefaultNavigation: ["ignore-default-navigation", "ignoreDefaultNavigation"], messageServiceType: ["message-service-type", "messageServiceType"] }, outputs: { onDataLoaded: "onDataLoaded", beforeCloseDetail: "beforeCloseDetail", beforeGoEditMode: "beforeGoEditMode", onFormModeChange: "onFormModeChange", onBeforeInsert: "onBeforeInsert", onBeforeUpdate: "onBeforeUpdate", onBeforeDelete: "onBeforeDelete", onInsert: "onInsert", onUpdate: "onUpdate", onDelete: "onDelete", beforeInsertMode: "beforeInsertMode", beforeUpdateMode: "beforeUpdateMode", beforeInitialMode: "beforeInitialMode", onInsertMode: "onInsertMode", onUpdateMode: "onUpdateMode", onInitialMode: "onInitialMode", onCancel: "onCancel" }, host: { properties: { "class.o-form": "true" } }, providers: [
9074
9092
  { provide: OFormBase, useExisting: forwardRef(() => OFormComponent) },
9075
9093
  OntimizeServiceProvider,
9076
9094
  OFormMessageService
@@ -9792,14 +9810,12 @@ class OFormServiceComponent extends OFormDataComponent {
9792
9810
  const setValueSetKeys = Object.keys(this._setValueOnValueChangeEquiv);
9793
9811
  if (setValueSetKeys.length) {
9794
9812
  const formComponents = this.form.getComponents();
9795
- if (Util.isDefined(record)) {
9796
- setValueSetKeys.forEach(key => {
9797
- const comp = formComponents[this._setValueOnValueChangeEquiv[key]];
9798
- if (Util.isDefined(comp)) {
9799
- comp.setValue(record[key]);
9800
- }
9801
- });
9802
- }
9813
+ setValueSetKeys.forEach(key => {
9814
+ const comp = formComponents[this._setValueOnValueChangeEquiv[key]];
9815
+ if (Util.isDefined(comp)) {
9816
+ comp.setValue(Util.isDefined(record) ? record[key] : undefined);
9817
+ }
9818
+ });
9803
9819
  }
9804
9820
  }
9805
9821
  configureService() {
@@ -15887,12 +15903,9 @@ class AbstractOServiceComponent extends AbstractOServiceBaseComponent {
15887
15903
  return this.dataResponseArray.length;
15888
15904
  }
15889
15905
  getPaginationDataFromArray(dataArray) {
15890
- let result;
15906
+ let result = dataArray;
15891
15907
  if (this.paginationControls) {
15892
- result = dataArray.splice(this.currentPage * this.queryRows, this.queryRows);
15893
- }
15894
- else {
15895
- result = dataArray.splice(0, this.queryRows * (this.currentPage + 1));
15908
+ result = result.splice(this.currentPage * this.queryRows, this.queryRows);
15896
15909
  }
15897
15910
  return result;
15898
15911
  }
@@ -16482,6 +16495,16 @@ class OGridComponent extends AbstractOServiceComponent {
16482
16495
  this.quickFilterComponent.setActiveColumns(parsedArr);
16483
16496
  }
16484
16497
  }
16498
+ getPaginationDataFromArray(dataArray) {
16499
+ let result;
16500
+ if (this.paginationControls) {
16501
+ result = dataArray.splice(this.currentPage * this.queryRows, this.queryRows);
16502
+ }
16503
+ else {
16504
+ result = dataArray.splice(0, this.queryRows * (this.currentPage + 1));
16505
+ }
16506
+ return result;
16507
+ }
16485
16508
  }
16486
16509
  OGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OGridComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: forwardRef(() => OFormComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
16487
16510
  OGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OGridComponent, selector: "o-grid", inputs: { cols: "cols", showPageSize: ["show-page-size", "showPageSize"], showSort: ["orderable", "showSort"], sortableColumns: ["sortable-columns", "sortableColumns"], sortColumn: ["sort-column", "sortColumn"], quickFilterColumns: ["quick-filter-columns", "quickFilterColumns"], gridItemHeight: ["grid-item-height", "gridItemHeight"], refreshButton: ["refresh-button", "refreshButton"], gutterSize: ["gutter-size", "gutterSize"], fixedHeader: ["fixed-header", "fixedHeader"], showFooter: ["show-footer", "showFooter"], insertButtonPosition: ["insert-button-position", "insertButtonPosition"], insertButtonFloatable: ["insert-button-floatable", "insertButtonFloatable"], showButtonsText: ["show-buttons-text", "showButtonsText"] }, host: { properties: { "class.o-grid": "true", "class.o-grid-fixed": "fixedHeader" } }, providers: [
@@ -17169,7 +17192,7 @@ OComboSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
17169
17192
  useExisting: forwardRef(() => OComboSearchComponent),
17170
17193
  multi: true
17171
17194
  }
17172
- ], viewQueries: [{ propertyName: "searchSelectInput", first: true, predicate: ["searchSelectInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<input matInput class=\"o-combo-search-hidden\" />\n\n<mat-form-field class=\"o-combo-search-inner\">\n <input matInput #searchSelectInput placeholder=\"{{ placeholder | oTranslate }}\" (keydown)=\"handleKeydown($event)\"\n (input)=\"onInputChange($event.target.value)\" (blur)=\"onBlur($event.target.value)\" class=\"mat-select-search-input\" />\n <button mat-icon-button matSuffix *ngIf=\"value\" (click)=\"reset(true)\" class=\"mat-select-search-clear\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n<div *ngIf=\"value && _options?.length === 0\" fxLayoutAlign=\"center center\" class=\"o-combo-search-emmpty\">\n <span>{{ 'INPUT.COMBO.EMPTY' | oTranslate }}</span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;padding:0 16px}:host .o-combo-search-hidden{display:none}:host .o-combo-search-inner{height:3em;width:100%}:host .o-combo-search-emmpty{height:3em;line-height:3em}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }] });
17195
+ ], viewQueries: [{ propertyName: "searchSelectInput", first: true, predicate: ["searchSelectInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<input matInput class=\"o-combo-search-hidden\" />\n\n<mat-form-field class=\"o-combo-search-inner\" subscriptSizing=\"dynamic\">\n <input matInput #searchSelectInput placeholder=\"{{ placeholder | oTranslate }}\" (keydown)=\"handleKeydown($event)\"\n (input)=\"onInputChange($event.target.value)\" (blur)=\"onBlur($event.target.value)\" class=\"mat-select-search-input\" />\n <button mat-icon-button matSuffix *ngIf=\"value\" (click)=\"reset(true)\" class=\"mat-select-search-clear\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n<div *ngIf=\"value && _options?.length === 0\" fxLayoutAlign=\"center center\" class=\"o-combo-search-emmpty\">\n <span>{{ 'INPUT.COMBO.EMPTY' | oTranslate }}</span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;padding:0 16px}:host .o-combo-search-hidden{display:none}:host .o-combo-search-inner{height:3em;width:100%}:host .o-combo-search-emmpty{height:3em;line-height:3em}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }] });
17173
17196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OComboSearchComponent, decorators: [{
17174
17197
  type: Component,
17175
17198
  args: [{ selector: 'o-combo-search', providers: [
@@ -17180,7 +17203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
17180
17203
  }
17181
17204
  ], host: {
17182
17205
  '[class.o-combo-search]': 'true'
17183
- }, template: "<input matInput class=\"o-combo-search-hidden\" />\n\n<mat-form-field class=\"o-combo-search-inner\">\n <input matInput #searchSelectInput placeholder=\"{{ placeholder | oTranslate }}\" (keydown)=\"handleKeydown($event)\"\n (input)=\"onInputChange($event.target.value)\" (blur)=\"onBlur($event.target.value)\" class=\"mat-select-search-input\" />\n <button mat-icon-button matSuffix *ngIf=\"value\" (click)=\"reset(true)\" class=\"mat-select-search-clear\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n<div *ngIf=\"value && _options?.length === 0\" fxLayoutAlign=\"center center\" class=\"o-combo-search-emmpty\">\n <span>{{ 'INPUT.COMBO.EMPTY' | oTranslate }}</span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;padding:0 16px}:host .o-combo-search-hidden{display:none}:host .o-combo-search-inner{height:3em;width:100%}:host .o-combo-search-emmpty{height:3em;line-height:3em}\n"] }]
17206
+ }, template: "<input matInput class=\"o-combo-search-hidden\" />\n\n<mat-form-field class=\"o-combo-search-inner\" subscriptSizing=\"dynamic\">\n <input matInput #searchSelectInput placeholder=\"{{ placeholder | oTranslate }}\" (keydown)=\"handleKeydown($event)\"\n (input)=\"onInputChange($event.target.value)\" (blur)=\"onBlur($event.target.value)\" class=\"mat-select-search-input\" />\n <button mat-icon-button matSuffix *ngIf=\"value\" (click)=\"reset(true)\" class=\"mat-select-search-clear\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n<div *ngIf=\"value && _options?.length === 0\" fxLayoutAlign=\"center center\" class=\"o-combo-search-emmpty\">\n <span>{{ 'INPUT.COMBO.EMPTY' | oTranslate }}</span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;padding:0 16px}:host .o-combo-search-hidden{display:none}:host .o-combo-search-inner{height:3em;width:100%}:host .o-combo-search-emmpty{height:3em;line-height:3em}\n"] }]
17184
17207
  }], ctorParameters: function () {
17185
17208
  return [{ type: i9$1.MatSelect, decorators: [{
17186
17209
  type: Inject,
@@ -18533,15 +18556,15 @@ class OCurrencyInputComponent extends ORealInputComponent {
18533
18556
  return this.existsOntimizeIcon() && this.currencySymbolPosition === position;
18534
18557
  }
18535
18558
  useSymbol(position) {
18536
- return this.currency_symbols.hasOwnProperty(this.currencySymbol) && this.currencySymbolPosition === position;
18559
+ return !this.existsOntimizeIcon() && this.currency_symbols.hasOwnProperty(this.currencySymbol) && this.currencySymbolPosition === position;
18537
18560
  }
18538
18561
  }
18539
18562
  OCurrencyInputComponent.currency_icons = ['USD', 'EUR', 'GBP', 'ILS', 'INR', 'JPY', 'KRW', 'BTC'];
18540
18563
  OCurrencyInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OCurrencyInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
18541
- OCurrencyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OCurrencyInputComponent, selector: "o-currency-input", inputs: { currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"] }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <div *ngIf=\"useSymbol('left')\" matSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('left')\" svgIcon=\"ontimize:{{currencySymbol}}\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n [required]=\"isRequired\" (change)=\"onChangeEvent($event)\">\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <div *ngIf=\"useSymbol('right')\" matIconSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('right')\" svgIcon=\"ontimize:{{currencySymbol}}\" matIconSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\">\n </mat-icon>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'requiredMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'requiredMax') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('minDecimaldigits')\">\n {{ 'FORM_VALIDATION.MIN_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('minDecimaldigits', 'requiredMinDecimaldigits') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('maxDecimaldigits')\">\n {{ 'FORM_VALIDATION.MAX_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('maxDecimaldigits', 'requiredMaxDecimaldigits') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n", dependencies: [{ 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: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
18564
+ OCurrencyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OCurrencyInputComponent, selector: "o-currency-input", inputs: { currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"] }, usesInheritance: true, ngImport: i0, template: "<div class=\"currency-container\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <div *ngIf=\"useSymbol('left')\" matSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('left')\" svgIcon=\"ontimize:{{currencySymbol}}\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n [required]=\"isRequired\" (change)=\"onChangeEvent($event)\">\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <div *ngIf=\"useSymbol('right')\" matIconSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('right')\" svgIcon=\"ontimize:{{currencySymbol}}\" matIconSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\">\n </mat-icon>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'requiredMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'requiredMax') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('minDecimaldigits')\">\n {{ 'FORM_VALIDATION.MIN_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('minDecimaldigits', 'requiredMinDecimaldigits') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('maxDecimaldigits')\">\n {{ 'FORM_VALIDATION.MAX_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('maxDecimaldigits', 'requiredMaxDecimaldigits') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n", styles: [".currency-container .icon-btn{font-weight:700;font-size:20px;margin-right:4px}\n"], dependencies: [{ 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: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
18542
18565
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OCurrencyInputComponent, decorators: [{
18543
18566
  type: Component,
18544
- args: [{ selector: 'o-currency-input', inputs: DEFAULT_INPUTS_O_CURRENCY_INPUT, encapsulation: ViewEncapsulation.None, template: "<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <div *ngIf=\"useSymbol('left')\" matSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('left')\" svgIcon=\"ontimize:{{currencySymbol}}\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n [required]=\"isRequired\" (change)=\"onChangeEvent($event)\">\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <div *ngIf=\"useSymbol('right')\" matIconSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('right')\" svgIcon=\"ontimize:{{currencySymbol}}\" matIconSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\">\n </mat-icon>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'requiredMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'requiredMax') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('minDecimaldigits')\">\n {{ 'FORM_VALIDATION.MIN_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('minDecimaldigits', 'requiredMinDecimaldigits') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('maxDecimaldigits')\">\n {{ 'FORM_VALIDATION.MAX_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('maxDecimaldigits', 'requiredMaxDecimaldigits') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n" }]
18567
+ args: [{ selector: 'o-currency-input', inputs: DEFAULT_INPUTS_O_CURRENCY_INPUT, encapsulation: ViewEncapsulation.None, template: "<div class=\"currency-container\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <div *ngIf=\"useSymbol('left')\" matSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('left')\" svgIcon=\"ontimize:{{currencySymbol}}\" matSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\"></mat-icon>\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [type]=\"inputType\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\" [readonly]=\"isReadOnly\" [min]=\"min\" [max]=\"max\" [step]=\"step\"\n [required]=\"isRequired\" (change)=\"onChangeEvent($event)\">\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <div *ngIf=\"useSymbol('right')\" matIconSuffix class=\"icon-btn\" [class.mat-disabled]=\"!enabled\">\n {{ currency_symbols[currencySymbol] }}\n </div>\n <mat-icon *ngIf=\"useIcon('right')\" svgIcon=\"ontimize:{{currencySymbol}}\" matIconSuffix class=\"svg-icon\" [class.mat-disabled]=\"!enabled\">\n </mat-icon>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'requiredMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'requiredMax') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('minDecimaldigits')\">\n {{ 'FORM_VALIDATION.MIN_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('minDecimaldigits', 'requiredMinDecimaldigits') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('maxDecimaldigits')\">\n {{ 'FORM_VALIDATION.MAX_DECIMAL_DIGITS' | oTranslate }}: {{ getErrorValue('maxDecimaldigits', 'requiredMaxDecimaldigits') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n", styles: [".currency-container .icon-btn{font-weight:700;font-size:20px;margin-right:4px}\n"] }]
18545
18568
  }] });
18546
18569
 
18547
18570
  class OCurrencyInputModule {
@@ -22917,22 +22940,6 @@ class OFileUploader {
22917
22940
  }
22918
22941
 
22919
22942
  const DEFAULT_INPUTS_O_FILE_INPUT = [
22920
- 'oattr: attr',
22921
- 'olabel: label',
22922
- 'floatLabel: float-label',
22923
- 'oplaceholder: placeholder',
22924
- 'tooltip',
22925
- 'tooltipPosition: tooltip-position',
22926
- 'tooltipShowDelay: tooltip-show-delay',
22927
- 'tooltipHideDelay: tooltip-hide-delay',
22928
- 'enabled',
22929
- 'orequired: required',
22930
- 'service',
22931
- 'entity',
22932
- 'serviceType : service-type',
22933
- 'width',
22934
- 'readOnly: read-only',
22935
- 'clearButton: clear-button',
22936
22943
  'acceptFileType: accept-file-type',
22937
22944
  'maxFileSize: max-file-size',
22938
22945
  'multiple',
@@ -23124,7 +23131,7 @@ class OFileInputComponent extends OFormDataComponent {
23124
23131
  }
23125
23132
  }
23126
23133
  OFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFileInputComponent, deps: [{ token: forwardRef(() => OFormComponent), optional: true }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
23127
- OFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFileInputComponent, selector: "o-file-input", inputs: { oattr: ["attr", "oattr"], olabel: ["label", "olabel"], floatLabel: ["float-label", "floatLabel"], oplaceholder: ["placeholder", "oplaceholder"], tooltip: "tooltip", tooltipPosition: ["tooltip-position", "tooltipPosition"], tooltipShowDelay: ["tooltip-show-delay", "tooltipShowDelay"], tooltipHideDelay: ["tooltip-hide-delay", "tooltipHideDelay"], enabled: "enabled", orequired: ["required", "orequired"], service: "service", entity: "entity", serviceType: ["service-type", "serviceType"], width: "width", readOnly: ["read-only", "readOnly"], clearButton: ["clear-button", "clearButton"], acceptFileType: ["accept-file-type", "acceptFileType"], maxFileSize: ["max-file-size", "maxFileSize"], multiple: "multiple", maxFiles: ["max-files", "maxFiles"], showInfo: ["show-info", "showInfo"], splitUpload: ["split-upload", "splitUpload"], additionalData: ["additional-data", "additionalData"], appearance: "appearance", hideRequiredMarker: ["hide-required-marker", "hideRequiredMarker"], labelVisible: ["label-visible", "labelVisible"] }, outputs: { onBeforeUpload: "onBeforeUpload", onBeforeUploadFile: "onBeforeUploadFile", onProgress: "onProgress", onProgressFile: "onProgressFile", onCancel: "onCancel", onCancelFile: "onCancelFile", onUpload: "onUpload", onUploadFile: "onUploadFile", onComplete: "onComplete", onCompleteFile: "onCompleteFile", onError: "onError", onErrorFile: "onErrorFile" }, providers: [
23134
+ OFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFileInputComponent, selector: "o-file-input", inputs: { acceptFileType: ["accept-file-type", "acceptFileType"], maxFileSize: ["max-file-size", "maxFileSize"], multiple: "multiple", maxFiles: ["max-files", "maxFiles"], showInfo: ["show-info", "showInfo"], splitUpload: ["split-upload", "splitUpload"], additionalData: ["additional-data", "additionalData"], appearance: "appearance", hideRequiredMarker: ["hide-required-marker", "hideRequiredMarker"], labelVisible: ["label-visible", "labelVisible"] }, outputs: { onBeforeUpload: "onBeforeUpload", onBeforeUploadFile: "onBeforeUploadFile", onProgress: "onProgress", onProgressFile: "onProgressFile", onCancel: "onCancel", onCancelFile: "onCancelFile", onUpload: "onUpload", onUploadFile: "onUploadFile", onComplete: "onComplete", onCompleteFile: "onCompleteFile", onError: "onError", onErrorFile: "onErrorFile" }, providers: [
23128
23135
  { provide: OntimizeFileService, useFactory: fileServiceFactory, deps: [Injector] }
23129
23136
  ], viewQueries: [{ propertyName: "inputFile", first: true, predicate: ["inputFile"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" (click)=\"!enabled || isReadOnly ? null : inputFile.click()\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input #inputShowValue matInput type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n [required]=\"isRequired\" readonly (change)=\"onChangeEvent($event)\">\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <button type=\"button\" *ngIf=\"getValue()\" [disabled]=\"!isValid || uploader.isUploading\" matSuffix mat-icon-button (click)=\"onClickUpload($event)\">\n <mat-icon>file_upload</mat-icon>\n </button>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileType')\">\n {{ 'FORM_VALIDATION.FILE_TYPE' | oTranslate}} ({{ getErrorValue('fileType','allowedFileTypes') }})\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n <mat-error *oMatError=\"hasError('numFile')\">\n {{ 'FORM_VALIDATION.FILE_MAXNUM' | oTranslate }}: {{ getErrorValue('numFile', 'maxFiles') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n <input #inputFile type=\"file\" id=\"{{getAttribute()+'-file-input'}}\"\n [attr.accept]=\"acceptFileType ? acceptFileType.replace(arraySeparatorRegExp, ',') : null\" (change)=\"fileSelected($event)\" hidden=\"true\"\n [attr.multiple]=\"multiple ? '' : null\">\n <div *ngIf=\"showInfo && files\">\n <mat-progress-bar *ngIf=\"!splitUpload && uploader.isUploading\" color=\"accent\" mode=\"determinate\" [value]=\"uploader.progress\"></mat-progress-bar>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <mat-icon mat-list-icon>insert_drive_file</mat-icon>\n <span mat-line>{{ file.name }}</span>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <mat-progress-spinner *ngIf=\"splitUpload && file.isUploading\" color=\"accent\" mode=\"determinate\" [value]=\"file.progress\" class=\"uploading\"\n diameter=\"3\" strokeWidth=\"3\"></mat-progress-spinner>\n <mat-icon *ngIf=\"splitUpload && file.isUploaded && file.isSuccess\" class=\"uploaded\" svgIcon=\"ontimize:check_circle\"></mat-icon>\n <mat-icon *ngIf=\"splitUpload && file.isUploaded && file.isError\" class=\"error\" svgIcon=\"ontimize:error_outline\"></mat-icon>\n </div>\n </mat-list-item>\n </mat-list>\n </div>\n</div>\n", styles: [".o-file-input-buttons{position:absolute;top:0;bottom:0;right:0;margin:auto}mat-icon.uploaded{color:#0f9d58}mat-icon.error{color:#d50000}\n"], dependencies: [{ 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: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$4.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5$1.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i5$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i5$3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }] });
23130
23137
  __decorate([
@@ -29565,7 +29572,7 @@ class OTableMenuComponent {
29565
29572
  return false;
29566
29573
  }
29567
29574
  const perm = this.getPermissionByAttr('select-all-checkbox');
29568
- return this.showFilterOption && !(perm && perm.visible === false);
29575
+ return this.selectAllCheckbox && !(perm && perm.visible === false);
29569
29576
  }
29570
29577
  get rowHeightObservable() {
29571
29578
  return this.table.rowHeightObservable;
@@ -29629,6 +29636,22 @@ class OTableMenuComponent {
29629
29636
  const perm = this.getPermissionByAttr('show-chart-on-demand');
29630
29637
  return !(perm && perm.visible === false);
29631
29638
  }
29639
+ get showFirstDivider() {
29640
+ return (this.showAnyOptionFirstSection && this.showAnyOptionSecondSection) ||
29641
+ (this.showAnyOptionFirstSection && !this.showAnyOptionSecondSection && this.showAnyOptionThirdSection);
29642
+ }
29643
+ get showSecondDivider() {
29644
+ return this.showAnyOptionSecondSection && this.showAnyOptionThirdSection;
29645
+ }
29646
+ get showAnyOptionThirdSection() {
29647
+ return this.showGroupByButton || this.showFilterMenu || this.showConfigurationMenu;
29648
+ }
29649
+ get showAnyOptionFirstSection() {
29650
+ return this.showSelectAllCheckbox || this.showColumnsVisibilityButton || this.showResetWidthOption;
29651
+ }
29652
+ get showAnyOptionSecondSection() {
29653
+ return this.showExportButton || this.showReportOnDemandButton || this.showChartsOnDemandButton;
29654
+ }
29632
29655
  onShowsSelects() {
29633
29656
  const tableOptions = this.table.oTableOptions;
29634
29657
  tableOptions.selectColumn.visible = !tableOptions.selectColumn.visible;
@@ -29817,7 +29840,7 @@ class OTableMenuComponent {
29817
29840
  }
29818
29841
  }
29819
29842
  OTableMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableMenuComponent, deps: [{ token: i0.Injector }, { token: i1$1.MatDialog }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => OTableBase) }, { token: O_CHART_ON_DEMAND_SERVICE, optional: true }, { token: O_REPORT_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
29820
- OTableMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTableMenuComponent, selector: "o-table-menu", inputs: { selectAllCheckbox: ["select-all-checkbox", "selectAllCheckbox"], exportButton: ["export-button", "exportButton"], columnsVisibilityButton: ["columns-visibility-button", "columnsVisibilityButton"], showConfigurationOption: ["show-configuration-option", "showConfigurationOption"], showFilterOption: ["show-filter-option", "showFilterOption"], showGroupByOption: ["show-group-by-option", "showGroupByOption"], showResetWidthOption: ["show-reset-width-option", "showResetWidthOption"], showReportOnDemandOption: ["show-report-on-demand-option", "showReportOnDemandOption"], showChartsOnDemandOption: ["show-charts-on-demand-option", "showChartsOnDemandOption"] }, host: { properties: { "class.o-table-menu": "true" } }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: ["menu"], descendants: true, static: true }, { propertyName: "selectAllCheckboxOption", first: true, predicate: ["selectAllCheckboxOption"], descendants: true }, { propertyName: "exportButtonOption", first: true, predicate: ["exportButtonOption"], descendants: true }, { propertyName: "columnsVisibilityButtonOption", first: true, predicate: ["columnsVisibilityButtonOption"], descendants: true }, { propertyName: "filterMenuButton", first: true, predicate: ["filterMenuButton"], descendants: true, read: ElementRef }, { propertyName: "configurationMenuButton", first: true, predicate: ["configurationMenuButton"], descendants: true, read: ElementRef }, { propertyName: "filterMenu", first: true, predicate: ["filterMenu"], descendants: true }, { propertyName: "configurationMenu", first: true, predicate: ["configurationMenu"], descendants: true }, { propertyName: "columnFilterOption", first: true, predicate: ["columnFilterOption"], descendants: true }, { propertyName: "chartMenu", first: true, predicate: ["chartMenu"], descendants: true, static: true }], ngImport: i0, template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" [class]=\"(rowHeightObservable | async) +' o-table-menu o-mat-menu'\">\n <!-- DEFAULT OPTIONS -->\n <o-table-option #selectAllCheckboxOption *ngIf=\"showSelectAllCheckbox\" [active]=\"isSelectAllOptionActive\" (onClick)=\"onShowsSelects()\"\n label=\"TABLE.BUTTONS.SELECT\" show-checkbox-option=\"true\"></o-table-option>\n <o-table-option #columnsVisibilityButtonOption *ngIf=\"showColumnsVisibilityButton\" (onClick)=\"onChangeColumnsVisibilityClicked()\"\n label=\"TABLE.BUTTONS.COLVIS\"></o-table-option>\n <o-table-option *ngIf=\"showResetWidthOption\" (onClick)=\"onResetWidthClicked()\" label=\"TABLE.BUTTONS.RESETWIDTH\"></o-table-option>\n\n <mat-divider *ngIf=\"showSelectAllCheckbox || showColumnsVisibilityButton || showResetWidthOption\"></mat-divider>\n\n <o-table-option #exportButtonOption *ngIf=\"showExportButton\" (onClick)=\"onExportButtonClicked()\" label=\"TABLE.BUTTONS.EXPORT\"></o-table-option>\n <o-table-option (onClick)=\"onReportOnDemandClicked()\" label=\"TABLE.BUTTONS.REPORT_ON_DEMAND\" *ngIf=\"showReportOnDemandButton\"></o-table-option>\n <o-table-option *ngIf=\"showChartsOnDemandButton\" (onClick)=\"onChartsOnDemandClicked()\" label=\"TABLE.BUTTONS.CHART_ON_DEMAND\"></o-table-option>\n <mat-divider *ngIf=\" showExportButton || showReportOnDemandButton || showChartsOnDemandButton\"></mat-divider>\n\n <o-table-option #columnsGroupByOption *ngIf=\"showGroupByButton\" (onClick)=\"onGroupByClicked()\" label=\"TABLE.BUTTONS.GROUPBY\"></o-table-option>\n\n <button type=\"button\" #filterMenuButton *ngIf=\"showFilterMenu\" mat-menu-item [matMenuTriggerFor]=\"filterMenu\">{{\n 'TABLE.BUTTONS.FILTER' | oTranslate }}</button>\n <button type=\"button\" #configurationMenuButton *ngIf=\"showConfigurationMenu\" mat-menu-item [matMenuTriggerFor]=\"configurationMenu\">{{\n 'TABLE.BUTTONS.CONFIGURATION' | oTranslate }}</button>\n <ng-content></ng-content>\n</mat-menu>\n\n<mat-menu #filterMenu=\"matMenu\" [class]=\"(rowHeightObservable| async) +' o-table-menu'\">\n <o-table-option #columnFilterOption show-checkbox-option=\"true\" [active]=\"isColumnFilterOptionActive\" (onClick)=\"onFilterByColumnClicked()\"\n label=\"TABLE.BUTTONS.FILTER_BY_COLUMN\">\n </o-table-option>\n <button type=\"button\" mat-menu-item (click)=\"onStoreFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_SAVE' | oTranslate\n }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onLoadFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate\n }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onClearFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_CLEAR' | oTranslate\n }}</button>\n</mat-menu>\n\n<mat-menu #configurationMenu=\"matMenu\" [class]=\"(rowHeightObservable | async) +' o-table-menu'\">\n <button type=\"button\" mat-menu-item (click)=\"onStoreConfigurationClicked()\">{{ 'TABLE.BUTTONS.SAVE_CONFIGURATION' |\n oTranslate }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onApplyConfigurationClicked()\">{{ 'TABLE.BUTTONS.APPLY_CONFIGURATION' |\n oTranslate }}</button>\n</mat-menu>\n", styles: [".o-table-menu .mat-divider{margin:0 8px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: OTableOptionComponent, selector: "o-table-option", inputs: ["attr", "enabled", "icon", "show-checkbox-option", "label", "active"], outputs: ["onClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
29843
+ OTableMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTableMenuComponent, selector: "o-table-menu", inputs: { selectAllCheckbox: ["select-all-checkbox", "selectAllCheckbox"], exportButton: ["export-button", "exportButton"], columnsVisibilityButton: ["columns-visibility-button", "columnsVisibilityButton"], showConfigurationOption: ["show-configuration-option", "showConfigurationOption"], showFilterOption: ["show-filter-option", "showFilterOption"], showGroupByOption: ["show-group-by-option", "showGroupByOption"], showResetWidthOption: ["show-reset-width-option", "showResetWidthOption"], showReportOnDemandOption: ["show-report-on-demand-option", "showReportOnDemandOption"], showChartsOnDemandOption: ["show-charts-on-demand-option", "showChartsOnDemandOption"] }, host: { properties: { "class.o-table-menu": "true" } }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: ["menu"], descendants: true, static: true }, { propertyName: "selectAllCheckboxOption", first: true, predicate: ["selectAllCheckboxOption"], descendants: true }, { propertyName: "exportButtonOption", first: true, predicate: ["exportButtonOption"], descendants: true }, { propertyName: "columnsVisibilityButtonOption", first: true, predicate: ["columnsVisibilityButtonOption"], descendants: true }, { propertyName: "filterMenuButton", first: true, predicate: ["filterMenuButton"], descendants: true, read: ElementRef }, { propertyName: "configurationMenuButton", first: true, predicate: ["configurationMenuButton"], descendants: true, read: ElementRef }, { propertyName: "filterMenu", first: true, predicate: ["filterMenu"], descendants: true }, { propertyName: "configurationMenu", first: true, predicate: ["configurationMenu"], descendants: true }, { propertyName: "columnFilterOption", first: true, predicate: ["columnFilterOption"], descendants: true }, { propertyName: "chartMenu", first: true, predicate: ["chartMenu"], descendants: true, static: true }], ngImport: i0, template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" [class]=\"(rowHeightObservable | async) +' o-table-menu o-mat-menu'\">\n <!-- It is necessary to wrap the o-table button with <span mat-menu-item> so that the submenus collapse when losing focus -->\n <!-- DEFAULT OPTIONS -->\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showSelectAllCheckbox\">\n <o-table-option #selectAllCheckboxOption [active]=\"isSelectAllOptionActive\" (onClick)=\"onShowsSelects()\" label=\"TABLE.BUTTONS.SELECT\"\n show-checkbox-option=\"true\"></o-table-option>\n </span>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showColumnsVisibilityButton\">\n <o-table-option #columnsVisibilityButtonOption (onClick)=\"onChangeColumnsVisibilityClicked()\" label=\"TABLE.BUTTONS.COLVIS\"></o-table-option>\n </span>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showResetWidthOption\">\n <o-table-option (onClick)=\"onResetWidthClicked()\" label=\"TABLE.BUTTONS.RESETWIDTH\"></o-table-option>\n </span>\n <mat-divider *ngIf=\"showFirstDivider\"></mat-divider>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showExportButton\">\n <o-table-option #exportButtonOption (onClick)=\"onExportButtonClicked()\" label=\"TABLE.BUTTONS.EXPORT\"></o-table-option>\n </span>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showReportOnDemandButton\">\n <o-table-option (onClick)=\"onReportOnDemandClicked()\" label=\"TABLE.BUTTONS.REPORT_ON_DEMAND\"></o-table-option>\n </span>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showChartsOnDemandButton\">\n <o-table-option (onClick)=\"onChartsOnDemandClicked()\" label=\"TABLE.BUTTONS.CHART_ON_DEMAND\"></o-table-option>\n </span>\n <mat-divider *ngIf=\"showSecondDivider\"></mat-divider>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showGroupByButton\">\n <o-table-option #columnsGroupByOption (onClick)=\"onGroupByClicked()\" label=\"TABLE.BUTTONS.GROUPBY\"></o-table-option>\n </span>\n <button type=\"button\" #filterMenuButton *ngIf=\"showFilterMenu\" mat-menu-item [matMenuTriggerFor]=\"filterMenu\">{{\n 'TABLE.BUTTONS.FILTER' | oTranslate }}</button>\n <button type=\"button\" #configurationMenuButton *ngIf=\"showConfigurationMenu\" mat-menu-item [matMenuTriggerFor]=\"configurationMenu\">{{\n 'TABLE.BUTTONS.CONFIGURATION' | oTranslate }}</button>\n <ng-content></ng-content>\n</mat-menu>\n\n<mat-menu #filterMenu=\"matMenu\" [class]=\"(rowHeightObservable| async) +' o-table-menu o-mat-menu'\">\n <span mat-menu-item class=\"padding-0\">\n <o-table-option #columnFilterOption show-checkbox-option=\"true\" [active]=\"isColumnFilterOptionActive\" (onClick)=\"onFilterByColumnClicked()\"\n label=\"TABLE.BUTTONS.FILTER_BY_COLUMN\">\n </o-table-option>\n </span>\n <button type=\"button\" mat-menu-item (click)=\"onStoreFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_SAVE' | oTranslate\n }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onLoadFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate\n }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onClearFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_CLEAR' | oTranslate\n }}</button>\n</mat-menu>\n\n<mat-menu #configurationMenu=\"matMenu\" [class]=\"(rowHeightObservable | async) +' o-table-menu o-mat-menu'\">\n <button type=\"button\" mat-menu-item (click)=\"onStoreConfigurationClicked()\">{{ 'TABLE.BUTTONS.SAVE_CONFIGURATION' |\n oTranslate }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onApplyConfigurationClicked()\">{{ 'TABLE.BUTTONS.APPLY_CONFIGURATION' |\n oTranslate }}</button>\n</mat-menu>\n", styles: [".o-table-menu span.mat-mdc-menu-item.padding-0{padding-left:0;padding-right:0}.o-table-menu span.mat-mdc-menu-item.padding-0 .mdc-list-item__primary-text{width:100%}.o-table-menu .mat-divider{margin:0 8px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: OTableOptionComponent, selector: "o-table-option", inputs: ["attr", "enabled", "icon", "show-checkbox-option", "label", "active"], outputs: ["onClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
29821
29844
  __decorate([
29822
29845
  BooleanInputConverter(),
29823
29846
  __metadata("design:type", Boolean)
@@ -29858,7 +29881,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
29858
29881
  type: Component,
29859
29882
  args: [{ selector: 'o-table-menu', inputs: DEFAULT_INPUTS_O_TABLE_MENU, outputs: DEFAULT_OUTPUTS_O_TABLE_MENU, encapsulation: ViewEncapsulation.None, host: {
29860
29883
  '[class.o-table-menu]': 'true'
29861
- }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" [class]=\"(rowHeightObservable | async) +' o-table-menu o-mat-menu'\">\n <!-- DEFAULT OPTIONS -->\n <o-table-option #selectAllCheckboxOption *ngIf=\"showSelectAllCheckbox\" [active]=\"isSelectAllOptionActive\" (onClick)=\"onShowsSelects()\"\n label=\"TABLE.BUTTONS.SELECT\" show-checkbox-option=\"true\"></o-table-option>\n <o-table-option #columnsVisibilityButtonOption *ngIf=\"showColumnsVisibilityButton\" (onClick)=\"onChangeColumnsVisibilityClicked()\"\n label=\"TABLE.BUTTONS.COLVIS\"></o-table-option>\n <o-table-option *ngIf=\"showResetWidthOption\" (onClick)=\"onResetWidthClicked()\" label=\"TABLE.BUTTONS.RESETWIDTH\"></o-table-option>\n\n <mat-divider *ngIf=\"showSelectAllCheckbox || showColumnsVisibilityButton || showResetWidthOption\"></mat-divider>\n\n <o-table-option #exportButtonOption *ngIf=\"showExportButton\" (onClick)=\"onExportButtonClicked()\" label=\"TABLE.BUTTONS.EXPORT\"></o-table-option>\n <o-table-option (onClick)=\"onReportOnDemandClicked()\" label=\"TABLE.BUTTONS.REPORT_ON_DEMAND\" *ngIf=\"showReportOnDemandButton\"></o-table-option>\n <o-table-option *ngIf=\"showChartsOnDemandButton\" (onClick)=\"onChartsOnDemandClicked()\" label=\"TABLE.BUTTONS.CHART_ON_DEMAND\"></o-table-option>\n <mat-divider *ngIf=\" showExportButton || showReportOnDemandButton || showChartsOnDemandButton\"></mat-divider>\n\n <o-table-option #columnsGroupByOption *ngIf=\"showGroupByButton\" (onClick)=\"onGroupByClicked()\" label=\"TABLE.BUTTONS.GROUPBY\"></o-table-option>\n\n <button type=\"button\" #filterMenuButton *ngIf=\"showFilterMenu\" mat-menu-item [matMenuTriggerFor]=\"filterMenu\">{{\n 'TABLE.BUTTONS.FILTER' | oTranslate }}</button>\n <button type=\"button\" #configurationMenuButton *ngIf=\"showConfigurationMenu\" mat-menu-item [matMenuTriggerFor]=\"configurationMenu\">{{\n 'TABLE.BUTTONS.CONFIGURATION' | oTranslate }}</button>\n <ng-content></ng-content>\n</mat-menu>\n\n<mat-menu #filterMenu=\"matMenu\" [class]=\"(rowHeightObservable| async) +' o-table-menu'\">\n <o-table-option #columnFilterOption show-checkbox-option=\"true\" [active]=\"isColumnFilterOptionActive\" (onClick)=\"onFilterByColumnClicked()\"\n label=\"TABLE.BUTTONS.FILTER_BY_COLUMN\">\n </o-table-option>\n <button type=\"button\" mat-menu-item (click)=\"onStoreFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_SAVE' | oTranslate\n }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onLoadFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate\n }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onClearFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_CLEAR' | oTranslate\n }}</button>\n</mat-menu>\n\n<mat-menu #configurationMenu=\"matMenu\" [class]=\"(rowHeightObservable | async) +' o-table-menu'\">\n <button type=\"button\" mat-menu-item (click)=\"onStoreConfigurationClicked()\">{{ 'TABLE.BUTTONS.SAVE_CONFIGURATION' |\n oTranslate }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onApplyConfigurationClicked()\">{{ 'TABLE.BUTTONS.APPLY_CONFIGURATION' |\n oTranslate }}</button>\n</mat-menu>\n", styles: [".o-table-menu .mat-divider{margin:0 8px}\n"] }]
29884
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-menu #menu=\"matMenu\" x-position=\"before\" [class]=\"(rowHeightObservable | async) +' o-table-menu o-mat-menu'\">\n <!-- It is necessary to wrap the o-table button with <span mat-menu-item> so that the submenus collapse when losing focus -->\n <!-- DEFAULT OPTIONS -->\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showSelectAllCheckbox\">\n <o-table-option #selectAllCheckboxOption [active]=\"isSelectAllOptionActive\" (onClick)=\"onShowsSelects()\" label=\"TABLE.BUTTONS.SELECT\"\n show-checkbox-option=\"true\"></o-table-option>\n </span>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showColumnsVisibilityButton\">\n <o-table-option #columnsVisibilityButtonOption (onClick)=\"onChangeColumnsVisibilityClicked()\" label=\"TABLE.BUTTONS.COLVIS\"></o-table-option>\n </span>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showResetWidthOption\">\n <o-table-option (onClick)=\"onResetWidthClicked()\" label=\"TABLE.BUTTONS.RESETWIDTH\"></o-table-option>\n </span>\n <mat-divider *ngIf=\"showFirstDivider\"></mat-divider>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showExportButton\">\n <o-table-option #exportButtonOption (onClick)=\"onExportButtonClicked()\" label=\"TABLE.BUTTONS.EXPORT\"></o-table-option>\n </span>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showReportOnDemandButton\">\n <o-table-option (onClick)=\"onReportOnDemandClicked()\" label=\"TABLE.BUTTONS.REPORT_ON_DEMAND\"></o-table-option>\n </span>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showChartsOnDemandButton\">\n <o-table-option (onClick)=\"onChartsOnDemandClicked()\" label=\"TABLE.BUTTONS.CHART_ON_DEMAND\"></o-table-option>\n </span>\n <mat-divider *ngIf=\"showSecondDivider\"></mat-divider>\n <span mat-menu-item class=\"padding-0\" *ngIf=\"showGroupByButton\">\n <o-table-option #columnsGroupByOption (onClick)=\"onGroupByClicked()\" label=\"TABLE.BUTTONS.GROUPBY\"></o-table-option>\n </span>\n <button type=\"button\" #filterMenuButton *ngIf=\"showFilterMenu\" mat-menu-item [matMenuTriggerFor]=\"filterMenu\">{{\n 'TABLE.BUTTONS.FILTER' | oTranslate }}</button>\n <button type=\"button\" #configurationMenuButton *ngIf=\"showConfigurationMenu\" mat-menu-item [matMenuTriggerFor]=\"configurationMenu\">{{\n 'TABLE.BUTTONS.CONFIGURATION' | oTranslate }}</button>\n <ng-content></ng-content>\n</mat-menu>\n\n<mat-menu #filterMenu=\"matMenu\" [class]=\"(rowHeightObservable| async) +' o-table-menu o-mat-menu'\">\n <span mat-menu-item class=\"padding-0\">\n <o-table-option #columnFilterOption show-checkbox-option=\"true\" [active]=\"isColumnFilterOptionActive\" (onClick)=\"onFilterByColumnClicked()\"\n label=\"TABLE.BUTTONS.FILTER_BY_COLUMN\">\n </o-table-option>\n </span>\n <button type=\"button\" mat-menu-item (click)=\"onStoreFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_SAVE' | oTranslate\n }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onLoadFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate\n }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onClearFilterClicked()\">{{ 'TABLE.BUTTONS.FILTER_CLEAR' | oTranslate\n }}</button>\n</mat-menu>\n\n<mat-menu #configurationMenu=\"matMenu\" [class]=\"(rowHeightObservable | async) +' o-table-menu o-mat-menu'\">\n <button type=\"button\" mat-menu-item (click)=\"onStoreConfigurationClicked()\">{{ 'TABLE.BUTTONS.SAVE_CONFIGURATION' |\n oTranslate }}</button>\n <button type=\"button\" mat-menu-item (click)=\"onApplyConfigurationClicked()\">{{ 'TABLE.BUTTONS.APPLY_CONFIGURATION' |\n oTranslate }}</button>\n</mat-menu>\n", styles: [".o-table-menu span.mat-mdc-menu-item.padding-0{padding-left:0;padding-right:0}.o-table-menu span.mat-mdc-menu-item.padding-0 .mdc-list-item__primary-text{width:100%}.o-table-menu .mat-divider{margin:0 8px}\n"] }]
29862
29885
  }], ctorParameters: function () {
29863
29886
  return [{ type: i0.Injector }, { type: i1$1.MatDialog }, { type: i0.ChangeDetectorRef }, { type: OTableBase, decorators: [{
29864
29887
  type: Inject,
@@ -31723,6 +31746,9 @@ class OTableComponent extends AbstractOServiceComponent {
31723
31746
  selectedItems.forEach(item => {
31724
31747
  this.selection.deselect(item);
31725
31748
  });
31749
+ if (this.formLayoutManager) {
31750
+ this.formLayoutManager.closeDetails(filters, { exitWithoutConfirmation: true });
31751
+ }
31726
31752
  this.reloadData();
31727
31753
  }
31728
31754
  });
@@ -34979,8 +35005,20 @@ class OTableCellRendererServiceComponent extends OBaseTableCellRenderer {
34979
35005
  this.dataService[this.queryMethod](filter, this.colArray, this.entity, sqlTypes)
34980
35006
  .subscribe((resp) => {
34981
35007
  if (resp.isSuccessful()) {
34982
- this.responseMap[cellvalue] = resp.data[0][this.valueColumn];
34983
- this.onDataLoaded.emit(this.responseMap[cellvalue]);
35008
+ let respData;
35009
+ if (Util.isArray(resp.data)) {
35010
+ respData = resp.data[0];
35011
+ }
35012
+ else if (Util.isObject(resp.data) && Object.keys(resp.data).length > 0) {
35013
+ respData = resp.data;
35014
+ }
35015
+ else {
35016
+ console.warn('Component has received not supported service data. Supported data are Array or Object');
35017
+ }
35018
+ if (Util.isDefined(respData)) {
35019
+ this.responseMap[cellvalue] = respData[this.valueColumn];
35020
+ this.onDataLoaded.emit(this.responseMap[cellvalue]);
35021
+ }
34984
35022
  }
34985
35023
  }, err => {
34986
35024
  console.error(err);
@@ -35050,7 +35088,17 @@ class OTableCellRendererServiceComponent extends OBaseTableCellRenderer {
35050
35088
  this.dataService[this.queryMethod]({}, this.colArray, this.entity)
35051
35089
  .subscribe((resp) => {
35052
35090
  if (resp.isSuccessful()) {
35053
- (resp.data || []).forEach(item => {
35091
+ let respData = [];
35092
+ if (Util.isArray(resp.data)) {
35093
+ respData = resp.data;
35094
+ }
35095
+ else if (Util.isObject(resp.data) && Object.keys(resp.data).length > 0) {
35096
+ respData = [resp.data];
35097
+ }
35098
+ else {
35099
+ console.warn('Component has received not supported service data. Supported data are Array or Object');
35100
+ }
35101
+ respData.forEach(item => {
35054
35102
  if (Util.isDefined(item[this.column])) {
35055
35103
  this.cellValues.push(item[this.column]);
35056
35104
  this.responseMap[item[this.column]] = item[this.valueColumn];